De table-layout
fastighets definierar vad algoritm webbläsaren ska använda för att lägga ut tabellrader, celler och kolumner.
table ( table-layout: fixed; )
Som förklaras i CSS2.1-specifikationen är tabelllayouten i allmänhet en smakfråga och varierar beroende på designval. Webbläsare tillämpar dock automatiskt vissa begränsningar som definierar hur tabellerna läggs ut. Detta händer när table-layout
egenskapen är inställd på auto
(standard). Men dessa begränsningar kan tas bort när den table-layout
är inställd på fixed
.
Värden
auto
: standarden. Webbläsarens automatiska algoritm används för att definiera hur en tabells rader, celler och kolumner är utformade. Den resulterande tabelllayouten är vanligtvis beroende av innehållet i tabellen.fixed
: Med detta värde ignorerar tabellens layout innehållet och använder istället tabellens bredd, vilken som helst specifik kolumnbredd och gränsvärden och cellavståndsvärden. Kolumnvärdena som används är baserade på bredder definierade i kolumner eller celler för den första raden i tabellen.inherit
: indikerar att värdet ärvs fråntable-layout
värdet på dess förälder
För att ett värde fixed
ska ha någon effekt måste tabellens bredd ställas in på något annat än auto
(standard för width
egenskapen). I demos nedan är alla tabellbredder inställda på 100%, vilket förutsätter att vi vill att tabellen ska fylla dess överordnade behållare horisontellt.
Det bästa sättet att se effekterna av en algoritm med fast bordslayout är att använda en demo.
Se Pen Demo för CSS: s bordslayoutegenskap av Louis Lazaris (@impressivewebs) på CodePen.
När du först visar ovanstående demo kommer du att märka att tabellkolumnernas layout är obalanserad och besvärlig. Vid den tidpunkten använder tabellen webbläsarens standardalgoritm för att definiera hur tabellen ska läggas, vilket innebär att innehållet kommer att diktera layouten. Demon överdriver detta genom att inkludera en lång textsträng i en tabellcell, medan alla andra tabellceller bara använder två ord vardera. Som du kan se expanderar webbläsaren den första kolumnen för att rymma den större biten av innehåll.
Om du klickar på knappen "Toggle table-layout: fixed" ser du hur tabelllayouten ser ut när den "fixerade" algoritmen används. När det table-layout: fixed
tillämpas dikterar innehållet inte längre layouten, utan istället använder webbläsaren definierade bredder från tabellens första rad för att definiera kolumnbredder. Om det inte finns några bredder på den första raden delas kolumnbredderna lika över tabellen, oavsett innehållet i cellerna.
Ytterligare exempel kan bidra till att göra detta tydligare. I följande demo har tabellen ett element vars första
element har en bredd på
400px
. Observera i det här fallet att växling inte table-layout: fixed
har någon effekt.
Se Pen Demo för CSS: s bordslayoutegenskap av Louis Lazaris (@impressivewebs) på CodePen.
Detta händer eftersom standardlayoutalgoritmen i princip säger "gör den första kolumnen 400px bred och fördela de återstående kolumnerna baserat på deras innehåll". Eftersom de andra tre kolumnerna har samma innehåll som varandra kommer det inte att ändras. Men nu ska vi lägga till lite extra textinnehåll i en av de andra kolumnerna:
Se Pen Demo för CSS: s tabelllayoutegenskap med kolbredd och variabelt innehåll av Louis Lazaris (@impressivewebs) på CodePen.
Om du nu klickar på växlingsknappen ser du kolumnerna justeras för att rymma en fast layout, oavsett innehåll. Återigen händer samma sak; den första kolumnen är inställd på 400 pixlar, sedan delas de återstående kolumnerna lika. Men den här gången, eftersom en av kolumnerna har extra innehåll, märks skillnaden.
Hur en fast layoutalgoritm bestämmer kolumnbredder
Följande två demos bör hjälpa till att förstå att den första raden i tabellen är det som hjälper till att definiera kolumnbredden för en tabell som är inställd på table-layout: fixed
.
Se Pen Demo för CSSs bordslayout med cell i rad 1 angiven definierad bredd av Louis Lazaris (@impressivewebs) på CodePen.
I ovanstående demo har den första cellen i tabellens första rad en bredd på 350 pixlar. Växling table-layout: fixed
justerar de andra kolumnerna, men den första förblir densamma. Försök nu med följande demo:
Se Pen Demo för CSSs bordslayout med cell i rad 2 angiven definierad bredd av Louis Lazaris (@impressivewebs) på CodePen.
I det här fallet är det den andra raden som har en bredd kopplad till sin första tabellcell. Nu när du trycker på växlingsknappen justeras alla kolumnbredder. Återigen beror detta på att den fasta layoutalgoritmen använder den första raden för att bestämma kolumnbredderna, och slutresultatet är att den fördelar bredderna lika.
Fördelar med en fast layoutalgoritm
De estetiska fördelarna med att använda table-layout: fixed
bör framgå av demonstrationerna ovan. Men den andra stora fördelen är prestanda. Specifikationen hänvisar till den fasta algoritmen som en ”snabb” algoritm och med goda skäl. Webbläsaren behöver inte analysera hela tabellens innehåll innan kolumnernas storlek bestäms. det behöver bara analysera den första raden. Så resultatet är en snabbare bearbetning av tabellens layout.
Mer information
- Fasta bordslayouter
- Fast tabelllayout i CSS2.1 spec
- Den
table-layout
egenskap i CSS Tabell Modul Nivå 3
Webbläsarstöd
Krom | Safari | Firefox | Opera | IE | Android | iOS |
---|---|---|---|---|---|---|
1+ | 1+ | 1+ | 7+ | 5+ | 2.1+ | 3+ |