Fixa så höjden stämmer på ett < svg >-objekt (cross-browser)

IE11 är en av flera browsers som inte fixar att kirra höjd på ett svg-objekt ordentligt. Följande metod kan funka som ett fulhack för att få det att fungera. Se till att ha med viewBox i din svg.

  • Räkna ratio på viewboxen (höjd/bredd) – exempelvis blir ett värde på 0,1234 = 12,34%
  • Omslut med en div (ex. class=”svg-wrapper”)

I CSSen sätter du:

.svg-wrapper {
   padding-bottom: [din ratio]% //(se procentvärdet ovan)
   position: relative;
}

.svg-wrapper svg {
    height: 100%;
    left: 0;
    position: absolute;
    top: 0;
    width: auto; //(alltså 100%)
}

 

Sätt alla element till box-sizing:border-box

Det är så sjukt gött med box-sizing:border-box. Det möjliggör att att CSSen räknar in padding och border till totalbredden. Man slipper att hålla koll på width – padding = width osv. Läs mer om box-modellen på CSS-Tricks. TL;DR; Gör så här:

*, *:before, *:after {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}

 

Gör tabell med CSS

Jag har stött på flera varianter på där man använder sig av HTML-elementet <table> för att skapa tabeller. I bland kan det kanske lämpa sig bättre med denna teknik men kan man så tycker jag att det är roligare att rita upp sina tabeller med CSS.

Så jag tänkte visa lite snabbt och enkelt hur man gör en tabell med hjälp av CSS-attributet “display”. Dock är detta inget som fungerar i IE7 men kan man hitta på en bra work-around (alternativt om man bestämmer sig för att låta IE7-användare inte få en lika snygg upplevelse) så kanske det är värt att lägga <table> åt sidan.

table-med-css

Jag bygger tabellen med hjälp av <ul> (unordered list) och <li> (list items). På listan sätter jag display:table, mina rader får display:table-row och mina celler får display:table-cell. Nu har vi byggt oss en enkel tabell.

Det finns givetvis en mängd olika varianter på hur man kan göra men jag brukar göra något i stil med det här och det har fungerat utan klagomål hittills =). Om du har tips på något ännu bättre sätt eller om jag borde göra något annorlunda, skriv gärna en rad nedan.

HTML för min tabell:

<ul>
<li>
<div>Kolumn 1</div>
<div>Kolumn 2</div>
<div>Kolumn 3</div>
</li>
<li>
<div>Värde 1</div>
<div>Värde 2</div>
<div>Värde 3</div>
</li>
<li>
<div>Värde 4</div>
<div>Värde 5</div>
<div>Värde 6</div>
</li>
<li>
<div>Värde 7</div>
<div>Värde 8</div>
<div>Värde 9</div></li>
</ul>

 

CSS för min tabell:

ul.table {
border: 1px solid #ddd;
display: table;
margin: 0;
padding: 0;
}
ul.table li.column-row, ul.table li.row {
display: table-row;
padding: 4px;
}
ul.table div.column, ul.table div.cell {
display: table-cell;
padding: 4px;
}
ul.table div.cell {
vertical-align: middle;
}
/* Bakgrundsfärg på raderna*/
ul.table li.column-row {
background-color: #e1e1fa;
}
ul.table li.row:nth-child(even) {
background-color: #f1f1f1;
}
/* Fet text på kolumnrubrikerna */
ul.table div.column {
font-weight: 900;
}

Ursprungligen publicerad på avtramp.se