La largeur div est de 200px, donc border-bottom est également de 200px mais que dois-je faire si je veux seulement 100px border-bottom sans changer la largeur de div?
Vous pouvez utiliser des pseudo-éléments. Par exemple
div {width:200px;height:50px;position: relative;z-index:1;background:#eee;}div:before {content:"";position: absolute;left:0;bottom:0;height:1px;width:50%;/* or 100px */border-bottom:1px solid magenta;}
C'était aussi ma technique, mais notez qu'elle donnera la bordure sur la moitié gauche du div. Si vous voulez qu'il soit centré, donnez le div:beforeleft: 50px.
Chowlett
La question ne précise pas dans quelle position la bordure doit apparaître, je n'ai donc pas envisagé d'autres positions
Fabrizio Calderan
5
si la largeur de la bordure inférieure est de 50% et que vous voulez qu'elle soit centrée, le style doit l'être left: 25%puisqu'il sera de 25% + 50% + 25%
skift
5
Oui, je suis conscient que dans cet exemple cela fonctionne. Mais pour d'autres qui font quelque chose de similaire qui pourrait essayer de le rendre réactif, vous devrez peut-être utiliser% comme c'était le cas pour lequel j'avais besoin de la réponse.
skift
4
Utilisez margin: auto, right: 0, left: 0sur le :beforecentrer la ligne. Votez si cela vous a aidé.
Ale_info
40
Une autre façon de faire cela (dans les navigateurs modernes) consiste à utiliser une ombre de boîte de propagation négative. Découvrez ce violon mis à jour: http://jsfiddle.net/WuZat/290/
box-shadow:0px24px3px-24px magenta;
Je pense que le moyen le plus sûr et le plus compatible est la réponse acceptée ci-dessus, cependant. Je pensais juste que je partagerais une autre technique.
Vous ne pouvez pas avoir une bordure de taille différente de celle du div lui-même.
la solution serait d'ajouter simplement un autre div sous neath, centré ou positionné en absolu, avec la bordure de 1 pixel souhaitée et seulement 1 pixel de hauteur.
J'ai laissé la bordure d'origine pour que vous puissiez voir la largeur, et j'ai deux exemples - l'un avec une largeur de 100 et l'autre avec une largeur de 100 centrée. Supprimez celui que vous ne souhaitez pas utiliser.
En retard à la fête, mais pour tous ceux qui veulent créer 2 bordures (en bas et à droite dans mon cas), vous pouvez utiliser la technique dans la réponse acceptée et ajouter un: après psuedo-element pour la deuxième ligne, puis changez simplement les propriétés comme donc:
http://jsfiddle.net/oeaL9fsm/
J'ai un cas pour avoir une bordure inférieure entre les images dans le conteneur div et le meilleur code d'une ligne était - border-bottom-style: inset;
J'ai fait quelque chose comme ça dans mon projet. Je voudrais le partager ici. Vous pouvez ajouter un autre div en tant qu'enfant et lui donner une bordure de petite largeur et le placer à gauche, au centre ou à droite avec le CSS habituel
La bordure reçoit tout l'élément html. Si vous voulez la moitié de la bordure inférieure, vous pouvez l'envelopper avec un autre bloc identifiable comme span.
ce n'est pas utile. l'exigence est la frontière de div
ahmednawazbutt
1
J'ai juste accompli le contraire de cela en utilisant :afteret ::afterparce que j'avais besoin de faire exactement ma bordure inférieure1.3rem élargir :
Mon élément s'est super déformé lorsque je l'ai utilisé :beforeet :afteren même temps parce que les éléments sont alignés horizontalement avec display: flex, flex-direction: rowetalign-items: center .
Vous pouvez l'utiliser pour créer quelque chose de plus large ou plus étroit, ou probablement n'importe quel mod de dimension mathématique:
a.nav_link-active {
color: $e1-red;
margin-top:3.7rem;}
a.nav_link-active:visited {
color: $e1-red;}
a.nav_link-active:after {
content:'';
margin-top:3.3rem;// margin and height should
height:0.4rem;// add up to active link margin
background: $e1-red;
margin-left:-$nav-spacer-margin;
display: block;}
a.nav_link-active::after {
content:'';
margin-top:3.3rem;// margin and height should
height:0.4rem;// add up to active link margin
background: $e1-red;
margin-right:-$nav-spacer-margin;
display: block;}
Désolé, il SCSSsuffit de multiplier les nombres par 10 et de changer les variables avec des valeurs normales.
div:before
left: 50px
.left: 25%
puisqu'il sera de 25% + 50% + 25%margin: auto
,right: 0
,left: 0
sur le:before
centrer la ligne. Votez si cela vous a aidé.Une autre façon de faire cela (dans les navigateurs modernes) consiste à utiliser une ombre de boîte de propagation négative. Découvrez ce violon mis à jour: http://jsfiddle.net/WuZat/290/
Je pense que le moyen le plus sûr et le plus compatible est la réponse acceptée ci-dessus, cependant. Je pensais juste que je partagerais une autre technique.
la source
Vous pouvez utiliser un dégradé linéaire:
la source
J'ai ajouté une ligne sous la balise h3 comme celle-ci
la source
Vous ne pouvez pas avoir une bordure de taille différente de celle du div lui-même.
la solution serait d'ajouter simplement un autre div sous neath, centré ou positionné en absolu, avec la bordure de 1 pixel souhaitée et seulement 1 pixel de hauteur.
http://jsfiddle.net/WuZat/3/
J'ai laissé la bordure d'origine pour que vous puissiez voir la largeur, et j'ai deux exemples - l'un avec une largeur de 100 et l'autre avec une largeur de 100 centrée. Supprimez celui que vous ne souhaitez pas utiliser.
la source
En retard à la fête, mais pour tous ceux qui veulent créer 2 bordures (en bas et à droite dans mon cas), vous pouvez utiliser la technique dans la réponse acceptée et ajouter un: après psuedo-element pour la deuxième ligne, puis changez simplement les propriétés comme donc: http://jsfiddle.net/oeaL9fsm/
la source
J'ai un cas pour avoir une bordure inférieure entre les images dans le conteneur div et le meilleur code d'une ligne était - border-bottom-style: inset;
la source
la source
J'ai fait quelque chose comme ça dans mon projet. Je voudrais le partager ici. Vous pouvez ajouter un autre div en tant qu'enfant et lui donner une bordure de petite largeur et le placer à gauche, au centre ou à droite avec le CSS habituel
Code HTML:
CSS comme ci-dessous:
la source
La bordure reçoit tout l'élément html. Si vous voulez la moitié de la bordure inférieure, vous pouvez l'envelopper avec un autre bloc identifiable comme span.
Code HTML:
CSS comme ci-dessous:
la source
CA aidera:
http://www.w3schools.com/tags/att_hr_width.asp
Cela crée une ligne horizontale d'une largeur de 50%, vous devrez créer / modifier la classe si vous souhaitez modifier le style.
la source
J'ai juste accompli le contraire de cela en utilisant
:after
et::after
parce que j'avais besoin de faire exactement ma bordure inférieure1.3rem
élargir :Mon élément s'est super déformé lorsque je l'ai utilisé
:before
et:after
en même temps parce que les éléments sont alignés horizontalement avecdisplay: flex
,flex-direction: row
etalign-items: center
.Vous pouvez l'utiliser pour créer quelque chose de plus large ou plus étroit, ou probablement n'importe quel mod de dimension mathématique:
Désolé, il
SCSS
suffit de multiplier les nombres par 10 et de changer les variables avec des valeurs normales.la source