Estoy usando twitter bootstrap y tengo una fila que tiene dos columnas (span6). ¿Cómo creo un divisor vertical entre ambos tramos?
Gracias murtaza
Estoy usando twitter bootstrap y tengo una fila que tiene dos columnas (span6). ¿Cómo creo un divisor vertical entre ambos tramos?
Gracias murtaza
Respuestas:
Si su código se ve así:
<div class="row">
<div class="span6">
</div>
<div class="span6">
</div>
</div>
Entonces, ¿asumiría que está utilizando DIVS adicionales dentro del DIVS "span6" para mantener / diseñar su contenido? Entonces...
<div class="row">
<div class="span6">
<div class="mycontent-left">
</div>
</div>
<div class="span6">
<div class="mycontent-right">
</div>
</div>
</div>
Entonces, simplemente podría agregar algo de CSS a la clase "mycontent-left" para crear su divisor.
.mycontent-left {
border-right: 1px dashed #333;
}
<span>
más alto que el de la izquierda. En ese caso, la línea vertical será fea.
min-height: 100%; height: 100%;
el CSS para el contenedor div
y los div
correos electrónicos que contienen cada columna.
col-*
divs, esto no funcionará.
.row.vertical-divider {
overflow: hidden;
}
.row.vertical-divider > div[class^="col-"] {
text-align: center;
padding-bottom: 100px;
margin-bottom: -100px;
border-left: 3px solid #F2F7F9;
border-right: 3px solid #F2F7F9;
}
.row.vertical-divider div[class^="col-"]:first-child {
border-left: none;
}
.row.vertical-divider div[class^="col-"]:last-child {
border-right: none;
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet" />
<div class="row vertical-divider" style="margin-top: 30px">
<div class="col-xs-6">Hi there</div>
<div class="col-xs-6">Hi world<br/>hi world</div>
</div>
.row.vertical-divider div[class^="col-"] + div[class^="col-"] { text-align: center; padding-bottom: 100px; margin-bottom: -100px; border-left: 3px solid #0396D1; }
Bueno, aquí hay otra opción que he estado usando durante algún tiempo. Funciona muy bien para mí, ya que principalmente lo necesito para separar visualmente 2 columnas. Y también responde. Lo que significa que si tengo columnas una al lado de la otra en tamaños de pantalla medianos y grandes, entonces usaría la clasecol-md-border
, que ocultaría el separador en tamaños de pantalla más pequeños.
css:
@media (min-width: 992px) {
.col-md-border:not(:last-child) {
border-right: 1px solid #d7d7d7;
}
.col-md-border + .col-md-border {
border-left: 1px solid #d7d7d7;
margin-left: -1px;
}
}
En scss puede generar todas las clases necesarias probablemente a partir de esto:
scss:
@media(min-width: $screen-md-min) {
.col-md-border {
&:not(:last-child) {
border-right: 1px solid #d7d7d7;
}
& + .col-md-border {
border-left: 1px solid #d7d7d7;
margin-left: -1px;
}
}
}
HTML:
<div class="row">
<div class="col-md-6 col-md-border"></div>
<div class="col-md-6 col-md-border"></div>
</div>
Cómo funciona:
Las columnas deben estar dentro de un elemento donde no hay otras columnas, de lo contrario, los selectores podrían no funcionar como se esperaba.
.col-md-border:not(:last-child)
coincide con todos menos el último elemento antes de .row close y le agrega el borde derecho.
.col-md-border + .col-md-border
coincide con el segundo div con la misma clase si estos dos están uno al lado del otro y agrega un borde izquierdo y un margen negativo de -1px. El margen negativo es la razón por la que ya no importa qué columna tiene mayor altura y el separador será 1px la misma altura que la columna más alta.
También tiene algunos problemas ...
col-XX-X
class junto con hidden-XX
/ visible-XX
classes dentro del mismo elemento de fila.... Pero, por otro lado, responde, funciona muy bien para html simple y es fácil crear estas clases para todos los tamaños de pantalla de arranque.
Para corregir el aspecto desagradable de un divisor demasiado corto cuando el contenido de una columna es más alto, agregue bordes a todas las columnas. Dé a todas las demás columnas un margen negativo para compensar las diferencias de posición.
Por ejemplo, mis clases de tres columnas:
.border-right {
border-right: 1px solid #ddd;
}
.borders {
border-left: 1px solid #ddd;
border-right: 1px solid #ddd;
margin: -1px;
}
.border-left {
border-left: 1px solid #ddd;
}
Y el HTML:
<div class="col-sm-4 border-right">First</div>
<div class="col-sm-4 borders">Second</div>
<div class="col-sm-4 border-left">Third</div>
Asegúrese de usar #ddd si desea el mismo color que los divisores horizontales de Bootstrap.
Si todavía está buscando la mejor solución en 2018, encontré la forma en que esto funciona perfectamente si tiene al menos un pseudo elemento gratuito (:: after o :: before).
Solo tiene que agregar una clase a su fila de esta manera: <div class="row
vertical-divider ">
Y agregue esto a su CSS:
.row.vertical-divider [class*='col-']:not(:last-child)::after {
background: #e0e0e0;
width: 1px;
content: "";
display:block;
position: absolute;
top:0;
bottom: 0;
right: 0;
min-height: 70px;
}
Cualquier fila con esta clase ahora tendrá un divisor vertical entre todas las columnas que contiene ...
Puedes ver cómo funciona esto en este ejemplo.
Si desea un divisor vertical entre 2 columnas, todo lo que necesita es agregar
class="col-6 border-left"
a una de sus columnas div-s
PERO
En el mundo del diseño receptivo, es posible que deba hacerlo desaparecer a veces.
La solución está desapareciendo <hr>
+ desapareciendo <div>
+margin-left: -1px;
<div class="container">
<div class="row">
<div class="col-md-7">
1 of 2
</div>
<div class="border-left d-sm-none d-md-block" style="width: 0px;"></div>
<div class="col-md-5" style="margin-left: -1px;">
<hr class="d-sm-block d-md-none">
2 of 2
</div>
</div>
</div>
https://jsfiddle.net/8z1pag7s/
probado en Bootstrap 4.1
Lo he probado. Funciona bien.
.row.vdivide [class*='col-']:not(:last-child):after {
background: #e0e0e0;
width: 1px;
content: "";
display:block;
position: absolute;
top:0;
bottom: 0;
right: 0;
min-height: 70px;
}
<div class="container">
<div class="row vdivide">
<div class="col-sm-3 text-center"><h1>One</h1></div>
<div class="col-sm-3 text-center"><h1>Two</h1></div>
<div class="col-sm-3 text-center"><h1>Three</h1></div>
<div class="col-sm-3 text-center"><h1>Four</h1></div>
</div>
</div>
Con Bootstrap 4 puedes usar bordes , evitando escribir otros CSS.
borde izquierdo
Y si desea espacio entre el contenido y el borde, puede usar relleno . (en este ejemplo, relleno a la izquierda 4px)
pl-4
Ejemplo:
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet"/>
<div class="row">
<div class="offset-6 border-left pl-4">First</div>
<div class="offset-6 border-left pl-4">Second</div>
</div>
Se agregaron cláusulas de ancho de medios en el CSS para que no haya bordes desagradables en el lado amigable para dispositivos móviles. ¡Espero que esto ayude! Esto cambiará de tamaño a la longitud de la columna más larga. Probado en .col-md-4 y .col-md-6 y supongo que es compatible con el resto. Sin embargo, no hay garantías.
.row {
overflow: hidden;
}
.cols {
padding-bottom: 100%;
margin-bottom: -100%;
overflow: hidden;
}
@media(min-width: 992px) {
.col-md-4:not(:first-child),
.col-md-6:not(:first-child) {
border-left: 1px solid black;
}
.col-md-4:not(:last-child),
.col-md-6:not(:last-child) {
border-right: 1px solid black;
margin-right: -1px;
}
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container">
<h1>
.col-md-6
</h1>
<hr>
<div class="row text-center">
<div class="col-md-6 cols">
<p>Enter some text here</p>
</div>
<div class="col-md-6 cols">
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
</div>
</div>
<hr>
<h1>
.col-md-4
</h1>
<div class="row text-center">
<div class="col-md-4 cols">
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
</div>
<div class="col-md-4 cols">
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
</div>
<div class="cols col-md-4 cols">
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
<p>Enter some more text here</p>
</div>
</div>
</div>
Suponiendo que tiene un espacio de columna, esta es una opción. Reequilibre las columnas según lo que necesite.
<div class="col-1">
<div class="col-6 vhr">
</div>
</div>
.vhr{
border-right: 1px solid #333;
height:100%;
}
Bueno, lo que hice fue quitar el canal entre los tramos respectivos y luego dibujar un borde izquierdo para el tramo izquierdo y un borde derecho para el tramo derecho de tal manera que sus bordes se superpusieran solo para dar una sola línea. De esta manera, la línea visible será solo una de las fronteras.
CSS
.leftspan
{
padding-right:20px;
border-right: 1px solid #ccc;
}
.row-fluid .rightspan {
margin-left: -0.138297872340425%;
*margin-left: -0.13191489361702%;
padding-left:20px;
border-left: 1px solid #ccc;
}
.row-fluid .rightspan:first-child {
margin-left: -0.11063829787234%;
*margin-left: -0.104255319148938%;
}
HTML
<div class="row-fluid" >
<div class="span8 leftspan" >
</div>
<div class="span4 rightspan" >
</div>
</div>
Prueba esto, funciona para mí