Jak změnit barvu textu popisku v zástupném symbolu pomocí stylů CSS? Přidejte styl CSS pro zástupný symbol Styling: změňte barvu CSS zástupného symbolu
Zástupné symboly, často zašedlé textové prvky uvnitř vstupu, mohou být náročné na styl. Naštěstí jsme získali krátké, ale účinné řešení CSS, které stylizuje zástupný text vašeho vstupu do libovolné barvy a neprůhlednosti, kterou si přejete. Přečtěte si kód.
Změna barvy zástupného textu
Začněme jednoduchým vstupem a nějakým zástupným textem, pro tento příklad použijeme slovo „hledat“, ale můžete použít cokoli chcete. Základní HTML je níže:
HTML
Vstupní (a textarea) zástupný text má výchozí světle šedou barvu, ale můžeme to změnit pomocí několika řádků CSS. Zde obarvíme vstupní text červeně pomocí názvu barvy HTML, ale postačí jakákoli barevná metoda (HEX, RGB, HSL).
CSS
::-webkit-input-placeholder ( /* Chrome */ barva: červená; ) :-ms-input-placeholder ( /* IE 10+ */ barva: červená; ) ::-moz-placeholder ( /* Firefox 19 + */ barva: červená; neprůhlednost: 1; ) :-moz-placeholder ( /* Firefox 4 - 18 */ barva: červená; neprůhlednost: 1; )Všimněte si, že je důležité zahrnout předpony různých dodavatelů, aby bylo podporováno co nejvíce prohlížečů. Pouze vstupní zástupný text Firefoxu má ve výchozím nastavení mírnou průhlednost, takže není nutné nastavovat vlastnost opacity v IE nebo Chrome.
Změna barvy textu zaměření zástupného symbolu
Dobře, úspěšně jsme změnili barvu zástupného textu na červenou, ale bylo by hezké, kdyby se něco stalo, když uživatel klikne do našeho vstupu. Pomocí stejných vlastností CSS s předponou dodavatele můžeme změnit neprůhlednost vstupního zástupného textu na zaměření.
CSS
input ( obrys: žádný; odsazení: 12px; okraj-poloměr: 3px; okraj: 1px plná černá; ) ::-webkit-input-placeholder ( /* Chrome */ barva: červená; přechod: neprůhlednost 250 ms náběh ; ) :focus::-webkit-input-placeholder ( neprůhlednost: 0,5; ) :-ms-input-placeholder ( /* IE 10+ */ barva: červená; přechod: neprůhlednost 250 ms easy-in-out; ) :focus :-ms-input-placeholder ( neprůhlednost: 0,5; ) ::-moz-placeholder ( /* Firefox 19+ */ barva: červená; neprůhlednost: 1; přechod: neprůhlednost 250 ms náběh a výstup; ) :focus:: -moz-placeholder ( neprůhlednost: 0,5; ) :-moz-placeholder ( /* Firefox 4 - 18 */ barva: červená; neprůhlednost: 1; přechod: neprůhlednost 250 ms easy-in-out; ) :focus:-moz-placeholder (neprůhlednost: 0,5; )Ve výše uvedeném příkladu jsme přidali několik základních stylů na samotný vstup a přidali přechod na neprůhlednost, aby byl zážitek o něco hezčí. Podívejte se na demo a experimentujte s dalšími vlastnostmi a přechody CSS.
Zástupný symbol je prvek vstupního pole, do kterého lze umístit popisek. Když uživatel začne zadávat data, podpůrný text zmizí, aby nepřekážel. Každý prohlížeč má svůj vlastní názor na to, jak by se měl tento prvek zobrazovat, a někdy výchozí styly rozbijí celý design. Chcete-li je spravovat, musíte použít speciální pravidlo pro zástupný symbol CSS.
Kde je zástupný symbol?
Problém je v tom, že popisek vstupního pole je pevně skryt ve stínovém DOM a není tak snadné se k němu dostat. K tomu slouží speciální nestandardní ::placeholder. S jeho pomocí můžete spravovat vlastnosti popisku.
Stylování zástupného symbolu v CSS vypadá takto:
Vstup::placeholder ( barva: červená; neprůhlednost: 1; styl písma: kurzíva; )
Podpora prohlížeče
Pseudoprvek zástupného symbolu CSS je dobře zpracován všemi moderními prohlížeči a pro podporu starších prohlížečů můžete použít následující předpony:
- ::-webkit-input-placeholder - pro prohlížeče webkit (Safari, Chrome, Opera);
- ::-moz-placeholder - pro prohlížeče Firefox starší verze 19;
- :-moz-placeholder - pro starší Firefox;
- :-ms-input-placeholder - pro internet Explorer výše verze 10.
Jak vidíš, starý Prohlížeče Mozilla, stejně jako IE, považují zástupný symbol za pseudotřídu CSS, nikoli za pseudoprvek. Nehádejme se s nimi, jen tento aspekt zohledníme při stylování vstupního pole.
Možnosti stylingu
Pro zástupný pseudoelement v CSS můžete nastavit následující možnosti:
- pozadí - skupina bloků popisků se vztahuje na celé vstupní pole. Můžete nastavit nejen barvu (background-color), ale i obrázek (background-image).
- barva textu - barva;
- průhlednost - neprůhlednost;
- podtržení, podtržení nebo přeškrtnutí - text-dekorace;
- case - text-transform;
- vnitřní prohlubně - vycpávka. Není podporováno všemi prohlížeči. Stejně jako u vkládaných prvků je horní a spodní výplň ignorována.
- zobrazení písma - vlastnosti skupiny písem, výška řádku a různé odsazení (text-odsazení, letter-spacing, word-spacing);
- vertikální zarovnání v řádku - vertical-align;
- oříznutí textu při přetečení kontejneru - text-overflow.
V zaměření
Ve výchozím nastavení zmizí popisek ze vstupního pole pouze v případě, že do něj zadáte alespoň jeden znak. Ale zástupný symbol vám umožňuje implementovat zmizení okamžitě při zaměření na pole. Chcete-li to provést, musíte jej zkombinovat s pseudo-class:focus.
Vstup:focus::placeholder ( barva: průhledná; )
V některých prohlížečích je možné animovat změny v řadě vlastností zástupného symbolu pomocí příkazu transition.
Vstup::placeholder ( barva: černá; přechod: barva 1s; ) input:focus::placeholder ( barva: bílá; )
V Prohlížeč Google Barva popisku Chrome se při zaměření na takové pole plynule změní během jedné sekundy.
Atribut placeholder se používá k vytváření popisků uvnitř prázdných vstupních polí (tagů A
Začněme příkladem pro ty, kteří ještě nevědí, co je zástupný symbol a jak jej používat:
Při vývoji rozhraní byste měli vzít v úvahu chování zástupných symbolů. Zástupný text zmizí, jakmile začne psaní. Proto byste je neměli používat k přenosu informací o samotném vstupním poli (kolik a jaké znaky by mělo obsahovat). Pro tyto účely je nejlepší použít značku
Stylizace
Pro stylování zástupných symbolů se používají následující pravidla:
::-webkit-input-placeholder ( barva : modrá ; ) ::-moz-placeholder ( barva : modrá ; ) /* Firefox 19+ */ :-moz-placeholder ( barva : modrá ; ) /* Firefox 18- * / :-ms-input-placeholder ( barva : modrá; )Vypadá to hrozně, že? A má to svůj důvod – až dosud nebyla pravidla CSS pro zástupné symboly standardizována a implementace je v každém prohlížeči jiná. Více informací o všech potřebných prefixech najdete na caniuse.
Pokud používáte preprocesor CSS, pravděpodobně vám bude nejpohodlnější napsat jednoduchý mix pro použití stylů na zástupné symboly. Příklad v Sass:
@mixin placeholder ( & : :- webkit-input-placeholder ( @content ; ) & : - moz-placeholder ( @content ; ) & : :- moz-placeholder ( @content ; ) & : - ms-input-placeholder ( @obsah ; ) )V závislosti na kontextu lze mixin použít k aplikaci stylů buď globálně, nebo na základě jednotlivých prvků (vyzkoušejte to na SassMeister):
// Globálně pro každé vstupní pole@include zástupný symbol ( barva : modrá ; ) // Pro konkrétní vstupní pole.input ( @include zástupný symbol ( barva : zelená ; ) )Příklad
Modrý text pro zástupný symbol (nikdy to nedělejte):
.blue-text ::-webkit-input-placeholder ( barva : #2e8ece ; ) .blue-text :-moz-placeholder ( barva : #2e8ece ; ) .blue-text ::-moz-placeholder ( barva : #2e8ece ; ) .blue-text :-ms-input-placeholder ( barva : #2e8ece; )
Podporované vlastnosti
Ne každý Vlastnost CSS lze použít se zástupnými symboly. Tady úplný seznam podporované vlastnosti:
- font a všechny související vlastnosti (font-size, font-family atd.)
- pozadí a všechny související vlastnosti (barva pozadí, obrázek pozadí atd.)
- neprůhlednost
- odsazení textu
- přetečení textu
- barva
- textová transformace
- výška čáry
- mezery mezi slovy
- mezery mezi písmeny
- text-dekorace
- svisle zarovnat
Animace
Nápady na animaci patří do blogu html5.by.
Všechny následující příklady jsou napsány pomocí preprocesoru Sass. Každý z nich je dodáván s odkazem na SassMeister, kde najdete zkompilovaný kód CSS.
S největší pravděpodobností budete chtít použít animace na zástupné symboly, když je aktivní vstupní pole. To vše se provádí zcela jednoduše. Stačí jen několikrát použít dříve napsaný zástupný mixin:
.input ( @include zástupný symbol ( // Styly pro normální stav) & :focus ( @include zástupný symbol ( // Styly po události fokusu } } }Změňte průhlednost
.input ( @include zástupný symbol ( barva : #aaa ; neprůhlednost : 1 ; přechod : neprůhlednost 300 ms ; ) & :focus ( @include zástupný symbol ( opacity : 0 ; ) ) )
Posun doprava a doleva
Čím širší je vstupní pole, tím větší by měla být hodnota vlastnosti text-indent. Pro standardní vstupní pole vám bude stačit 500px, pro širší jej vyberte ručně. Rychlost animace závisí na šířce vstupního pole a hodnotě odsazení textu. Chcete-li se posunout doleva, musíte použít záporné hodnoty, například -500px .
Posunout dolů
Stejně jako v předchozím příkladu je animace závislá na velikosti vstupu, ale v tomto případě si dejte pozor na výšku. U velké většiny vstupních polí bude požadovaná hodnota výšky řádku do 100 pixelů. Vlastnost line-height bohužel nelze použít k vytvoření efektu posunu nahoru, protože vlastnost nepřijímá záporné hodnoty.
.input ( @include placeholder ( text-indent : 0px ; transition : text-indent 300 ms ; ) & :focus ( @include placeholder ( text-indent : 500px ; ) ) )
Spolu
Aby bylo používání animačního kódu pro zástupné symboly příjemné a pohodlné, můžete napsat malou knihovnu mixinů pro jakýkoli preprocesor. Knihovna vypadá 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 : 2 ; přechod : opacity $duration ; ) & :focus ( @include zástupný symbol ( opacity : 0 ; ) ) )Použití je velmi snadné. Stačí připojit požadovaný mixin k libovolnému vstupnímu poli nebo jednoduše vytvořit jedno globální pravidlo pro všechny paceholdery na stránce:
// Pro jednotlivé prvky.pl-shift-right ( @include pl-shift ( right ); ) .pl-fade-out ( @include pl-fade-out ; ) // Na všechno ostatní@include pl-shift ( vlevo );Autoprefixer
Pokud nepoužíváte preprocesor a přesto nechcete, aby se váš zdrojový soubor CSS proměnil ve změť prefixů, které všichni uvidí možné prohlížeče, pak věnujte pozornost Autoprefixeru. S jeho pomocí čisté CSS lze zašpinit (ale v jiném souboru) přidáním všech nezbytných předpon ke všem vlastnostem. Aby plugin fungoval se zástupnými symboly, stačí použít pseudoprvek::placeholder:
::zástupný symbol ( barva : oranžová; ). input::placeholder(color:blue;)Po analýze vašich stylů Autoprefixer vytvoří samostatný soubor CSS, do kterého zapíše všechny potřebné předpony pro všechny vámi zadané prohlížeče.
Co bude dál
Jak jsem psal výše, vše, co souvisí s aplikací stylů na zástupné symboly, ještě nebylo standardizováno. To bude brzy opraveno. Specifikace Selector Level 4 přidala pseudotřídu: placeholder-show , která konečně standardizuje šílenou směs pseudotříd a pseudoprvků, která v současnosti existuje. Podporu můžete sledovat na caniuse (v současné době není podporována v žádném prohlížeči).
Použití stylů pomocí :placeholder-show bude mnohem jednodušší:
.input :placeholder-show ( barva : modrá ; )Dobrý den, dnes nikoho nepřekvapíte, že použije zástupný symbol pro zadání. Zástupný symbol je dočasný text s příkladem uvnitř vstupu, který zmizí, když zadáte text. Styl CSS pro zástupný symbol si dnes zkusíme napsat.
Úkol: vytvořte si vlastní CSS styl pro zástupný symbol
Řekněme, že máme stylový web, který ve vstupu používá zástupný symbol. Potřebujeme, aby šedý, nudný textový styl zástupného symbolu vypadal v souladu s obecným stylem webu. Jak toho lze dosáhnout? Hned řeknu, že to zatím nefunguje ve všech prohlížečích. Konkrétně to nefunguje vůbec v IE verze 9 a nižší, ve verzi 10 a novější to stále funguje s velkými obtížemi. Firefox a prohlížeče webkit jsou jiná věc.
Řešení: styl css pro zástupný symbol
Takže máme úkol, jak ho vyřešíme?
Nejprve vytvořte testovací základnu:
Hotovo, nyní se podívejme, co můžeme udělat se stylem: webkit a mozilla mají své vlastní modifikátory, které vám umožňují přiřadit speciální styl zástupnému symbolu: ::-webkit-input-placeholder a:-moz-placeholder. Podívejme se, jak je používat:
Popišme si styl samotného vstupu a text v něm (v příkladu modrá barva pro kontrast):
Vstup (šířka: 250px; barva: modrá; váha písma: normální; styl písma: normální; )
Nyní napíšeme speciální styl pro zástupný text v tomto vstupu pro prohlížeče Webkit (Chrome, Safari, Opera):
Input::-webkit-input-placeholder( barva: červená; styl písma: kurzíva; váha písma: tučné; )
Udělejme zástupný text červený tučná kurzíva. Všimněte si, že na rozdíl od jiných pseudotříd CSS, které jsou odděleny jednou dvojtečkou, je styl pro zástupný symbol ve webkitu oddělen dvojitou dvojtečkou.
Nyní napíšeme přesně stejný styl pro Mozilla Firefox prohlížeče:
Vstup:-moz-placeholder( barva: červená; styl písma: kurzíva; váha písma: tučné; )
Připraveno. CSS styl pro zástupný symbol, samozřejmě můžete napsat jakýkoli, který je pro váš návrh vhodnější. Funkční demo si můžete prohlédnout na
Pokud nejste obeznámeni s atributem placeholder, pojďme si trochu vysvětlit, co to je a kde se používá. Používá se ve vstupních polích formuláře. Atribut zobrazuje ve vstupním poli text představující roli určité nápovědy. Dříve na našich stránkách byl příklad pomocí javascriptu, pozitivní stránka tato metoda Je kompatibilní s různými prohlížeči. Nyní si povíme něco o stylování atributu zástupného symbolu, který se používá u prvků input a textarea.
Kód vstupního pole v našem příkladu bude vypadat nějak takto:
Na výstupu dostaneme následující pole:
Nyní si představme, že potřebujeme stylizovat zástupný symbol, k tomu musíme napsat sadu pravidel v CSS:
::-webkit-input-placeholder ( barva: #c1c1c1; ) ::-moz-placeholder ( barva: #c1c1c1; ) /* Firefox 19+ */ :-moz-placeholder ( barva: #c1c1c1; ) /* Firefox 18- */ :-ms-input-placeholder ( barva: #c1c1c1; )
Dostaneme:
Nemůžeme změnit všechny vlastnosti, ale seznam většiny z nich podporovaných moderními prohlížeči je uveden níže:
písmo(také související vlastnosti)
Pozadí(také související vlastnosti)
barva
mezery mezi slovy
mezery mezi písmeny
text-dekorace
svisle zarovnat
textová transformace
výška čáry
odsazení textu
přetečení textu
neprůhlednost
V různé prohlížeče pravidlo je napsáno jinak, protože I když neexistuje jediný standard, tento soubor záznamů je nadále relevantní. V prohlížeči IE, stejně jako firefox pod verzí 18, je zástupný symbol vnímán jako pseudotřída a v novějších prohlížeče firefox, webkit a blink jsou považovány za pseudo-prvek.
Zkracování textu v zástupném symbolu
Někdy mohou být popisky tak dlouhé, že se nevejdou úplně do vstupního pole. Pro tyto účely můžete také použít další vlastnosti, které vám umožní zkrátit zástupný text ve vstupním 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 získáme vstupní pole se zástupným symbolem, jako je tento:
Skrýt text při kliknutí na pole
Ve výchozím nastavení každý prohlížeč interpretuje odpověď zástupného symbolu jinak. V některých prohlížečích se skryje ihned po kliknutí na pole, v jiných se skryje, když je ve vstupním poli alespoň jeden znak. Necháme text zmizet po kliknutí na pole, stejně ve všech prohlížečích.
:focus::-webkit-input-placeholder ( barva: průhledná; ) :focus::-moz-placeholder ( barva: průhledná; ) :focus:-moz-placeholder ( barva: průhledná; ) :focus:-ms-input -zástupný symbol ( barva: průhledná; )
Dostaneme tuto akci: