Placer la frontière à l'intérieur de la div et pas sur son bord
J'ai un <div>
élément et je veux mettre une bordure sur elle. Je sais que je peux écrire style="border: 1px solid black"
, mais cela ajoute de 2px de chaque côté de la div, ce qui n'est pas ce que je veux.
Je préfère avoir cette frontière -1px à partir du bord de la div. La div en lui-même est 100px x 100px, et si j'ai ajouter une bordure, puis-je avoir à faire un peu de mathématiques à rendre la frontière apparaissent.
Est-il une manière que je peux faire de la frontière apparaissent, et de s'assurer que la case sera toujours 100px (y compris les frontaliers)?
- Pour ce que ça vaut, j'ai posté solution pour ceux qui sont venus ici à la recherche d'une frontière intérieure avec un offset
Vous devez vous connecter pour publier un commentaire.
Ensemble
box-sizing
propriétéborder-box
:CSS:
HTML:
Il fonctionne sur IE8 & au-dessus de.
outline
.box-sizing
caniuse.com/#search=box-sizingVous pouvez également utiliser box-shadow comme ceci:
Exemple ici: http://jsfiddle.net/nVyXS/ (passez la souris pour afficher la frontière)
Cela fonctionne dans les navigateurs modernes seulement. Par exemple: Pas de IE 8 support.
Voir caniuse.com (box-shadow fonctionnalité) pour plus d'info.
:hover
tag!border-bottom
avec cette.Il est probablement tardive réponse, mais je veux partager avec mes conclusions. J'ai trouvé 2 nouvelles approches à ce problème que je n'ai pas trouvé ici, dans les réponses:
Intérieure de la frontière
box-shadow
propriété cssOui, box-shadow est utilisé pour ajouter de la zone-les ombres et les éléments. Mais vous pouvez spécifier
inset
de l'ombre, qui la faisait ressembler à une frontière intérieure plutôt comme une ombre. Vous avez juste besoin de mettre en horizontal et vertical de l'ombre à0px
, et le "spread
" propriété de labox-shadow
à la largeur de la bordure que vous voulez avoir. Donc, pour le "intérieure" bordure de 10px vous écrire ce qui suit:Ici est jsFiddle exemple qui illustre la différence entre
box-shadow
frontière et "normal" de la frontière. De cette façon, votre frontière et la largeur de la zone de sont en de total 100px y compris la frontière.Plus sur les box-shadow:ici
De la frontière contour propriété css
Ici est une autre approche, mais de cette façon, la frontière serait à l'extérieur de la boîte. Voici un exemple.
Comme suit à partir de l'exemple, vous pouvez utiliser les css
outline
de la propriété, à la frontière qui n'affecte pas la largeur et la hauteur de l'élément. De cette façon, la largeur de la bordure n'est pas ajouté à la largeur d'un élément.Plus sur le contour: ici
Yahoo! C'est vraiment possible. Je l'ai trouvé.
Pour La Bordure Du Bas:
Pour Le Dessus De La Frontière:
Utilisation pseudo élément:
CSS:
HTML:
À l'aide de
::after
vous le style le virtuel dernier enfant de l'élément sélectionné.content
propriété crée un anonyme remplacé élément.Nous sommes contenant le pseudo élément à l'aide de la position absolue par rapport à la mère. Ensuite, vous avez la liberté à n'importe quelle arrière-plan personnalisé et/ou à la frontière dans le fond de votre élément principal.
Cette approche n'a pas d'incidence sur le placement du contenu de l'élément principal, qui est différent de l'utilisation
box-sizing: border-box;
.Considérons cet exemple:
CSS:
HTML:
Ici
.button
largeur est limitée à l'aide de l'élément parent. Réglage de laborder-left-width
ajuste le contenu de la boîte de la taille et donc la position du texte.CSS:
HTML:
À l'aide de la pseudo-élément approche n'affectent pas le contenu-la taille de la boîte.
Selon l'application, l'approche à l'aide d'un pseudo-élément peut ou peut ne pas être souhaitable de comportement.
:Before
.Que cette question a déjà été répondu de manière adéquate avec des solutions à l'aide de la
box-shadow
etoutline
propriétés, je tiens à légèrement augmenter sur cettepour tous ceux qui ont atterri ici (comme moi) la recherche d'une solution pour un intérieur frontière avec un décalage
Donc, disons que vous avez un noir 100px x 100px
div
et vous avez besoin d'encart avec une bordure blanche - qui a une intérieure compensée de 5px (dire) - ce qui peut encore être fait avec les propriétés ci-dessus.box-shadow
L'astuce ici est de savoir que plusieurs box-les ombres sont autorisées dans le cas où la première ombre est sur le dessus et suivantes ombres ont de moins en z de la commande.
De cette connaissance, le box-shadow déclaration sera:
CSS:
HTML:
Fondamentalement, ce que la déclaration dit, c'est: rendre le dernier (10px blanc) de l'ombre en premier, puis le rendu de la précédente 5px ombre noire au-dessus d'elle.
contour avec les grandes lignes de décalage
Pour le même effet qu'au-dessus de l'aperçu des déclarations serait:
CSS:
HTML:
NB:
outline-offset
n'est pas pris en charge par IE si c'est important pour vous.Codepen démo
Vous pouvez utiliser les propriétés
outline
etoutline-offset
avec une valeur négative au lieu d'utiliser régulièrementborder
, fonctionne pour moi:CSS:
HTML:
Je sais que c'est un peu plus vieux, mais depuis les mots-clés de la frontière "à l'intérieur" m'a débarqué directement ici, je voudrais partager quelques conclusions qui peuvent être intéressant de mentionner ici.
Quand j'étais en ajoutant une bordure sur l'état de pointage, j'ai eu les effets que l'opération est en train de parler. La frontière annonces de pixels à la dimension de la boîte qui le rendait nerveux.
Il y a deux manières de traiter ce qui travaillent également pour IE7.
1)
Ont une frontière déjà fixé à l'élément et il suffit de changer la couleur. De cette façon, les mathématiques sont déjà inclus.
2 )
Compenser la frontière avec une marge négative. Ce sera encore ajouter les pixels supplémentaires, mais le positionnement de l'élément ne sera pas jumpy sur
pour la présentation cohérente entre les nouveaux et les anciens navigateurs, ajouter une à deux conteneurs, l'extérieur avec la largeur, à l'intérieur avec de la frontière.
c'est évidemment seulement si votre façon précise la largeur est plus important que d'avoir le balisage!
CSS:
HTML:
Meilleur navigateur croix de solution (surtout pour IE soutien) comme @Steve a dit, est de faire un div 98px en largeur et en hauteur que d'ajouter une bordure de 1px autour d'elle, ou vous pouvez faire une image d'arrière-plan pour les div 100x100 px et tracer une frontière sur elle.