Page d'accueil » Codage » Comment créer une conception de bordure découpée avec CSS

    Comment créer une conception de bordure découpée avec CSS

    Avec un conception de bordure découpée nous pouvons montrer aux utilisateurs ce que l'on peut trouver sous la zone de bordure d'un élément HTML. Cette tâche est généralement résolue par empiler deux ou plusieurs éléments de bloc (dans la plupart des cas divs) de différentes tailles l'un sur l'autre. Tout d'abord, cela semble être une solution simple, mais cela devient plus frustrant lorsque vous souhaitez réutiliser la présentation plusieurs fois, déplacer les éléments, optimiser la conception pour mobile ou gérer le code..

    Dans cet article, je vais vous montrer une élégante solution exclusivement basée sur CSS qui utilise un seul élément HTML pour obtenir le même effet. Cette technique est également excellente pour l'accessibilité, car charge l'image de fond dans le CSS, séparé du HTML.

    À la fin de cet article, vous saurez comment afficher une image de fond dans la zone de bordure afin de créer le conception de bordure découpée vous pouvez voir ci-dessous. Je montrerai également comment rendre le design réactif en utilisant des unités de fenêtre.

    Code initial

    La seule exigence dans le domaine HTML est un élément de bloc:

     

    Nous devrons réutilisation les dimensions (largeur et hauteur) et la largeur de la bordure du div, donc je les présente comme variables CSS. La variable --w dénote le largeur du .cb élément de bloc, --h indique son la taille, --b va pour le largeur de la bordure, et --b2 pour la largeur de la bordure multipliée par 2. Nous verrons plus tard l'utilisation de la dernière variable.

    Je taille le

    par rapport à la largeur de la fenêtre, d'où l'utilisation du vw unité (vous pouvez utiliser des unités fixes si vous le souhaitez).

     .cb --w: 35vw; --h: 40 vw; --b: 4vw; --b2: calc (var (- b) * 2);  
    Explication rapide - vw et vh des unités

    L'unité vw représente le 1/100th de la largeur de la fenêtre. Par exemple, 50vw est 50 parties d'une largeur de fenêtre tranché verticalement en 100 parties égales, tandis que 50vh est 50 parties d'une hauteur de fenêtre tranchés horizontalement en 100 parties égales.

    Améliorons le code ci-dessus en ajoutant un arrière-plan et en définissant la bordure, la hauteur et la largeur. en utilisant nos variables CSS prédéfinies.

     .cb --w: 35vw; --h: 40 vw; --b: 4vw; --b2: calc (var (- b) * 2); fond: url (bg.jpg); bordure: var (- b) solide transparent; hauteur: var (- h); largeur: var (- w);  

    Voici à quoi devrait ressembler la démo:

    Dimensionnez l'image de fond

    Nous avons besoin de l'image de fond pour couvrir toute la surface de la

    y compris la zone frontalière, donc l'image de fond doit être dimensionné en conséquence.

    Si vous souhaitez attribuer à l'image d'arrière-plan une taille fixe, assurez-vous simplement que la taille que vous lui donnez lui permet de couvrir la zone de bordure de l'image.

    ainsi que. En ce qui concerne le code utilisé jusqu'à présent dans l'article, voici le Contexte valeur que je lui donne:

     .cb --w: 35vw; --h: 40 vw; --b: 4vw; --b2: calc (var (- b) * 2); fond: url (bg.jpg) centre / calc (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); bordure: var (- b) solide transparent; hauteur: var (- h); largeur: var (- w);  

    le largeur de l'image de fond [calc (var (- w) + var (- b2))] est la somme des largeur de la div [var (- w)] et le largeur des bordures gauche et droite [var (- b2)].

    De même, le hauteur de l'image de fond [calc (var (- h) + var (- b2))] est la somme des hauteur de la div [var (- h)] et le largeur des bordures supérieure et inférieure [var (- b2)].

    De cette façon, nous avons dimensionné l’image d’arrière-plan dans une zone identique à celle du div (y compris la zone frontalière).

    le centre mot-clé aligne l'image de fond au centre de la div.

    Remarque: Si vous ajoutez du rembourrage à la div, se souvenir de inclure la zone de rembourrage à la taille de l'arrière-plan, comme dans la zone de bordure.

    Voici ce que nous avons en ce moment:

    Couvrir la zone frontière exclusive

    Maintenant que nous avons couvert la zone incluant la frontière avec l’image d’arrière-plan, il ne reste plus qu’à couvrir la zone centrale à l'intérieur de la bordure (zone exclusive) avec une couleur unie, pour laquelle nous recherchons un boîte ombre encart.

     .cb --w: 35vw; --h: 40 vw; --b: 4vw; --b2: calc (var (- b) * 2); fond: url (bg.jpg) centre / calc (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); bordure: var (- b) solide transparent; box-shadow: encart var (- w) 0 0 rgba (0,120,237, .5); hauteur: var (- h); largeur: var (- w);  

    L'ombre horizontale avec valeur var (- w) couvre toute la largeur du div. L'utilisation de rgba fonction de couleur permet un peu de transparence à ajouter au mélange, mais vous pouvez aussi utiliser une couleur opaque si vous voulez couvrir complètement la zone centrale.

    Ajouter une bordure supplémentaire avec boîte ombre

    Dans la démo de Codepen, vous pouviez voir une bordure blanche autour de l'image. Il y a un truc célèbre de utiliser des ombres pour créer plusieurs bordures-on peut utiliser la même technique pour ajouter une ou plusieurs bordures de couleur unie à notre conception.

    La mise à jour boîte ombre La valeur est:

     .cb --w: 35vw; --h: 40 vw; --b: 4vw; --b2: calc (var (- b) * 2); fond: url (bg.jpg) centre / calc (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); bordure: var (- b) solide transparent; box-shadow: encart var (- w) 0 0 rgba (0,120,237, .5), 0 0 0 calc (var (- b) / 2) blanc; hauteur: var (- h); largeur: var (- w);  

    le calc (var (- b) / 2) fonction crée une ombre de la la moitié de la largeur de la bordure.

    Facultatif: Disposition et esthétique distinctes

    Dans ma dernière démo de Codepen, j'ai placé le code de l'image de fond et de la couleur de l'ombre de la boîte. dans une classe séparée. C'est optionnel, mais peut être extrêmement utile si vous voulez réutiliser la mise en page du dessin de la bordure découpée en plusieurs éléments, et ajouter l'esthétique (image de fond + couleur) pour chaque élément indépendamment.

    J'ai ajouté une classe nommée .affiche1 au

    Pour atteindre cet objectif.

     .poster1 - tbgc: rgba (0,120,237, .5); background-image: url ("http://bit.ly/2eQBij2");  

    Puisque Contexte est un raccourci, ses propriétés longhand peuvent être écrasées / définies individuellement. Par conséquent, nous pouvons définir image de fond dans .affiche1, et supprimez la valeur de l'URL du Contexte propriété dans .cb.

    Pour définir la valeur du boîte ombre, on peut utiliser une autre variable CSS. le --tbgc variable détient la valeur de la couleur nous voulons donner à la boîte-ombre (lightblue dans la démo), donc parmi les règles de style pour .cb nous remplacer la valeur de couleur du boîte ombre propriété avec var (- tbgc).

     .cb --w: 35vw; --h: 40 vw; --b: 4vw; --b2: calc (var (- b) * 2); fond: centre / calc (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); bordure: var (- b) solide transparent; box-shadow: encart var (- w) 0 0 var (- tbgc), 0 0 0 calc (var (- b) / 2) blanc; hauteur: var (- h); largeur: var (- w);  

    Code pour le mode portrait

    Puisque les dimensions sont toutes dans l'unité vw, ce sera l'air trop petit lorsque vous affichez le motif en mode portrait (largeur plus petite par rapport à la hauteur) - tous les appareils mobiles sont par défaut. Pour résoudre ce problème, commutateur vw avec vh, et redimensionner le design comme bon vous semble pour les modes portrait.

     @media (orientation: portrait) .cb --w: 35vh; --h: 40vh; --b: 4vh;  

    Remarque: N'oublie pas de ajouter la balise meta de la fenêtre d'affichage sur votre page HTML si vous avez décidé de l'optimiser pour une vue mobile.

    © Savtec
    Informations utiles et conseils de développement Web. Programmation, conception web, CSS, HTML, JAVASCRIPT. Configurez et réinstallez WINDOWS. Création de sites et d'applications à partir de zéro.