Tijdens deze tutorial zullen we een strakke prijstabel maken met enkele opvallende hover-effecten. We gebruiken het Prefixfree-script van Lea Verou om onze CSS schoon te houden, en we maken het hele proces responsief, waarbij de lay-out wordt verschoven naar een aantal onderbrekingspunten.
De onderstaande afbeelding toont een visueel skelet van de markup die we zullen maken. Zoals u kunt zien, is het niet opgebouwd met behulp van tabellen; we gebruiken ongeordende lijsten voor maximale flexibiliteit en reactievermogen.
Voor alles moeten we beginnen met een leeg document. Heel belangrijk hier is de metatag voor de viewport waarmee alle apparaten onze responsieve lay-out correct kunnen interpreteren.
Nu kunnen we beginnen met het vlees van onze tabelmarkering (of beter gezegd lijst markup):
Helemaal onderaan hebben we prefixfree toegevoegd (vóór de sluiting
tag), waarmee we overal ongekende CSS-eigenschappen kunnen gebruiken. Het werkt achter de schermen en voegt het voorvoegsel van de huidige browser toe aan elke CSS-code, alleen wanneer dat nodig is.
Nadat we onze opmaak hebben uitgezocht, laten we enkele stijlen toevoegen. Ik zal dit binnenin doen tags in de documentkop, maar u kunt een andere stylesheet gebruiken.
@import url (http://fonts.googleapis.com/css?family=Ubuntu); * marge: 0; opvulling: 0; body font-family: Ubuntu, arial, verdana;
Om te beginnen, passen we een standaard CSS-reset toe en gebruiken we een aangepast lettertype 'Ubuntu' dat wordt ingetrokken uit Google Fonts.
.pricing_table line-height: 150%; lettergrootte: 12px; marge: 0 auto; breedte: 75%; maximale breedte: 800 px; padding-top: 10px; margin-top: 100px; .price_block width: 100%; kleur: #fff; zweven: links; list-style-type: none; overgang: alle 0,25s; positie: relatief; box-sizing: border-box; margin-bottom: 10px; border-bottom: 1px solid transparant;
De .pricing_table wordt 75% breed gehouden, maar beperkt tot 800 px, zodat het op grote schermen niet veel ruimte in beslag neemt.
We benaderen dingen eerst mobiel, vandaar .price_block is standaard 100% breed om de volledige beschikbare breedte te dekken. Later zullen we mediaquery's gebruiken om meer blokken horizontaal op bredere schermen in te passen.
De ondermarge van 10 px gegeven aan .pricing_block komt in het spel wanneer gebruikers de prijzentabel op kleinere schermen bekijken, met name wanneer sommige prijsblokjes naar beneden vallen en onder elkaar opkomen. Het gaat naar het compenseren van een negatieve 10px topmarge toegepast op de .price_title van de prijsblokjes die hieronder zijn gestapeld. Je leest meer over de 10px negatieve marge in het volgende gedeelte.
De 1px transparante rand voor .pricing_block creëert een rugmarge die helpt bij het scheiden van de verschillende blokken met inhoud.
.price_block is ook ingesteld om te hebben positie: relatief;
zodat wanneer vakschaduwen worden toegepast voor zweefeffecten, de z-index kan worden gebruikt op het zwevende blok om zijn schaduw boven de nabijgelegen elementen te laten lijken.
.pricing_table h3 text-transform: hoofdletters; opvulling: 5px 0; achtergrond: # 333; marge: -10px 0 1px 0;
De prijskoppen hebben een topmarge van -10px. Dit veroorzaakt de inhoud van de .price_block om naar boven te gaan zodat ze boven de schaduw worden weergegeven, waardoor een gevoel van bovenlicht ontstaat.
Nu voor de secties die de prijsgegevens daadwerkelijk weergeven.
.prijs weergave: tabel; achtergrond: # 444; breedte: 100%; hoogte: 70 px; .price_figure font-size: 24px; text-transform: hoofdletters; vertical-align: middle; weergave: tafel-cel; .price_number font-weight: bold; weergave: blok; .price_tenure font-size: 11px;
Een punt dat het vermelden waard is, is dat de prijskaartjes verticaal in het midden zijn uitgelijnd. Dit is vereist voor prijzen die mogelijk geen vaste aanstelling hebben (bijv. GRATIS).
.prijs is ingesteld om te hebben weergave: tafel;
en zijn directe kind .price_figure is ingesteld om te hebben weergave: tafel-cel;
en vertical-align: middle;
om het effect te bereiken.
.price_figure fungeert als een container voor .price_number en .price_tenure zodat ze verticaal uitgelijnd kunnen worden als een enkele eenheid.
.kenmerken achtergrond: # DEF0F4; kleur: # 000; .features li opvulling: 8px 15px; border-bottom: 1px solid #ccc; font-size: 11px; list-style-type: none;
.footer opvulling: 15px; achtergrond: # DEF0F4; .action_button text-decoration: none; kleur: #fff; lettertype: vet; grensradius: 5px; achtergrond: lineair verloop (# 666, # 333); opvulling: 5px 20px; font-size: 11px; text-transform: hoofdletters;
.price_block: hover box-shadow: 0 0 0px 5px rgba (0, 0, 0, 0.5); transformatie: schaal (1.04) translateY (-5px); z-index: 1; border-bottom: 0 none; .price_block: hover .price background: linear-gradient (# DB7224, # F9B84A); vakschaduw: inzet 0 0 45px 1px # DB7224; .price_block: hover h3 background: # 222; .price_block: hover .action_button background: linear-gradient (# F9B84A, # DB7224);
Het hovereffect heeft drie aspecten:
.prijstabel al CSS3-overgangen toegepast, waardoor de hover een vloeiende animatie verandert.
U kunt deze zweefeffecten ook als een actieve status gebruiken als u standaard een van de prijzen wilt markeren. Het enige wat u hoeft te doen is een actieve klasse toevoegen aan een van de prijsblokken en de zweefstijlen ernaar verplaatsen / kopiëren.
We zullen een eenvoudige aanpak volgen om de prijstabel responsief te maken. De secties zijn al vloeiend omdat ze% gebaseerde breedten gebruiken, dus alles wat we moeten doen is het aantal horizontale blokken controleren dat zichtbaar is op verschillende schermformaten..
Deze breekpunten worden puur gedefinieerd op basis van wat visueel met dit ontwerp werkt. Laten we onze mediaquery's toevoegen onder onze andere stijlen.
@media alleen scherm en (min-breedte: 480px) en (max-breedte: 768px) .price_block width: 50%; .price_block: nth-child (oneven) border-right: 1px solid transparent;. price_block: nth-child (3) clear: both; .price_block: nth-child (odd): hover border: 0 none; @media only screen and (min-width: 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;
Voor het bereik van de viewport van 480px - 768px maken we elk prijsblok 50% breed. Dit zal ze effectief in rijen van twee stapelen. De .price_block: nth-child (3) clear: both;
zorgt ervoor dat het derde blok de bovenste twee blokken wist, zelfs wanneer de zweeftoestanden de grootte van alles wijzigen. We zetten ook een 1px rechterrand op .price_block(oneven) om een verticale rugmarge te creëren tussen de prijsblokken aan de linker- en rechterkant.
Voor 768px en hoger hebben we de breedte van elk blok ingesteld op 25%, waardoor we rijen van vier hebben. We plaatsen ook randen aan de rechterkant van alle prijsblokken, behalve de laatste, om dezelfde verticale rugmarge te maken als hierboven.
Met een vloeiende lay-out, enkele eenvoudige styling en een aantal breekpunten, hebben we een mooie CSS3-prijstabel gebouwd. Ik hoop dat je er gebruik van vindt!