Saya menggunakan bootstrap twitter, dan memiliki baris yang memiliki dua kolom (span6). Bagaimana cara membuat pembatas vertikal antara kedua bentang.
Terima kasih, Murtaza
Saya menggunakan bootstrap twitter, dan memiliki baris yang memiliki dua kolom (span6). Bagaimana cara membuat pembatas vertikal antara kedua bentang.
Terima kasih, Murtaza
Jawaban:
Jika kode Anda terlihat seperti ini:
<div class="row">
<div class="span6">
</div>
<div class="span6">
</div>
</div>
Lalu saya akan berasumsi Anda menggunakan DIVS tambahan dalam DIV "span6" untuk menyimpan / menata konten Anda? Begitu...
<div class="row">
<div class="span6">
<div class="mycontent-left">
</div>
</div>
<div class="span6">
<div class="mycontent-right">
</div>
</div>
</div>
Jadi, Anda cukup menambahkan beberapa CSS ke kelas "mycontent-left" untuk membuat pembagi.
.mycontent-left {
border-right: 1px dashed #333;
}
<span>
lebih tinggi dari yang kiri. Dalam hal ini, garis vertikal akan jelek.
min-height: 100%; height: 100%;
di CSS untuk penampung div
dan div
s yang berisi setiap kolom.
col-*
div, ini tidak akan berhasil.
.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; }
Nah, inilah opsi lain yang telah saya gunakan selama beberapa waktu sekarang. Ini bekerja sangat baik untuk saya karena saya sangat membutuhkannya untuk memisahkan 2 cols secara visual. Dan itu juga responsif. Artinya, jika saya memiliki kolom di samping satu sama lain dalam ukuran layar sedang dan besar, maka saya akan menggunakan kelas col-md-border
, yang akan menyembunyikan pemisah pada ukuran layar yang lebih kecil.
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;
}
}
Dalam scss Anda dapat menghasilkan semua kelas yang dibutuhkan mungkin dari ini:
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>
Bagaimana itu bekerja:
Kolom harus berada di dalam elemen di mana tidak ada kolom lain, jika tidak, penyeleksi mungkin tidak bekerja seperti yang diharapkan.
.col-md-border:not(:last-child)
cocok dengan semua kecuali elemen terakhir sebelum .row close dan menambahkan batas kanan padanya.
.col-md-border + .col-md-border
mencocokkan div kedua dengan kelas yang sama jika keduanya bersebelahan dan menambahkan batas kiri dan margin negatif -1px. Margin negatif adalah mengapa tidak masalah lagi kolom mana yang memiliki tinggi lebih besar dan pemisahnya adalah 1px sama tingginya dengan kolom tertinggi.
Itu juga memiliki beberapa masalah ...
col-XX-X
kelas bersama dengan hidden-XX
/ visible-XX
kelas di dalam elemen baris yang sama.... Tapi di sisi lain itu responsif, bekerja sangat baik untuk html sederhana dan mudah untuk membuat kelas-kelas ini untuk semua ukuran layar bootstrap.
Untuk memperbaiki tampilan pembatas yang jelek karena terlalu pendek saat konten satu kolom lebih tinggi, tambahkan batas ke semua kolom. Beri setiap kolom lain margin negatif untuk mengimbangi perbedaan posisi.
Misalnya, tiga kelas kolom saya:
.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;
}
Dan 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>
Pastikan Anda menggunakan #ddd jika Anda ingin warna yang sama dengan pembagi horizontal Bootstrap.
Jika Anda masih mencari solusi terbaik pada tahun 2018, saya menemukan cara ini berfungsi dengan sempurna jika Anda memiliki setidaknya satu elemen pseudo gratis (:: after atau :: before).
Anda hanya perlu menambahkan kelas ke baris Anda seperti ini: <div class="row
pembagi vertikal ">
Dan tambahkan ini ke CSS Anda:
.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;
}
Setiap baris dengan kelas ini sekarang akan memiliki pemisah vertikal antara semua kolom yang dikandungnya ...
Anda dapat melihat cara kerjanya dalam contoh ini.
Jika Anda menginginkan pembatas vertikal antara 2 kolom, yang Anda butuhkan hanyalah menambahkan
class="col-6 border-left"
ke salah satu kolom div-s Anda
TAPI
Dalam dunia desain responsif, terkadang Anda mungkin perlu membuatnya menghilang.
Solusinya menghilang <hr>
+ menghilang <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/
diuji pada Bootstrap 4.1
Saya sudah mengujinya. Ini bekerja dengan baik.
.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>
Dengan Bootstrap 4 Anda dapat menggunakan border , menghindari penulisan CSS lain.
pembatas kiri
Dan jika Anda menginginkan ruang antara konten dan batas Anda dapat menggunakan padding . (dalam contoh ini padding tersisa 4px)
pl-4
Contoh:
<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>
Menambahkan klausa lebar media di CSS sehingga tidak ada batas yang tidak nyaman di sisi ramah seluler. Semoga ini membantu! Ini akan mengubah ukuran menjadi panjang kolom terpanjang. Diuji pada .col-md-4 dan .col-md-6 dan asumsi saya kompatibel dengan yang lain. Tidak ada jaminan sekalipun.
.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>
Dengan asumsi Anda memiliki ruang kolom, ini adalah opsi. Seimbangkan kembali kolom tergantung pada apa yang Anda butuhkan.
<div class="col-1">
<div class="col-6 vhr">
</div>
</div>
.vhr{
border-right: 1px solid #333;
height:100%;
}
Yang saya lakukan adalah menghilangkan selokan di antara bentang masing-masing kemudian menggambar batas kiri untuk bentang kiri dan batas kanan untuk bentang kanan sedemikian rupa sehingga perbatasan mereka tumpang tindih hanya untuk memberikan satu garis. Dengan cara ini garis yang terlihat hanya akan menjadi salah satu pembatas.
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>
Coba ini berhasil untuk saya