HTML formulár spätnej väzby s rozbaľovacím zoznamom. HTML formuláre. Zoskupenie položiek zoznamu
V procese vytvárania webovej stránky alebo blogu a ich ďalšieho napĺňania obsahom sa z rôznych dôvodov niekedy stáva, že je potrebné skryť niektorú časť textu, umiestniť objemnejšie informácie do bloku, ktorý je zatiaľ skrytý, no napriek tomu naznačiť používateľ, čo je k dispozícii niečo iné, a dať mu možnosť zobraziť skrytý obsah bez toho, aby sa presunul na ďalší riadok alebo stránku.
Predtým sa na implementáciu takéhoto riešenia používalo veľa javascriptov, ale teraz sa to všetko dá urobiť veľmi jednoducho pomocou úžasných vlastností.
Dnes sa pozrieme na najjednoduchší spôsob vytvárania skrytých blokov obsahu na stránkach lokality a v jednotlivých správach, ktoré sa otvoria po kliknutí na určitý textový prvok, a to výhradne pomocou vlastností CSS3. Prepínač môže byť jedno slovo, zvýraznená fráza, celá veta alebo informatívna ikona.
Takéto bloky sa často používajú na stránkach s veľkým množstvom obsahu, aby boli štruktúrovanejšie a kompaktnejšie, všetok obsah je rozdelený do takzvaných skupín, v ktorých sú používateľovi prezentované iba nadpisy, všetok text je štandardne skrytý a zobrazí sa kliknutím na konkrétny prvok (pozri vyššie).
Skúsme sa zaobísť bez zbytočnej vody, pozrime sa na celý tento jednoduchý mechanizmus v akcii s jasným príkladom a ak chcete, môžete niečo upraviť:
Príklad č.1
Nevybraný a neoznačený text sa používa ako prepínače pre rozbaľovacie bloky s dodatočnými informáciami, s jednoznačnou výzvou na kliknutie, čo musíte urobiť bez obáv a pochybností, aby ste videli)))
Ako vidíte, všetko funguje viac než perfektne, skrytý obsah sa bez problémov objaví a ľahkým kliknutím myši zmizne a zároveň sme použili úplne minimum spustiteľného kódu ako v html frameworku, tak aj pri tvorbe štýlov css. Bez pripojenia ďalších knižníc javascriptu s večnými obavami, či sú na strane používateľa zakázané.
Implementácia celej tejto akcie bola možná vďaka pseudotriede CSS3 :skontrolované, aplikované na prvky rozhrania, ako sú prepínače (). Čo sme vlastne urobili v tagu Atribútu type sme priradili začiarkavacie políčko value , ako aj identifikátor id="hd-1" zodpovedajúci jedinečnému identifikátoru for="hd-1" prúdový blokový spínač. Zaškrtávacie políčka dôkladne a navždy skryjeme nastavením vlastnosti display: none v triede.hide.
V skutočnosti tu nie je nič zvláštne na vysvetľovanie; celý mechanizmus zapínania a vypínania skrytých blokov pozostáva z troch prvkov:
- Checkbox – tag so zmyslom začiarkavacie políčko atribút typu a so špecifickým identifikátorom prepojenia
- Nadpis (prepínač textu) - tag s jedinečnou hodnotou identifikátora atribútu pre, (identifikátor musí byť rovnaký ako identifikátor značky vstup so zmyslom začiarkavacie políčko atribút typu).
- Blok obsahu je značka div, ktorá bude až do lepších časov, kým používateľ neklikne, obsahovať rôzny skrytý obsah (text, obrázky atď. atď.)
Dúfam, že z môjho chaotického vysvetlenia vysvitlo, o čo vlastne ide. CSS používa nové štýly (pomocou pseudotriedy skontrolované), aby sa zobrazil blok obsahu, ktorý bol predtým skrytý, iba keď používateľ klikne na prvok, ktorý je priradený k začiarkavaciemu políčku jedinečným identifikátorom.
Z toho všetkého vyplýva dôležitá poznámka:
Keď na tej istej stránke použijete viacero skrytých blokov, každý prepínač musí mať jedinečné ID, ktoré sa bude líšiť od ID v iných blokoch.
Takže, slovami, vyriešili sme, čo kam ide a prečo, teraz sa pozrime na html rámec celej štruktúry:
< input class = "hide" id= "hd-1" type= "checkbox" > < label for = "hd-1" >Kliknutím sem otvoríte! label> < div>Skrytý obsah...... div> < input class = "hide" id= "hd-2" type= "checkbox" > < label for = "hd-2" >Kliknite sem a prečítajte si viac! label> < div>Skrytý obsah... div> |
Ďalej prejdeme priamo k formovaniu CSS štýlov, bez ktorých celý tento dizajn nebude fungovať. Úplne minimum kódu, bez akéhokoľvek zdobenia, len mierne zvýraznilo pozadie pre rozbaľovací blok, ktorý vám definoval a ukázal rámec skrytého textu. Bloky môžete navrhnúť podľa vlastného uváženia, pridať okraje, zaoblenie rohov, zvýraznenie textu alebo .
1.CSS
. skryť,. skryť + označenie ~ div ( zobrazenie: žiadne; ) /* typ textu štítku */. skryť + štítok, . skryť: začiarknuté + štítok ( výplň: 0 ; farba: zelená; kurzor: ukazovateľ; okraj- dole: 1px bodkovaná zelená; ) . skryť: začiarknuté + štítok + 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; padding: 10px; ) |
/* skryť začiarkavacie políčka a bloky obsahu */ .hide, .hide + label ~ div ( display: none; ) /* vzhľad textu menovky */ .hide + label, .hide:checked + label ( padding: 0; farba: zelená ; kurzor: ukazovateľ; border-bottom: 1px bodkovaný zelený; ) /* vzhľad textu štítku, keď je prepínač aktívny */ .hide: začiarknuté + štítok ( farba: červená; border-bottom: 0; ) /* keď je checkbox je aktívny, zobraziť bloky s obsahom */ .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; padding: 10px; )
To všetko je pre asketický príklad úplne postačujúce minimum. Vôbec to ale nebudeme my, ak nepridáme aspoň nejaké vychytávky a je lepšie používateľovi vizuálne povedať, kam má kliknúť.
V druhom príklade som pridal jednoduchý symbol vo forme plus, ktorý jasne naznačuje, že sa tu skrýva niečo iné, po stlačení sa okamžite zmení na mínus a do skrytých blokov som pridal malú animáciu s obsahom, keď objavujú, a to všetko výhradne s pomocou kúzla CSS3.
2.CSS
/* skryť začiarkavacie políčka a bloky obsahu */. skryť,. skryť + označenie ~ div (zobraziť: žiadne; ) /* typ textu štítku */. skryť + štítok ( okraj: 0 ; výplň: 0 ; farba: zelená; kurzor: ukazovateľ; zobrazenie: vložený blok; ) /* vzhľad textu štítku, keď je prepínač aktívny */. skryť: začiarknuté + štítok ( farba: červená; okraj- dole: 0; ) /* keď je začiarkavacie políčko aktívne, zobraziť bloky s obsahom */. skryť: začiarknuté + štítok + 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;ľavý okraj: 20px;výplň: 10px; /* malá animácia pri zobrazení */- webkit- animácia: fade easy- in 0. 5s; - moz- animácia: slabnutie slabnutia- za 0. 5s; animácia: zmiernenie miznutia- za 0. 5s; ) /* animácia, keď sa objavia skryté bloky */@- moz- kľúčové snímky miznú ( z ( nepriehľadnosť: 0 ; ) do ( nepriehľadnosť: 1 ) ) @- webkit- kľúčové snímky miznú ( od ( nepriehľadnosť: 0 ; ) do ( nepriehľadnosť: 1 ) ) @ kľúčové snímky miznú ( od ( nepriehľadnosť: 0 ; ) až ( nepriehľadnosť: 1 ) ). skryť + štítok: pred ( farba pozadia: #1e90ff; farba: #fff; obsah: " \002 B"; displej: blok; plavák: vľavo; veľkosť písma: 14px; font-weight: bold; výška: 16px; line-height: 16px; okraj: 3px 5px; text- align: center; šírka: 16px; - webkit- border- polomer: 50 %; - moz- border- polomer: 50 %; hraničný polomer: 50 %; ). skryť: začiarknuté + štítok: pred ( obsah: " \221 2" ; } |
/* skryť začiarkavacie políčka a bloky obsahu */ .hide, .hide + label ~ div ( display: none; ) /* vzhľad textu menovky */ .hide + label ( margin: 0; padding: 0; color: green; kurzor : pointer; display: inline-block; ) /* vzhľad textu štítku, keď je prepínač aktívny */ .hide:checked + label ( color: red; border-bottom: 0; ) /* keď je checkbox aktívny, zobraziť bloky s obsahom */ . 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-left: 20px; padding: 10px; /* malá animácia pri zobrazení */ -webkit-animation:fade easy-in 0,5s; -moz-animation:fade easy -za 0,5s; animácia: postupné miznutie-za 0,5s; ) /* animácia, keď sa objavia skryté bloky */ @-moz-keyframes mizne (od ( opacity: 0; ) to ( opacity: 1) ) @-webkit-keyframes fade ( from ( opacity: 0 ; ) to ( opacity: 1 ) ) @keyframes fade ( from ( opacity: 0; ) to ( opacity: 1 ) ) .hide + label:before ( background-color: #1e90ff; farba: #fff; obsah: "\002B"; displej: blok; plavák: vľavo; veľkosť písma: 14px; font-weight: bold; výška: 16px; line-height: 16px; okraj: 3px 5px; text-align: center; šírka: 16px; -polomer-hraničnej-webovej sady: 50 %; -moz-border-radius: 50%; hraničný polomer: 50 %; ) .hide:checked + label:before (obsah: "\2212"; )
Podľa všetkého je metóda nepochybne dobrá, ale ako vždy, a nie je to prekvapujúce, vznikajú problémy s večnou brzdou pokroku, prehliadačom IE, pseudotriedou skontrolované Podporované sú iba 9. a novšie verzie tohto prehliadača. Pre staršie verzie IE ostáva všetko po starom, budete musieť použiť javascript.
Pomocou skrytých začiarkavacích políčok môžete jednoducho implementovať štylizované bloky, posúvače, galérie a oveľa viac.
So všetkou úctou, Andrew
Popis
HTML tag
Element
Šírka rozbaľovacej ponuky bude určená najdlhším textom uvedeným v značke