Multi-Column på en anderledes måte

Nå er det kommet ut en ny utgave av A List Apart. Denne gangen var en av de to artiklene om multi-column layout. Som vi alle vet kan det være en slitsom prosess - særlig med tanke på dynamisk bredde og forskjellige farger på kolonnene som går helt ned. Det er nemlig det som er problemet. Om vi skal ha forskjellig farge på kolonnene og hver og en av de skal gå ned til bunnen må vi til med bildet i bakgrunnen. Da blir det noe problematisk med dynamisk bredde, blir det ikke?

Nå har en av skribentene i A List Apart, Alan Pearce, funnet en måte å kunne løse dette på. Men selvsagt det har jo sine begrensninger. Les artikkelen på ALA

Som han selv så elegant skrev det: Han måtte tenke ut av boksen, og det var nemlig det han gjorde. Hva er utenfor en boks (les: divisjon)? Jo, rammer/border!

Løsningen er simpel, bruk border med en farge og legg en divisjon over den. Bruk negativ margin til å plassere en divisjon over.

Eksempel på simpel måte å bruke det på.

CSS

Her ser du CSS-en som blir brukt, så vil du se det simple konseptet bak teorien.

  1. #container{
  2.     background-color:#9cc;
  3.     overflow:hidden;
  4.     margin:0 100px;
  5.     /* The width of the rail */
  6.     padding-right:150px;
  7. }
  8. * html #container{
  9.     /* So IE plays nice */
  10.     height:1%;
  11. }
  12. #content{
  13.     background-color:#9cc;
  14.     width:100%;
  15.     /* The width and color of the rail */
  16.     border-right:150px solid #c33;
  17.     /* Hat tip to Ryan Brill */
  18.     margin-right:-150px;
  19.     float:left;
  20. }
  21. #rail{
  22.     background-color:#c33;
  23.     width:150px;
  24.     float:left;
  25.     margin-right:-150px;
  26. }

Forklaringen

Det som blir gjort er selvforklarende om du ser der. Bruk border, med bredden til feltet og ha negativ margin på den samme bredden. Så bruker du den ønskede fargen på border. Rail er sidebar, eller sidefeltet og container er utenfor alt. Wrappen.

Om du ser nøye på CSS-kodene legger dere kanskje merke til * html #container og margin:0 100px;. Disse gjør at container blir midtstilt.

Om du er ute etter tre kolonners layout er det bare å klone høyre siden her til venstre siden. Om du kun er ute etter venstresiden er det bare til å endre på float og til border-left.

Dere kan se et supert eksempel under artikkelen.

Bakdeler

Hvor ofte kan man få bruk for dette? Jeg er ikke helt sikker på om jeg kommer til å adoptere metoden. For det første har den ingen støtte for min-width til sentralelementet, heller ingen god støtte for dynamisk bredde. Det er viktig å huske at det ikke er mulig å bruke %-definisjoner av bredden til border, derfor er alltid bredden på side-elementene statiske, mens sentral-elementet kan være dynamisk. Det vil føre til at lite vindu vil være stygt. Da er det mulig en må adoptere andre metoder og kanskje bruke JavaScript til å sjekke brukerens bredde av nettleseren til å definere stilsett.

Bakdeler er altså: Ingen min-width, ingen dynamisk bredde på side-elementene.

Legg igjen respons

Fyll ut alle felt markert med *

Brukerinformasjon
  1. Kan bruke følgende html: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong> og [html] [css], [mysql] og [php] Hold posten ren og fin!

    Siter valgt tekst

E-post-varsel uten å skrive kommentar.

Info om posten

Innlegget ble postet 06.02.07 19:26 og ligger under kategorien CSS / (X)HTML. Du kan abonnere på kommentarene ved å bruke RSS 2.0 feed. Du kan legge til kommenter, eller trackback fra din blogg/side.

Resurser

Arkiver

Metainfo


Siste Flickr-bilder

  • Commentsystem (20070308)
  • Ukraina Aksjonen 2006 (20070306)
  • Mikael Brevik blogg (20070306)
  • Mikael Brevik (20070306)
  • Brukerdefinert side - AVIS2 (20070306)
  • Brevik Webutvikling (20070306)
  • skyscraper
  • visittkort