Estou usando o bootstrap do Twitter e tenho uma linha com duas colunas (span6). Como faço para criar uma divisória vertical entre os dois vãos.
Obrigado, Murtaza
html
css
twitter-bootstrap
murtaza52
fonte
fonte
Respostas:
Se o seu código for assim:
<div class="row"> <div class="span6"> </div> <div class="span6"> </div> </div>
Então eu diria que você está usando DIVS adicionais dentro do DIVS "span6" para manter / estilizar seu conteúdo. Então...
<div class="row"> <div class="span6"> <div class="mycontent-left"> </div> </div> <div class="span6"> <div class="mycontent-right"> </div> </div> </div>
Portanto, você pode simplesmente adicionar algum CSS à classe "mycontent-left" para criar seu divisor.
.mycontent-left { border-right: 1px dashed #333; }
fonte
<span>
fosse mais alto que o da esquerda. Nesse caso, a linha vertical será feia.min-height: 100%; height: 100%;
no CSS para o contêinerdiv
e osdiv
contendo cada coluna.col-*
divs, isso não 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>
fonte
.row.vertical-divider div[class^="col-"] + div[class^="col-"] { text-align: center; padding-bottom: 100px; margin-bottom: -100px; border-left: 3px solid #0396D1; }
No Bootstrap 4, há a classe de utilitário
border-right
que você pode usar.Por exemplo, você pode fazer:
<div class="row"> <div class="col-6 border-right"></div> <div class="col-6"></div> </div>
fonte
Bem, aqui está outra opção que venho usando há algum tempo. Funciona muito bem para mim, já que preciso separar visualmente 2 colunas. E também é responsivo. O que significa que, se eu tiver colunas próximas uma da outra em telas de tamanho médio e grande, usarei a classe
col-md-border
, que ocultaria o separador em telas de tamanhos menores.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; } }
No scss, você pode gerar todas as classes necessárias provavelmente a partir deste:
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>
Como funciona:
As cols devem estar dentro de um elemento onde não há outras cols, caso contrário, os seletores podem não funcionar como esperado.
.col-md-border:not(:last-child)
corresponde a todos, exceto o último elemento antes de .row close e adiciona a borda direita a ele..col-md-border + .col-md-border
corresponde ao segundo div com a mesma classe se esses dois estiverem próximos um do outro e adiciona borda esquerda e margem negativa de -1px. A margem negativa é por que não importa mais qual coluna tem maior altura e o separador terá 1px a mesma altura da coluna mais alta.Ele também tem alguns problemas ...
col-XX-X
class junto comhidden-XX
/visible-XX
classes dentro do mesmo elemento de linha.... Mas por outro lado é responsivo, funciona muito bem para html simples e é fácil criar essas classes para todos os tamanhos de tela de bootstrap.
fonte
Para corrigir a aparência feia de um divisor ser muito curto quando o conteúdo de uma coluna é mais alto, adicione bordas a todas as colunas. Dê a cada outra coluna uma margem negativa para compensar as diferenças de posição.
Por exemplo, minhas três classes de coluna:
.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; }
E o 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>
Certifique-se de usar #ddd se quiser a mesma cor das divisórias horizontais do Bootstrap.
fonte
Se você ainda está procurando a melhor solução em 2018, descobri que funciona perfeitamente se você tiver pelo menos um pseudo elemento livre (:: depois ou :: antes).
Você apenas tem que adicionar classe à sua linha assim:
<div class="row
vertical-divider">
E adicione isso ao seu 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; }
Qualquer linha com esta classe agora terá divisor vertical entre todas as colunas que contém ...
Você pode ver como isso funciona neste exemplo.
fonte
Se você quiser um divisor vertical entre 2 colunas, tudo que você precisa é adicionar
class="col-6 border-left"
para um de seus div-s de coluna
MAS
No mundo do design responsivo, às vezes você pode precisar fazer com que ele desapareça.
A solução está desaparecendo
<hr>
+ desaparecendo<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/
testado no Bootstrap 4.1
fonte
Eu testei. Funciona bem.
.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>
fonte
Com o Bootstrap 4 você pode usar bordas , evitando escrever outro CSS.
E se você quiser espaço entre o conteúdo e a borda, pode usar preenchimento . (neste exemplo, o preenchimento esquerdo 4px)
Exemplo:
<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>
fonte
Deve abrir a página inteira para ver as fronteiras!
Adicionadas cláusulas de largura de mídia no CSS para que não haja fronteiras desagradáveis no lado compatível com dispositivos móveis. Espero que isto ajude! Isso será redimensionado para o comprimento da coluna mais longa. Testado em .col-md-4 e .col-md-6 e suponho que seja compatível com o resto. No entanto, não há garantias.
JSFiddle
.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>
fonte
Supondo que você tenha um espaço de coluna, esta é uma opção. Rebalance as colunas dependendo do que você precisa.
<div class="col-1"> <div class="col-6 vhr"> </div> </div>
.vhr{ border-right: 1px solid #333; height:100%; }
fonte
Bem, o que fiz foi remover a sarjeta entre os respectivos vãos, em seguida, desenhando uma borda esquerda para o vão esquerdo e uma borda direita para o vão direito de forma que suas bordas se sobrepusessem apenas para dar uma única linha. Desta forma, a linha visível será apenas uma das bordas.
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>
Experimente isso funciona para mim
fonte
Use isto, 100% garantido: -
vr { margin-left: 20px; margin-right: 20px; height: 50px; border: 0; border-left: 1px solid #cccccc; display: inline-block; vertical-align: bottom; }
fonte