Interaktive elementer i HTML
Slideshow afbrudt… for 15%
Ingen tilmelding krævet.
Klik for at afsløre koden.
Kode: TEMA4
Interaktive elementer i HTML
Slideshow afbrudt… for 15%
Ingen tilmelding krævet.
Klik for at afsløre koden.
Kode: TEMA4
Indhold ovenpå indhold
overlay, popup, popover, dialog osv.
popover
backdrop (baggrundslag)
popover
non-modal
modal
vs.
Jeg kan interagere med resten af siden
non-modal
modal
vs.
popover
<dialog>
Jeg kan ikke interagere med resten af siden
I sin enkleste form laver du en popover ved at tilføje attributten
popovertil det element, som skal vise selve popover-indholdet.
Du skal også give elementet etid, så det kan kobles sammen med det element, der åbner popoveren.
<button popovertarget="popup">Open popup</button>
<div id="popup" popover>
<h2>I'm a popup</h2>
<p>Lorem ipsum dolor sit amet consectetur adipisicing.</p>
</div>popover<button popovertarget="popup">Open popup</button>
<div id="popup" popover>
<h2>I'm a popup</h2>
<p>Lorem ipsum dolor sit amet consectetur adipisicing.</p>
</div>popoverpopovertargetidpopovertarget<button popovertarget="popup">Open popup</button>
<div id="popup" popover>
<h2>I'm a popup</h2>
<p>Lorem ipsum dolor sit amet consectetur adipisicing.</p>
</div>popoverpopovertargetidpopovertarget
peger på id’et af den popover, der skal styres
id
bruges til at identificere popoveren og forbinde den med en kontrol
popover
markerer elementet som en popover
popoverpopovertargetidøvelse 1
Giv nyheden popover-attributten, og lad knappen pege på den via popovertarget og nyhedens id.
popover
id
popovertarget
Lad den forblive åben
<button popovertarget="popup">Open popup</button>
<div id="popup" popover>
<h2>I'm a popup</h2>
<p>Lorem ipsum dolor sit amet consectetur adipisicing.</p>
</div>popover<button popovertarget="popup">Open popup</button>
<div id="popup" popover>
<h2>I'm a popup</h2>
<p>Lorem ipsum dolor sit amet consectetur adipisicing.</p>
</div>popover::backdrop
pseudoelement, der repræsenterer det visuelle lag bag en popover
:popover-open
popover-elementet i åben tilstand
[popover]
popover-elementet
[ ]:popover-open::backdroppopoverattribut-selector
Ændr ikke display direkte — brug :popover-open til at style, når popover'en er synlig.
[popover] { /* eller #min-popover */
display: grid;
}[popover]:popover-open {
display: grid;
}Sørg for, at din popover passer til skærmen ved at begrænse bredde og højde.
[popover] {
max-height: ; /* fx 90vh */
max-width: ; /* fx 50ch */
width: ; /* fx 90vw*/
}øvelse 2
Sæt en passende bredde og højde på popoveren, så den ikke fylder hele viewporten.
max-height
max-width
evt. width
Lad den forblive åben
Glidende overgange
.circle {
/*...*/
transition: 300ms;
}.circle {
/*...*/
transition: all 300ms ease;
}.circle {
/*...*/
transition-duration: 300ms;
transition-behavior: normal;
transition-timing-function: ease;
transition-delay: 0s;
transition-property: all;
}0s
1s
{
transition: 1s;
}0s
1s
{
transition: 1s;
}display: none;
0s
1s
{
transition: 1s allow-discrete;
}display: none;
venter 1 sekund
Når et element vises for første gang – eller går fra display: none; til synligt – starter CSS-transitions ikke automatisk.
Browseren har nemlig ingen tidligere stil at animere fra.
@starting-style løser det ved at give elementet nogle startværdier, som browseren kan animere fra, når det dukker op.
0s
1s
.wrapper:hover .circle {
scale: 4;
display: block;
}
@starting-style {
.wrapper:hover .circle {
scale: 1;
}
}display: block;
start her
Hvordan relaterer det sig til popover?
@starting-style {
...
}transition-behavior: allow-discrete;:popover-open {
...
}@starting-style {
...
}transition-behavior: allow-discrete;[popover] {
opacity: 0;
rotate: 360deg;
transition: .5s allow-discrete;
}
:popover-open {
opacity: 1;
rotate: none;
}@starting-style {
...
}transition-behavior: allow-discrete;[popover] {
opacity: 0;
rotate: 360deg;
transition: .5s allow-discrete;
}
:popover-open {
opacity: 1;
rotate: none;
}@starting-style {
opacity: 0;
rotate: -360deg;
}
transition-behavior: allow-discrete;
[popover] {
opacity: 0;
rotate: 360deg;
transition: .5s allow-discrete;
}
:popover-open {
opacity: 1;
rotate: none;
}
Lukket
Før åben
Åben
Lukket
Før åben
Åben
øvelse 3-4
Tilføj transition og allow-discrete til popoveren, og lav en simpel åbneanimation ved hjælp af @starting-style.
transition
allow-discrete
@starting-style
Lad den forblive åben
"Nyheds"-sektion
Opgaven