I had been considering getting this book for a while, but avoided it because I assumed I already knew everything there was to know about CSS, having developed web pages for a while. Eventually I ran into some formatting problems that I couldn't solve, and I realized I was spending a lot of my time trying to get things to work by trial and error. Humbled, I purchased the book, and reading it now I am very glad I did! The discussion of the box model, which is something every developer should understand but many do not, is more than worth the investment on its own.
There are a few problems that I'd like to highlight, however. Please note that I am rating this 4/5, so don't let the below problems discourage you from getting the book (it is still probably the best out there), I am just writing this in the hope that an editor will read my suggestions in preparation for the next edition.
One disappointment is that the appendix, which is a helpful list of CSS properties, doesn't include any information about which CSS standard (1, 2, 2.1) prescribes each property, or which browsers support each property. Considering the wide variety of browsers that designers must take into account, such information is essential, and I am pretty surprised it isn't here. Adding this information to the listings in the appendix should be relatively trivial, akin to the information included in Javascript: The Definitive Guide (also by O'Reilly) which should serve as a model to all editors everywhere.
Secondly, as has already been pointed out, the index could be better.
Third, I think the discussion of the box model, as helpful as it is (and more straightforward than other materials I have seen), could nevertheless be improved. People new to the box model may find themselves asking, "I understand the literal aspects of what you are saying, but why does it work this way?"
As just one example, instead of discussing horizontal and vertical formatting of block elements in separate sections, it would probably be better to just discuss it in a single section and state explicitly the differences between the two. Otherwise, Chapter 7 in particular contains a lot of rules that are spread out over some distance and can be harder to absorb.
As another example, the discussion of auto heights for block elements in Chapter 7 is a bit frustrating, as it is devoid of a rationale (perhaps there is no convincing rationale for the behavior, but then the author could state as much and I wouldn't feel like I was missing something). The second chart on page 175 is meant to elucidate the issue, but it fails to do so because it lacks pixel lengths the way the first chart on that page does. My purpose here is not to critique individual errors but rather to highlight that the discussion of the box model is confusing and needs to be streamlined and fleshed out, helpful as it already is.
All that said, this is a very helpful book and I think you will be happy with it. My experience has been that it has filled in a lot of gaps of knowledge that I had simply taken for granted before, and I will be a more efficient and effective designer in the future because of it.
|