Les principes de mise en page - colonnes et rangées, angles et lignes - que nous utilisons aujourd'hui pour créer des sites Web sont largement influencés par leur patrimoine imprimé. Et bien que la mise en œuvre de la grille sur le Web soit de mieux en mieux perfectionnée, la mise en page Web en général reste délicate par rapport aux médias imprimés, en particulier en ce qui concerne le flux de contenu.
Les magazines et les journaux ont toujours apprécié les manières élégantes d'organiser la mise en page du contenu, comme enrouler le texte autour ou à l'intérieur de formes non rectangulaires.
Magazine polyvalent de GreenSocksVoyons comment le module CSS Shapes nous permettra cette même liberté sur le Web..
Les formes CSS permettent aux concepteurs Web de créer des mises en page plus abstraites et géométriques, au-delà des simples rectangles et carrés. La spécification nous fournit de nouvelles propriétés CSS qui incluent forme extérieure
et marge de forme
. La prise en charge du navigateur est raisonnable, bien que ces propriétés ne soient actuellement disponibles que dans Chrome, Opera et Safari. -webkit-
préfixe, donc -webkit-forme-extérieur
.
le forme extérieure
Cette propriété entraînera un enroulement du contenu en ligne (à l'extérieur) en suivant la courbe de l'élément, plutôt que le modèle de boîte. Au départ, il y avait aussi forme intérieure
pour envelopper le contenu dans un élément; le texte contenu dans un élément circulaire serait également moulé en forme de cercle. Cependant, la mise en œuvre a été reportée pour CSS Shapes Level 2..
le marge de forme
propriété définit la marge autour de la forme qui utilise le forme extérieure
.
Voyons quelques exemples.
Le moyen le plus simple de connaître le fonctionnement de CSS Shapes consiste probablement à créer un cercle. Alors, voici un div
(notre cercle), avec plusieurs paragraphes à côté de.
Lorem ipsum…
Lorem ipsum…
Lorem ipsum…
Voici quelques styles de base, y compris la largeur et la hauteur de notre cercle, le rayon de la frontière
pour mettre en forme l'élément, et un float pour que le paragraphe s'enroule autour de l'élément.
.cercle largeur: 250px; hauteur: 250px; couleur de fond: # 40a977; rayon de bordure: 50%; float: gauche;
Comme nous le ferions sauf, les paragraphes sont maintenant enroulés autour de l'élément. Cependant, comme la propriété border-radius ne définit pas la forme réelle de l'élément, le saut de paragraphe ne forme pas la courbe circulaire..
Si nous inspectons l'élément via notre navigateur DevTools, nous trouverons que l'élément est en fait toujours une boîte. Ainsi, même si notre div a l’apparence d’un cercle, le rayon de la frontière
n'a rien fait au réel forme de l'élément.
Pour que notre paragraphe adhère à la forme circulaire, nous devons changer la réel forme d'élément à travers le forme extérieure
propriété; dans ce cas, nous en ajouterons un avec le cercle()
fonction passée en tant que valeur.
.cercle largeur: 250px; hauteur: 250px; couleur de fond: # 40a977; rayon de bordure: 50%; float: gauche; -webkit-shape-outside: circle (); forme-extérieur: cercle ();
Nos paragraphes s’enroulent parfaitement autour de la circonférence du cercle.
De plus, si nous inspectons maintenant l'élément via DevTools, nous verrons que l'élément est correctement rendu dans un cercle..
Remarquez le point culminant plus sombre.Avec quelques marges, voyez comment cela pourrait améliorer une mise en page simple:
le cercle()
fonction prend un couple de valeurs pour définir le rayon et le coordonnée centrale respectivement: cercle (r en x y)
. Par défaut, la valeur du rayon est dérivée de la taille de l'élément. si l'élément est 300px
large, par exemple, le rayon sera 150px
(le rayon étant la moitié du diamètre du cercle).
De même, le X
et y
les coordonnées sont mesurées par rapport à la taille de l'élément et sont définies par défaut à 50% 50%
; juste au centre de l'élément.
Ces deux valeurs vous seront utiles lorsque vous souhaitez redimensionner la forme tout en conservant la taille réelle de l'élément ou déplacer la forme tout en conservant la position de l'élément. Dans l'exemple suivant, nous allons réduire le rayon du cercle à 60px
et définissez la coordonnée centrale sur 30% 70%
, qui devrait déplacer le cercle en bas à gauche de la boîte de l'élément.
Il convient de noter que lors de la modification du cercle, la coordonnée centrale et le rayon doivent être définis explicitement. l'ajout d'un seul d'entre eux est invalide.
cercle (60px à 30% 70%) // correct. cercle (60px) // invalide. cercle (à 30% 70%) // invalide.
Les formes CSS héritent de la même chose modèle de boîte principe en tant qu'élément, mais appliqué en dehors du champ de l'élément lui-même. Cela nous permet de définir séparément l'élément, par exemple, boîte à bordure
tout en définissant la forme rembourrage
. Changer la forme modèle de boîte, ajouter l'un des modèle de boîte mots clés, contenu-box
, boîte à marge
, boîte à bordure
, ou rembourrage
après la fonction.
.cercle largeur: 250px; hauteur: 250px; couleur de fond: # 40a977; rayon de bordure: 50%; float: gauche; rembourrage: 10px; bordure: 20px solide #ccc; marge: 30px; -webkit-shape-outside: cercle () padding-box; forme-extérieur: cercle () padding-box;
Le modèle de boîte par défaut de la forme est défini sur boîte à marge
. Et dans l'exemple suivant, nous l'avons changé pour rembourrage
indiquer au navigateur d’exclure la marge de l’élément lors de la détermination de la taille ou de l’étendue de la forme. Maintenant, nous devrions trouver le paragraphe passer à travers la frontière et toucher immédiatement le rembourrage de l'élément.
Je recommande fortement de consulter notre cours gratuit sur les bases du modèle de boîte CSS pour en savoir plus sur son fonctionnement en détail..
La spécification CSS Shapes comprend quelques fonctions de forme supplémentaires:
ellipse()
: Comme son nom l’indique, cette fonction créera une forme d’ellipse. Nous pouvons configurer le rayon de l'ellipse et déplacer la coordonnée du centre de la forme. Mais contrairement au cercle()
la fonction, la ellipse()
fonction applique deux mesures de rayon, horizontal et vertical, donc ellipse (100px 180px à 10% 20%)
.polygone()
: Cette fonction nous permet de créer des formes plus complexes telles que des triangles, des hexagones, ainsi que des formes non géométriques. Utiliser un polygone n’est pas aussi simple que de créer un cercle, mais l’outil Convertisseur de chemins en polygones le rend un peu plus intuitif..Dans ce didacticiel, nous avons examiné l'application de base des formes CSS; nous avons créé une forme, personnalisé la taille, la position et le modèle de boîte. Au moment de la rédaction, plusieurs aspects de CSS Shapes sont encore très grossiers, ce qui explique probablement pourquoi nous ne le voyons pas utilisé largement pour l'instant..
forme intérieure
propriété, qui nous permet d’envelopper et de mettre en forme le contenu dans un élément, a été mise sur la glace.forme-boîte
pour définir le modèle de boîte de forme, bien qu'il semble actuellement inapplicable à aucun navigateur.-webkit-
préfixe, soulignant que cette fonctionnalité est expérimentale.Néanmoins, malgré les progrès lents et les disparités entre les navigateurs, je suis impatient de voir CSS Shapes! Une fois que les principaux navigateurs l'ont compris, j'ai hâte de voir des mises en page vraiment créatives sur le Web.!