HTML-tilbakemeldingsskjema med rullegardinliste. HTML-skjemaer. Gruppering av listeelementer
I prosessen med å lage en nettside eller blogg og fylle den videre med innhold, av forskjellige grunner, blir det noen ganger nødvendig å skjule en del av teksten, plassere mer omfangsrik informasjon i en blokk skjult foreløpig, men likevel vise til bruker hva som er tilgjengelig noe annet, og gi ham muligheten til å se skjult innhold uten å gå til neste linje eller side.
Tidligere ble en haug med javascript brukt for å implementere en slik løsning, men nå kan alt dette gjøres veldig enkelt ved å bruke fantastiske egenskaper.
I dag skal vi se på den enkleste måten å lage skjulte blokker med innhold på nettstedssider og i individuelle meldinger som åpnes når du klikker på et bestemt tekstelement, utelukkende ved å bruke CSS3-egenskaper. En bryter kan være et enkelt ord, en uthevet setning, en hel setning eller et informativt ikon.
Slike blokker brukes ofte på sider med mye innhold, for å gjøre det mer strukturert og kompakt er alt innhold delt inn i såkalte grupper, hvor kun overskrifter presenteres for brukeren, all tekst er skjult som standard og kan sees ved å klikke til et spesifikt element (se ovenfor).
La oss prøve å klare oss uten unødvendig vann, se på hele denne enkle mekanismen i aksjon, med et tydelig eksempel, og du kan også redigere noe hvis du ønsker det:
Eksempel nr. 1
Uvalgt og umerket tekst brukes som brytere for nedtrekksblokker med tilleggsinformasjon, med en entydig invitasjon til å klikke på den, som du må gjøre uten frykt eller tvil for å se)))
Som du ser fungerer alt mer enn perfekt, det skjulte innholdet dukker opp uten problemer og forsvinner med et lett museklikk, og samtidig brukte vi minimalt med kjørbar kode, både i html-rammeverket og i formasjonen av css-stiler. Uten å koble til flere javascript-biblioteker, med den evige bekymringen om de er deaktivert på brukerens side.
Implementering av all denne handlingen ble mulig takket være CSS3-pseudoklassen :krysset av, brukt på grensesnittelementer som alternativknapper (). Hva vi faktisk gjorde i taggen Vi tildelte typeattributtet avkrysningsboksen verdi , samt identifikatoren id="hd-1" som tilsvarer den unike identifikatoren for="hd-1" strømblokkbryter. Vi vil skjule avmerkingsboksene grundig og for alltid ved å sette displayet: ingen egenskap i class.hide.
Egentlig er det ikke noe spesielt å forklare her; hele mekanismen for å slå på og av skjulte blokker består av tre elementer:
- Avmerkingsboks - tag med mening avmerkingsboksen Egenskap type og med en spesifikk koblingsidentifikator
- Tittel (tekstbryter) - tag med en unik identifikatorverdi for attributtet til, (identifikatoren må være den samme som tagidentifikatoren input med mening avmerkingsboksen Egenskap type).
- Innholdsblokken er en div-tag, som vil inneholde, inntil bedre tider, inntil brukeren klikker, forskjellig skjult innhold (tekst, bilder, etc., etc.)
Jeg håper at det ut fra min kaotiske forklaring har blitt klart hva hele poenget er. CSS bruker nye stiler (ved å bruke pseudoklassen krysset av) for å vise en blokk med innhold som tidligere var skjult bare når brukeren klikker på et element som er knyttet til en avmerkingsboks med en unik identifikator.
Av alt dette følger det viktig notat:
Når du bruker flere skjulte blokker på samme side, må hver alternativknapp ha en unik ID som vil være forskjellig fra ID-ene i andre blokker.
Så, med ord har vi sortert ut hva som går hvor og hvorfor, nå, la oss se på html-rammeverket til hele strukturen:
< input class = "hide" id= "hd-1" type= "checkbox" > < label for = "hd-1" >Klikk her for å åpne! label> < div>Skjult innhold...... div> < input class = "hide" id= "hd-2" type= "checkbox" > < label for = "hd-2" >Klikk her for å lese mer! label> < div>Skjult innhold... div> |
Deretter går vi direkte til dannelsen av CSS-stiler, uten hvilke hele designet vil ikke fungere. Det aller minste av kode, uten noen dekorasjon, fremhevet bare bakgrunnen for rullegardinblokken for å definere for deg og vise rammen til den skjulte teksten. Du kan designe blokkene som du vil, legge til kantlinjer, runde hjørner, markere tekst eller .
1.CSS
. gjemme seg, . skjul + etikett ~ div ( vis: ingen; ) /* etikettteksttype */. skjul + etikett, . skjul: avkrysset + etikett (polstring: 0; farge: grønn; markør: peker; kant-bunn: 1px prikkete grønn; ). hide: checked + label + div ( display: block; background: #efefef; - moz- box- shadow: inset 3px 3px 10px #7d8e8f; - webkit- box- shadow: inset 3px 3px 10px #7d8e8f; box- shadow: inset 3px 3px 10px #7d8e8f; polstring: 10px; ) |
/* skjul avmerkingsbokser og innholdsblokker */ .hide, .hide + label ~ div ( display: none; ) /* label tekstutseende */ .hide + label, .hide:checked + label ( utfylling: 0; farge: grønn ; cursor: pointer; border-bottom: 1px prikkete grønn; ) /* utseendet til etikettteksten når bryteren er aktiv */ .hide: checked + label ( farge: rød; border-bottom: 0; ) /* når avkrysningsboksen er aktiv, vis blokker med innhold */ .hide:checked + label + div ( display: block; background: #efefef; -moz-box-shadow: inset 3px 3px 10px #7d8e8f; -webkit-box-shadow: inset 3px 3px 10px #7d8e8f; box-shadow: innfelt 3px 3px 10px #7d8e8f; polstring: 10px; )
Dette er alt, for et asketisk eksempel, et fullstendig tilstrekkelig minimum. Men vi vil ikke være oss i det hele tatt hvis vi ikke legger til i det minste noen godbiter, og det er bedre å visuelt fortelle brukeren hvor han skal klikke.
I det andre eksemplet la jeg til et enkelt symbol i form av et pluss, som tydelig indikerer at noe annet er skjult her; når det trykkes, blir det øyeblikkelig til et minus, og jeg la til en liten animasjon til de skjulte blokkene med innhold når de vises, og alt dette utelukkende ved hjelp av magien til CSS3.
2.CSS
/* skjul avmerkingsbokser og innholdsblokker */. gjemme seg, . skjul + etikett ~ div ( vis: ingen; ) /* etikettteksttype */. skjul + etikett ( margin: 0 ; utfylling: 0 ; farge: grønn; markør: peker; display: inline-block; ) /* utseendet til etikettteksten når bryteren er aktiv */. skjul: avkrysset + etikett (farge: rød; kant-bunn: 0; ) /* når avkrysningsboksen er aktiv, vis blokker med innhold */. hide: checked + label + div ( display: block; background: #efefef; - moz- box- shadow: inset 3px 3px 10px #7d8e8f; - webkit- box- shadow: inset 3px 3px 10px #7d8e8f; box- shadow: inset 3px 3px 10px #7d8e8f;margin-venstre: 20px;polstring: 10px; /* litt animasjon når den vises */- webkit- animasjon: fade ease- på 0. 5s; - moz- animasjon: fade letthet- på 0. 5s; animasjon: fade letthet- på 0. 5s; ) /* animasjon når skjulte blokker vises */@- moz- keyframes fade ( fra ( opasitet: 0 ; ) til ( opacity: 1 ) ) @- webkit- keyframes fade ( fra ( opasitet: 0 ; ) til ( opacity: 1 ) ) @ keyframes fade ( fra ( opacity: 0 ; ) til ( opasitet: 1 ) ). skjul + etikett: før ( bakgrunnsfarge: #1e90ff; farge: #fff; innhold: " \002 B"; display: blokk; flyte: venstre; skriftstørrelse: 14px; font-weight: fet; høyde: 16px; linjehøyde: 16px; margin: 3px 5px; tekst- align: center; bredde: 16px; - webkit- kant-radius: 50%; - moz- grense-radius: 50 %; kantradius: 50 %; ). hide: checked + label: before ( innhold: " \221 2" ; } |
/* skjul avmerkingsbokser og innholdsblokker */ .hide, .hide + label ~ div ( vis: ingen; ) /* merke tekstutseende */ .hide + label ( margin: 0; utfylling: 0; farge: grønn; markør : peker; display: inline-block; ) /* utseendet til etikettteksten når bryteren er aktiv */ .hide:checked + label ( farge: rød; border-bottom: 0; ) /* når avkrysningsboksen er aktiv, vis blokker med innhold */ . hide:checked + label + div ( display: block; background: #efefef; -moz-box-shadow: inset 3px 3px 10px #7d8e8f; -webkit-box-shadow: inset 3px 3px 10px #7d8e8f ; box-shadow: innfelt 3px 3px 10px #7d8e8f; margin-venstre: 20px; polstring: 10px; /* litt animasjon når den vises */ -webkit-animation:fade ease-in 0.5s; -moz-animation:fade ease -om 0.5s; animasjon: fade ease-in 0.5s; ) /* animasjon når skjulte blokker vises */ @-moz-keyframes fade ( fra ( opacity: 0; ) til ( opacity: 1 ) ) @-webkit-keyframes fade ( fra ( opasitet: 0 ; ) til ( opasitet: 1 ) ) @keyframes fade ( fra ( opasitet: 0; ) til ( opacity: 1 ) ) .hide + label:before ( bakgrunnsfarge: #1e90ff; farge: #fff; innhold: "\002B"; display: blokk; flyte: venstre; skriftstørrelse: 14px; font-weight: fet; høyde: 16px; linjehøyde: 16px; margin: 3px 5px; tekst-align: center; bredde: 16px; -webkit-border-radius: 50%; -moz-border-radius: 50%; kantradius: 50 %; ) .hide:checked + label:before ( innhold: "\2212"; )
Etter alt å dømme er metoden utvilsomt god, men som alltid, og slett ikke overraskende, oppstår det problemer med den evige fremdriftsbremsen, IE-nettleseren, pseudoklasse krysset av støtter kun versjon 9 og nyere av denne nettleseren. For eldre versjoner av IE forblir alt det samme, du må bruke javascript.
Ved å bruke skjulte avmerkingsbokser kan du enkelt implementere stilerte blokker, skyveknapper, gallerier og mye mer.
Med all respekt, Andrew
Beskrivelse
HTML-tag
Element
Bredden på rullegardinmenyen vil bli bestemt av den lengste teksten som er spesifisert i taggen