Under denne opplæringen vil vi skape et slank prisbord med noen slående hovereffekter. Vi bruker Lea Verous Prefixfree-skript for å holde CSS ren, pluss vi gjør hele greia responsive, skifter layoutet ved et par brytepunkt.
Bildet under viser et visuelt skjelett av merkingen vi skal skape. Som du kan se, er det ikke bygget ved hjelp av tabeller; Vi bruker uordnede lister for maksimal fleksibilitet og respons.
Før alt annet, må vi begynne med et tomt dokument. Veldig viktig her er Viewport-metakoden som gjør det mulig for alle enheter å tolke vårt responsive layout riktig.
Nå kan vi begynne med kjøttet på bordoppsettet vårt (eller rettere sagt liste markup):
Helt nederst har vi tatt med prefixfree (før avslutningen
tag), som tillater oss å bruke unprefixed CSS egenskaper overalt. Det fungerer bak kulissene, og legger til den nåværende nettleserens prefiks til en hvilken som helst CSS-kode, bare når det trengs.
Etter å ha sortert ut vårt oppslag, la oss se på å legge til noen stiler. Jeg skal gjøre det innen koder i dokumenthodet, men du kan bruke et eget stilark hvis du vil.
@import url (http://fonts.googleapis.com/css?family=Ubuntu); * margin: 0; polstring: 0; kropp font-family: Ubuntu, arial, verdana;
Til å begynne med, bruker vi en grunnleggende CSS reset og bruker en egendefinert skrifttype 'Ubuntu' som blir trukket inn fra Google Fonts.
.pricing_table linjehøyde: 150%; skriftstørrelse: 12px; margin: 0 auto; bredde: 75%; maksimal bredde: 800px; polstring: 10px; margin-topp: 100px; .price_block width: 100%; farge: #fff; flyte: venstre; liste-stil-type: none; overgang: alle 0,25s; stilling: relativ; boks-størrelse: border-box; margin-bunn: 10px; border-bunn: 1px solid gjennomsiktig;
De .pricing_table holdes 75% bred, men begrenset til 800px, slik at det ikke tar mye plass på brede skjermbilder.
Vi nærmer oss ting først, først og fremst .price_block er som standard 100% bred for å dekke hele bredden som er tilgjengelig. Senere vil vi bruke medieforespørsler til å passe inn i flere blokker horisontalt på bredere skjermer.
Den 10px bunnmarginen gitt til .pricing_block kommer inn i spill når brukerne ser prisbordet på mindre skjermer, spesielt når noen av prisblokkene faller ned og stabler under hverandre. Det går i retning av å kompensere for en negativ 10px toppmargin påført .price_title av prisblokkene stablet nedenfor. Du vil lese mer om 10px negativ marginen i neste avsnitt.
Den 1 px gjennomsiktige grensen for .pricing_block skaper en renner som hjelper til med å separere de ulike innholdsstykkene.
.price_block er også satt til å ha stilling: relativ;
slik at når bokseskygger blir brukt for sveveeffekter, kan z-indeksen brukes på den sveverede blokken for å få sin skygge til å ligge over de nærliggende elementene.
.pricing_table h3 text-transform: store bokstaver; polstring: 5px 0; bakgrunn: # 333; margin: -10px 0 1px 0;
Prishodene har en toppmargin på -10px. Dette fører til innholdet i .price_block å bevege seg oppover slik at de vises over skyggen, noe som gir en topplyst følelse.
Nå for de seksjonene som faktisk viser prisinformasjonen.
.pris display: bord; bakgrunn: # 444; bredde: 100%; høyde: 70px; .price_figure font-size: 24px; tekst-transformer: store bokstaver; vertikaljustering: midt; display: tabell-celle; .price_number font-weight: bold; skjerm: blokk; .price_tenure font-size: 11px;
Et poeng verdt å merke seg her er at prislappene er justert vertikalt midtpunkt. Dette kreves for priser som kanskje ikke har en varighet (f.eks. GRATIS).
.pris er satt til å ha skjerm: bord;
og sitt nærmeste barn .price_figure er satt til å ha display: tabell-celle;
og vertikaljustering: midt;
for å oppnå effekten.
.price_figure fungerer som en beholder for .price_number og .price_tenure slik at de kan være vertikalt midtlinjert som en enkelt enhet.
.funksjoner bakgrunn: # DEF0F4; farge: # 000; .features li polstring: 8px 15px; grensebunn: 1px solid #ccc; skriftstørrelse: 11px; liste-stil-type: none;
.footer polstring: 15px; bakgrunn: # DEF0F4; .action_button text-decoration: none; farge: #fff; font-weight: bold; border-radius: 5px; bakgrunn: lineær gradient (# 666, # 333); polstring: 5px 20px; skriftstørrelse: 11px; tekst-transformer: store bokstaver;
.price_block: hover box-shadow: 0 0 0px 5px rgba (0, 0, 0, 0.5); transformere: skala (1.04) translateY (-5px); z-indeks: 1; border-bottom: 0 none; .price_block: hover .price bakgrunn: lineær gradient (# DB7224, # F9B84A); boks-skygge: innsett 0 0 45px 1px # DB7224; .price_block: svever h3 bakgrunn: # 222; .price_block: hover .action_button bakgrunn: lineær gradient (# F9B84A, # DB7224);
Det vil være tre aspekter ved sveveffekten:
.price_table allerede har CSS3 overganger som gjør at svingeren endrer en jevn animasjon.
Du kan også bruke disse sveveffekter som en aktiv tilstand hvis du vil markere en av prisene som standard. Alt du trenger å gjøre er å legge til en aktiv klasse i en av prisblokkene og flytte / kopiere hover-stilene til den.
Vi følger en enkel tilnærming for å gjøre pristabellen lydhør. Seksjonene er allerede væske da de bruker% baserte bredder, så alt vi trenger å gjøre er å kontrollere antall horisontale blokker synlige på forskjellige skjermstørrelser.
Disse breakpoints er definert rent på hva som fungerer visuelt med dette designet. La oss legge til våre medieforespørsler under våre andre stiler.
@media bare skjerm og (min bredde: 480px) og (maks bredde: 768px) .price_block width: 50%;. price_block: nth-child (oddetall) grense høyre: 1px solid transparent;. price_block: nth-child (3) clear: both;. price_block: nth-child (oddetall): svever border: 0 none; @media bare skjerm og (min bredde: 768px) .price_block width : 25%; .price_block border-right: 1px solid transparent; border-bottom: 0 none;. price_block: last-child border-right: 0 none;. price_block: hover border: 0 none;
For viewport-serien på 480px - 768px gjør vi hver prismodus 50% bred. Dette vil effektivt stable dem i rader av to. De .price_block: nth-child (3) clear: both;
sørger for at den tredje blokken sletter de øvre to blokkene, selv når svingstilstandene endrer størrelsen på alt. Vi stiller også en 1px høyre ramme på .price_block(odde seg) for å skape en vertikal renn mellom prisblokkene på venstre og høyre side.
For 768px og over setter vi bredden på hver blokk til 25%, og gir oss rader på fire. Vi setter også grenser på høyre side av alle prisblokkene, bortsett fra den siste, for å lage den samme vertikale renden som ovenfor.
Med en fluid layout, noen enkle styling og et par bruddpunkter, har vi bygget et pent CSS3 prisbord. Jeg håper du finner bruk for det!