Boxmodellen handlar om egenskaper för elements storlek, kantlinjer och marginaler. Du ska nu gå igenom några övningar, för att få en förståelse av hur modellen fungerar.
15 min.
Följande är förslag på övningar. Experimentera gärna med egna förändringar, så att du lär dig hur egenskaperna fungerar.
Förberedelser
- Öppna mappen L4a (som finns i L4) i Visual Studio Code (VSC).
- Öppna filen index.html och style.css i VSC samt öppna sidan i Live Server.
- Studera den kod som finns i HTML- och CSS-filerna, så att du blir insatt i den.
Storlek på boxarna
- Lägg in
width: 300px;
ochheight: 200px;
i regeln för#box1
.- Experimentera med olika värden och enheter för
width
, se sid. 253 i kursboken Learning Web Design. Prova t.ex.px
,%
ochvw
förwidth
.
- Experimentera med olika värden och enheter för
- Lägg in
width: 150px;
ochheight: 100px;
i regeln för.wrapper div
.- Storleken gäller då endast för de två sista boxarna, men inte för "box1", eftersom regeln för
#box1
har ett id i selektorn och den specificerar då boxen mer än den med en class och element.- Se regler för "specificity" på sidan 284-285 i boken Learning Web Design.
- Ta därför bort
width
ochheight
i regeln för#box1
. Storleken i.wrapper div
ska nu användas för alla boxar i fortsättningen av denna lab.
- Storleken gäller då endast för de två sista boxarna, men inte för "box1", eftersom regeln för
Marginaler och "display"
- Lägg in
margin
med värdena40px
,20px
respektive10px
i reglerna för#box1
,#box2
och#box3
. - Ta fram Inspektören i Firefox. Notera avståndet över och under boxarna. Marginalerna överlappar varandra.
- Du kan peka på
div
-elementen för boxarna i HTML-koden i Inspektören, så ser du marginalerna med gul färg på webbsidan. - Du kan också klicka på knappen med en fyrkant och pil längst upp till vänster i Inspektören. Då kan du sedan föra muspekaren över boxarna på webbsidan och se marginalerna.
- Du kan peka på
- Sätt
padding
till10px
för samtliga boxar i regeln för.wrapper div
. Kontrollera i Inspektören och notera var padding kommer in. - Lägg in
display: inline;
i regeln för.wrapper div
.- Stilen för
width
ochheight
har ingen effekt, menmargin
ochpadding
funkar. - Kontrollera i Inspektören. att
margin
inte överlappar varandra i sidled.- Notera också att marginalen hamnar utanför det omgivande elementet (den vita rutan). Den "marginal" som finns mellan den vita rutans kanter och boxarna är
padding
i det omgivande elementet (div
-elementet med classwrapper
).
- Notera också att marginalen hamnar utanför det omgivande elementet (den vita rutan). Den "marginal" som finns mellan den vita rutans kanter och boxarna är
- Stilen för
- Ändra
display
tillinline-block
i regeln för.wrapper div
.- Nu funkar
width
ochheight
för boxarna och marginalen hamnar innanför det omgivande elementet. - Notera att även box 2 och 3 flyttas ner lika mycket som box 1, men kontrollera i Inspektören att deras
margin
inte förändrats.
- Nu funkar
- Lägg till
vertical-align: top;
i regeln för.wrapper div
.- Kontrollera i Inspektören att det är hela boxen, inklusive marginal, som justeras, så att alla boxars överkant läggs lika högt, dvs marginalernas överkant och inte innehållets överkant.
- Prova även med andra värden, såsom
bottom
. Standardvärdet förvertical-align
ärbaseline
. Låt värdet varabaseline
, då du experimenterat klart.
- Lägg in
margin: 20px;
i regeln för.wrapper div
och ta bort margin i reglerna för#box1
till#box3
. Alla boxar får då samma marginal.
Kantlinje
- I regeln för
.wrapper div
lägger du inborder-width: 6px; border-style: solid; border-color: #000000;
- De tre egenskaperna kan också förkortas till
border: 6px solid #000000;
- Prova även några andra stilar för
border-style
. Se sid 366-367 i boken Learning Web Design.
- De tre egenskaperna kan också förkortas till
Avstånd mellan boxarna
- Sätt
margin
till0
i regeln för.wrapper div
.- Det blir ändå ett litet avstånd mellan dem pga radbrytningen mellan
div
-elementen i HTML-koden, som är "white space". Det ersätts av ett blanktecken av webbläsaren.
- Det blir ändå ett litet avstånd mellan dem pga radbrytningen mellan
- Lägg in
font-size: 0;
i det omgivande elementet, dvs i regeln för.wrapper
och lägg infont-size
med önskad storlek (t.ex.1rem
) i de inre elementen, dvs i regeln för.wrapper div
.- Detta "knep" behövs endast om boxarna ska ligga precis intill varandra. Om man sedan ändå lägger in en
margin
som är större än 0 på boxarna, behöver man ju inte ändrafont-size
.
- Detta "knep" behövs endast om boxarna ska ligga precis intill varandra. Om man sedan ändå lägger in en
Storlek på boxarna
- Sätt
width
till33%
i regeln för.wrapper div
.- De får inte plats på en rad, eftersom även
padding
ochborder
tar plats.
- De får inte plats på en rad, eftersom även
- Lägg till
box-sizing: border-box;
i regeln för.wrapper div
, Justerawidth
till33.33333%
.- Boxarna ska nu hamna intill varandra på samma rad och vara lika breda.
Innehållet påverkar även utanför boxen
- Lägg texten "Box 1" i ett
h2
-element för box 1 i HTML-dokumentet.- Kontrollera i Inspektören att
h2
har en övre och undre marginal. - Lägg in
margin: 0;
i en ny regel för#box1 h2
(eller.wrapper div h2
, om det ska gälla alla boxar) - Ändra
vertical-align:
tilltop
i regeln för.wrapper div
, så att boxarna kommer i jämnhöjd.- Du kanske redan har värdet
top
. Det beror på vad du avslutade med tidigare, då du experimenterademed olika värden.
- Du kanske redan har värdet
- Kontrollera i Inspektören att
- Lägg in ett
p
-element med lite Lorem ipsum under rubriken i box 1 i HTML-dokumentet.- Skriv t.ex.
p>Lorem20
och tryck på tab-tangenten.
- Skriv t.ex.
- Lägg in
overflow: auto;
i regeln för#box1
. Testa även andra värden föroverflow
, men låt det sedan varaauto
.
Visuella effekter
- Ändra
width
till200px
ochmargin
till20px
i regeln för.wrapper div
, för att tydligare se de rundade hörnen och skuggan, som du nu ska lägga in. - I regeln för
.wrapper div
lägger du inborder-radius: 15px;
- Prova gärna med lite olika värden.
- En skugga på boxarna lägger du in genom att i regeln för
.wrapper div
lägga tillbox-shadow: 5px 5px 15px 2px #333333;
- Se beskrivning av de olika värdena på sida 382-383 i Learning Web Design.
- Prova även med andra värden. Även negativa värden på de två första, som bestämmer åt vilket håll skuggan ska gå.
Flexibilitet
- Testa med olika bredd på fönstret, genom att ta fram Följsamt designläge i Firefox.
Klar
Gå nu vidare med föreläsning F4b och därefter laboration L4b.