Until reading Jon Duckett's HTML & CSS: Design and Build Websites I was under the impression that HTML was obsolete and that you would always go for programming languages to create modern and professional websites. It's silly, I know. But even when taking a solely HTML and CSS based approach seriously, I was amazed by the digital beauty you could create with only a few lines of code.
The textbook is a perfectly hands-on introduction to web design that gradually increases the code complexity. There are no practical exercises, but the chapters and topics are so composed that you somehow hear your calling and want to try to apply things on your own. When coding with a programming language you feel often overwhelmed by the underlying theory you struggle to grasp, while markdown and styling are immediately practical. After you read about the relevant concepts, you immediately feel like you are able to grasp what they are about.
This brings me to another point. Often computer-science textbooks provide good understanding of basic theory but leave you self-conscious about how they are applied in the real world. What I particularly loved about HTML & CSS was how Duckett offers best-practice advice throughout. This eases the transition from knowing what there is to knowing how best to apply it (like professionals do). Sure, you won't become a professional from just reading about what to do. But when in practice you suddenly wonder about the details of how to best move on you'll have a mentor to get comforting advice from.
I also have to say, the book is some seriously mesmerizing piece of design work. There is something truly convincing about a design book that is perfectly designed. There is comparatively little text per page, aligned within three columns, with colorfully highlighted code listings and often very large-size images that pop. All on a visually comforting backgrounds. And with examples at the end of each chapter that are impressive enough to immediately make you feel comfortable, maybe empowered even.
The explanations are concise as is necessitated by the design decisions, but still in-depth and sufficiently technical. The section about image resolutions is a good example. Most readers will know about the pixels of their various devices and might have bought something based on promises that higher resolutions promise sharper images. Yet, to build pleasing website designs it's necessary to understand what is really going on. To this purpose, technical concepts are introduced and related to their origins in print.
There are important shortcomings, though. At least in my 2011 edition there was very little in the way of responsiveness and how to make your website compatible with different screen sizes. There are sporadic mentions of the need to use relative measures and the likes, but there is no systematic introduction to concepts like mobile-first, fluid layouts, or the likes. There is a section on page layout, but in this respect my edition was rather dated, too. Today, the flexbox layout would probably deserve its own chapter.
Still, for these issues there is of course an overabundance of other sources to consult (and they might well be addressed and remedied in the most recent edition). Overall I feel like I've learned quite a lot from HTML & CSS and like to come back to it for inspiration on how to solve problems. Highly recommendable – it will sure be among the most stunning books on your shelf.
Rating: 4/5