În timpul acestui tutorial vom crea o masă elegantă de stabilire a prețurilor cu câteva efecte de mișcare uluitoare. Vom folosi scriptul Prefixfree al lui Lea Verou pentru a ne menține CSS curat, plus vom face totul receptiv, schimbând aspectul la câteva puncte de întrerupere.
Imaginea de mai jos afișează un schelet vizual al marcajului pe care îl vom crea. După cum puteți vedea, nu este construit folosind mese; folosim liste neordonate pentru flexibilitate maximă și reacție.
Înainte de orice altceva, trebuie să începem cu un document gol. Foarte important aici este meta-tag-ul viewport, care va permite tuturor dispozitivelor să interpreteze corect aspectul nostru receptiv.
Acum putem începe cu carnea marcajului nostru de masă (sau mai degrabă listă markup):
În partea de jos, am inclus prefixfree (înainte de închidere
tag), care ne permite să folosim proprietăți CSS neprefixate peste tot. Funcționează în spatele scenei, adăugând prefixul browserului actual la orice cod CSS, numai atunci când este necesar.
După ce ați sortat marcajul nostru, să examinăm adăugarea unor stiluri. O să fac așa înăuntru în capul documentului, dar puteți folosi o foaie de stil separată dacă preferați.
@import url (http://fonts.googleapis.com/css?family=Ubuntu); * marja: 0; umplutura: 0; corp font-family: Ubuntu, arial, verdana;
Pentru a începe, vom aplica o resetare CSS de bază și vom folosi un font personalizat "Ubuntu" care este tras de la Google Fonts.
.pricing_table line-height: 150%; font-size: 12px; marja: 0 auto; lățime: 75%; max-lățime: 800px; padding-top: 10px; margin-top: 100px; .price_block lățime: 100%; culoare: #fff; plutește la stânga; listă-tip: none; tranziție: toate 0,25s; poziție: relativă; box-size: caseta de margine; margin-bottom: 10px; frontieră de fund: 1px solid transparent;
.pricing_table este păstrată la 75% lățime, dar limitată la 800 de pixeli, astfel încât să nu fie nevoie de o cantitate mare de spațiu pe ecranele largi.
Ne apropiem mai întâi de lucrurile mobile, prin urmare .price_block este în mod standard lățime de 100% pentru a acoperi întreaga lățime disponibilă. Mai târziu vom folosi interogările media pentru a se încadra în mai multe blocuri pe orizontală pe ecrane mai largi.
Marja de jos 10px dată .pricing_block intră în joc atunci când utilizatorii vizualizează tabelul de prețuri pe ecrane mai mici, în special când unele dintre blocurile de prețuri cad și se suprapun unul sub altul. Aceasta merge spre compensarea unei marje de top negative de 10px aplicate .price_title din blocurile de prețuri stivuite mai jos. Veți citi mai multe despre marginea negativă de 10px din secțiunea următoare.
Limita transparentă de 1px pentru .pricing_block creează un jgheab ajutând la separarea diferitelor blocuri de conținut.
.price_block este, de asemenea, setat să aibă poziție: relativă;
astfel încât atunci când umbrele cutie sunt aplicate pentru efecte hover, z-index poate fi folosit pe blocul plutind pentru a face umbra să apară deasupra elementelor din apropiere.
.pricing_table h3 text-transform: majuscule; padding: 5px 0; fundal: # 333; margine: -10px 0 1px 0;
Capetele de preț au o marjă de top -10px. Acest lucru cauzează conținutul .price_block pentru a vă deplasa în sus, astfel încât acestea să fie afișate deasupra umbrei, dând o senzație de lumină de sus.
Acum, pentru secțiunile care afișează detaliile privind prețurile.
.preț display: table; fundal: # 444; lățime: 100%; înălțime: 70px; .price_figure font-size: 24px; text-transform: majuscule; vertical-aliniere: mijloc; afișare: celule de masă; .price_number font-weight: bold; afișare: bloc; .price_tenure font-size: 11px;
Un punct demn de remarcat aici este faptul că etichetele de preț sunt aliniate pe verticală. Acest lucru este necesar pentru prețurile care nu pot avea o funcție (de exemplu, GRATUIT).
.Preț este setat să aibă afișare: tabel;
și copilul său imediat .price_figure este setat să aibă afișare: celule de masă;
și vertical-aliniere: mijloc;
pentru a obține efectul.
.price_figure acționează ca un container pentru .price_number și .price_tenure astfel încât acestea să poată fi aliniate vertical în centru ca o singură unitate.
.caracteristici background: # DEF0F4; culoare: # 000; .features li padding: 8px 15px; frontieră-fund: 1px solid #ccc; font-size: 11px; listă-tip: none;
.footer padding: 15px; fundal: # DEF0F4; .action_button text-decoration: none; culoare: #fff; font-weight: bold; raza de graniță: 5px; fundal: gradient linear (# 666, # 333); padding: 5px 20px; font-size: 11px; text-transform: majuscule;
.price_block: hover box-shadow: 0 0 0px 5px rgba (0, 0, 0, 0.5); transform: scară (1,04) translateY (-5px); z-index: 1; frontieră de fund: 0 nu există; .price_block: hover .price fundal: gradient liniar (# DB7224, # F9B84A); box-shadow: inserție 0 0 45px 1px # DB7224; .price_block: mutați h3 background: # 222; .price_block: hover .action_button fundal: gradient linear (# F9B84A, # DB7224);
Vor exista trei aspecte ale efectului de hovering:
.price_table are deja aplicații de tranziție CSS3, ceea ce face ca schimbarea cursorului să aibă o animație lină.
De asemenea, puteți utiliza aceste efecte de mutare ca stare activă dacă doriți să evidențiați una dintre prețuri implicit. Tot ce trebuie să faceți este să adăugați o clasă activă la unul dintre blocurile de prețuri și să mutați / copiați stilurile de hover.
Vom urma o abordare simplă pentru a face tabelul de prețuri receptiv. Secțiunile sunt deja fluide deoarece folosesc lățimile bazate pe%, deci tot ce trebuie să facem este să controlezi numărul de blocuri orizontale vizibile pe diferite dimensiuni ale ecranului.
Aceste puncte de intersecție sunt definite doar pe ceea ce funcționează vizual cu acest design. Să adăugăm interogările noastre media sub celelalte stiluri.
@media numai pe ecran și (min-width: 480px) și (max-width: 768px) .price_block width: 50%; .price_block: nth-child (impar) border-right: 1px solid transparent; price_block: nth-child (3) clar: ambele; .price_block: nth-child (impar): hover border: 0 none; @media only screen și (min-width: 768px) .price_block width : 25%; .price_block border-right: 1px solid transparent; border-bottom: 0 nici unul; .price_block: last-child border-right: 0 none; .price_block: hover border: 0 none;
Pentru gama de vizualizări de 480px - 768px facem fiecare bloc de prețuri de 50% lățime. Acest lucru le va pune efectiv în rânduri de două. .price_block: nth-child (3) clar: ambele;
asigură că cel de-al treilea bloc curăță cele două blocuri superioare, chiar și atunci când stările de hover schimbă dimensiunea tuturor. De asemenea, setăm o margine de 1px dreapta .price_block(ciudate) pentru a crea un jgheab vertical între blocurile de prețuri din stânga și din dreapta.
Pentru 768 de pixeli și peste am stabilit lățimea fiecărui bloc la 25%, oferindu-ne rânduri de patru. De asemenea, stabilim granițele pe partea dreaptă a tuturor blocurilor de prețuri, cu excepția celei anterioare, pentru a crea aceeași jgheab verticală ca cea de mai sus.
Având o structură fluidă, un stil simplu și câteva puncte de întrerupere, am construit un tabel de prețuri CSS3 elegant. Sper că găsiți o utilizare pentru asta!