A helyőrző egy beviteli mező eleme, amelybe eszközleírás helyezhető el. Amikor a felhasználó elkezdi beírni az adatokat, a támogató szöveg eltűnik, hogy ne zavarjon. Minden böngészőnek megvan a saját véleménye arról, hogyan kell ezt az elemet megjeleníteni, és néha az alapértelmezett stílusok megtörik a teljes megjelenést. Ezek kezeléséhez speciális CSS-helyőrző szabályt kell használnia.
Hol van a helyőrző?
A probléma az, hogy a beviteli mező eszköztippje szilárdan el van rejtve az árnyék DOM-ban, és nem olyan könnyű elérni. Ehhez egy speciális, nem szabványos CSS::placeholder pszeudoelemet használnak. Segítségével kezelheti az eszköztipp tulajdonságait.
Érdekelni fog:
A helyőrző stílusa a CSS-ben így néz ki:
input::placeholder ( szín: piros; átlátszatlanság: 1; betűstílus: dőlt; )
Böngésző támogatás
A CSS helyőrző pszeudoelemet mindenki jól kezeli modern böngészők, és a régebbi böngészők támogatásához használhatja a következő előtagokat:
- ::-webkit-input-placeholder - webkit böngészőkhöz (Safari, Chrome, Opera);
- ::-moz-helyőrző - for Firefox böngészők 19-es verzió felett;
- :-moz-placeholder - régebbi Firefoxhoz;
- :-ms-input-placeholder - for internet böngésző 10-es verzió felett.
Mint látható, a régebbi Mozilla böngészők, valamint az IE a helyőrzőt CSS-álosztálynak tekintik, nem pedig pszeudoelemnek. Ne vitatkozzunk velük, csak ezt a szempontot vesszük figyelembe a beviteli mező stílusánál.
Styling opciók
A CSS-ben a helyőrző pszeudoelem beállítható következő paramétereket:
- háttér - háttértulajdonságok csoportja. A tippblokk háttere a teljes beviteli mezőre vonatkozik. Nem csak a színt (háttérszín), hanem a képet (háttér-kép) is beállíthatja.
- szöveg színe - színe;
- átlátszóság - átlátszatlanság;
- aláhúzás, áthúzás vagy áthúzás - szövegdíszítés;
- eset - szöveg-transzformáció;
- belső bemélyedések – padding. Nem minden böngésző támogatja. A beágyazott elemekhez hasonlóan a felső és alsó kitöltés figyelmen kívül marad.
- font megjelenítése - a betűcsoport tulajdonságai, sormagasság és különféle behúzások (szöveg-behúzás, betűköz, szóköz);
- függőleges igazítás egy vonalban - függőleges igazítás;
- szöveg kivágása, amikor a tároló túlcsordul – szöveg-túlcsordulás.
Input1::placeholder ( háttér-kép: lineáris gradiens(lime, kék); szín: fehér; ) .input2::placeholder ( szövegdekoráció: átmenő; szín: lila; betűsúly: félkövér; ) .input3 ::helyőrző ( betűméret: 16 képpont; betűköz: 10 képpont; ) .input4::placeholder ( háttér: barna; szín: fehér; szövegtúlcsordulás: ellipszis; )
Fókuszban
Alapértelmezés szerint az eszköztipp csak akkor tűnik el a beviteli mezőből, ha legalább egy karaktert beírtunk abba. A CSS-helyőrző pszeudoelem azonban lehetővé teszi a fading azonnali megvalósítását, amikor a mezőre fókuszál. Ehhez kombinálni kell a pszeudoosztály:fókusszal.
input:focus::placeholder ( szín: átlátszó; )
Egyes böngészőkben lehetőség van számos helyőrző tulajdonság változásainak animálására az átmeneti utasítás használatával.
input::placeholder ( szín: fekete; átmenet: szín 1s; ) input:focus::placeholder ( szín: fehér; )
A böngészőben Google Chrome Ha egy ilyen mezőre fókuszál, a tipp színe egy másodpercen belül simán megváltozik.
A helyőrzők, azok a gyakran kiszürkült szövegelemek a bemeneten belül, nehézségekbe ütközhetnek a stílusban. Szerencsére beszereztünk egy rövid, de hatékony CSS-megoldást, amellyel a bemeneti helyőrző szövegét tetszőleges színben és átlátszósággal alakíthatjuk ki. Olvassa el a kódot.
Helyőrző szöveg színének módosítása
Kezdjük egy egyszerű bevitellel és néhány helyőrző szöveggel, ebben a példában a "keresés" szót használjuk, de bármit használhat, amit akar. Az alap HTML alább található:
HTML
A beviteli (és a szövegterület) helyőrző szöveg alapértelmezés szerint világosszürke színű, de ezt néhány soros CSS-sel megváltoztathatjuk. Itt pirosra színezzük a beviteli szöveget egy HTML színnév használatával, de bármilyen színmód elegendő (HEX, RGB, HSL).
CSS
::-webkit-input-placeholder ( /* Chrome */ szín: piros; ) :-ms-input-placeholder ( /* IE 10+ */ szín: piros; ) ::-moz-placeholder ( /* Firefox 19 + */ szín: átlátszatlanság: 1 ) :-moz-placeholder ( /* Firefox 4 - 18 */ szín: piros; átlátszatlanság: 1; )Ne feledje, hogy fontos a különböző gyártói előtagok megadása, hogy a lehető legtöbb böngészőt támogassa. Csak a Firefox bemeneti helyőrző szövege alapértelmezés szerint enyhe átlátszóságot mutat, így nem szükséges beállítani az átlátszatlanság tulajdonságot IE-n vagy Chrome-on.
Helyőrző fókusz szövegszínének módosítása
Rendben, sikeresen megváltoztattuk a helyőrző szöveg színét pirosra, de jó lenne, ha valami történne, amikor a felhasználó rákattint a bevitelünkre. Ugyanazokkal a szállítói előtagú CSS-tulajdonságokkal módosíthatjuk a bemeneti helyőrző szöveg átlátszatlanságát fókuszban.
CSS
bemenet ( körvonal: nincs; kitöltés: 12 képpont; szegélysugár: 3 képpont; szegély: 1 képpont tömör fekete; ) ::-webkit-input-placeholder ( /* Chrome */ szín: piros; átmenet: átlátszatlanság 250 ms könnyű be-ki ; ) :focus::-webkit-input-placeholder ( opacitás: 0,5; ) :-ms-input-placeholder ( /* IE 10+ */ szín: piros; átmenet: átlátszatlanság 250 ms könnyű be-ki; ) :focus :-ms-input-placeholder ( átlátszatlanság: 0,5; ) ::-moz-placeholder ( /* Firefox 19+ */ szín: piros; átlátszatlanság: 1; átmenet: átlátszatlanság 250 ms könnyű be-kimenet; ) :focus:: -moz-placeholder ( átlátszatlanság: 0,5; ) :-moz-placeholder ( /* Firefox 4 - 18 */ szín: piros; átlátszatlanság: 1; átmenet: átlátszatlanság 250ms könnyű be-be; ) :focus:-moz-placeholder (átlátszatlanság: 0,5;)A fenti példában néhány alapvető stílust bevetettünk magán a bemeneten, és hozzáadtunk egy átmenetet az átlátszatlansághoz, hogy egy kicsit szebb legyen az élmény. Tekintse meg a bemutatót, és kísérletezzen más CSS-tulajdonságokkal és átmenetekkel.
A helyőrző egy beviteli mező eleme, amelybe eszközleírás helyezhető el. Amikor a felhasználó elkezdi beírni az adatokat, a támogató szöveg eltűnik, hogy ne zavarjon. Minden böngészőnek megvan a saját véleménye arról, hogyan kell ezt az elemet megjeleníteni, és néha az alapértelmezett stílusok megtörik a teljes megjelenést. Ezek kezeléséhez speciális CSS-helyőrző szabályt kell használnia.
Hol van a helyőrző?
A probléma az, hogy a beviteli mező eszköztippje szilárdan el van rejtve az árnyék DOM-ban, és nem olyan könnyű elérni. Ehhez egy speciális, nem szabványos ::helyőrzőt használnak. Segítségével kezelheti az eszköztipp tulajdonságait.
A helyőrző stílusa a CSS-ben így néz ki:
Bemenet::helyőrző ( szín: piros; átlátszatlanság: 1; betűstílus: dőlt; )
Böngésző támogatás
A CSS helyőrző pszeudoelemet minden modern böngésző jól kezeli, és a régebbi böngészők támogatásához a következő előtagokat használhatja:
- ::-webkit-input-placeholder - webkit böngészőkhöz (Safari, Chrome, Opera);
- ::-moz-placeholder - 19-es verzió feletti Firefox böngészőkhöz;
- :-moz-placeholder - régebbi Firefoxhoz;
- :-ms-input-placeholder – az Internet Explorer 10-es verziója felett.
Mint látható, a régebbi Mozilla böngészők, valamint az IE a helyőrzőt CSS-álosztálynak tekintik, nem pedig pszeudoelemnek. Ne vitatkozzunk velük, csak ezt a szempontot vesszük figyelembe a beviteli mező stílusánál.
Styling opciók
A CSS-ben a helyőrző pszeudoelemhez a következő beállításokat adhatja meg:
- háttér - az eszköztipp blokkcsoport a teljes beviteli mezőre vonatkozik. Nem csak a színt (háttér-szín), hanem a képet (háttér-kép) is beállíthatja.
- szöveg színe - színe;
- átlátszóság - átlátszatlanság;
- aláhúzás, áthúzás vagy áthúzás - szövegdíszítés;
- eset - szöveg-transzformáció;
- belső bemélyedések – padding. Nem minden böngésző támogatja. A beágyazott elemekhez hasonlóan a felső és alsó kitöltés figyelmen kívül marad.
- font megjelenítése - a betűcsoport tulajdonságai, sormagasság és különféle behúzások (szöveg-behúzás, betűköz, szóköz);
- függőleges igazítás egy vonalban - függőleges igazítás;
- szöveg kivágása, amikor a tároló túlcsordul – szöveg-túlcsordulás.
Fókuszban
Alapértelmezés szerint az eszköztipp csak akkor tűnik el a beviteli mezőből, ha legalább egy karaktert beírtunk abba. De a helyőrző lehetővé teszi, hogy azonnal végrehajtsa az eltűnést, amikor a mezőre fókuszál. Ehhez kombinálni kell a pszeudoosztály:fókusszal.
Bemenet:fókusz::helyőrző ( szín: átlátszó; )
Egyes böngészőkben lehetőség van számos helyőrző tulajdonság változásainak animálására az átmeneti utasítás használatával.
Input::placeholder ( szín: fekete; átmenet: szín 1s; ) input:focus::placeholder ( szín: fehér; )
BAN BEN Google böngésző Ha egy ilyen mezőre fókuszál, a Chrome eszköztipp színe egy másodpercen belül simán megváltozik.
A helyőrző attribútum segítségével eszköztippeket hozhat létre üres beviteli mezőkben (címkék És
Kezdjük egy példával azoknak, akik még nem tudják, mi az a helyőrző, és hogyan kell használni:
A felületek fejlesztésénél figyelembe kell venni a helyőrzők viselkedését. A helyőrző szöveg a gépelés megkezdésekor azonnal eltűnik. Éppen ezért ne használja őket magáról a beviteli mezőről információ továbbítására (hány és milyen karaktert kell tartalmaznia). Erre a célra a legjobb a címkét használni
Stilizáció
A következő szabályokat kell használni a helyőrzők stílusához:
::-webkit-input-placeholder ( szín : kék ; ) ::-moz-placeholder ( szín : kék ; ) /* Firefox 19+ */ :-moz-placeholder ( szín : kék ; ) /* Firefox 18- * / :-ms-input-placeholder ( szín : kék ; )Szörnyen néz ki, nem? És ennek meg is van az oka - eddig a helyőrzőkre vonatkozó CSS-szabályok nem voltak szabványosítva, és a megvalósítás minden böngészőben eltérő. További információ az összes szükséges előtagról a caniuse oldalon található.
Ha CSS-előfeldolgozót használ, akkor valószínűleg egy egyszerű mixet írhat a legkényelmesebben, hogy stílusokat alkalmazzon a helyőrzőkre. Példa a Sass-ban:
@mixin helyőrző ( & : :- webkit-input-placeholder ( @content ; ) & : - moz-helyőrző ( @content ; ) & : :- moz-helyőrző ( @content ; ) & : - ms-input-placeholder ( @tartalom ; ) )A kontextustól függően egy mixin használható stílusok alkalmazására globálisan vagy egyedi elemek alapján (próbálja ki a SassMeister-en):
// Globálisan minden beviteli mezőhöz@include helyőrző ( szín : kék ; ) // Adott beviteli mezőkhöz.input ( @include helyőrző ( szín : zöld ; ) )Példa
Kék szöveg a helyőrzőhöz (soha ne tegye ezt):
.blue-text ::-webkit-input-placeholder ( szín : #2e8ece ; ) .blue-text :-moz-placeholder ( szín : #2e8ece ; ) .blue-text ::-moz-placeholder ( szín : #2e8ece ; .blue-text :-ms-input-placeholder ( szín : #2e8ece ; )
Támogatott tulajdonságok
Nem minden CSS tulajdonság helyőrzőkkel használható. Itt teljes lista támogatott tulajdonságok:
- betűtípus és minden kapcsolódó tulajdonság (font-size, font-family stb.)
- háttér és minden kapcsolódó tulajdonság (háttérszín, háttérkép stb.)
- átlátszatlanság
- szöveg-behúzás
- szöveg-túlcsordulás
- szín
- szöveg-átalakítás
- vonalmagasság
- szóköz
- betűtávolságok
- szöveg-dekoráció
- függőleges igazítás
Animációk
Az animációs ötletek a html5.by bloghoz tartoznak.
A következő példák mindegyike a Sass előfeldolgozóval íródott. Mindegyikhez tartozik egy hivatkozás a SassMeisterhez, ahol megtalálhatja a lefordított CSS-kódot.
Valószínűleg animációkat szeretne alkalmazni a helyőrzőkre, ha a beviteli mező fókuszban van. Mindez egészen egyszerűen történik. Elég az előzőleg megírt helyőrző mixint néhányszor használni:
.input ( @include helyőrző ( // Stílusok normál állapothoz) & :focus ( @include helyőrző ( // Stílusok a fókusz esemény után } } }Változtassa meg az átláthatóságot
.input ( @include helyőrző ( szín : #aaa ; átlátszatlanság : 1 ; átmenet : átlátszatlanság 300 ms ; ) & :focus ( @include helyőrző ( átlátszatlanság : 0 ; ) ) )
Váltás jobbra és balra
Minél szélesebb a beviteli mező, annál nagyobbnak kell lennie a text-indent tulajdonság értékének. Szabványos beviteli mezőhöz az 500px is elég lesz, ezt manuálisan kell kiválasztani. Az animáció sebessége a beviteli mező szélességétől és a behúzás értékétől függ. A balra toláshoz negatív értékeket kell használni, például -500 képpont .
Váltás lefelé
Az előző példához hasonlóan az animáció a bemenet méretétől függ, de ebben az esetben ügyeljen a magasságra. A beviteli mezők túlnyomó többségénél a szükséges sormagasság értéke 100 képponton belül van. Sajnos a line-height tulajdonság nem használható felfelé eltolási hatás létrehozására, mivel a tulajdonság nem fogad el negatív értékeket.
.input ( @include helyőrző ( text-indent : 0px ; átmenet : text-indent 300 ms ; ) & :focus ( @include placeholder ( text-indent : 500px ; ) ) )
Együtt
Annak érdekében, hogy a helyőrzők animációs kódja kellemes és kényelmes legyen, bármilyen előfeldolgozóhoz írhat egy kis mixinkönyvtárat. A könyvtár így néz ki ():
@mixin helyőrző ( & : :- webkit-input-placeholder ( @content ) & : - moz-helyőrző ( @content ) & : :- moz-helyőrző ( @content ) & : - ms-input-placeholder ( @content ) ) @mixin pl-shift ($oldal : bal , $pozíció : 500px , $idõtartam : 200ms ) ( @include placeholder ( text-indent : 0 ; transfer : text-indent $duration ; ) & :focus ( @include placeholder ( text-indent : if ($oldal == balra , - $pozíció , $pozíció ) ) ) @mixin pl-slide-down ($pozíció : 5 , $idõtartam : 200ms ) ( @include placeholder ( line-height : 1 ; átmenet : line-height $duration ) & :focus ( @include placeholder ( line-height : $position ; ) ) ) @mixin pl-fade-out ($duration : 200ms ) ( @include placeholder ( opacitás : 1 ; átmenet : átlátszatlanság $duration ) & :focus ( @include helyőrző ( átlátszatlanság : 0 ; ) )Nagyon könnyen használható. Elég csatlakoztatni a kívánt mixint bármely beviteli mezőhöz, vagy egyszerűen létrehozni egy globális szabályt az oldalon lévő összes paceholder számára:
// Az egyes elemekhez.pl-shift-right ( @include pl-shift (jobbra ); ) .pl-fade-out ( @include pl-fade-out ; ) // Minden másért@include pl-shift (balra );Autoprefixer
Ha nem használ előfeldolgozót, és továbbra sem szeretné, hogy a CSS-forrásfájl az összes lehetséges böngésző előtagjainak zűrzavarává váljon, akkor vessen egy pillantást az Autoprefixerre. Segítségével a tiszta CSS piszkossá tehető (de más fájlban), ha minden tulajdonsághoz hozzáadja az összes szükséges előtagot. Ahhoz, hogy a bővítmény helyőrzőkkel működjön, csak használja a pszeudoelemet::placeholder:
::helyőrző ( szín : narancssárga ; ) . input::placeholder(szín:kék;)A stílusok elemzése után az Autoprefixer külön CSS-fájlt hoz létre, amelybe beírja az összes szükséges előtagot az összes megadott böngészőhöz.
Mi a következő lépés
Ahogy fentebb is írtam, még nincs szabványosítva minden, ami a stílusok helyőrzőkre történő alkalmazásával kapcsolatos. Ezt hamarosan kijavítják. A Selector Level 4 specifikációja hozzáadott egy pszeudoosztályt: placeholder-shown , amely végre szabványosítja a jelenleg létező álosztályok és pszeudoelemek őrült keverékét. Figyelemmel kísérheti a caniuse támogatását (jelenleg egyik böngésző sem támogatja).
A stílusok alkalmazása a :placeholder-shown segítségével sokkal egyszerűbb lesz:
.input :placeholder-shown ( szín : kék ; )