Au cours de ce tutoriel, nous allons créer un tableau de prix élégant avec des effets de survol saisissants. Nous utiliserons le script Prefixfree de Lea Verou pour maintenir notre CSS propre. De plus, nous rendrons le tout réactif, en déplaçant la mise en page en deux points d'arrêt..
L'image ci-dessous affiche un squelette visuel du balisage que nous allons créer. Comme vous pouvez le constater, il n’a pas été construit à l’aide de tables; nous utilisons des listes non ordonnées pour une flexibilité et une réactivité maximales.
Avant toute chose, il faut commencer par un document vide. La balise méta de la fenêtre de visualisation est très importante car elle permettra à tous les appareils d’interpréter correctement notre présentation réactive.
Maintenant, nous pouvons commencer avec la viande de notre balisage de table (ou plutôt liste balisage):
Tout en bas, nous avons inclus prefixfree (avant la clôture
balise), ce qui nous permet d’utiliser des propriétés CSS non préfixées partout. Il fonctionne dans les coulisses, en ajoutant le préfixe du navigateur actuel à n'importe quel code CSS, uniquement lorsque cela est nécessaire..
Après avoir trié notre balisage, voyons comment ajouter quelques styles. Je vais le faire dans les balises dans la tête du document, mais vous pouvez utiliser une feuille de style distincte si vous préférez.
@import url (http://fonts.googleapis.com/css?family=Ubuntu); * marge: 0; rembourrage: 0; body font-family: Ubuntu, arial, verdana;
Pour commencer, nous appliquons une réinitialisation CSS de base et utilisons une police personnalisée "Ubuntu" extraite de Google Fonts..
.pricing_table line-height: 150%; taille de police: 12px; marge: 0 auto; largeur: 75%; largeur maximale: 800px; rembourrage en haut: 10px; marge supérieure: 100 px; .price_block width: 100%; couleur: #fff; float: gauche; type de style de liste: aucun; transition: tous 0.25s; position: relative; taille de la boîte: boîte-frontière; marge inférieure: 10px; bordure-bas: 1px solide transparent;
le .pricing_table est maintenu à 75% de largeur, mais limité à 800 pixels, de sorte qu'il ne prenne pas beaucoup de place sur des écrans larges.
Nous abordons les choses d'abord mobiles, d'où .prix_bloc est 100% large par défaut pour couvrir toute la largeur disponible. Plus tard, nous utiliserons des requêtes de média pour insérer davantage de blocs horizontalement sur des écrans plus larges..
La marge inférieure de 10 pixels donnée à .pricing_bloc entre en jeu lorsque les utilisateurs consultent le tableau de prix sur des écrans plus petits, en particulier lorsque certains des blocs de prix tombent et s’empilent les uns sous les autres. Il s’agit de compenser une marge supérieure négative de 10 pixels appliquée à la .price_title des blocs de prix empilés ci-dessous. Vous en saurez plus sur la marge négative de 10 pixels dans la section suivante..
La bordure transparente 1px pour .pricing_bloc crée une gouttière aidant à séparer les différents blocs de contenu.
.prix_bloc est également prêt à avoir position: relative;
de sorte que lorsque des ombres de zone sont appliquées aux effets de survol, z-index peut être utilisé sur le bloc survolé pour que son ombre apparaisse au-dessus des éléments voisins.
.pricing_table h3 text-transform: majuscule; rembourrage: 5px 0; arrière-plan: # 333; marge: -10px 0 1px 0;
Les têtes de prix ont une marge supérieure de -10px. Cela provoque le contenu de la .prix_bloc se déplacer vers le haut de sorte qu'ils soient affichés au-dessus de l'ombre, ce qui donne une sensation de luminosité maximale.
Maintenant pour les sections qui affichent réellement les détails de tarification.
.price display: table; arrière-plan: # 444; largeur: 100%; hauteur: 70px; .price_figure font-size: 24px; text-transform: majuscule; alignement vertical: milieu; display: table-cell; .price_number font-weight: bold; bloc de visualisation; .price_tenure font-size: 11px;
Un point à noter ici est que les étiquettes de prix sont alignées verticalement au centre. Ceci est requis pour les prix qui peuvent ne pas avoir de mandat (par exemple, GRATUIT).
.prix est réglé pour avoir affichage: table;
et son enfant immédiat .price_figure est réglé pour avoir display: table-cell;
et alignement vertical: milieu;
pour obtenir l'effet.
.price_figure agit comme un conteneur pour .numéro_prix et .price_tenure afin qu'ils puissent être alignés verticalement comme une seule unité.
.caractéristiques background: # DEF0F4; couleur: # 000; .features li padding: 8px 15px; border-bottom: 1px solid #ccc; taille de police: 11px; type de style de liste: aucun;
.footer padding: 15px; arrière-plan: # DEF0F4; .action_button text-decoration: none; couleur: #fff; poids de police: gras; border-radius: 5px; arrière-plan: dégradé linéaire (# 666, # 333); rembourrage: 5px 20px; taille de police: 11px; text-transform: majuscule;
.price_block: survol box-shadow: 0 0 0px 5px rgba (0, 0, 0, 0,5); transform: scale (1.04) translateY (-5px); z-index: 1; bordure inférieure: 0 aucune; .price_block: survolez .price background: linear-gradient (# DB7224, # F9B84A); box-shadow: encart 0 0 45px 1px # DB7224; .price_block: survolez h3 background: # 222; .price_block: survolez .action_button background: linear-gradient (# F9B84A, # DB7224);
L'effet de vol stationnaire comportera trois aspects:
.table de prix a déjà appliqué des transitions CSS3 qui rend le survol changer une animation lisse.
Vous pouvez également utiliser ces effets de survol en tant qu'état actif si vous souhaitez mettre en surbrillance l'un des prix par défaut. Tout ce que vous avez à faire est d’ajouter une classe active à l’un des blocs de prix et de déplacer / copier les styles de survol vers celle-ci..
Nous suivrons une approche simple pour rendre le tableau des prix réactif. Les sections sont déjà fluides car elles utilisent des largeurs basées sur%, il suffit donc de contrôler le nombre de blocs horizontaux visibles sur différentes tailles d'écran..
Ces points de rupture sont définis uniquement sur ce qui fonctionne visuellement avec cette conception. Ajoutons nos requêtes aux médias sous nos autres styles.
Écran @média uniquement et (largeur minimale: 480px) et (largeur maximale: 768px) .price_block largeur: 50%; .price_block: nth-child (impair) bordure-droite: 1px solide transparent;. price_block: nth-child (3) clear: les deux; .price_block: nth-child (impair): survol border: 0 rien; @ uniquement écran et (min-width: 768px) .price_block width : 25%; .price_block border-right: 1px solid transparent; border-bottom: 0 none; .price_block: dernier-enfant border-right: 0 aucun; .price_block: hover border: 0 aucun;
Pour une plage d'affichage de 480 à 768 pixels, chaque bloc de tarification est élargi à 50%. Cela va effectivement les empiler en rangées de deux. le .price_block: nth-child (3) clear: les deux;
garantit que le troisième bloc efface les deux blocs supérieurs, même lorsque les états de survol changent la taille de tout. Nous mettons également une frontière droite 1px sur .prix_bloc(les impairs) pour créer une gouttière verticale entre les blocs de prix sur les côtés gauche et droit.
Pour 768px et plus, nous définissons la largeur de chaque bloc à 25%, ce qui nous donne des rangées de quatre. Nous définissons également des limites sur le côté droit de tous les blocs de prix, à l’exception du dernier, afin de créer la même gouttière verticale que ci-dessus..
Avec une mise en page fluide, un style simple et quelques points d'arrêt, nous avons construit un tableau de prix soigné pour CSS3. J'espère que vous en trouverez l'usage!