Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Book Reviews Books Media

CSS Pocket Reference 87

Michael J. Ross writes "For Web developers who appreciate the value of separating Web content from its presentation, Cascading Style Sheets (CSS) has proved a godsend, because it allows all of the styling of a Web site to be organized in CSS files separate from the site's semantic content, in HTML files (possibly dynamically generated). Yet to make this styling power possible, CSS must incorporate a long list of syntax elements, including hundreds of selectors, properties, and values. Thus it can be quite handy for the developer to have on hand a concise summary of CSS, such as the CSS Pocket Reference, authored by Eric A. Meyer." Read on for the rest of Michael's review.
CSS Pocket Reference, 3rd Edition
author Eric A. Meyer
pages 168
publisher O'Reilly Media
rating 8/10
reviewer Michael J. Ross
ISBN 0596515057
summary A concise reference book for CSS.
The book was published by O'Reilly Media on 5 October 2007, under the ISBNs 0596515057 and 978-0596515058. CSS itself has evolved along with other Web technologies, and this book is now in its third edition, having been updated to reflect the ongoing changes in CSS; the book now covers CSS2 and CSS2.1. On the book's Web page, O'Reilly offers an online table of contents, as well as ways for the visitor to view and submit errata (none as of this writing) and reviews for the book. Unlike most technical publishers, O'Reilly now makes available previews of their books' contents, in the form of a table of contents with links to the first few paragraphs of each section, including tables and illustrations.

Despite the growth in the number of elements in CSS, and the attention paid to each one of them by the author of CSS Pocket Reference, the book is still small enough to fit in a pocket, at only 168 pages. The book's material is organized into 18 unnumbered sections, preceded by some notes on the book's typographical conventions, and followed by an essential index. The bulk of the material is found in the Property Reference section. Other sections explain how to add styles to HTML and XHTML pages; CSS rule structure and style precedence, including inheritance and the cascade; element classification and display roles; visual layout; rules on floating and positioning; and table layout. Subsequent sections cover CSS value types and units, and selectors, including some of the newest additions to CSS, such as the adjacent sibling selector and the language attribute selector. Just before getting into the details on properties, Eric Meyer discusses pseudo-classes and pseudo-elements, which have made it possible for Web developers to create rather robust and attractive site navigation using CSS exclusively, without any need to resort to images and JavaScript for rollover effects and other navigation eye candy.

For each element of CSS that is covered in all of the sections mentioned above, the types of information presented to the reader can vary, depending upon the category of element. But they generally include the element's possible values, a default value, what elements it can apply to, whether it is inherited, its computed value, a brief description of the element, at least one example illustrating its usage, what browsers support it, and oftentimes a note on its usage. Consequently, this new edition of the book, like its predecessors, should prove more than adequate for most CSS reference needs.

As with any computer book, there are several ways in which this one could be improved. Any reader using the book to look up a particular element, has two possible ways of doing so: They could first consult the index, and, assuming the element is listed there, go straight to the page indicated. But most readers, knowing that the elements in each section are listed alphabetically, will probably open up the book near the front or the back, and begin flipping backward or forward, respectively, hoping to spot the element of interest as quickly as possible, given its alphabetical ordering. That individual will likely immediately spot an obvious problem with the book: The pages have no running titles (the words that indicate the first element discussed on that page, and typically listed at the very top of each page). Inclusion of such running titles in the next edition of the book, would make it much faster to use.

Another valuable addition would be some sort of table listing all of the CSS elements and their level of support within the most commonly used Web browsers and, in the case of Internet Explorer, the most commonly used versions of the browser. Also, on page 48 of the book, at the beginning of the Property Reference section, it has a subhead of "Visual Media," which suggests that there are other subheads within that section, for other media types; but I was unable to find any.

All of these problems concern the publisher's choice of material. My last criticism concerns the layout of that material in the print version of the book. Because this diminutive volume has narrow pages, and they are tightly glued together in the binding, it is imperative that the publisher of such a book provide plenty of white space in the inner margins (those closest to the binding), so the reader does not have to crack open the book too much in order to read the text closest to the binding. Repeatedly opening up the book far enough to read those inmost words, will over time weaken and eventually destroy the binding. In contrast, a small reference book like this has no need for much outer margin. Sadly, O'Reilly got it backwards with this volume, with relatively wide and useless outer margins, and inadequate inner margins.

Aside from the aforementioned flaws — all of which can be remedied in the future — CSS Pocket Reference is a compact and neatly organized gem of a book, packed with information of value to busy Web programmers.

Michael J. Ross is a Web developer, writer, and freelance editor.

You can purchase CSS Pocket Reference, 3rd Edition from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
This discussion has been archived. No new comments can be posted.

CSS Pocket Reference

Comments Filter:
  • Browsers? (Score:4, Informative)

    by WinterSolstice ( 223271 ) on Wednesday December 12, 2007 @03:42PM (#21675289)
    I note that he mentions there is a list of "browsers that support" any given tag, and some notes. If it actually has some of the quick workarounds for the different browsers, I'm so buying this book.

    I hate setting up something, then spending hours looking up workarounds for some random tag or other on IE.
  • by athloi ( 1075845 ) on Wednesday December 12, 2007 @04:18PM (#21675727) Homepage Journal
    http://technical-writing.dionysius.com/resources/CSS-2.0.pdf [dionysius.com]

    Helped me through many a "what's that called again?" session.

    Link updated because both original links were dead.
  • by Bill Hayden ( 649193 ) on Wednesday December 12, 2007 @04:18PM (#21675737) Homepage
    If you are labeling this informative instead of funny, then you are not a web designer and the joke has gone right over your head.
  • Re:Browsers? (Score:2, Informative)

    by ComputerPhreak ( 1057874 ) on Wednesday December 12, 2007 @05:03PM (#21676351)
    Back when Firefox wasn't really used a lot of web developers felt a lot like you:
    I've stopped bothering to spend more than 5 minutes figuring out any Firefox bug. Granted, my pages aren't widely used, mostly testing stuff out and internal school pages, but Firefox is more trouble than it's worth. All the public computers here have IE, so no one can really complain anyway.

    It's coding for one web browser that lead to the mess of pages that 'only work on IE'. Just because Firefox happens to be more adherent to the standards doesn't mean that it doesn't have its own quirks. You should develop to the standard, not to your favorite browser's implementation of it.
  • Re:Browsers? (Score:3, Informative)

    by bcat24 ( 914105 ) on Wednesday December 12, 2007 @06:18PM (#21677387) Homepage Journal
    Mod parent up. These days, if I design a website, I get it working in a modern, standards-compliant browser first. (Personally, I use Firefox, but like the parent said, it's certainly not the only choice.) Then and only then will I start putting in workarounds for browser bugs. (IE 6, I'm looking at you.)
  • by Selanit ( 192811 ) on Thursday December 13, 2007 @05:17AM (#21681407)
    It makes a menu in which sub-items are revealed when you move your mouse over them. And it's being done badly, for the following reasons:

    1) It relies on all kinds of things which IE either doesn't support or supports badly, including: the child selector (that's the > bits), using the :hover pseudo-class on elements other than anchors, display: table, and display: table-cell. There's no way this sucker is ever going to work in IE. Not IE 7, and definitely not IE 6. Just look up IE's support for the various properties used here on WebDevout.net's CSS compatibility list [webdevout.net].

    2) The code has needless redundancy built into it. Example: in that first rule set, they're using three selectors:

    ul.nav <-- an unordered list of the "nav" class
    .nav <-- any element at all of the "nav" class
    ul <-- any unordered list

    Stacking selectors by separating them using a comma can be useful, but this has been done badly. The first selector alone should have been sufficient for their purposes, or the second one alone. And the third one is simply atrocious, because it makes the rule apply to EVERY unordered list in the document unless it is explicitly overridden. If there is EVER an unordered list in the document which is NOT part of the menu, it's going to be totally fubared by the menu formatting instructions. Selectors which apply to every element in the entire document are dangerous that way unless you use them really carefully or make only tiny modifications. For example, I like changing the cursor over label elements so that people will know they do something if you click them, like this:

    /* Make labels for form elements have a pointer. */
    label { cursor: pointer; }

    The modification is very simple, does not change the basic appearance or functionality of the element, and provides a useful bit of feedback to the user.

    3) Inconsistent use of whitespace. Note that sometimes a rule will start immediately after another with no whitespace, like this:

    ul.nav li:active, .nav ul li a:active{
    background-color: black;
    color: white;
    } .nav a{ <--------------- here
    text-decoration: none;
    }

    The rule set for ".nav a" starts on the same line as the previous rule set finishes, which is ugly as sin. For improved comprehensibility, it should have at least two carriage returns after the previous rule set. And the author didn't even do it consistently.

    I'll happily agree that this is an ugly bit of code. And no, the CSS pocket reference will not be especially helpful in untangling this snarl; it's a reference, for looking up properties and selectors. It shows you what individual bits do, but does not explain how the many bits may be combined. References are primarily useful when you're building your own code, and rather less so when interpreting somebody else's.

    That said, I have to take issue with your conclusions.

    1) "CSS is a miserable and irrational set of style tags"

    First off, CSS doesn't use tags. It uses selectors to refer to tags. Second, CSS itself is not irrational. It is abstract, and takes a while to wrap your head around. It has some inadequacies and shortcomings, such as making multiple columns have an equal height or centering content vertically as well as horizontally, both of which are a serious pain in the ass. But you're throwing out the baby with the bathwater. CSS also gives you quite a lot of fairly fine-grained control over your pages. Moving the presentational stuff out of your HTML makes it considerably easier to read (assuming that you don't keep throwing extraneous DIVs into it instead of learning the inheritance rules and the box model), and has truly amazing benefits

  • Re:Browsers? (Score:2, Informative)

    by Walter Carver ( 973233 ) on Thursday December 13, 2007 @08:36AM (#21682193) Homepage
    Look up on "conditional comments" for IE. They allow you to add styles (and consequently override existing rules) that only IE can see. Also, test your pages in IE as you create them. It only takes a few minutes to fix an IE bug that just popped in, rather than try to fix the whole page.

With your bare hands?!?

Working...