Zástupný symbol – prvok vstupného poľa, do ktorého môžete umiestniť nápovedu. Keď používateľ začne zadávať údaje, text pomocníka zmizne, aby neprekážal. Každý prehliadač má svoj vlastný názor na spôsob zobrazenia tohto prvku a niekedy predvolené štýly narušia celý dizajn. Na ich ovládanie je potrebné použiť špeciálne pravidlo CSS pre zástupný symbol.
Kde je zástupný symbol?
Problém je v tom, že nápoveda vstupného poľa je bezpečne ukrytá v tieňovom DOM a nie je také ľahké sa k nemu dostať. Na tento účel sa používa špeciálny neštandardný pseudoprvok CSS::placeholder. Pomocou neho môžete ovládať vlastnosti popisku.
Bude vás zaujímať:
Štýl zástupného symbolu v CSS vyzerá takto:
input::placeholder ( farba: červená; nepriehľadnosť: 1; štýl písma: kurzíva; )
Podpora prehliadača
Pseudoprvok zástupného symbolu CSS zvládne každý dobre moderné prehliadače a na podporu starších prehliadačov môžete použiť predpony:
- ::-webkit-input-placeholder - pre prehliadače webkit (Safari, Chrome, Opera);
- ::-moz-placeholder - pre prehliadače Firefox nad verziou 19;
- :-moz-placeholder - pre starý Firefox;
- :-ms-input-placeholder - pre internet Explorer vyššie verzie 10.
Ako vidíte, staré Prehliadače Mozilla a tiež IE považuje zástupný symbol za pseudotriedu CSS, nie za pseudoprvok. Nebudeme sa s nimi hádať, len tento aspekt zohľadníme pri štylizácii vstupného poľa.
Možnosti stylingu
Pre zástupný pseudoelement v CSS môžete nastaviť nasledujúce parametre:
- background - skupina vlastností pozadia. Pozadie nápovedného bloku sa rozprestiera na celé vstupné pole. Nastaviť si môžete nielen farbu (background-color), ale aj obrázok (background-image).
- farba textu - farba;
- transparentnosť – nepriehľadnosť;
- podčiarknutie, prečiarknutie alebo prečiarknutie - text-dekorácia;
- register - textová transformácia;
- vypchávka – výplň. Nepodporujú všetky prehliadače. Rovnako ako v prípade vložených prvkov sa horná a spodná výplň ignoruje.
- zobrazenie písma - vlastnosti skupiny písiem, výška riadku a rôzne zarážky (text-odsadenie, letter-spacing, word-spacing);
- vertikálne zarovnanie v línii - vertical-align;
- orezanie textu pri pretečení kontajnera - text-overflow.
Input1::placeholder ( background-image: linear-gradient(lime, blue); color: white; ) .input2::placeholder (text-decoration: line-through; color: purple; font-weight: bold; ) .input3 ::placeholder ( font-size: 16px; letter-spacing: 10px; ) .input4::placeholder ( background: brown; color: white; text-overflow: elipsy; )
V zameraní
V predvolenom nastavení zmizne nápoveda zo vstupného poľa iba vtedy, ak je doň zadaný aspoň jeden znak. Pseudoprvok zástupného symbolu CSS vám však umožňuje implementovať zmiznutie okamžite, keď je pole zamerané. Aby ste to dosiahli, musíte ju skombinovať s pseudotriedou :focus.
input:focus::placeholder ( farba: transparentná; )
V niektorých prehliadačoch je prijateľné animovať zmenu v množstve vlastností zástupného symbolu pomocou príkazu prechodu.
input::placeholder ( farba: čierna; prechod: farba 1s; ) input:focus::placeholder ( color: white; )
V prehliadači Google Chrome farba nápovedy pri zaostrení na takéto pole sa plynule zmení v priebehu jednej sekundy.
Zástupné symboly, tie často sivé textové prvky vo vstupe, môžu byť náročné na štýl. Našťastie sme získali krátke, ale efektívne riešenie CSS, aby sme upravili zástupný text vášho vstupu do ľubovoľnej farby a nepriehľadnosti, ktorú si želáte. Prečítajte si kód.
Zmena farby zástupného textu
Začnime jednoduchým vstupom a nejakým zástupným textom, pre tento príklad použijeme slovo „hľadať“, ale môžete použiť čokoľvek chcete. Základné HTML je nižšie:
HTML
Vstupný text (a textarea) má predvolenú svetlošedú farbu, môžeme to však zmeniť niekoľkými riadkami CSS. Tu zafarbíme vstupný text na červeno pomocou názvu farby HTML, ale postačí akýkoľvek farebný spôsob (HEX, RGB, HSL).
css
::-webkit-input-placeholder ( /* Chrome */ farba: červená; ) :-ms-input-placeholder ( /* IE 10+ */ farba: červená; ) ::-moz-placeholder ( /* Firefox 19 + */ farba: červená; nepriehľadnosť: 1; ) :-moz-placeholder ( /* Firefox 4 - 18 */ farba: červená; nepriehľadnosť: 1; )Upozorňujeme, že je dôležité zahrnúť predpony rôznych dodávateľov, aby sa podporilo čo najviac prehliadačov. Iba vstupný zástupný text prehliadača Firefox má predvolenú miernu priehľadnosť, takže nie je potrebné nastavovať vlastnosť nepriehľadnosti v prehliadači IE alebo Chrome.
Zmena farby textu zamerania zástupného symbolu
Dobre, úspešne sme zmenili farbu zástupného textu na červenú, ale bolo by pekné, keby sa niečo stalo, keď používateľ klikne do nášho vstupu. Pomocou rovnakých vlastností CSS s predponou od dodávateľa môžeme zmeniť nepriehľadnosť vstupného zástupného textu na zameranie.
css
vstup ( obrys: žiadny; výplň: 12px; polomer okraja: 3px; okraj: 1px plná čierna; ) ::-webkit-input-placeholder ( /* Chrome */ farba: červená; prechod: nepriehľadnosť 250 ms easy-in-out ; ) :focus::-webkit-input-placeholder ( nepriehľadnosť: 0,5; ) :-ms-input-placeholder ( /* IE 10+ */ farba: červená; prechod: nepriehľadnosť 250 ms easy-in-out; ) :focus :-ms-input-placeholder ( nepriehľadnosť: 0,5; ) ::-moz-placeholder ( /* Firefox 19+ */ farba: červená; nepriehľadnosť: 1; prechod: nepriehľadnosť 250 ms easy-in-out; ) :focus:: -moz-placeholder ( nepriehľadnosť: 0,5; ) :-moz-placeholder ( /* Firefox 4 - 18 */ farba: červená; nepriehľadnosť: 1; prechod: nepriehľadnosť 250 ms easy-in-out; ) :focus:-moz-placeholder ( nepriehľadnosť: 0,5; )Vo vyššie uvedenom príklade sme na samotný vstup pridali niekoľko základných štýlov a pridali sme prechod na nepriehľadnosť, aby bol zážitok o niečo krajší. Pozrite si ukážku a experimentujte s ďalšími vlastnosťami a prechodmi CSS.
Zástupný symbol – prvok vstupného poľa, do ktorého môžete umiestniť nápovedu. Keď používateľ začne zadávať údaje, text pomocníka zmizne, aby neprekážal. Každý prehliadač má svoj vlastný názor na spôsob zobrazenia tohto prvku a niekedy predvolené štýly narušia celý dizajn. Na ich ovládanie je potrebné použiť špeciálne pravidlo CSS pre zástupný symbol.
Kde je zástupný symbol?
Problém je v tom, že nápoveda vstupného poľa je bezpečne ukrytá v tieňovom DOM a nie je také ľahké sa k nemu dostať. Na tento účel sa používa špeciálny neštandardný zástupný symbol ::. Pomocou neho môžete ovládať vlastnosti popisku.
Štýl zástupného symbolu v CSS vyzerá takto:
Vstup::placeholder ( farba: červená; nepriehľadnosť: 1; štýl písma: kurzíva; )
Podpora prehliadača
Pseudoprvok zástupného symbolu CSS dobre zvládajú všetky moderné prehliadače a na podporu starších prehliadačov možno použiť predpony:
- ::-webkit-input-placeholder - pre prehliadače webkit (Safari, Chrome, Opera);
- ::-moz-placeholder - pre prehliadače Firefox nad verziou 19;
- :-moz-placeholder - pre starý Firefox;
- :-ms-input-placeholder – pre Internet Explorer nad verziou 10.
Ako vidíte, staršie prehliadače Mozilla, ako aj IE, považujú zástupný symbol za pseudotriedu CSS, nie za pseudoprvok. Nebudeme sa s nimi hádať, len tento aspekt zohľadníme pri štylizácii vstupného poľa.
Možnosti stylingu
Pre zástupný pseudoelement v CSS môžete nastaviť nasledujúce možnosti:
- pozadie - skupina blokov tipov sa vzťahuje na celé vstupné pole. Nastaviť si môžete nielen farbu (background-color), ale aj obrázok (background-image).
- farba textu - farba;
- transparentnosť – nepriehľadnosť;
- podčiarknutie, prečiarknutie alebo prečiarknutie - text-dekorácia;
- register - textová transformácia;
- vypchávka – výplň. Nepodporujú všetky prehliadače. Rovnako ako v prípade vložených prvkov sa horná a spodná výplň ignoruje.
- zobrazenie písma - vlastnosti skupiny písiem, výška riadku a rôzne zarážky (text-odsadenie, letter-spacing, word-spacing);
- vertikálne zarovnanie v línii - vertical-align;
- orezanie textu pri pretečení kontajnera - text-overflow.
V zameraní
V predvolenom nastavení zmizne nápoveda zo vstupného poľa iba vtedy, ak je doň zadaný aspoň jeden znak. Ale zástupný symbol vám umožňuje implementovať zmiznutie okamžite pri zaostrení na pole. Aby ste to dosiahli, musíte ju skombinovať s pseudotriedou :focus.
Input:focus::placeholder ( farba: transparentná; )
V niektorých prehliadačoch je prijateľné animovať zmenu v množstve vlastností zástupného symbolu pomocou príkazu prechodu.
Input::placeholder ( farba: čierna; prechod: farba 1s; ) input:focus::placeholder ( color: white; )
AT Prehliadač Google Farba popisku Chrome pri zaostrení na takéto pole sa plynule zmení v priebehu jednej sekundy.
Atribút zástupného symbolu sa používa na vytváranie popisov v prázdnych vstupných poliach (značky a
Začnime príkladom pre tých, ktorí ešte nevedia, čo je zástupný symbol a ako ho používať:
Pri vývoji rozhraní by ste mali brať do úvahy správanie zástupných symbolov. Zástupný text zmizne hneď po začatí písania. Preto by ste ich nemali používať na sprostredkovanie informácií o samotnom vstupnom poli (koľko a aké znaky má obsahovať). Na tieto účely je najlepšie použiť značku
Štylizácia
Nasledujúce pravidlá sa používajú na štýl zástupných symbolov:
::-webkit-input-placeholder ( color : blue ; ) ::-moz-placeholder ( color : blue ; ) /* Firefox 19+ */ :-moz-placeholder ( color : blue ; ) /* Firefox 18- * / :-ms-input-placeholder ( farba : modrá; )Vyzerá hrozne, však? A má to svoj dôvod – pravidlá CSS pre zástupné symboly doteraz neboli štandardizované a implementácia v každom prehliadači je iná. Viac o všetkých potrebných predponách sa dozviete na caniuse .
Ak používate preprocesor CSS, pravdepodobne zistíte, že je najlepšie napísať jednoduchý mixin do zástupných symbolov štýlu. Príklad v Sass:
@mixin zástupný symbol ( & : :- webkit-input-placeholder ( @content ; ) & : - moz-placeholder ( @content ; ) & : :- moz-placeholder ( @content ; ) & : - ms-input-placeholder ( @obsah ;))V závislosti od kontextu možno mixin použiť na globálne použitie štýlov alebo na jednotlivé prvky (vyskúšajte na SassMeister):
// Globálne pre každé vstupné pole@include zástupný symbol (farba: modrá;) // Pre určité vstupné polia.input ( @include zástupný symbol ( farba : zelená ; ) )Príklad
Modrý text pre zástupný symbol (nikdy to nerobte):
.blue-text ::-webkit-input-placeholder ( color : #2e8ece ; ) .blue-text :-moz-placeholder ( color : #2e8ece ; ) ; ) .blue-text :-ms-input-placeholder ( color : #2e8ece ;)
Podporované vlastnosti
Nie každú vlastnosť CSS je možné použiť so zástupnými symbolmi. Tu úplný zoznam podporované vlastnosti:
- font a všetky súvisiace vlastnosti (font-size , font-family atď.)
- pozadie a všetky súvisiace vlastnosti (farba pozadia , obrázok pozadia atď.)
- nepriehľadnosť
- zarážka textu
- pretečeniu textu
- farba
- textová transformácia
- výška riadku
- slovné medzery
- medzery medzi písmenami
- text-dekorácia
- vertikálne zarovnať
Animácie
Nápady na animáciu patria do blogu html5.by.
Všetky nasledujúce príklady sú napísané pomocou preprocesora Sass. Každý prichádza s odkazom na SassMeister, kde nájdete skompilovaný kód CSS.
S najväčšou pravdepodobnosťou budete chcieť použiť animácie na zástupné symboly, keď je zameranie na vstupné pole. To všetko sa robí úplne jednoducho. Stačí niekoľkokrát použiť predtým napísaný zástupný mixin:
.input( @include zástupný symbol( // Štýly pre normálny stav) & :focus ( @include zástupný symbol ( // Štýly po udalosti zamerania } } }Zmena transparentnosti
.input ( @include zástupný symbol ( farba : #aaa ; nepriehľadnosť : 1 ; prechod : nepriehľadnosť 300 ms ; ) & :focus ( @include zástupný symbol ( nepriehľadnosť : 0 ; ) ) )
Shift doprava a doľava
Čím väčšia je šírka vstupného poľa, tým väčšia by mala byť hodnota vlastnosti text-indent. Pre štandardné vstupné pole bude stačiť 500px, pre širšie treba vyberať manuálne. Rýchlosť animácie určuje šírka vstupného poľa a hodnota odsadenia textu. Ak sa chcete posunúť doľava, musíte použiť záporné hodnoty, napríklad -500px .
Preraďte nadol
Rovnako ako v predchádzajúcom príklade, animácia závisí od veľkosti vstupu, ale v tomto prípade si dajte pozor na výšku. Pre veľkú väčšinu vstupných polí bude požadovaná hodnota výšky riadka v rozmedzí 100 pixelov. Bohužiaľ, pomocou vlastnosti line-height nie je možné implementovať efekt posunu nahor, pretože vlastnosť neakceptuje záporné hodnoty.
.input ( @include placeholder ( text-indent : 0px ; transition : text-indent 300 ms ; ) & :focus ( @include placeholder ( text-indent : 500px ; ) ) )
Spoločne
Aby bolo používanie animačného kódu pre zástupné symboly pekné a pohodlné, môžete napísať malú knižnicu mixinov pre akýkoľvek preprocesor. Knižnica vyzerá takto ():
@mixin zástupný symbol ( & : :- webkit-input-placeholder ( @content ) & : - moz-placeholder ( @content ) & : :- moz-placeholder ( @content ) & : - ms-input-placeholder ( @content ) ( text-indent : if ($side == left , - $position , $position ); ) ) ) @mixin pl-slide-down ($position : 5 , $duration : 200 ms ) ( @include placeholder ( line-height : 1 ; prechod : výška riadku $duration ; ) & :focus ( @include zástupný symbol ( výška riadku : $pozícia ; ) ) ) @mixin pl-fade-out ($duration : 200 ms ) ( @include zástupný symbol ( nepriehľadnosť : 1 ; prechod : opacity $duration ; ) & :focus ( @include zástupný symbol ( nepriehľadnosť : 0 ; ) ) )Jeho použitie je veľmi jednoduché. Stačí pripojiť požadovaný mixin k akémukoľvek vstupnému poľu alebo jednoducho vytvoriť jedno globálne pravidlo pre všetky paceholdery na stránke:
// Pre jednotlivé prvky.pl-shift-right ( @include pl-shift (right); ) .pl-fade-out ( @include pl-fade-out; ) // Na všetko ostatné@include pl-shift (vľavo);Autoprefixer
Ak nepoužívate preprocesor a napriek tomu nechcete, aby sa váš zdrojový súbor CSS zmenil na spleť predpôn pre všetky možné prehliadače, potom sa pozrite na Autoprefixer . S ním možno čisté CSS zašpiniť (ale v inom súbore) pridaním všetkých potrebných predpôn ku všetkým vlastnostiam. Na to, aby plugin fungoval s paceholdermi, stačí použiť pseudo-element::placeholder:
::zástupný znak ( farba : oranžová ; ). input : : zástupný symbol ( farba : modrá ; )Po analýze vašich štýlov Autoprefixer vytvorí samostatný súbor CSS, do ktorého zapíše všetky potrebné predpony pre všetky prehliadače, ktoré ste zadali.
Čo bude ďalej
Ako som písal vyššie, všetko, čo súvisí s aplikáciou štýlov na zástupné symboly, ešte nebolo štandardizované. Čoskoro to bude opravené. Do špecifikácie Selector Level 4 bola pridaná pseudotrieda: placeholder-show , ktorá konečne prinesie do štandardu všetku tú šialenú zmes pseudotried a pseudoprvkov, ktorá teraz existuje. Podporu si môžete overiť na stránke caniuse (v súčasnosti nie je podporovaná v žiadnom prehliadači).
Použitie štýlov pomocou :placeholder-show bude oveľa jednoduchšie:
.input :placeholder-show ( farba : modrá ; )