El ancho del div es 200px, por lo que el borde inferior también es 200px, pero ¿qué debo hacer si quiero que el borde inferior solo sea 100px sin cambiar el ancho del div?
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;}
Esta también fue mi técnica, pero tenga en cuenta que le dará el borde en la mitad izquierda del div. Si lo desea centrado, dé el div:beforeleft: 50px.
Chowlett
La pregunta no especifica en qué posición debe aparecer el borde, por lo que no he considerado otras posiciones
Fabrizio Calderan
5
si el ancho del borde inferior es del 50% y lo desea centrado, el estilo debe serlo, left: 25%ya que será 25% + 50% + 25%
skift
5
Sí, soy consciente de que en este ejemplo funciona. Pero para otros que están haciendo algo similar que podrían intentar hacerlo receptivo, es posible que deba usar%, ya que en ese caso necesitaba la respuesta.
Skift
4
Uso margin: auto, right: 0, left: 0en el :beforeque centrar la línea. Vota a favor si esto te ayudó.
Ale_info
40
Otra forma de hacer esto (en los navegadores modernos) es con una sombra de cuadro de extensión negativa. Mira este violín actualizado: http://jsfiddle.net/WuZat/290/
box-shadow:0px24px3px-24px magenta;
Sin embargo, creo que la forma más segura y compatible es la respuesta aceptada anterior. Solo pensé en compartir otra técnica.
Dejé el borde original para que pueda ver el ancho y tenga dos ejemplos, uno con 100 de ancho y el otro con 100 de ancho centrado. Elimine el que no desea utilizar.
Tarde para la fiesta, pero para cualquiera que quiera hacer 2 bordes (en la parte inferior y derecha en mi caso) puede usar la técnica en la respuesta aceptada y agregar un elemento: después de psuedo para la segunda línea, luego simplemente cambie las propiedades como entonces:
http://jsfiddle.net/oeaL9fsm/
Hice algo como esto en mi proyecto. Me gustaría compartirlo aquí. Puede agregar otro div como hijo y darle un borde con un ancho pequeño y colocarlo a la izquierda, al centro o a la derecha con CSS habitual
Simplemente logré lo contrario de esto usando :aftery ::afterporque necesitaba hacer mi borde inferior exactamente 1.3remmás ancho:
Mi elemento consiguió deforma súper cuando utilicé :beforey :afteral mismo tiempo porque los elementos están alineadas horizontalmente con display: flex, flex-direction: rowy align-items: center.
Puede usar esto para hacer algo más ancho o más estrecho, o probablemente cualquier modificación de dimensión matemática:
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;}
Lo siento, esto es SCSS, simplemente multiplica los números por 10 y cambia las variables con algunos valores normales.
div:before
left: 50px
.left: 25%
ya que será 25% + 50% + 25%margin: auto
,right: 0
,left: 0
en el:before
que centrar la línea. Vota a favor si esto te ayudó.Otra forma de hacer esto (en los navegadores modernos) es con una sombra de cuadro de extensión negativa. Mira este violín actualizado: http://jsfiddle.net/WuZat/290/
Sin embargo, creo que la forma más segura y compatible es la respuesta aceptada anterior. Solo pensé en compartir otra técnica.
fuente
Puede utilizar un degradado lineal:
fuente
Agregué una línea debajo de la etiqueta h3 como esta
fuente
No puede tener un borde de tamaño diferente al div en sí.
la solución sería simplemente agregar otro div debajo, centrado o en posición absoluta, con el borde deseado de 1 píxel y solo 1 píxel de altura.
http://jsfiddle.net/WuZat/3/
Dejé el borde original para que pueda ver el ancho y tenga dos ejemplos, uno con 100 de ancho y el otro con 100 de ancho centrado. Elimine el que no desea utilizar.
fuente
Tarde para la fiesta, pero para cualquiera que quiera hacer 2 bordes (en la parte inferior y derecha en mi caso) puede usar la técnica en la respuesta aceptada y agregar un elemento: después de psuedo para la segunda línea, luego simplemente cambie las propiedades como entonces: http://jsfiddle.net/oeaL9fsm/
fuente
Tengo el caso de tener un borde inferior entre las imágenes en el contenedor div y el mejor código de una línea fue - border-bottom-style: inset;
fuente
fuente
Hice algo como esto en mi proyecto. Me gustaría compartirlo aquí. Puede agregar otro div como hijo y darle un borde con un ancho pequeño y colocarlo a la izquierda, al centro o a la derecha con CSS habitual
Código HTML:
CSS de la siguiente manera:
fuente
Al borde se le da todo el elemento html. Si desea la mitad del borde inferior, puede envolverlo con algún otro bloque identificable como span.
Código HTML:
CSS de la siguiente manera:
fuente
Esto ayudará:
http://www.w3schools.com/tags/att_hr_width.asp
Esto crea una línea horizontal con un ancho del 50%, necesitaría crear / modificar la clase si desea editar el estilo.
fuente
Simplemente logré lo contrario de esto usando
:after
y::after
porque necesitaba hacer mi borde inferior exactamente1.3rem
más ancho:Mi elemento consiguió deforma súper cuando utilicé
:before
y:after
al mismo tiempo porque los elementos están alineadas horizontalmente condisplay: flex
,flex-direction: row
yalign-items: center
.Puede usar esto para hacer algo más ancho o más estrecho, o probablemente cualquier modificación de dimensión matemática:
Lo siento, esto es
SCSS
, simplemente multiplica los números por 10 y cambia las variables con algunos valores normales.fuente