Vendmbajtësi - një element i fushës hyrëse në të cilin mund të vendosni një aluzion. Kur përdoruesi fillon të fusë të dhëna, teksti i ndihmës zhduket në mënyrë që të mos ndërhyjë. Çdo shfletues ka mendimin e vet se si duhet të shfaqet ky element, dhe ndonjëherë stilet e paracaktuara thyejnë të gjithë dizajnin. Për t'i kontrolluar ato, duhet të përdorni një rregull të veçantë CSS të mbajtësit të vendeve.
Ku është mbajtësi i vendit?
Problemi është se sugjerimi i fushës së hyrjes fshihet në mënyrë të sigurt në DOM hije, dhe nuk është aq e lehtë për t'u arritur. Për këtë, përdoret një pseudo-element i veçantë jo standard CSS::placeholder. Me të, ju mund të kontrolloni vetitë e këshillës së veglave.
Do të jeni të interesuar:
Stilizimi i mbajtësit të vendit në CSS duket kështu:
hyrje:: mbajtëse e vendit (ngjyra: e kuqe; errësirë: 1; stili i shkronjave: italic; )
Mbështetja e shfletuesit
Pseudoelementi i mbajtësit të vendndodhjes CSS trajtohet mirë nga të gjithë shfletues modern, dhe për të mbështetur shfletuesit më të vjetër, mund të përdorni prefikset:
- ::-webkit-input-placeholder - për shfletuesit e ueb-kit (Safari, Chrome, Opera);
- ::-moz-placeholder - për shfletuesit Firefox mbi versionin 19;
- :-moz-placeholder - për Firefox-in e vjetër;
- :-ms-input-placeholder - për Internet Explorer mbi versionin 10.
Siç mund ta shihni, e vjetra Shfletuesit Mozilla, dhe gjithashtu IE e konsiderojnë mbajtësin e vendit një pseudo-klasë CSS, jo një pseudo-element. Ne nuk do të debatojmë me ta, thjesht do ta marrim parasysh këtë aspekt kur stilojmë fushën e hyrjes.
Opsionet e stilimit
Për pseudo-elementin mbajtës të vendit në CSS, mund të vendosni opsionet e mëposhtme:
- sfond - një grup i veçorive të sfondit. Sfondi i bllokut të këshillave shtrihet në të gjithë fushën e hyrjes. Mund të vendosni jo vetëm ngjyrën (ngjyra e sfondit), por edhe imazhin (imazhi i sfondit).
- ngjyra e tekstit - ngjyra;
- transparencë - patransparencë;
- nënvizoni, mbinvizoni ose shënjoni - dekorimi i tekstit;
- regjistër - tekst-transformim;
- mbushje - mbushje. Nuk mbështetet nga të gjithë shfletuesit. Ashtu si me elementët inline, mbushja e sipërme dhe e poshtme nuk merret parasysh.
- shfaqja e shkronjave - vetitë e grupit të shkronjave, lartësia e rreshtit dhe dhëmbëzimet e ndryshme (indenti i tekstit, hapësira e shkronjave, hapësira e fjalëve);
- shtrirje vertikale në linjë - vertikal-align;
- prerje e tekstit kur kontejneri tejmbushet - tekst-mbushje.
Input1::placeholder ( background-image: linear-gradient (lime, blu); ngjyra: e bardhë; ) .input2::placeholder (tekst-dekorim: line-through; ngjyra: purple; font-pesha: bold; ) .input3 ::placeholder (madhësia e shkronjave: 16 px; hapësira e shkronjave: 10 px; ) .input4::placeholder ( sfondi: kafe; ngjyra: e bardhë; tejmbushja e tekstit: elipsë; )
Në fokus
Si parazgjedhje, aludimi zhduket nga fusha e hyrjes vetëm nëse të paktën një karakter është futur në të. Por pseudo-elementi i mbajtësit të vendeve të CSS ju lejon të zbatoni zhdukjen menjëherë kur fusha është e fokusuar. Për ta bërë këtë, ju duhet ta kombinoni atë me pseudo-klasën :focus.
hyrje:fokus::mbajtës vendi (ngjyra: transparente; )
Në disa shfletues, është e pranueshme të animohet një ndryshim në një numër të vetive të mbajtësve të vendndodhjes duke përdorur deklaratën e tranzicionit.
hyrja::mbajtës vendi (ngjyra: e zezë; tranzicioni: ngjyra 1s; ) hyrja: fokusi:: mbajtëse vendi ( ngjyra: e bardhë; )
Në shfletues Google Chrome ngjyra e aludimit kur fokusohet në një fushë të tillë do të ndryshojë pa probleme brenda një sekonde.
Vendmbajtësit, ato elemente teksti të thinjura shpesh brenda një hyrjeje, mund të jenë një dhimbje për stilin. Për fat të mirë, ne kemi gjetur një zgjidhje të shkurtër por efektive CSS për të stiluar tekstin e mbajtësit të vendndodhjes së hyrjes suaj çdo ngjyrë dhe paqartësi që dëshironi. Lexoni për kodin.
Ndryshimi i ngjyrës së tekstit të mbajtësit të vendeve
Le të fillojmë me një hyrje të thjeshtë dhe një tekst të mbajtësit të vendndodhjes, për këtë shembull do të përdorim fjalën "kërkim", por ju mund të përdorni gjithçka që dëshironi. HTML bazë është më poshtë:
HTML
Teksti i vendmbajtësit të hyrjes (dhe zonës së tekstit) është i paracaktuar në një ngjyrë gri të lehtë, megjithatë, ne mund ta ndryshojmë atë me disa rreshta CSS. Këtu do ta ngjyrosim tekstin e hyrjes me ngjyrë të kuqe duke përdorur një emër ngjyre HTML, por çdo metodë ngjyrash do të mjaftojë (HEX, RGB, HSL).
css
::-webkit-input-placeholder ( /* Chrome */ ngjyra: e kuqe; ) :-ms-input-placeholder ( /* IE 10+ */ ngjyra: e kuqe; ) ::-moz-placeholder ( /* Firefox 19 + */ ngjyra: e kuqe; errësirë: 1; ) :-moz-placeholder ( /* Firefox 4 - 18 */ ngjyra: e kuqe; errësirë: 1; )Vini re se është e rëndësishme të përfshini prefikset e ndryshme të shitësit për të mbështetur sa më shumë shfletues të jetë e mundur. Vetëm teksti i vendmbajtësit të hyrjes së Firefox-it është i paracaktuar me një transparencë të lehtë, kështu që është e panevojshme të vendoset vetia e opacity në IE ose Chrome.
Ndryshimi i ngjyrës së tekstit të fokusit të mbajtësit të vendndodhjes
Në rregull, ne kemi ndryshuar me sukses ngjyrën e tekstit të mbajtësit të vendndodhjes në të kuqe, por do të ishte mirë nëse diçka do të ndodhte kur një përdorues klikon brenda hyrjes sonë. Duke përdorur të njëjtat veti CSS të prefiksuara nga shitësi, ne mund të ndryshojmë paqartësinë e tekstit të mbajtësit të vendndodhjes hyrëse në fokus.
css
hyrje ( skicë: asnjë; mbushje: 12 px; kufiri-rreze: 3 px; kufiri: 1px e zezë; . :-ms-input-placeholder ( opacity: 0,5; ) ::-moz-placeholder ( /* Firefox 19+ */ ngjyra: e kuqe; opacity: 1; tranzicion: opacity 250ms lehtësi në dalje; ) :fokus:: -moz-placeholder ( opacity: 0,5; ) :-moz-placeholder ( /* Firefox 4 - 18 */ ngjyra: e kuqe; opacity: 1; tranzicioni: opacity 250ms lehtësi në dalje; ) :fokus:-moz-placeholder (opaciteti: 0,5; )Në shembullin e mësipërm ne kemi hedhur disa stile bazë në vetë hyrjen dhe kemi shtuar një tranzicion në opacitetin për ta bërë përvojën pak më të bukur. Shikoni demonstrimin dhe eksperimentoni me vetitë dhe tranzicionet e tjera CSS.
Vendmbajtësi - një element i fushës hyrëse në të cilin mund të vendosni një aluzion. Kur përdoruesi fillon të fusë të dhëna, teksti i ndihmës zhduket në mënyrë që të mos ndërhyjë. Çdo shfletues ka mendimin e vet se si duhet të shfaqet ky element, dhe ndonjëherë stilet e paracaktuara thyejnë të gjithë dizajnin. Për t'i kontrolluar ato, duhet të përdorni një rregull të veçantë CSS të mbajtësit të vendeve.
Ku është mbajtësi i vendit?
Problemi është se sugjerimi i fushës së hyrjes fshihet në mënyrë të sigurt në DOM hije, dhe nuk është aq e lehtë për t'u arritur. Për këtë, përdoret një vendmbajtës i veçantë jo standard ::. Me të, ju mund të kontrolloni vetitë e këshillës së veglave.
Stilizimi i mbajtësit të vendit në CSS duket kështu:
Hyrja:: mbajtës i vendit (ngjyra: e kuqe; errësirë: 1; stili i shkronjave: italik; )
Mbështetja e shfletuesit
Pseudoelementi i mbajtësit të vendndodhjes CSS trajtohet mirë nga të gjithë shfletuesit modernë dhe prefikset mund të përdoren për të mbështetur shfletuesit më të vjetër:
- ::-webkit-input-placeholder - për shfletuesit e ueb-kit (Safari, Chrome, Opera);
- ::-moz-placeholder - për shfletuesit Firefox mbi versionin 19;
- :-moz-placeholder - për Firefox-in e vjetër;
- :-ms-input-placeholder - për Internet Explorer mbi versionin 10.
Siç mund ta shihni, shfletuesit më të vjetër të Mozilla-s, si dhe IE, e konsiderojnë mbajtësin e vendit një pseudo-klasë CSS, jo një pseudo-element. Ne nuk do të debatojmë me ta, thjesht do ta marrim parasysh këtë aspekt kur stilojmë fushën e hyrjes.
Opsionet e stilimit
Mund të vendosni opsionet e mëposhtme për pseudoelementin e mbajtësit të vendit në CSS:
- sfond - grupi i bllokut të aludimeve zbatohet për të gjithë fushën e hyrjes. Mund të vendosni jo vetëm ngjyrën (ngjyra e sfondit), por edhe imazhin (imazhi i sfondit).
- ngjyra e tekstit - ngjyra;
- transparencë - patransparencë;
- nënvizoni, mbinvizoni ose shënjoni - dekorimi i tekstit;
- regjistër - tekst-transformim;
- mbushje - mbushje. Nuk mbështetet nga të gjithë shfletuesit. Ashtu si me elementët inline, mbushja e sipërme dhe e poshtme nuk merret parasysh.
- shfaqja e shkronjave - vetitë e grupit të shkronjave, lartësia e rreshtit dhe dhëmbëzimet e ndryshme (indenti i tekstit, hapësira e shkronjave, hapësira e fjalëve);
- shtrirje vertikale në linjë - vertikal-align;
- prerje e tekstit kur kontejneri tejmbushet - tekst-mbushje.
Në fokus
Si parazgjedhje, aludimi zhduket nga fusha e hyrjes vetëm nëse të paktën një karakter është futur në të. Por vendmbajtësi ju lejon të zbatoni zhdukjen menjëherë kur fokusoheni në fushë. Për ta bërë këtë, ju duhet ta kombinoni atë me pseudo-klasën :focus.
Hyrja: fokus:: mbajtëse vendi ( ngjyra: transparente; )
Në disa shfletues, është e pranueshme të animohet një ndryshim në një numër të vetive të mbajtësve të vendndodhjes duke përdorur deklaratën e tranzicionit.
Hyrja::mbajtës vendi (ngjyra: e zezë; tranzicioni: ngjyra 1s; ) hyrja: fokusi:: mbajtësi i vendit ( ngjyra: e bardhë; )
AT Shfletuesi Google Ngjyra e këshillës së veglave të Chrome kur fokusohet në një fushë të tillë do të ndryshojë pa probleme brenda një sekonde.
Atributi vendmbajtës përdoret për të krijuar këshilla veglash brenda fushave të hyrjes boshe (etiketat dhe
Le të fillojmë me një shembull për ata që nuk e dinë ende se çfarë është një vendmbajtes dhe si ta përdorin atë:
Kur zhvilloni ndërfaqe, duhet të merrni parasysh sjelljen e mbajtësve të vendeve. Teksti i vendmbajtësit zhduket sapo fillon shtypja. Kjo është arsyeja pse ju nuk duhet t'i përdorni ato për të përcjellë informacion në lidhje me vetë fushën e hyrjes (sa dhe çfarë karaktere duhet të përmbajë). Për këto qëllime, është më mirë të përdorni etiketën
Stilizimi
Rregullat e mëposhtme përdoren për të stiluar mbajtësit e vendeve:
::-webkit-input-placeholder (ngjyra: blu ;) ::-moz-placeholder (ngjyra: blu;) /* Firefox 19+ */ :-moz-placeholder (ngjyra: blu ;) /* Firefox 18- * / :-ms-input-placeholder (ngjyra: blu;)Duket e tmerrshme, apo jo? Dhe ka një arsye për këtë - deri më tani, rregullat CSS për mbajtësit e vendeve nuk janë standardizuar dhe zbatimi në secilin shfletues është i ndryshëm. Mund të mësoni më shumë për të gjitha parashtesat e nevojshme në Caniuse.
Nëse jeni duke përdorur një paraprocesor CSS, ndoshta do ta gjeni më mirë të shkruani një miks të thjeshtë për të stiluar mbajtësit e vendndodhjes. Shembull në Sass:
@mixin placeholder ( & : :- webkit-input-placeholder ( @content ; ) & : - moz-placeholder ( @content ; ) & : :- moz-placeholder ( @content ; ) & : - ms-input-placeholder ( @content ;))Në varësi të kontekstit, mixin mund të përdoret për të aplikuar stile globalisht ose në elementë individualë (provojeni në SassMeister):
// Globalisht për secilën fushë hyrëse@include placeholder (ngjyra: blu;) // Për fusha të caktuara hyrëse.input (@include placeholder (ngjyra: jeshile;))Shembull
Teksti blu për mbajtësin e vendndodhjes (kurrë mos e bëni këtë):
.blu-text ::-webkit-input-placeholder (ngjyra: #2e8ece ;) .text blu :-moz-placeholder (ngjyra: #2e8ece ;) ;) .text blu :-ms-input-placeholder (ngjyra : #2e8ece ;)
Karakteristikat e mbështetura
Jo çdo pronë CSS mund të përdoret me mbajtës të vendeve. Këtu listën e plotë vetitë e mbështetura:
- font dhe të gjitha vetitë e lidhura me të (madhësia e shkronjave, font-familja, etj.)
- sfondi dhe të gjitha veçoritë përkatëse (ngjyra e sfondit, imazhi i sfondit, etj.)
- errësirë
- dhëmbëzimi i tekstit
- tejmbushje teksti
- ngjyrë
- tekst-transformim
- vija e gjatesise
- ndarja e fjalëve
- ndarja e shkronjave
- tekst-dekorim
- vertikal-drejtuar
Animacionet
Idetë e animacionit i përkasin blogut html5.by.
Të gjithë shembujt e mëposhtëm janë shkruar duke përdorur paraprocesorin Sass. Secili vjen me një lidhje me SassMeister ku mund të gjeni kodin e përpiluar CSS.
Me shumë mundësi do të dëshironi të aplikoni animacione për mbajtësit e vendeve kur fokusi është në një fushë hyrëse. E gjithë kjo bëhet mjaft thjesht. Mjafton vetëm të përdorni disa herë përzierjen e mbajtësit të vendeve të shkruara më parë:
.input( @include placeholder( // Stilet për gjendjen normale) & :fokus ( @include placeholder ( // Stilet pas ngjarjes së fokusit } } }Ndryshimi i transparencës
.input (@include placeholder (ngjyra: #aaa; opacity: 1; tranzicioni: opacity 300ms;) & :focus (@include placeholder (opacity: 0;)))
Zhvendos djathtas dhe majtas
Sa më e madhe të jetë gjerësia e fushës së hyrjes, aq më e madhe duhet të jetë vlera e veçorisë tekst-indent. Për një fushë standarde të hyrjes, 500 px do të jenë të mjaftueshme, për ato më të gjera, duhet të zgjidhni manualisht. Gjerësia e fushës së hyrjes dhe vlera e indentit të tekstit përcaktojnë shpejtësinë e animacionit. Për t'u zhvendosur në të majtë, duhet të përdorni vlera negative, për shembull -500px.
Zhvendos poshtë
Ashtu si në shembullin e mëparshëm, animacioni varet nga madhësia e hyrjes, por në këtë rast, kushtojini vëmendje lartësisë. Për shumicën dërrmuese të fushave hyrëse, vlera e dëshiruar e lartësisë së linjës do të jetë brenda 100 pikselë. Fatkeqësisht, duke përdorur veçorinë line-height, është e pamundur të zbatohet efekti i lëvizjes lart, pasi vetia nuk pranon vlera negative.
.input (@include placeholder (text-indent: 0px; tranzicioni: text-indent 300ms ;) & :focus (@include placeholder (indent-tekst: 500px;))
Së bashku
Për ta bërë të këndshëm dhe të përshtatshëm përdorimin e kodit të animacionit për mbajtësit e vendeve, mund të shkruani një bibliotekë të vogël miksesh për çdo paraprocesor. Biblioteka duket si kjo ():
@mixin placeholder ( & : :- webkit-input-placeholder ( @content ) & : - moz-placeholder ( @content ) & : :- moz-placeholder ( @content ) & : - ms-input-placeholder ( @content ) ) @mixin pl-shift ($side : majtas , $position : 500 pikselë , $kohëzgjatja : 200 ms ) ( @përfshi vendmbrojtësin ( text-indent : 0 ; tranzicion : text-indent $duration ; ) & :focus ( @include placeholder ( text-indent : if ($side == majtas , - $position , $position ); ) ) ) @mixin pl-slide-down ($position : 5 , $kohëzgjatja : 200ms ) ( @include placeholder ( line-height : . ; tranzicioni : opacity $duration ; ) & :focus (@include placeholder ( opacity : 0 ; ) ) )Është shumë e lehtë për t'u përdorur. Mjafton të lidhni miksin e dëshiruar me çdo fushë hyrëse, ose thjesht të krijoni një rregull global për të gjithë mbajtësit e shpejtësisë në faqe:
// Për elementë individualë.pl-shift-right ( @include pl-shift (djathtas); ) .pl-fade-out (@include pl-fade-out ; ) // Për çdo gjë tjetër@include pl-shift (majtas);Autoprefiksues
Nëse nuk jeni duke përdorur një paraprocesor dhe ende nuk dëshironi që skedari juaj burim CSS të kthehet në një rrëmujë prefiksash për të gjithë shfletuesit e mundshëm, atëherë hidhini një sy Autoprefixer . Me të, CSS e pastër mund të bëhet pis (por në një skedar tjetër) duke shtuar të gjitha prefikset e nevojshme për të gjitha pronat. Për ta bërë plugin-in të funksionojë me paceholder, mjafton të përdorni pseudo-element::placeholder:
::mbajtës (ngjyra: portokalli;) . hyrje : : mbajtëse vendi ( ngjyra : blu ; )Pas analizimit të stileve tuaja, Autoprefixer do të krijojë një skedar të veçantë CSS në të cilin do të shkruajë të gjitha prefikset e nevojshme për të gjithë shfletuesit që keni specifikuar.
Ç'pritet më tej
Siç shkrova më lart, gjithçka që lidhet me aplikimin e stileve për mbajtësit e vendeve nuk është ende e standardizuar. Së shpejti do të rregullohet. Një pseudo-klasë iu shtua specifikimit të Nivelit 4 të Përzgjedhësve: vendmbajtës-treguar , i cili më në fund do të sjellë në standard gjithë atë përzierje të çmendur të pseudo-klasave dhe pseudo-elementeve që ekziston tani. Mund të kontrolloni mbështetjen në caniuse (aktualisht nuk mbështetet në asnjë shfletues).
Aplikimi i stileve me :placeholder-shown do të jetë shumë më i lehtë:
.input :placeholder-shown (ngjyra : blu ; )