Я використовую twitter bootstrap і маю рядок, який має два стовпці (span6). Як створити вертикальний роздільник між обома прольотами.
Дякую, Муртаза
Я використовую twitter bootstrap і маю рядок, який має два стовпці (span6). Як створити вертикальний роздільник між обома прольотами.
Дякую, Муртаза
Відповіді:
Якщо ваш код виглядає так:
<div class="row">
<div class="span6">
</div>
<div class="span6">
</div>
</div>
Тоді я припускаю, що ви використовуєте додаткові DIVS у межах "span6" DIVS для зберігання / стилювання вашого вмісту? Тому...
<div class="row">
<div class="span6">
<div class="mycontent-left">
</div>
</div>
<div class="span6">
<div class="mycontent-right">
</div>
</div>
</div>
Таким чином, ви можете просто додати CSS до класу "mycontent-left", щоб створити свій розділювач.
.mycontent-left {
border-right: 1px dashed #333;
}
<span>
вище, ніж лівого. У цьому випадку вертикальна лінія буде негарною.
min-height: 100%; height: 100%;
в CSS контейнер div
і div
s, що містять кожен стовпець.
col-*
div, то це не спрацює.
.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; }
Ну ось ще один варіант, який я використовую вже деякий час. Це чудово працює для мене, оскільки мені в основному це потрібно, щоб візуально відокремити 2 кольки. І це також чуйне. Це означає, що якщо у мене стовпці поруч один з одним середнього та великого розмірів екрану, я б використовував клас col-md-border
, який приховував би роздільник на менших розмірах екрана.
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;
}
}
У scss ви можете створити всі необхідні класи, мабуть, з цього:
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>
Як це працює:
Колони повинні знаходитися всередині елемента, де немає інших колів, інакше селектори можуть не працювати належним чином.
.col-md-border:not(:last-child)
відповідає всім елементам, крім останнього, перед .row close і додає до нього праву межу.
.col-md-border + .col-md-border
відповідає другому div з тим самим класом, якщо ці два знаходяться поруч, і додає ліву межу та -1px від’ємне поле. Негативне поле - це те, чому вже не має значення, який стовпець має більшу висоту, а роздільник матиме 1 піксель тієї ж висоти, що і найвищий стовпець.
У нього також є деякі проблеми ...
col-XX-X
клас разом з hidden-XX
/ visible-XX
класами всередині одного елемента рядка.... Але, з іншого боку, він чуйний, чудово працює для простого html і легко створює ці класи для всіх розмірів екрану завантажувального екрану.
Щоб виправити потворний вигляд роздільника занадто коротким, коли вміст одного стовпця вище, додайте межі до всіх стовпців. Дайте кожному другому стовпцю від’ємне поле для компенсації різниці позицій.
Наприклад, мої три класи стовпців:
.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;
}
І 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>
Переконайтеся, що ви використовуєте #ddd, якщо хочете отримати той самий колір, що і горизонтальні роздільники Bootstrap.
Якщо ви все ще шукаєте найкращого рішення в 2018 році, я знайшов, як це чудово працює, якщо у вас є принаймні один вільний псевдоелемент (:: after або :: before).
Вам просто потрібно додати клас до свого рядка так: <div class="row
вертикальний роздільник ">
І додайте це у свій 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;
}
Будь-який рядок з цим класом тепер матиме вертикальний роздільник між усіма стовпцями, які він містить ...
Ви можете побачити, як це працює, на цьому прикладі.
Якщо вам потрібен вертикальний роздільник між 2 стовпцями, потрібно лише додати
class="col-6 border-left"
до одного з ваших стовпців div-s
АЛЕ
У світі адаптивного дизайну, можливо, вам доведеться змусити його іноді зникнути.
Розчин зникає <hr>
+ зникає <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/
протестовано на Bootstrap 4.1
Я тестував це. Це чудово працює.
.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>
За допомогою Bootstrap 4 ви можете використовувати межі , уникаючи написання інших CSS.
кордон ліворуч
А якщо вам потрібен простір між вмістом і межею, ви можете використовувати відступ . (у цьому прикладі відступ залишено 4 пікселі)
pl-4
Приклад:
<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>
У CSS додані речення про ширину медіа, щоб не було ніяких неприємних меж з боку мобільних пристроїв. Сподіваюся, це допомагає! Це зменшить розмір найдовшого стовпця. Випробувано на .col-md-4 та .col-md-6, і я припускаю, що він сумісний з іншими. Ніяких гарантій.
.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>
Якщо припустити, що у вас є простір стовпців, це варіант. Збалансуйте стовпці залежно від того, що вам потрібно.
<div class="col-1">
<div class="col-6 vhr">
</div>
</div>
.vhr{
border-right: 1px solid #333;
height:100%;
}
Ну, що я зробив, це видалив жолоб між відповідними прольотами, потім намалювавши ліву межу для лівого прольоту і праву межу для правого прольоту таким чином, що їх межі перекриваються, щоб отримати єдиний рядок. Таким чином видима лінія буде просто однією з меж.
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>
Спробуйте це, це працює для мене