Web Design

Icon Fonts

Webfont specimenRespon­sive Design is the new black for web design­ers. But with respon­sive design comes a lot of chal­lenges. One of them is to make ui icons scale with the rest of your lay­out. How­ever, icon fonts is a promis­ing solu­tion in its infancy.

Icon fonts are vec­tor based graph­ics and are able to scale indef­i­nitely with­out los­ing qual­ity, as opposed to the more well known and com­mon pixel based icons. But icon fonts are also tied to char­ac­ters and this is where the chal­lenges come in, when we want them dis­played cor­rectly with­out mak­ing too much trou­ble in screen read­ers or screen scrapers.

I have been col­lect­ing a few resources on the topic.

Using Icon Fonts
Besides being a ser­vice, that offers a nice col­lec­tion of scal­able icons, Pic­tos also has a great arti­cle on the pros and cons of icon fonts and how to use them.

Icon Fonts are Awe­some
Chris Coyier of CSS-tricks.com has put together a nifty exam­ple, where he demon­strates how easy it is to scale, col­orize and shape the shadow of icon fonts with plain and sim­ple CSS.

How to make your own icon web­font
Over at Web­de­signer Depot, Hey­don Pick­er­ing has writ­ten a tuto­r­ial on what makes a good icon and how to turn it into a webfont.

Icon Fonts
Finally, if you are not yet ready to make your own icon font, Font Squir­rel has a small col­lec­tion of free icon fonts, also avail­able as @font-face kits. Go grab ‘em and try them out.

Respond.js bug?

I ran into a strange bug today.

I recently launched Krimimessen.dk where I have used a small poly­fill script writ­ten by Scott Jehl, respond.js, to make the site’s respon­sive­ness work in older ver­sions of Inter­net Explorer.

But then one of my col­leagues made me aware of a bug that seemed to trig­ger when click­ing on links in Inter­net Explorer 8. Not in everybody’s Inter­net Explorer 8, oh no. Only in Inter­net Explorer 8 on cer­tain machines. Well, who said it should be easy to test for bugs?

Instead of going to the desired des­ti­na­tion, the browser went to a URL with this pat­tern:
res://ieframe.dll/acr_error.htm#the-url-without-http

I have done a lit­tle search­ing on the issue, and gen­er­ally peo­ple say the prob­lem goes away if you delete the browser cache or dis­able browser exten­sions. How­ever, that solves no prob­lem, because I can’t ask my users to delete their cache.

Then I stum­bled upon some­one in the Drupal.org forum who had had the same issue and one of the pro­posed fixes was to move respond.js to the footer.

And there you go. It seemed to work. At least the bug disappeared.

But accord­ing to the Respond usage instruc­tions, the script ought to be loaded as quickly after the CSS file as pos­si­ble to avoid glimpses of “unre­spon­sive­ness” in ie.

So now I won­der if this is a bug in ie8 bug can be fixed within respond.js? Or is it some­thing else, that trig­gers the bug? Or am I just using respond.js wrong?

Styling images with CSS3

Pimp­ing images with rounded cor­ners, box shadow and other CSS3 eye candy can be a pain in that part of the body, you nor­mally sit on, because browser sup­port is really lousy.

Until now. Because Nick La from Web Designer Wall has a nice lit­tle trick up his sleeve, which involves wrap­ping the image in an HTML ele­ment and mak­ing an over­lay for styling with a CSS pseudo-selector.

Go check out Nick’s tuto­r­ial here

The 1000px grid

Elliot Jay Stocks, Bris­tol based web designer and illus­tra­tor, recently pro­posed on his blog a 1000 pixel grid as the base for lay­out pro­to­typ­ing in Pho­to­shop, instead of the more com­mon and defacto 960 pixel grid, we have all become so used to.

The rea­son? The math is so much eas­ier to do, when trans­form­ing the grid from pix­els to per­cent in respon­sive web design.

It is such a sim­ple and obvi­ous approach, I’m almost embar­rased, I haven’t thought of it before.

Elliot Jay Stocks: A bet­ter Pho­to­shop grid for respon­sive web design

Krimimessen 2012

Screen dump of Krimimessen 2012

I have just launched a re-design of Krimimessen.dk. Krim­imessen is the biggest fes­ti­val about crime lit­er­a­ture and crim­i­nal fic­tion in Den­mark. A fes­ti­val which is arranged by Hors­ens Pub­lic Library, where I work. The site is designed so it resizes to fit the screen it is being viewed on, also known as respon­sive web design.

This is the first respon­sive site, I have cre­ated. It is built in Word­Press on a base of the awe­some HTML5 Boil­er­plate frame­work, which makes it eas­ier to build a mod­ern web site from scratch.

I learned a lot from read­ing Ethan Marcotte’s “Respon­sive Web Design” prior to this project. Marcotte’s “tar­get ÷ con­text = result” tech­nique, a way to cal­cu­late dimen­sions from pix­els into per­cent, was an invalu­able tool in the process. In fact, and very unusual indeed, it wasn’t even nec­es­sary to test a lot in Inter­net Explorer.

Sådan fixes IE7’s z-index bug med jQuery

Det er sæd­van­ligvis Inter­net Explorer, der kræver ekstra opmærk­somhed, workarounds og udviklingstid, når man skal gøre et web­site kom­pat­i­belt på tværs af web­browsere. Jeg har lige spenderet en del tid på at komme omkring en grov ren­der­ings­fejl i IE før ver­sion 8, der ram­mer den orden hvori CSS posi­tionerede HTML ele­menter  sta­bles. Jeg er rendt ind i IE’s z-index bug.

Opgaven: En lang række list items skal udstyres med fork­laringer i form af drop downs. HTML koden ser således ud.

<ul class="linklist">
  <li>
    <h4>Overskrift 1</h4>
    <a href="#" class="dropdown-trigger">Vis beskrivelse</a>
    <div id="beskrivelse-1">
      Beskrivende note der falder ned, når man klikker på linket "Vis beskrivelse".
    </div>
  </li>
  <li>
    <h4>Overskrift 2</h4>
    <a href="#" class="dropdown-trigger">Vis beskrivelse</a>
    <div id="beskrivelse-2">
      Beskrivende note der falder ned, når man klikker på linket "Vis beskrivelse".
    </div>
  </li>
</ul>

CSS koden ser således ud.

.linklist li {position:relative;width:270px;}
.linklist li div.hidden {display:none;} /* skjuler div'en, før den aktiveres med jQuery .slideDown() */
.linklist li div {
  background:#ddd;
  border:1px solid #ccc;
  left:0;
  padding:6px 12px 12px;
  position:absolute;
  top:20px;
  width:244px;
}

<div> ele­mentet bør således placere sig ovenpå <li> ele­menterne. Det virker bare ikke i IE før ver­sion 8, fordi stakke­or­de­nen er fejl­be­hæftet. Jeg prøvede at løse prob­lemet ved at definere en lavere z-index på <li> ele­menterne, end på <div> ele­menterne, men det løste ikke prob­lemet. De efter­føl­gende <li> ele­menter blev stadig vist ovenpå det aktive <div>ele­ment.

Efter en del søgn­ing på net­tet fandt jeg Vance Lucas’ jQuery-baserede løs­ning af prob­lemet:

$(function() {
  var zIndexNumber = 1000;
  $('div').each(function() {
    $(this).css('zIndex', zIndexNumber);
    zIndexNumber -= 10;
  });
});

Ideen er, dynamisk at vende stan­dard z-index stakke­or­de­nen af HTML ele­menterne om. Således sikrer man, at ele­menter, der lig­ger højere i kildeko­den også har en højere z-index orden på siden, hvilket burde løse ren­der­ing­sprob­lemet i IE.

Det løste ikke umid­del­bart mit prob­lem. Jeg havde imi­dler­tid andet­st­eds læst, at man skulle kunne løse prob­lemet ved at give det rel­a­tivt posi­tionerede omgivende ele­ment en højere z-index orden, end det abso­lut posi­tionerede element.

Det gav mig ideen til også at lave en Vance Lucas jQuery løs­ning på det rel­a­tivt posi­tionerede <li> ele­ment, men med en højere z-index orden. Altså:

$(function() {
  var LizIndexNumber = 1100;
  $('li').each(function() {
    $(this).css('zIndex', LizIndexNumber);
    LizIndexNumber -= 10;
  });
  var DivzIndexNumber = 1000;
  $('div').each(function() {
    $(this).css('zIndex', DivzIndexNumber);
    DivzIndexNumber -= 10;
  });
});

Og voila! Så virker det.

Bedre design med 4 basale principper: CRAP

Jeg har lært et nyt ord i dag: CRAP! Et huske­ord eller en forko­r­telse for 4 basale design­prin­cip­per under over­skrifterne Contrast, Repe­ti­tion, Align­ment og Prox­im­ity.

Con­trast: Kon­trast drejer sig om udnyt­telse af stør­relser, for­mer og farver til at skelne ele­menter fra andre ele­menter. Bru­gen af fed får f.eks. den fed­ede tekst til at adskille sig fra den øvrige tekst. Et ele­ment med orange bag­grunds­farve skiller sig f.eks. ud, hvis alle andre ele­menters bag­grunds­farve er grå osv.

Rep­e­ti­tion: Gen­t­agelse af designele­menter drejer sig om at skabe et kon­sis­tent design. Infor­ma­tion, der optræder på alle sider, bør således plac­eres ens på alle sider. Punk­top­stillede lis­ter bør være ens. Antallet af skrift­typer bør begrænses til 2–3 og over­skrifter, under­over­skrifter og brødtekst bør se ens ud på alle sider. Det han­dler om at skabe en hel­hed, hvor brugeren hur­tigt vil komme til at for­vente, at eleme­ter med et bestemt udseende indik­erer en bestemt egenskab.

Align­ment: Opstill­ing af ele­menterne han­dler om at sætte designet i sys­tem. Intet bør plac­eres til­fældigt. Et grelt eksem­pel er cen­tr­eret tekst, hvor tek­sten man­gler bagkant og derved bliver min­dre læs­bar. Alt bør have en vis visuel forbindelse til noget andet. Det gør det nem­mere for brugeren at forstå og nav­igere i designets system.

Prox­im­ity: Nærhed drejer sig om elemternes ind­byrdes rela­tion. Ele­menter, der har rela­tion til hinan­den bør grup­peres tæt sam­men. Når mange ele­menter grup­peres tæt sam­men, bliver de visuelt til én enhed snarere end mange seper­ate enkelt­dele. Dette hjælper til at organ­is­ere infor­ma­tion og reduc­erer rod.

Mange af disse prin­cip­per ser vi også i gestalt­lovene. Men forko­r­telsen CRAP gør det måske lidt nem­mere at huske.

Art Direction plugin til WordPress — Pimp dine indlæg

Jeg har tidligere skrevet om Jason Santa Maria’s blog, der har det særk­ende at næsten hvert indlæg er indi­vidu­elt gen­nemde­signet i en stil, der passer ind i sitets overordnede look and feel.

Nu er det blevet lidt let­tere, i hvert fald rent teknisk, at opnå noget lig­nende med Word­Press. Noel Jack­son, designer hos Automat­tic, der udvikler Word­Press, har nem­lig for nylig udgivet et plu­gin, der gør det muligt at lave brugerde­finerede designs til indlæg enkeltvis, mens et glob­alt stylet arkiv bibeholdes.

Men ét er teknikken. Den virke­lige udfor­dring lig­ger i designop­gaven, hvis hvert indlæg i en blog ønskes stylet individuelt.

Plugin’et hed­der Art Direc­tion. Det er i beta og ver­sion 0.2 er ude nu.

Tips til forbedring af brugergrænsefladen

Web­de­sign består i overve­jende grad af design af bruger­grænse­flader. Man falder ofte over sites, hvor fokus i designet er plac­eret uhen­sigtsmæs­sigt. Der findes mange eksem­pler på at farver, kon­traster, stør­relser og afs­tande i tekst og lay­out er mere til­fældigt valgt end bev­idst udnyt­tet til sam­men­bind­ing og adskil­lelse af ele­menter samt opmærksomhedsskabelse.

Hvilken søge­boks er f.eks. vigtigst i dette design?

Søgebokse

Her giver især gestalt­lovene nogle gode rettes­nore. Niels Gam­borg har  nogle udmærkede fork­laringer af gestalt­lovene her:

Smash­ing Mag­a­zine har et rigtig godt indlæg med 10 gode tips og masser af både gode og dårlige eksem­pler, der kan hjælpe med at rette et web­site med for mange design­til­fældigheder op til en mere effek­tiv bruger­grænse­flade.
10 Use­ful Tech­niques To Improve Your User Inter­face Designs

Apropos enestående webtypografi

Fornylig skrev jeg lidt om typografi på net­tet. Web­De­sign­er­Wall har en glim­rende artikel om emnet, Fonts and the Web af Juul Coolen. Artiklen kom­mer omkring 4 forskel­lige metoder til at spiffe de typografiske muligheder i web­de­sign op.

  • Image Replace­ment — hvor tek­sten erstattes af grafik med CSS.
  • sIFR (Scal­able Inman Flash Replace­ment) — hvor typografien erstattes af Flash.
  • FLIR (Facelift Image Repal­cement) — hvor tek­sten erstattes af grafik on the fly vha. PHP.
  • CSS3 — hvor der i fremti­den vil kunne gøres brug af @font-face reglen.

Læs Fonts and the Web af Juul Coolen på Web­De­sign­er­Wall.