Ako zmeniť farbu textu popisku v zástupnom symbole pomocou štýlov CSS? Pridať štýl CSS pre zástupný symbol Štýl: zmeňte farbu CSS zástupného symbolu
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 je prvok vstupného poľa, do ktorého je možné umiestniť popis. Keď používateľ začne zadávať údaje, podporný text zmizne, aby neprekážal. Každý prehliadač má svoj vlastný názor na to, ako by sa mal tento prvok zobrazovať a niekedy predvolené štýly rozbijú celý dizajn. Ak ich chcete spravovať, musíte použiť špeciálne pravidlo pre zástupný symbol CSS.
Kde je zástupný symbol?
Problém je v tom, že popis vstupného poľa je pevne skrytý 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 ::. S jeho pomocou môžete spravovať vlastnosti popisku.
Š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 dobre zvládajú všetky moderné prehliadače a na podporu starších prehliadačov môžete použiť nasledujúce 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, rovnako ako IE, považujú zástupný symbol za pseudotriedu CSS, nie za pseudoprvok. Nehádajme sa s nimi, 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 s popisom 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;
- case - text-transform;
- vnútorné priehlbiny - vypchávka. Nepodporujú všetky prehliadače. Rovnako ako pri vložených prvkoch sa horná a spodná výplň ignoruje.
- zobrazenie písma - vlastnosti skupiny písiem, výška riadku a rôzne odsadenia (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 popis 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 ho skombinovať s pseudo-class:focus.
Input:focus::placeholder ( farba: transparentná; )
V niektorých prehliadačoch je možné animovať zmeny v množstve vlastností zástupných symbolov pomocou príkazu prechodu.
Input::placeholder ( farba: čierna; prechod: farba 1s; ) input:focus::placeholder ( color: white; )
IN 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ď, ako začnete písať. Preto by ste ich nemali používať na prenos 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 je v každom prehliadači iná. Viac informácií o všetkých potrebných prefixoch nájdete na caniuse.
Ak používate predprocesor CSS, pravdepodobne vám bude najpohodlnejšie napísať jednoduchý mix na aplikovanie štýlov na zástupné symboly. 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 je možné použiť mix na použitie štýlov buď globálne, alebo na základe jednotlivých prvkov (vyskúšajte si to na SassMeister):
// Globálne pre každé vstupné pole@include zástupný symbol (farba: modrá;) // Pre špecifické 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 ::-moz-placeholder ( color : #2e8ece ; ) .blue-text :-ms-input-placeholder ( farba : #2e8ece; )
Podporované vlastnosti
Nie každý Vlastnosť CSS možno použiť so zástupnými symbolmi. Tu úplný zoznam podporované vlastnosti:
- písmo a všetky súvisiace vlastnosti (veľkosť písma, rodina písma atď.)
- pozadie a všetky súvisiace vlastnosti (farba pozadia, obrázok pozadia atď.)
- nepriehľadnosť
- zarážka textu
- text-overflow
- farba
- textová transformácia
- line-height
- medzery medzi slovami
- 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ý z nich je dodávaný 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 vstupné pole aktívne. To všetko sa robí úplne jednoducho. Stačí len 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 } } }Zmeňte transparentnosť
.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 širšie je vstupné pole, tým väčšia by mala byť hodnota vlastnosti text-indent. Pre štandardné vstupné pole bude stačiť 500px, pre širšie by ste ho mali vybrať manuálne. Rýchlosť animácie závisí od šírky vstupného poľa a hodnoty 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ľ, vlastnosť line-height sa nedá použiť na vytvorenie efektu posunu nahor, pretože vlastnosť neprijíma záporné hodnoty.
.input ( @include placeholder ( text-indent : 0px ; transition : text-indent 300 ms ; ) & :focus ( @include placeholder ( text-indent : 500px ; ) ) )
Spolu
Aby bolo používanie animačného kódu pre zástupné symboly príjemné 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 ; ) ) )Používa sa veľmi jednoducho. 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, ktoré všetci uvidia možné prehliadače, potom venujte pozornosť Autoprefixeru. S jeho pomocou čistý CSS možno zašpiniť (ale v inom súbore) pridaním všetkých potrebných predpôn ku všetkým vlastnostiam. Aby doplnok fungoval so zástupnými symbolmi, stačí použiť pseudoprvok::placeholder:
::zástupný znak ( farba : oranžová ; ). input::placeholder(color:blue;)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é. Toto bude čoskoro opravené. Špecifikácia Selector Level 4 pridala pseudotriedu: placeholder-show , ktorá konečne štandardizuje šialenú zmes pseudotried a pseudoprvkov, ktorá v súčasnosti existuje. Podporu môžete sledovať na caniuse (momentálne nie je podporovaná v žiadnom prehliadači).
Použitie štýlov pomocou :placeholder-show bude oveľa jednoduchšie:
.input :placeholder-show ( farba : modrá ; )Dobrý deň, dnes nikoho neprekvapíte tým, že na zadanie použije zástupný symbol. Zástupný symbol je dočasný text s príkladom vo vnútri vstupu, ktorý po zadaní textu zmizne. Dnes sa pokúsime napísať štýl CSS pre zástupný symbol.
Úloha: vytvorte si vlastný štýl CSS pre zástupný symbol
Povedzme, že máme štýlový web, ktorý vo vstupe používa zástupný symbol. Musíme, aby šedý, nudný štýl textu zástupného symbolu vyzeral v súlade so všeobecným štýlom stránky. Ako sa to dá dosiahnuť? Hneď poviem, že to zatiaľ nefunguje vo všetkých prehliadačoch. Konkrétne to vôbec nefunguje vo verziách IE 9 a nižších; vo verziách 10 a novších stále funguje s veľkými problémami. Firefox a prehliadače webkit sú iná vec.
Riešenie: štýl css pre zástupný symbol
Takže máme zadanú úlohu, ako ju vyriešime?
Najprv vytvorte testovaciu pôdu:
Hotovo, teraz sa pozrime, čo môžeme urobiť so štýlom: webkit a mozilla majú svoje vlastné modifikátory, ktoré vám umožňujú priradiť špeciálny štýl zástupnému symbolu: ::-webkit-input-placeholder a:-moz-placeholder. Pozrime sa, ako ich používať:
Opíšme si štýl samotného vstupu a text v ňom (v príklade modrá farba pre kontrast):
Vstup (šírka: 250px; farba: modrá; hrúbka písma: normálna; štýl písma: normálny; )
Teraz napíšme špeciálny štýl pre zástupný text v tomto vstupe pre prehliadače Webkit (Chrome, Safari, Opera):
Input::-webkit-input-placeholder( farba: červená; štýl písma: kurzíva; váha písma: tučné; )
Urobme zástupný text červený tučná kurzíva. Všimnite si, že na rozdiel od iných pseudotried CSS, ktoré sú oddelené jednou dvojbodkou, je štýl pre zástupný symbol vo webkite oddelený dvojitou dvojbodkou.
Teraz napíšme presne rovnaký štýl pre Mozilla Firefox prehliadače:
Vstup:-moz-placeholder( farba: červená; štýl písma: kurzíva; váha písma: tučné; )
Pripravený. CSS štýl pre zástupný symbol, samozrejme môžete napísať ľubovoľný, ktorý je vhodnejší pre váš dizajn. Funkčné demo si môžete pozrieť na
Ak nie ste oboznámení s atribútom zástupný symbol, poďme si trochu vysvetliť, čo to je a kde sa používa. Používa sa vo vstupných poliach formulára. Atribút zobrazuje vo vstupnom poli text, ktorý predstavuje úlohu určitej rady. Predtým na našej stránke bol príklad s použitím javascriptu, pozitívna stránka túto metódu Je kompatibilný s rôznymi prehliadačmi. Teraz si povedzme o štýlovaní atribútu zástupného symbolu, ktorý sa používa na vstupných a textových prvkoch.
Kód vstupného poľa v našom príklade bude vyzerať asi takto:
Na výstupe dostaneme nasledujúce pole:
Teraz si predstavme, že potrebujeme štýl zástupného symbolu, na to musíme napísať sadu pravidiel v CSS:
::-webkit-input-placeholder ( farba: #c1c1c1; ) ::-moz-placeholder ( farba: #c1c1c1; ) /* Firefox 19+ */ :-moz-placeholder ( farba: #c1c1c1; ) /* Firefox 18- */ :-ms-input-placeholder ( farba: #c1c1c1; )
Dostaneme:
Nemôžeme zmeniť všetky vlastnosti, ale zoznam väčšiny z nich podporovaných modernými prehliadačmi je uvedený nižšie:
písmo(tiež súvisiace vlastnosti)
pozadie(tiež súvisiace vlastnosti)
farba
medzery medzi slovami
medzi písmenami
text-dekorácia
vertikálne zarovnať
textová transformácia
line-height
zarážka textu
text-overflow
nepriehľadnosť
IN rôzne prehliadače pravidlo je napísané inak, lebo Hoci neexistuje jednotný štandard, tento súbor záznamov je naďalej relevantný. V prehliadači IE, ako aj vo firefoxe pod verziou 18 je zástupný symbol vnímaný ako pseudotrieda a v novších prehliadače firefox, webkit a blink sa považujú za pseudoprvok.
Skrátenie textu v zástupnom symbole
Niekedy môžu byť popisy nástrojov také dlhé, že sa úplne nezmestia do vstupného poľa. Na tieto účely môžete použiť aj ďalšie vlastnosti, ktoré vám umožnia skrátiť zástupný text vo vstupnom poli.
Vstup ( text-overflow:elipsa; ) input::-moz-placeholder ( text-overflow:elipsa; ) input:-moz-placeholder ( text-overflow:elipsa; ) input:-ms-input-placeholder ( text-overflow :elipsa ;)
V dôsledku toho dostaneme vstupné pole so zástupným symbolom, ako je tento:
Skryť text pri kliknutí na pole
Každý prehliadač štandardne interpretuje odpoveď zástupného symbolu inak. V niektorých prehliadačoch sa skryje ihneď po kliknutí na pole, v iných sa skryje, keď je vo vstupnom poli aspoň jeden znak. Necháme text zmiznúť po kliknutí na pole, rovnako vo všetkých prehliadačoch.
:focus::-webkit-input-placeholder ( color: transparent; ) :focus::-moz-placeholder ( color: transparent; ) :focus:-moz-placeholder ( color: transparent; ) :focus:-ms-input -zástupný symbol (farba: priehľadná; )
Dostaneme túto akciu: