Comment donner une bordure à n'importe quel élément en utilisant css sans ajouter de largeur de bordure à toute la largeur de l'élément?
Comme dans Photoshop, nous pouvons donner un trait - à l'intérieur, au centre et à l'extérieur
Je pense que les propriétés de bordure CSS par défaut sont au centre comme au centre dans Photoshop, ai-je raison?
Je veux donner une bordure à l'intérieur de la boîte et non à l'extérieur. et ne voulez pas inclure la largeur de la bordure dans la largeur de la boîte.
Découvrez le dimensionnement des boîtes CSS ...
La propriété CSS3 box-sizing peut le faire. La valeur de la zone de bordure (par opposition à la valeur par défaut de la zone de contenu) fait de la zone de rendu finale la largeur déclarée, et toute bordure et remplissage coupés à l'intérieur de la zone. Vous pouvez maintenant déclarer en toute sécurité votre élément comme ayant une largeur de 100%, y compris le remplissage et la bordure basés sur les pixels, et atteindre parfaitement votre objectif.
Je vous suggère de créer un mixin pour gérer cela pour vous. Vous pouvez trouver plus d'informations sur le dimensionnement des boîtes sur W3c http://www.w3schools.com/cssref/css3_pr_box-sizing.asp
la source
box-sizing
suffira.En fonction de la prise en charge de votre navigateur, vous pouvez utiliser la
box-shadow
propriété.Vous pouvez définir la valeur de flou sur 0 et l'étalement sur quelle que soit l'épaisseur que vous recherchez. L'avantage de Box Shadow est que vous pouvez contrôler si elle est dessinée à l'extérieur (par défaut) ou à l'intérieur (en utilisant la
inset
propriété).Exemple:
ou
L'un des grands avantages de l'utilisation de l'ombre de boîte est que vous pouvez faire preuve de créativité en utilisant plusieurs ombres de boîte:
La seule chose que je ne peux pas dire, c'est quelle différence cela fera en termes de performances de rendu. Je suppose que cela pourrait devenir un problème si vous aviez des centaines d'éléments utilisant cette technique à la fois à l'écran.
la source
J'ai rencontré le même problème.
Cette réponse vous permet de spécifier un seul côté. Et fonctionnerait dans IE8 + - contrairement à l'utilisation de box-shadow.
Bien sûr, modifiez les propriétés de vos pseudo éléments car vous devez distinguer un côté spécifique.
* Nouveau et amélioré *
Cela permet d'utiliser la bordure et de toucher plusieurs côtés d'une boîte.
la source
À utiliser
box-sizing: border-box
pour créer une bordure À L'INTÉRIEUR d' un div sans modifier la largeur de div.Permet
outline
de créer une bordure À L'EXTÉRIEUR d' un div sans modifier la largeur de div.Voici un exemple: https://jsfiddle.net/4000cae9/1/
Remarques:
border-box
actuellement, il n'est pas pris en charge par IESoutien:
http://caniuse.com/#feat=outline
http://caniuse.com/#search=border-box
la source
Comme l'a dit Abenson, vous pouvez utiliser un contour, mais un inconvénient est qu'Opera pourrait dessiner une "forme non rectangulaire". Une autre option qui semble fonctionner consiste à utiliser des marges négatives, comme ce css:
Avec ce html:
Une autre option moins propre consiste à ajouter un balisage supplémentaire au html. Par exemple, vous définissez la largeur d'un élément extérieur et ajoutez la bordure à l'intérieur. Le CSS:
Et le html:
la source
Utilisez un remplissage lorsqu'il n'y a pas de bordure. Supprimez le rembourrage lorsqu'il y a une bordure.
Essentiellement, remplacez simplement le remplissage 2px par des bordures 2px. La taille de div reste la même.
la source
Dans votre cas, pouvez-vous le fudger en soustrayant la moitié de la bordure du rembourrage? (-2,5 à partir du remplissage si votre bordure mesure 5px de large, vous ne pouvez pas avoir de remplissage négatif, donc pour aller plus petit, réduisez la largeur totale de la boîte). Vous pouvez ajouter 2,5 pixels supplémentaires à la marge pour conserver la même taille de la boîte globale.
Je n'aime vraiment pas cette suggestion, mais je ne pense pas qu'il y ait un moyen de gérer cela proprement.
la source
Ainsi, vous essayez d'obtenir la même chose que le bogue du modèle de boîte IE bien connu ? Ce n'est pas possible. Ou vous voulez prendre en charge les clients avec IE sous Windows uniquement et choisir un doctype qui force IE en mode quirksmode .
la source
Une autre option, si votre couleur d'arrière-plan est unie:
la source
#FFF
transparent et alors vous n'avez pas besoin de vous rappeler de changer deux valeurs. Votre suggestion a l'avantage que si vous aviez besoin d'une bordure en pointillés, cela fonctionnerait là où ilbox-shadow
manque à cet égard.contour: 3px noir uni || bordure: 3px noir uni
la source