Responsive Web Design is Hard

Ed Gordon

October 13th, 2015

Last week, I embarked on a quest to build my first website that would simultaneously deliver on two puns; I would “launch” my website with a “landing” page that was of a rocket sailing across the stars.

On my journey, I learned SO much that it probably best belongs in a BuzzFeed list.

7 things only a web dev hack would know

  • “Position” is a thing no one on the Internet knows about. You change the attribute until it looks right, and hope no one breaks it.
  • The Z-index has a number randomly ascribed until the element goes where you want.
  • CSS animations are beyond my ability as someone who’s never really written CSS before. So is parallax scrolling. So is anything other than ‘width: x%’.
  • Hosting sites ring you. All the time. They won’t leave you alone.
  • The more tabs you have open the better you are as a person.
  • Alt+Tab is the best keyboard hack ever.
  • Web development is 60% deleting things you once thought were integral to the design.

So, I bought a site, jslearner.com (cool domain, right?), included the boilerplate Bootstrap CDN, and got to work.

Act I: Design, or, ‘how to not stick to plan’

Learning JavaScript

Web design starts with the design bit, right? My initial drawing, like all great designs, was done on the back of an envelope that contained relatively important information. (Author’s note: I’ve now lost the envelope because I left it in the work scanner. Please can I get it back?!) As you can clearly see from the previous image, I had a strong design aesthetic for the site, right from the off. The rocket (bottom left) was to travel along the line (line for illustration purposes only) and correct itself, before finally landing on a moon that lay across the bottom of the site.

In a separate drawing, I’d also decided that I needed two rows consisting of three columns each, so that my rocket could zoom from bottom left to top right, and back down again. This will be relevant in about 500 words.

Confronting reality

I’m a terrible artist, as you can see from my hand-drawn rocket. I have no eye for design. After toying with trying to draw the assets myself, I decided to pre-buy them. The pack I got from Envato, however, came as a PNG and a file I couldn’t open. So, I had to hack the PNG (puts on shades):

Expectations Vs Reality

I used Pixlr and magic-wanded the other planets away, so I was left with a pretty dirty version of the planet I wanted. After I had hand-painted the edges, I realised that I could just magic-wand the planet I wanted straight out. This wouldn’t be the first 2 hours I wasted.

I then had to get my rocket in order. Another asset paid for, and this time I decided to try and do it professionally. I got Inkscape, which is baffling, and pressed buttons until my rocket looked like it had come to rest.

So this:

After some tweaking, became this:

After flipping the light sources around, I was ready to charge triumphantly on to the next stage of my quest; the fell beast of design was slain. Development was going to be the easy part. My rocket would soar across the page, against a twinkling backdrop, and land upon my carefully crafted assets.

Act II: Development, or, ‘responsive design is hard’

My first test was to actually understand the Bootstrap column thingy… CSS transformations and animations would be taking a back seat in the rocket ship.

These columns and rows were to hold my content. I added some rules to include the image of the planets and a background color of ‘space blue’ (that’s a thing, I assure you).

My next problem was that the big planet wasn’t sitting at the bottom of the page. Nothing I could do would rectify this. The number of open tabs is increasing…

This was where I learned the value of using the Chrome/Mozilla developer tools to write rules and see what works. Hours later, I figured out that ‘fixed position’ and ‘100% width’ seemed to do the trick. At this point, the responsive element of the site was handling itself. The planets generally seemed to be fine when scaling up and down.

So, the basic premise was set up. Now I just had to add the rocket. Easy, right?

Responsive design is really quite hard

When I positioned my rocket neatly on my planet – using % spacing of course – I decided to resize the browser. It went literally everywhere. Up, down, to the side. This was bad. It was important to the integrity of my design for the rocket to sit astride the planet.

The problem I was facing was that I just couldn’t get the element to stay in the same place whilst also adjusting its size. Viewing it on a 17-inch desktop, it looked like the rocket was stuck in mid-air. Not the desired effect.

Act III: Refactoring, or, ‘sticking to plan == stupid results’

When I ‘wireframed’ my design (in pencil on an envelope), for some reason I drew two rows. Maybe it’s because I was watching TV, whilst playing Football Manager. I don’t know. Whatever the reason, the result of this added row was that when I resized, the moon stuck to its row, and the rocket went up with the top of the browser.

Responsive design is as much about solid structure as it is about fancy CSS rules. Realising this point would cost me hours of my life.

Back to the drawing board.

After restructuring the HTML bits (copy/paste), I’d managed to get the rocket/moon in to the same div class. But it was all messed up, again.

Why tiny moon? Why?!

Again, I spent hours tweaking CSS styles in the browser until I had something closer to what I was looking for.

Rocket on moon, no matter the size. I feel like a winner, listen to the Knight Rider theme song, and go to bed.

Act IV: Epiphany, or, ‘expectations can be fault tolerant’

A website containing four elements had taken me about 15 hours of work to make look ‘passable’. To be honest, it’s still not great, but it does work. Part of this is my own ignorance of speedier development workflows (design in browser, use the magic wand, and so on). Another part of this was just how hard responsive design is.

What I hadn’t realised was how much of responsive design depends on clever structure and markup. I hadn’t realised that this clever structure doesn’t even start with HTML – for me, it started with a terrible drawing on the back of an envelope. The CSS part enables your ‘things’ to resize nicely, but without your elements in the right places, no amount of {z-position: -11049;} will make it work properly.

It’s what makes learning resources so valuable; time invested in understanding how to do it properly is time well spent. It’s also why Bootstrap will help make my stuff look better, but will never on its own make me a better designer.

Make responsive web design easier

Learn all the HTML5 and CSS3 you need to design responsive, future-proof websites with our updated bestseller