For many years, specifying an image’s height and width dimensions within an HTML tag was considered a coding best practice, because this information could be used to mark a placeholder around which the rest of a page would render, while the image downloaded.
This technique made it feel as though a web page was loading faster than it was, due to the layout and textual content coming immediately into place, with the images adding context and eye-candy as the bandwidth allowed.
What is needed is a solution that sends the most appropriately sized image, with the correct resolution, based on the browser and device making the request. -UI Engineer Estelle Weyl
Fast-forward to today’s mobile-friendly responsive designs, where the page strives to fit each and every display — and where those fixed image dimension specifications can cause problems for designers. This is especially true on mobile devices where images are viewed in landscape and portrait orientation, where they will not responsively scale to the viewport size.
One simple solution to the problem is to change image dimension specifications from fixed pixels to percentages, using the CSS call img {max-width: 100 percent} to force images to display at the full size of their parent element’s available width. Now, if the user still has to scroll to see the image, it will only be with a more natural vertical scroll rather than an awkward horizontal scroll.
Of course, this same technique works for other fixed-size non-image elements, for a quick and dirty approach to making a site more responsive.
This approach leaves designers with three basic choices: optimize the images for the largest targeted display size for the best quality, but at the expense of forcing small screen users to download much more image than they need (which is costly and time consuming when away from a Wi-Fi connection); or reverse the trade-off by optimizing images for a common mobile screen size — but force desktop and hi-res display users to view poorly scaled images that while loading faster, lack the punch that their screens are capable of — damaging the user experience.
Choice three seeks a happy medium — but even this process is complicated by Retina and other high-definition displays coming onto the scene; where large pixel sizes and huge resolution factors spell bloated file sizes. Add to this a consideration of image centering, both horizontally and vertically, and how this will affect the viewing experience, and the headaches compound rapidly.
Of course, a variety of more sophisticated approaches are available, which solve the “too big or too little” dilemma, but that bring other issues to the table instead.
For example, Adaptive Images (www.adaptive-images.com) is a PHP-based solution that uses cookies, environment sniffing and multiple image sizes, to serve the best image possible to each and every viewer, regardless of access platform.
According to a company rep, the Adaptive Images script detects a visitor’s screen size and automatically creates, caches, and delivers device appropriate re-scaled versions of the page’s embedded HTML images without any changes to the page’s mark-up required.
“Your site is being increasingly viewed on smaller, slower, low bandwidth devices. On those devices your desktop-centric images load slowly, cause UI lag, and cost you and your visitor’s unnecessary bandwidth and money,” the rep notes. “Adaptive Images fixes that.”
Adaptive Images is a device agnostic mobile-first solution that works on existing sites and which is quick and easy to set up. A few simple tweaks of a site’s .htaccess file plus a line of JavaScript and the specification of CSS Media Query values into the PHP file will get you up and running.
After that, create optimized images for each targeted screen size, or let the script auto-generate images on the fly; each user enjoys the best image viewing experience possible.
Need another alternative? Then climb in the “clown car” and get to work.
“We have foreground and background images. We have large and small displays. We have regular and high-resolution displays. We have high-bandwidth and low-bandwidth connections. We have portrait and landscape orientations,” UI Engineer Estelle Weyl wrote for Smashing Magazine. “Some people waste bandwidth (and memory) by sending high-resolution images to all devices. Others send regular-resolution images to all devices with the images looking less crisp on high-resolution displays.”
Weyl says that what is needed is a solution that sends the most appropriately sized image, with the correct resolution, based on the browser and device making the request.
“The ‘clown car’ technique is the closest thing we’ve got to a Holy Grail: leveraging well-supported media queries, the SVG format and the <object> element to serve responsive images with a single request,” Weyl explains. “The solution isn’t perfect yet, but it’s getting close.”
Weyl wrote an in-depth tutorial explaining the process, which is as long as its URL (www.coding.smashingmagazine.com/2013/06/02/clown-car-technique-solving-for-adaptive-images-in-responsive-web-design); but it outlines a very intriguing option for developers seeking what is perhaps the most current solution, if also the most complex.