Responsive Design - A Mobile Retrofit
A few weeks ago we launched our new mobile optimized design of thedailybeast.com, and we couldn’t be more excited! Go check it out if you haven’t already (if you’re not using a mobile device scroll to the bottom and click on “Mobile Site”).
Our CTO Matt Stowe’s favorite thing about it is everything loads from the same exact URL as before — there’s no m.thedailybeast.com. In his words: “Why is this great? Because no matter how you share, bookmark, email, or use the link, the site serves you an optimized experience for your device.”
The challenge was to take our existing design and reorganize the content into a space less than 1/3 of the desktop size. In addition, we needed to account for a wide range of phone sizes, layouts (portrait/landscape) and resolutions (up to 300ppi). Based on the new design and requirements we decided to recreate all the markup and css for the entire site….10 weeks and 1,342 cups of coffee later we had ourselves a mobile site! Here are two features that we’re most excited about:
- Flexible Grid
- Fluid Images
- Media Queries
Instead of creating multiple versions of the site to fit multiple device sizes and resolutions we decided to use a responsive design approach by implementing a flexible grid system. This way our site will expand and contract to fit any width browser. For example, when your phone is turned from portrait to landscape, the site will respond by expanding to fit the screen. To produce this, we are using a 12-column flexible grid designed by Stephen Bau that is based on the great work by 960 Grid System (we love grids!). All columns widths are set as a percentage of the page rather than a fixed pixel width which allows the site to expand or contract to any size.
The easiest part of the design was making all the images “fluid" by setting their width to 100%. Now images will expand/contract to fill the size of their parent element. As for media queries, new in css3, we are currently modifying the navigation so that each element is spaced properly based on site width. In the future, we hope to implement tablet and desktop media queries for a seamless site experience across all devices.
With the new responsive site we decided to abandon the use of sprites and most icon images in our css and have opted for creating our own icon font instead. Now when you visit the mobile site, all the icons are actually a part of our custom font, not jpgs or pngs. The browser references all icon images from a small font file (~30kb). One of the benefits is that your browser will not be downloading lots of icon images, taking up device memory, bandwidth and adding to the time it takes each page to download.
An additional benefit of using a font is also so that we don’t have to recut new images if designs change and we need the image slightly bigger, smaller or a different color. Now we can change each instance of the icon with css adjusting it accordingly. Lastly, icon images will never look blurry since they are now vector data (like an .svg) instead of raster (.jpg). Here’s an example of why icon fonts are awesome. You can make your own custom fonts over at icomoon.io or download the icomoon chrome extension and work on your fonts offline.
Shout out to the entire development and design teams who created lots of really great features!
— Lynn Maharas, Front End Developer
- 171gifer likes this
- blerchin likes this
- smallplanetdigital likes this
- joanawithonen likes this
- yjcanvas likes this
- donderbar likes this
- felvagott reblogged this from cheatsheet
- trinadafilipina likes this
- txbethg likes this
- ifilikeityoulikeit likes this
- cecchi reblogged this from cheatsheet and added:
- cecchi likes this
- bohagan likes this
- nathanch likes this
- medeaeva likes this
- brucebruce likes this
- moaner likes this
- whowouldntlove likes this
- bobbycaputo likes this
- datainsightsideas likes this
- snackish likes this
- arcanumx likes this
- cheatsheet reblogged this from newsbeastlabs and added:
- lynnwashere reblogged this from newsbeastlabs
- newsbeastlabs posted this