HTML formulář zpětné vazby s rozevíracím seznamem. HTML formuláře. Seskupování položek seznamu
V procesu vytváření webové stránky nebo blogu a jejich dalším naplňování obsahem se z různých důvodů někdy stane nutnost skrýt část textu, umístit objemnější informace do bloku prozatím skrytého, ale přesto naznačit uživatel, co je k dispozici něco jiného, a dát mu možnost zobrazit skrytý obsah bez přechodu na další řádek nebo stránku.
Dříve se k implementaci takového řešení používala spousta javascriptů, ale nyní to vše lze provést velmi snadno pomocí úžasných vlastností.
Dnes se podíváme na nejjednodušší způsob, jak vytvořit skryté bloky obsahu na stránkách webu a v jednotlivých zprávách, které se otevřou po kliknutí na určitý textový prvek, a to výhradně pomocí vlastností CSS3. Přepínač může být jedno slovo, zvýrazněná fráze, celá věta nebo informativní ikona.
Takové bloky se často používají na stránkách s velkým množstvím obsahu, aby byly strukturovanější a kompaktnější, veškerý obsah je rozdělen do tzv. skupin, ve kterých jsou uživateli prezentovány pouze nadpisy, veškerý text je ve výchozím nastavení skrytý a lze je zobrazit kliknutím na konkrétní prvek (viz výše).
Zkusme se obejít bez zbytečné vody, podívejme se na celý tento jednoduchý mechanismus v akci, s jasným příkladem, a pokud si přejete, můžete také něco upravit:
Příklad č. 1
Nevybraný a neoznačený text se používá jako přepínače pro rozevírací bloky s dalšími informacemi s jednoznačnou výzvou ke kliknutí na něj, což musíte bez obav a pochybností vidět)))
Jak vidíte, vše funguje více než perfektně, skrytý obsah se bez problémů objeví a lehkým kliknutím myši zmizí a přitom jsme použili naprosté minimum spustitelného kódu, jak v html frameworku, tak ve formaci stylů css. Bez připojování dalších javascriptových knihoven, s věčnou starostí, zda nejsou na straně uživatele deaktivovány.
Implementace všech těchto akcí byla možná díky pseudotřídě CSS3 :kontrolovány, aplikované na prvky rozhraní, jako jsou přepínače (). Co jsme vlastně udělali v tagu Atributu typu jsme přiřadili zaškrtávací políčko value a také identifikátor id="hd-1" odpovídající jedinečnému identifikátoru for="hd-1" proudový blokový spínač. Zaškrtávací políčka důkladně a navždy skryjeme nastavením vlastnosti display: none ve třídě.hide.
Ve skutečnosti zde není nic zvláštního k vysvětlování; celý mechanismus pro zapínání a vypínání skrytých bloků se skládá ze tří prvků:
- Zaškrtávací políčko – značka s významem zaškrtávací políčko atribut typ a se specifickým identifikátorem propojení
- Titulek (přepínač textu) - tag s jedinečnou hodnotou identifikátoru atributu pro, (identifikátor musí být stejný jako identifikátor značky vstup s významem zaškrtávací políčko atribut typ).
- Blok obsahu je tag div, který bude do lepších časů, dokud uživatel neklikne, obsahovat různý skrytý obsah (text, obrázky atd., atd.)
Doufám, že z mého chaotického vysvětlování vyplynulo, o co vlastně jde. CSS používá nové styly (pomocí pseudotřídy kontrolovány), aby se zobrazil blok obsahu, který byl dříve skrytý, pouze když uživatel klikne na prvek, který je přidružen k zaškrtávacímu políčku pomocí jedinečného identifikátoru.
Z toho všeho vyplývá důležitá poznámka:
Když použijete více skrytých bloků na stejné stránce, každý přepínač musí mít jedinečné ID, které se bude lišit od ID v jiných blocích.
Takže, slovy, vyřešili jsme, co kam a proč jde, nyní se podívejme na html rámec celé struktury:
< input class = "hide" id= "hd-1" type= "checkbox" > < label for = "hd-1" >Kliknutím sem otevřete! label> < div>Skrytý obsah...... div> < input class = "hide" id= "hd-2" type= "checkbox" > < label for = "hd-2" >Klikněte sem a přečtěte si více! label> < div>Skrytý obsah... div> |
Dále se přesuneme přímo k tvorbě CSS stylů, bez kterých se celý tento design neobejde. Úplně minimum kódu, bez jakékoli dekorace, jen mírně zvýraznilo pozadí pro rozevírací blok, který vám definoval a ukázal rámec skrytého textu. Bloky můžete libovolně navrhovat, přidávat okraje, zaoblovat rohy, zvýraznit text nebo .
1.CSS
. skrýt, . skrýt + popisek ~ div (zobrazit: žádné; ) /* typ textu štítku */. skrýt + štítek, . skrýt: zaškrtnuto + popisek ( odsazení: 0 ; barva: zelená; kurzor: ukazatel; ohraničení- dole: 1px tečkovaný zelený; ) . skrýt: zaškrtnuto + štítek + 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; odsazení: 10px; ) |
/* skrýt zaškrtávací políčka a bloky obsahu */ .hide, .hide + label ~ div ( display: none; ) /* vzhled textu štítku */ .hide + label, .hide:checked + label ( padding: 0; barva: zelená ; kurzor: ukazatel; border-bottom: 1px tečkovaný zelený; ) /* vzhled textu štítku, když je přepínač aktivní */ .hide: zaškrtnuto + štítek ( barva: červená; border-bottom: 0; ) /* když je checkbox je aktivní, zobrazit bloky s obsahem */ .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še je pro asketický příklad zcela dostatečné minimum. Ale vůbec to nebudeme my, když nepřidáme alespoň nějaké vychytávky a je lepší vizuálně uživateli říct, kam má kliknout.
V druhém příkladu jsem přidal jednoduchý symbol ve formě plus, který jasně naznačuje, že se zde skrývá něco jiného, po stisknutí se okamžitě změní na mínus a ke skrytým blokům jsem přidal malou animaci s obsahem, když objevují se, a to vše výhradně s pomocí kouzla CSS3.
2.CSS
/* skrýt zaškrtávací políčka a bloky obsahu */. skrýt, . skrýt + popisek ~ div (zobrazit: žádné; ) /* typ textu štítku */. skrýt + popisek ( okraj: 0 ; výplň: 0 ; barva: zelená; kurzor: ukazatel; zobrazení: vložený blok; ) /* vzhled textu štítku, když je přepínač aktivní */. skrýt: zaškrtnuto + štítek ( barva: červená; okraj- dole: 0; ) /* když je zaškrtávací políčko aktivní, zobrazí bloky s obsahem */. skrýt: zaškrtnuto + štítek + 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á animace při zobrazení */- webkit- animace: slábnutí - za 0,5 s; - moz- animace: slábnutí- za 0. 5s; animace: náběh slábnutí- za 0,5s; ) /* animace, když se objeví skryté bloky */@- moz- klíčové snímky slábnou ( od ( opacity: 0 ; ) do ( opacity: 1 ) ) @- webkit- klíčové snímky mizí ( od ( opacity: 0 ; ) do ( opacity: 1 ) ) @ klíčové snímky mizí ( od ( opacity: 0 ; ) až ( neprůhlednost: 1 ) ). skrýt + štítek: před ( barva pozadí: #1e90ff; barva: #fff; obsah: " \002 B"; displej: blok; plavat vlevo; velikost písma: 14px; váha písma: tučné; výška: 16px; výška řádku: 16px; okraj: 3px 5px; text- zarovnat: na střed; šířka: 16px; - webkit- border- poloměr: 50 %; - moz- border- poloměr: 50 %; hraniční rádius: 50 %; ). skrýt: zaškrtnuto + štítek: před ( obsah: " \221 2" ; } |
/* skrýt zaškrtávací políčka a bloky obsahu */ .hide, .hide + label ~ div ( display: none; ) /* vzhled textu štítku */ .hide + label ( margin: 0; padding: 0; barva: zelená; kurzor : ukazatel; display: inline-block; ) /* vzhled textu štítku, když je přepínač aktivní */ .hide:checked + label ( color: red; border-bottom: 0; ) /* když je zaškrtávací políčko aktivní, zobrazit bloky s obsahem */ . 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á animace při zobrazení */ -webkit-animation:fade easy-in 0,5s; -moz-animation:fade easy -za 0,5s; animace: postupné slábnutí-za 0,5s; ) /* animace, když se objeví skryté bloky */ @-moz-keyframes mizí (od ( opacity: 0; ) do ( 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; barva: #fff; obsah: "\002B"; displej: blok; plavat vlevo; velikost písma: 14px; váha písma: tučné; výška: 16px; výška řádku: 16px; okraj: 3px 5px; text-align: center; šířka: 16px; -webkit-border-radius: 50 %; -moz-border-radius: 50 %; hraniční rádius: 50 %; ) .hide:checked + label:before (obsah: "\2212"; )
Podle všeho je metoda nepochybně dobrá, ale jako vždy a vůbec nepřekvapivé nastávají problémy s věčnou brzdou pokroku, prohlížečem IE, pseudotřídou kontrolovány podporují pouze verze 9 a novější tohoto prohlížeče. U starších verzí IE zůstává vše při starém, budete muset použít javascript.
Pomocí skrytých zaškrtávacích políček můžete snadno implementovat stylizované bloky, posuvníky, galerie a mnoho dalšího.
Se vší úctou, Andrew
Popis
HTML tag
Živel
Šířka rozevíracího seznamu bude určena nejdelším textem uvedeným ve značce