posted: July 12, 2018
tl;dr: A fairly in-depth explanation of the advances in HTLM5 and CSS3, with decent examples and lots of links to dive deeper...
Front end programming (and it is indeed programming) is incredibly important to the overall success of a web application, as it fundamentally determines the appearance of, and hence the user’s experience with, a web application. Yes, a front end is useless without a back end to feed it data to display, but a good front design and implementation can evoke an emotional reaction in the user and, more so than raw functionality, cause a user to prefer one web application over another with even more features. If you want to have a successful web application, front end design and implementation is of the utmost importance, and that means being on the leading edge of browser features, to provide the richest, most engaging user experience.
Alas, the advancement of front end web development is fundamentally limited by the pace of development of the multiple popular browsers, with their proprietary as well as industry-standard features. Standardization leads eventually to cross-browser support for new functionality, and lack of standardization leads to many challenges and, usually, to lots of per-browser configuration and Javascript. It is ultimately up to the browser makers and the World Wide Web Consortium to move the web application industry forward by agreeing upon standard ways of implementing new functionality. HTML5, with its support of video, and CSS3 were indeed a major step forward for the industry.
Although some do not, I definitely consider doing HTML markup and creating CSS styling to be programming. I take a fairly broad view of programming, and tend to apply that term to any activity that involves telling a machine what you would like it to do, or the end result you would like it to achieve. The more interesting question, in my mind, is whether doing HTML and CSS is declarative or imperative programming. I don’t view those two terms in the binary sense: I view them as a spectrum, and I feel that HTML and CSS lie towards the declarative end of the spectrum.
Lower-level programmers often find HTML and CSS to be frustrating because the programmer often cannot explicitly specify exactly how he/she wants a web page to appear. Often the browser will interpret the HTML and CSS and do something unexpected with the page layout. Different browsers (especially the one most web developers love to hate, Internet Explorer) will display the same HTML and CSS code differently. The ultimate challenge of front end programming is to come up with HTML and CSS that yields a desirable result across the broadest range of browsers and screen sizes.
Into this challenging situation step web developers Alexis Goldstein, Louis Lazaris, and Estelle Weyl with their book HTML5 & CSS3 for the Real World. I bought the second edition in 2015 and recently read it cover-to-cover after using it initially as a reference (the first edition was published in 2011, which gives you some idea of the overall pace of these standards). The authors explicitly state that their goal is not to provide an overall explanation of HTML and CSS, but rather to focus on just the features that have changed with the evolution of the HTML5 and CSS3 standards. So this is not a book for web development beginners.
It is a decent book for experienced front end web developers, as it provides an ongoing example in the form of an online newspaper enhanced with HTML5 and CSS3 features, and (even more impressively) provides a wealth of links to other online documentation from a wide variety of sources. Even those web application developers who rely upon a framework to generate HTML and CSS will benefit from learning the latest underlying HTML and CSS features, to learn what should be possible to do. As anyone who is reading this post on my own personal, hand-rolled website knows, I don’t exactly keep my website at the bleeding edge of browser technology and front end design; for better or worse I emphasize substance (the content itself) over style. Someday I hope to have some time to bring in more leading-edge features, and HTML5 & CSS3 for the Real World can definitely help in that process.