105 votes

Bordure extérieure CSS

Je veux pouvoir dessiner une bordure à l'EXTÉRIEUR de ma Div ! Donc si ma div est disons de 20px par 20px, je veux une bordure de 1px à l'extérieur de celle-ci (donc en fait, j'obtiens une div de 22x22px de large).

Je comprends que je peux simplement faire le div 22x22 pour commencer, mais pour des raisons que j'ai, j'ai besoin que les bordures soient à l'extérieur.

CSS outline fonctionne, mais je ne veux qu'un truc de type border-bottom ou border-top, donc quelque chose comme outline-bottom, qui ne fonctionne pas, est ce que je veux.

Existe-t-il un moyen de le faire ?

Gracias

101voto

Bear Alexander Points 600

Je pense que votre compréhension des deux propriétés est un peu erronée. La bordure affecte le bord extérieur de l'élément, ce qui rend la taille de l'élément différente. Le contour ne modifie pas la taille ou la position de l'élément (il n'occupe pas d'espace) et se situe en dehors de la bordure. D'après votre description, vous souhaitez utiliser la propriété border.

Regardez l'exemple simple ci-dessous dans votre navigateur :

<div style="height: 100px; width: 100px; background: black; color: white; outline: thick solid #00ff00">SOME TEXT HERE</div>

<div style="height: 100px; width: 100px; background: black; color: white; border-left: thick solid #00ff00">SOME TEXT HERE</div>

Remarquez que la bordure repousse la division inférieure, mais que le contour ne déplace pas la division supérieure et que le contour recouvre en fait la division inférieure.

Pour en savoir plus, cliquez ici :
Frontière
Aperçu

24voto

Benjaroo Points 191

Essayez la propriété "outline" (contour) Schéma CSS

Les contours n'interfèrent pas avec les largeurs et longueurs des éléments/divs !

Veuillez cliquer sur le lien que j'ai fourni au bas de la page pour voir des démonstrations fonctionnelles des différentes façons de créer des bordures, et des bordures intérieures/lignes, même celles qui ne perturbent pas les dimensions de l'élément ! Il n'est pas nécessaire d'ajouter des divs supplémentaires à chaque fois, comme indiqué dans une autre réponse !

Vous pouvez également combiner des bordures avec des contours et, si vous le souhaitez, des ombres de boîte (également illustré par le lien).

<head>
   <style type="text/css" ref="stylesheet">
      div {
        width:22px;
        height:22px;
        outline:1px solid black;
      }
   </style>
</head>
<div>
    outlined
</div>

Généralement, par défaut, "border :" place la bordure à l'extérieur de la mesure de la largeur, ajoutant aux dimensions globales, à moins que vous n'utilisiez la valeur "inset" :

div {border: inset solid 1px black};

Mais "outline :" est une bordure supplémentaire en dehors de la bordure, et ajoute bien sûr une largeur/longueur supplémentaire à l'élément.

J'espère que cela vous aidera

PS : J'ai également été inspirée de faire ceci pour vous : Utilisation des bordures, des contours et des ombres de boîtes

16voto

dfsq Points 41491

IsisCode vous offre une bonne solution. Une autre solution consiste à positionner la div à l'intérieur parent div. Voici un exemple http://jsfiddle.net/A2tu9/

UPD : Vous pouvez également utiliser un pseudo-élément :after ( :before ), dans ce cas, le code HTML ne sera pas pollué par des balises supplémentaires :

.my-div {
    position: relative;
    padding: 4px;
    ...
}
.my-div:after {
    content: '';
    position: absolute;
    top: -3px;
    left: -3px;
    bottom: -3px;
    right: -3px;
    border: 1px #888 solid;
}

Démonstration : http://jsfiddle.net/A2tu9/191/

14voto

Qeremy Points 3719

Pourquoi ne pas utiliser simplement background-clip ?

-webkit-background-clip: padding;
   -moz-background-clip: padding;
        background-clip: padding-box;

Voir :
http://caniuse.com/#search=background-clip
https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip
https://css-tricks.com/almanac/properties/b/background-clip

11voto

J'ai proposé deux solutions en fonction de vos besoins :

<style type="text/css" ref="stylesheet">
  .border-inside-box {
    border: 1px solid black;
  }
  .border-inside-box-v1 {
    outline: 1px solid black; /* 'border-radius' not available */
  }
  .border-outside-box-v2 {
    box-shadow: 0 0 0 1px black; /* 'border-style' not available (dashed, solid, etc) */
  }
</style>

exemple : https://codepen.io/danieldd/pen/gObEYKj

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X