-
200727 Sep
Posted in CSS3 Previews, Modules, W3C
The CSS Working Group recently met face-to-face in Beijing, and have released a series of notes about some of the issues they discussed regarding the current and future states of CSS.
One interesting possibility that was raised is to allow rotation of page elements; according to the original proposal, these are some of the possible use cases:
- rotate a block of text 90 degrees as for a tab on left of page
- rotate an image (or block of text) an arbitrary amount
- use rotated column headings for narrow table columns
It must be stressed that this exists purely as an idea at the moment, so we won’t be seeing it any time soon. Still, it would create many new possibilities in web design.
Following our discussion of the inherent ambiguity in the border-radius declaration, it has been decided that the simpler syntax used by Mozilla will used for the shorthand; that is, in order to apply elliptical corners on elements, you will have to declare them all separately. I think this is a good decision, and I’m delighted that the CSSWG have listened to the views of the community. A pat on the back for everyone involved!
Finally, the CSSWG are to release an annual(?) snapshot of modules considered stable, in order that browser makers and developers can begin to implement them. The 2007 snapshot will include:
The 2008 version is likely to include Paged Media and Media Queries, and possibly Ruby and Backgrounds and Borders.
So that’s the state of CSS today. Interesting stuff; many thanks to the CSSWG for making it all public.
-
200718 Sep
Posted in Browsers, CSS3 Previews, Tutorials
Until the Advanced Layout and Grid Layout modules are implemented, we have to get by with the existing tricks of the trade. One of those is the use of faux columns, a background image which simulates equal-height columns. This is a good technique, but the drawback is that it only works with fixed-width columns.
That problem was overcome with the advent of liquid faux columns, which uses some
background-position
trickery and a bit of maths to create a variable-width effect.With the (tentative) introduction of
background-size
in Safari and Opera, however, faux columns are about to become a lot easier; all you need to do is create a background image and assign a percentage value to background-size, allowing the image to expand or contract with its containing box.Take a look at this example (only tested in Safari 3 and Opera 9.5; may work in Konqueror 3.5.7 also). If you resize your browser window, the text and columns should maintain their proportions.
The way this is done is with a simple PNG image; I’ve made it 1000px wide, with two coloured columns of 250px each, so that it’s easier to calculate column widths (25%,50%,25%).
I’ve set this as the background-image on the html element, which has been assigned a width of 90%. Inside this there is a container div with a width of 100%, and my three columns with the widths set at the same ratio as the background image:
<div id="container"> <div id="one"> </div> <div id="two"> </div> <div id="tre"> </div> </div> #container { position: relative; width: 100%; } #one { margin: 0 25%; } #two, #tre { position: absolute; top: 0; width: 25%; } #two { left: 0; } #tre { right: 0; }
The html element has the
background-size
declaration applied to it, with a percentage value to make it liquid, using the browser-specific prefixes followed by the proposed declaration (for safety):html { background-image: url('opera_bg.png'); -khtml-background-size: 100%; -o-background-size: 100%; -webkit-background-size: 90%; background-size: 100%; background-position: 50% 0; background-repeat: repeat-y; width: 90%;
You’ll notice that the Webkit value is different from the others; during this test, it seems that Webkit obtains its width from the entire browser window, not from the containing element; therefore, we have to set this value to be equal to the width of the containing element. I haven’t tested this thoroughly yet, so I’m not sure if this is a persistent bug or if there’s something I’m doing wrong. Anyway, Opera 9.5 behaves as expected.
After that I’ve added the
background-position
andbackground-repeat
declarations;background-repeat
to tile the image down the page, andbackground-position
because Webkit seems to ignore themargin
values and puts the image at top left of the browser window; this is only necessary if you’re centre-aligning your page.Apart from a little tidying up, that’s it; once the module becomes a recommendation and the browser-specific prefixes are dropped, it will require only a few lines of code for the simple effect. In the meantime, remember that this is for experimentation purposes only and shouldn’t be used in a live environment. This is just a sketch of the technique at the moment, and requires more testing.
-
200713 Sep
Posted in Declarations, Modules, W3C
CSS3 now has a new proposal for laying out websites, with the release of the first working draft of the grid positioning module. The new module makes it easier to define layouts using typographic grids (see Khoi Vinh’s website for a good introduction).
Used in conjunction with the multi-column layout module, you can use the new
gr
measurement unit to define objects that span multiple columns:body { columns:3; column-gap:0.5in; } img { float:page top right; width:3gr; }
Or, using the new grid-columns and grid-rows declarations, you could quickly divide up a page for layout purposes:
body { grid-columns: * * (0.5in * *)[2]; grid-rows: 20% *; columns:3; column-gap:0.5in; }
I’ve only had the chance for a cursory look at this so far, but it strikes me that it’s not quite as intuitive as it could be, although I need to have a proper look before I can put my finger on exactly why. However, it’s a nice attempt by the W3 to solve the problem of print-style layouts, and after further revision I’m sure it will be a welcome addition.
-
200705 Sep
Posted in CSS3 Previews, News
We’re busy here at css3.info! Our interview with H&kon was cool of course, but then Opera 9.5 was released and we had to update and add quite a few pages… Because all these pages were still static html, that was quite a bit of work. Tonight I took the time to move all of them into WordPress, and after I’d done that, I’ve refined the search function and results a bit, so it now shows the pages in the searches as well!
We’ll probably be adding new preview pages in the coming days, I’ve already updated the existing ones which Opera 9.5 supports now (cool, cool stuff, you should really have a look at it).
Ow and because of the many complaints about it, I removed the text-shadow from the text in the menu tabs.
-
200704 Sep
Posted in Browsers, CSS3 Previews, Interviews, Modules, W3C
Here’s the concluding part of our interview with Håkon (you can read the first part here).
-
Name the top five CSS3 features you’d like all major browsers to support in their next major release.
Here’s some of my favorites:
Also, we must not forget Generated content, and tables from CSS2.1. These are great features that still can’t be used due to lack of support from one browser.
-
Do you think there should be a Acid3 that focuses on CSS3 features that designs want supported as soon as possible?
Yes, I think it’s time for another Acid test — all major browsers but one (guess which one!) support Acid2 by now. I believe Acid3 should test CSS3 features that a critical mass of browsers can agree to implement. Also, it should probably test features from the upcoming HTML5 and the DOM.
-
Do you have a favourite designer who you admire their work, either from a design or technical respect?
I can’t give you one name. I often show designs from the CSS Zen garden when I give talks; I like many of them.
I can name two favorite fonts designers, though: Ray Larabie and Dieter Steffmann.
-
How do you think designers can get more involved with the CSS3 progress, to make sure features designed by designers themselves are added to the spec, instead of the features the spec writers might think are important? Is there a way this can be done without designers (many who don’t have much free time to spare) having to read through long mailing list histories and understanding a lot of very technical implementation details (I’m thinking such as having a appointed advisory board of designers for example that advise what features they want, and gather feedback from others, then the implementers can discuss this and come back with issues or start to draft specs for those features)?
We’ve always encouraged designers to be part of the CSS Working Group, and there has always been strong designer presence in www-style. Many of the choices we’ve made along the way are based on input from designers. For example, you wouldn’t find Backgrounds and borders on top of my list if it hadn’t been for designers. The idea of an advisory board may be a good one.
-
How do you feel about being nicknamed “the father of css”?
I often refer to CSS as my baby, and I’m fine with being called the father :-) It must be emphasized, though, that the child was shaped by a community. Bert Bos was the first to join the efforts, he came with a proposal of his own that we worked into CSS. Thomas Reardon and Chris Wilson of Microsoft were also influential in the time before the CSS WG and and the www-style mailing list was started.
-
What do you think of the Brazilian band CSS?
Wow. Right. Change of mindset. Music, right? When it comes to music, I prefer Opera!
-
-
200704 Sep
Posted in Browsers, Interviews, Modules, W3C
We’ve had some great interviews with luminaries of CSS-based design here on CSS3.info already, but this one is my personal favourite! Håkon Wium Lie, ‘the father of CSS’*, spared us some time to answer a few questions about the evolution of web design and the future of CSS. I’m so excited by this, I’ve almost forgiven our friends at Opera for not letting us have an early preview of Opera 9.5!
-
Is the use of web fonts the next big step in web design?
Yes! Web fonts will be the next big thing if browsers start supporting them. Fonts are one of the core ingredients of design, along with space and colors. CSS is pretty good with space, colors, and fonts, but in the case of fonts the raw materials — the font files — are in short supply. Interestingly, there are lots of freely available TrueType font that authors allow us to use for free. So, I’m trying to connect the dots between web pages and the available fonts. I’ve written more about this in an article in Alistapart and you can play with web fonts in Prince.
-
With the current battles over copyright infringement with music and video on the web, can you imagine something similar occurring over the misuse of rights-protected fonts?
Almost all the content on the web is copyrighted. It’s still available because copyright holders want it to be available. Sure, there are cases when the copyright holder has not given permission. But I don’t think anyone would argue that we should remove all images, video or music from the web for this reason? There are plenty of freely available fonts out there and no need to use fonts with resistant owners. Also, plenty of new font will be created open-source style if browsers start supporting web fonts.
-
Has web design turned out more or less the way you imagined when you wrote the CSS spec so many years ago?
CSS was partly about design, and partly about markup. We — Bert Bos and I in the beginning, soon others — wanted to improve web design, but also to keep markup clean. I think the first part has succeeded quite well; I continue to be amazed by the things people are able to do with CSS. I’m less certain about the markup. But you didn’t ask me about markup, so I don’t have to answer for it :-)
-
Outside of web fonts, which part of css needs most work in your opinion? And why?
Lots of work has gone into the CSS specifications. That will continue, but it’s not where work is most needed. What we need now are implementations — interoperable implementations. In order to get them, we need tests and testers. Lots of them. People who are interested in this subject should join the CSS testsuite mailing list.
-
If you could start all over again, what would you do differently in CSS?
I’ve written a long PhD thesis, in part on that subject. That’s the long answer. The short answer is that we should have published a test suite earlier. We worked hard to get the CSS1 specification right, but implementors don’t really like to read specifications. They will work long hours, however, for so that their code passes a well-designed test. Eric Meyer came to our rescue and made sure CSS1 got a the test suite.
Part two of this interview, where Håkon discusses CSS3 and web design, will be available shortly.
* Maybe we should have asked him what he thinks of that nickname!
-
-
200729 Aug
Posted in Declarations, Modules
Since the move away from tables to CSS-based layouts, lists have become more important in producing semantic markup; in Andy Clarke’s Transcending CSS, he seems at times to be on the verge of saying all content can be marked up with lists!
Yet the basic list itself is let down by the range of markers available; for unordered lists you have disc, circle or square, or images which are implemented so differently across browsers that it’s better not to use them. Perhaps most annoying of all, you can’t have the glyph be a different colour from the content without extra markup:
<li><span>Lorem ipsum</span></li>
That could be set to change with the proposed new lists module which allows a much wider range of glyphs, markers and counters and, more notably, the ability to style them with the
::marker
pseudo-element. In a nutshell, this allows you to treat the list-style-type as a separate entity and style it accordingly.The working draft doesn’t specify exactly what declarations you’ll be able to apply, although it does mention borders, margin, and padding so it’s not a great stretch to imagine that you could add colour and font styles to that also – meaning lists could be set to become a lot more decorative:
li::marker { background-color: #fff; border: 2px dotted #f00; color: #f00; font-size: 2em; height: 4em; text-align: center; width: 4em; }
Do I have to include the usual disclaimer? This is still only a working draft of a proposal (and a low priority one at that), and browser support currently stands at nil.
-
200721 Aug
Posted in CSS3 Previews, Declarations
I was reading Veerle’s blog today; the excellent article A CSS styled table version 2, to be precise. All good, practical stuff, and well-presented as usual. But what stood out for me was the technique to stripe the table rows: either through classes, or Javascript.
Of course, both of those are valid techniques; but really, neither should be. It’s pretty easy to forget, when we see how far CSS-based design has come in the last few years, just how reliant on workarounds and tricks we are in order to perform what should be basic functions.
Presented below are some of those workarounds that I’d love to see consigned to the dustbin of history; not because they are bad – on the contrary, they are extremely inventive – but because CSS 3 should allow the effects to be replicated without the extra mark-up, script or code.
Tiger-striping on table rows
Whether done with background images, DOM scripting or just adding classes to the markup, none of the techniques are as easy as using the
nth-child
pseudo-class:tr:nth-child(odd) { color: blue; }
‘Sliding Doors’
Requires no extra mark-up but a lot of CSS jiggery-pokery, most of which could be avoided with multiple background images:
li { background: url('image0.png') no-repeat left top, url('image1.png') no-repeat right top; }
Rounded corners
Which do you prefer: multiple lines of Javascript? Or a single line of CSS?
div { border-radius: 1.5em; }
Drop shadows
Even the simplest solutions seem to rely on an extra image and plenty of CSS tweaks. CSS 3 resolves it with one declaration:
img { box-shadow: 10px 10px 5px; }
Of course, the problem is that perennial one: lack of support. No modern browser currently supports all of the examples shown above, and it will be many years before we can stop using the workarounds altogether. But I do look forward to the time when they become a secondary consideration – and to what extensive use of the new declarations reveals in terms of creating new workarounds to future problems.
-
200711 Aug
The CSS Advanced Layout module (explanation here) has been updated. After a quick read through, I’ve found only a few changes.
The first is the introduction of the
::slot()
pseudo element, which allows (limited) styling of – obviously – a slot. That is, if you had your layout set up like this:body { display: "ab" "cc"; } div#div1 { position: a } div#div2 { position: b } div#div3 { position: c }
You could style
#div2
either with itsid
, or with:body::slot(b) {}
This pseudo-element is still at an early stage of definition, and may be changed – or dropped altogether.
Another, more minor change is that the way to define templates, which was previously undecided between
display-model
ordisplay
, seems to have been decided in the favour of the latter. I’d agree with this, as it uses an existing declaration.Something else I noticed, which is not a change as it was in the original draft, I just overlooked it, is that
vertical-align
can now be used to position a block-level element inside a slot; that’s right, like inside a table. Rejoice! No more workarounds!The Advanced Layout module has been described by the W3C as a
concept album
– that is, an explorative spec; therefore, don’t expect to be seeing it implemented any time soon. You can, however, download a cross-platform Javascript emulator, written by César Acebal, if you want to try it out for yourself.
-
200704 Aug
Posted in Browsers
Struggling with the boxmodel sometimes? Need some help to figure out what the size of the element that’s troubling you really is?
John Allsopp has created the perfect solution to this problem. It’s a bookmarklet called XRAY, And you’ll love it. Click on it once to activate it, and click a second time on any element to display it’s box model!
What’s cool about it too is that it uses some CSS3 as well, including box-shadow, border-radius (webkit only), opacity and rgba!
So go check out XRAY!