Noter fra undervisning og forberedelse til HTML5 & CSS3. Noterne dækker lister, links, menuer, responsive web design og media queries. Noterne er taget på MMD.
Forberedelsesmaterialet
Til forberedelsens skulle der læses Murach kapitel 7-8. Desuden skulle metoden afprøves.
Lister
ul – uorganiseret liste
oi – nummeret liste
li – listepunkt
Liste struktur
ul
Kodeeksempel
<ul>
<li>
<p>Eksempeltekst</p>
</li>
<li>
...
</li>
</ul>
Resultat
-
Eksempeltekst
- …
ol
Kodeeksempel
<ol>
<li>
<p>Vi har det sjovt</p>
</li>
<li>
<p>Vi har det sjovt</p>
</li>
<li>
<p>Vi har det sjovt</p>
</li>
</ol>
<ol start="5">
<li>
<p>Hov. Vi glemte 4</p>
</li>
</ol>
Resultat
-
Vi har det sjovt
-
Vi har det sjovt
-
Vi har det sjovt
-
Hov. Vi glemte 4
Nested liste stuktur
Nested liste er en liste inde i en liste. Det kan gøres for ul, ol eller en kombination deraf.
Kodeeksempel
<ul>
<li>
<p>Eksempeltekst</p>
</li>
<li>
<ol>
<li>
<p>Vi har det sjovt</p>
</li>
<li>
<p>Vi har det sjovt</p>
</li>
<li>
<p>Vi har det sjovt</p>
</li>
</ol>
<ol start="5">
<li>
<p>Hov. Vi glemte 4</p>
</li>
</ol>
</li>
</ul>
Resultat
-
Eksempeltekst
-
-
Vi har det sjovt
-
Vi har det sjovt
-
Vi har det sjovt
-
Hov. Vi glemte 4
-
description lists | deskriptive lister
Lister der har til formål at lave beskrivelser.
dl – deskriptiv liste
dt – term i deskriptiv liste
dd – beskrivelse i deskriptiv liste
Kodeeksempel
<dl>
<dt>Deskriptive lister</dt>
<dd>Lister der har til formål at lave beskrivelser.</dd>
</dl>
Resultat
- Deskriptive lister
- Lister der har til formål at lave beskrivelser.
Formatering af lister
Med css kan lister formateres.
Man kan ændre punktets design med følgende:
- list-style-type – definerer formen for punkt-kuglen (bullet)
- Kan defineres som bl.a. disc, circle, square & none
- Kan defineres som decimal, decimal-leading-zero, lower-alpha, upper-alpha, lower-roman & upper-roman
- list-style-image – definerer punkt-kuglen som et selvvalgt billede
Kodeeksempel – HTML
<!--HTML-->
<ul class="use_square">
<li>
<p>Eksempeltekst</p>
</li>
<li>
...
</li>
</ul>
<ul class="use_image">
<li>
<p>Eksempeltekst</p>
</li>
<li>
...
</li>
</ul>
<ol class="use_lower_aplpha">
<li>
<p>Med småt alphabet</p>
</li>
<li>
...
</li>
</ol>
Kodeeksempel – CSS
/*CSS*/
.use_square{
list-style-type: square;
}
.use_image{
list-style-image: url("http://maxfest.dk/port/wp-content/uploads/2019/09/Max-Festersen-Hansen-2019.png");
}
.use_lower_aplpha{
list-style-type: lower-alpha;
}
Resultat
-
Eksempeltekst
- …
-
Eksempeltekst
- …
-
Med småt alphabet
- …
List alignment
List alignment styres med padding på listeelementet og listepunktet.
Links
Links kan skabes med a elementet.
Links attributter
- href – relativ eller absolut URL.
- title – tooltip
- tabindex – definerer logik for tastatur navigation med tab-knappen.
- accesskey – identificerer en tast der kan aktivere links, sammen med en browserafhængig kombination af taster.
Kodeeksempel på link med href, title, tabindex og accesskey
<a href="https://maxfest.dk/port" title="Gå til forsiden" tabindex="0" accesskey="q">Home</a>
Resultat
HomeNote: Mozilla har dokumentet hvilke tastekombinationer der skal til for at anvende accesskey.
Note: hover over teksten for at se tooltip.
Pseudo klasser til formatering af links
- :link – ubesøgt link
- :visited – besøgt link
- :hover – element der bliver hoveret på
- :focus – element der er i fokus, f.eks. fordi linket er blevet trykket på og siden indlæsser
- :active – element der er aktivt, f.eks. fordi der bliver trykket på det.
Kodeeksempel
/*CSS*/
a:link, a:visited{
color:#0000FF:
}
a:hover{
color:#FF0000:
}
Åben links i nye tabs
Tilføj target attribut med værdien “_blank”.
Kodeeksempel
<a href="https://maxfest.dk/port" target="_blank">Home</a>
Resultat
HomeNavigation til element med id og placeholder
Til href attributtet skal værdien være efterfulgt af “#” og navnet på id.
Kodeeksempel
<a href="#">Placeholder</a>
</br>
<a href="#colophon">Footer på denne side</a>
</br>
<a href="https://maxfest.dk/port#colophon">Footer på forsiden</a>
Resultat
Placeholder Footer på denne side Footer på forsidenLinks til mediefiler
Man kan linke til bl.a.:
- application/pdf – PDF
- audio/x-wave – WAV
- audio/mpeg / audio/xmpeg – MP3
- video/mpeg – MPG/MPEG
- application/x-shockwave-flash – SWF
For at linke til disse, skal linket til deres lokation indsættes som værdi til href attributtet og refferemcem som værdi til type attributtet.
Kodeeksempel
<a href="https://maxfest.dk/port/wp-content/uploads/2019/11/Gantt-chart-gruppe-3-projekt-2.pdf" type="application/pdf" target="_blank">Link til Gantt chart gruppe 3 projekt 2</a>
Resultat
Link til Gantt chart gruppe 3 projekt 2Links med e-mail, telefonnummer eller skype links
Man kan lave links som prøver at interagere med faktorerne.
Som værdi i href attributtet før linket kan man tilføje:
- mailto – for e-mail adresser
- tel – for telefoner
- skype – for skype referencer
Kodeeksempel
<a href="mailto:test@maxfest.dk" type="application/pdf">Send e-mail</a>
</br>
<a href="tel:12345678" type="application/pdf">Ring til nummer</a>
</br>
<a href="skype:12345678test" type="application/pdf">Ring via skype</a>
Resultat
Send e-mail Ring til nummer Ring via skypeMenuer
A elementer i en uorganiseret liste.
Vertikalt design
Class kan undværes. Jeg anvender en, da mine eksisterende menuer ellers bliver påvirket, og jeg påvirke efterfølgende resultater.
Kodeeksempel -HTML
<nav class="ex_vertical_menu">
<ul>
<li>
<a href="https://maxfest.dk/port">Home</a>
</li>
<li>
<a href="#">Placeholder</a>
</li>
<li>
<a href="#">Placeholder 2</a>
</li>
</ul>
</nav>
Kodeeksempel – CSS
nav.ex_vertical_menu, ul, li, a{
margin: 0;
padding: 0;
}
nav.ex_vertical_menu ul{
list-style-type: none;
}
nav.ex_vertical_menu ul li{
display:block;
text-decoration:none;
}
Resultat
Horisontalt design
Class kan undværes. Jeg anvender en, da mine eksisterende menuer ellers bliver påvirket.
Kodeeksempel -HTML
<nav class="ex_horisontal_menu">
<ul>
<li>
<a href="https://maxfest.dk/port">Home</a>
</li>
<li>
<a href="#">Placeholder</a>
</li>
<li>
<a href="#">Placeholder 2</a>
</li>
</ul>
</nav>
Kodeeksempel – CSS
nav.ex_horisontal_menu, ul, li, a{
margin: 0;
padding: 0;
}
nav.ex_horisontal_menu ul{
list-style-type: none;
}
nav.ex_horisontal_menu ul li{
float:left;
text-decoration:none;
/* Evt. tilføj padding */
padding:0 10px;
/* display:inline kan angives, men ignores pga. float:left */
display:inline;
}
Resultat
2nd-tier navigation menu – dropdown
Eksemplet tager udgangspunkt i det horisontale eksempel fra før.
Class kan undværes. Jeg anvender en, da mine eksisterende menuer ellers bliver påvirket.
Kodeeksempel -HTML
<nav class="tier_two_menu">
<ul>
<li>
<a href="https://maxfest.dk/port">Home</a>
</li>
<li>
<a href="#">Placeholder 1</a>
<ul>
<li>
<a href="#">Placeholder 2</a>
</li>
</ul>
</li>
</ul>
</nav>
Kodeeksempel – CSS
nav.tier_two_menu, ul, li, a{
margin: 0;
padding: 0;
}
nav.tier_two_menu ul{
list-style-type: none;
}
nav.tier_two_menu ul li{
display:inline;
position:relative;
float:left;
text-decoration:none;
padding:0 10px;
}
nav.tier_two_menu ul ul{
display:none;
position:absolute;
top:100%;
}
nav.tier_two_menu ul ul li{
float:none;
}
nav.tier_two_menu ul li:hover > ul{
display:block;
}
Resultat
3-tier navigation menu – dropdown
Eksemplet tager udgangspunkt i eksemplet fra 2nd-tier navigation menu – dropdown.
Class kan undværes. Jeg anvender en, da mine eksisterende menuer ellers bliver påvirket.
Kodeeksempel -HTML
<nav class="tier_three_menu">
<ul>
<li>
<a href="https://maxfest.dk/port">Home</a>
</li>
<li>
<a href="#">Placeholder 1</a>
<ul>
<li>
<a href="#">Placeholder 2</a>
<ul>
<li>
<a href="#">Placeholder 3</a>
</li>
</ul>
</li>
<li>
<a href="#">Placeholder 4</a>
<ul>
<li>
<a href="#">Placeholder 5</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
Kodeeksempel – CSS
nav.tier_three_menu, ul, li, a{
margin: 0;
padding: 0;
}
nav.tier_three_menu ul{
list-style-type: none;
}
nav.tier_three_menu ul li{
display:inline;
position:relative;
float:left;
text-decoration:none;
padding:0 10px;
}
nav.tier_three_menu ul ul{
display:none;
position:absolute;
top:100%;
}
nav.tier_three_menu ul ul li{
width:auto;
position:relative;
float:left;
}
nav.tier_three_menu ul ul li ul{
position:absolute;
left:100%;
top:0;
}
nav.tier_three_menu ul li:hover > ul{
display:block;
}
Resultat
Responsive web design
Responsive design er design der kan tilpasse sig en sides brede. Det er praktisk til webdesign til f.eks. mobiler (fordi de varierer i bredden).
Responsive design består af 3 komponenter:
- Fluid layout
- Media queries
- Skalerbare billeder
Design tricks
Der er mange måder at designe responsivt indhold. Murach gav nogle udmærkede tips, man med fordel kan følge. Jeg havde nogle tilføjelser, der måske vil kunne hjælpe nogen.
Murachs tips
- I stedet for at definere sidebredde med pixels, anvend %.
- Skriftstørrelser kan med fordel laves relativt ud fra en universel størrelse.
- Man kan definere billeders brede i %, således at de skalerer. Nedskalering fungerer oftest uden problemer, men for at undgå opskaleringsproblemer, bør man definere en max-width på billedets faktiske brede.
Mine tips
- I stedet for at bruge %, kan man også tage udgangspunkt i vw og vh.
- vw står for view width, og defineres ud fra skærmbreden, i stedet for parrent elementetet som % gør.
- vh står for view height, og defineres ud fra skærmhøjden, i stedet for parrent elementetet som % gør.
- vw og vh kan anvendes til skrifttyper, således at de også justeres relativt til skærmstørrelsen.
Media queries
Viewport
Viewport metadata
Attribut | Egenskab |
width | Siddebredde |
height | Sidehøjde |
initial-scale | Zoomfaktor på siden ved indlæsning. |
minimum-scale | Mindste mulige zoomfaktor på siden. |
maximum-scale | Største mulige zoomfaktor på siden. |
user-scalable | Boolean for om brugeren kan zoome ind og ud. |
Eksempel
<meta name="viewport" content="width=device-width, inital-scale=1">
CSS3 media queries
Syntaks
@media [only] media-type [and (expression-1)] [and (expression-x)] ... { /*
CSS */}
Almindelige media-type værdier
Egenskab | Beskrivelse |
width | Viewportens brede |
height | Viewportens højde |
device-width | Skærmens bredde |
device-height | Skærmens højde |
orientation | Landscape eller portrait |
Eksempel
@media only screen and (max-width:1080px) { /* CSS */}