Twitter bootstrap kullanıyorum ve iki sütunlu (span6) bir satırım var. Her iki açıklık arasında nasıl dikey bir bölücü oluşturabilirim?
Teşekkürler Murtaza
Twitter bootstrap kullanıyorum ve iki sütunlu (span6) bir satırım var. Her iki açıklık arasında nasıl dikey bir bölücü oluşturabilirim?
Teşekkürler Murtaza
Yanıtlar:
Kodunuz şöyle görünüyorsa:
<div class="row">
<div class="span6">
</div>
<div class="span6">
</div>
</div>
O halde, içeriğinizi tutmak / biçimlendirmek için "span6" DIVS içinde ek DIVS kullandığınızı varsayıyorum. Yani...
<div class="row">
<div class="span6">
<div class="mycontent-left">
</div>
</div>
<div class="span6">
<div class="mycontent-right">
</div>
</div>
</div>
Bölücünüzü oluşturmak için "mycontent-left" sınıfına CSS ekleyebilirsiniz.
.mycontent-left {
border-right: 1px dashed #333;
}
<span>soldan daha yüksekse sorun ortaya çıkar . Bu durumda dikey çizgi çirkin olacaktır.
min-height: 100%; height: 100%;kap için CSS'de divve divher bir sütunu içeren ’lerde ayar yaparak satırın sonuna kadar uzanmasını sağlayabilirsiniz .
col-*, bu işe yaramaz.
.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; }
İşte bir süredir kullandığım başka bir seçenek. Benim için harika çalışıyor çünkü çoğunlukla görsel olarak ayrı 2 kola ihtiyacım var. Ve aynı zamanda duyarlı. Bu, orta ve büyük ekran boyutlarında yan yana sütunlarım varsa, o zaman col-md-borderayırıcıyı daha küçük ekran boyutlarında gizleyen sınıfı kullanacağım anlamına gelir .
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'de muhtemelen bundan tüm gerekli sınıfları oluşturabilirsiniz:
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>
Nasıl çalışır:
Sütunlar, başka hiçbir sütun bulunmayan bir öğenin içinde olmalıdır, aksi takdirde seçiciler beklendiği gibi çalışmayabilir.
.col-md-border:not(:last-child).row close öncesindeki son öğe dışındaki tüm öğelerle eşleşir ve buna sağ kenarlık ekler.
.col-md-border + .col-md-borderBu ikisi yan yana ise ikinci div ile aynı sınıfla eşleşir ve sol kenarlık ve -1px negatif kenar boşluğu ekler. Negatif kenar boşluğu, artık hangi sütunun daha yüksek yüksekliğe sahip olduğunun ve ayırıcının 1px en yüksek sütunla aynı yükseklikte olmasının nedenidir.
Bazı sorunları da var ...
col-XX-Xsınıfı aynı satır öğesi içinde hidden-XX/ visible-XXsınıfları ile birlikte kullandığınızda .... Ancak diğer yandan duyarlı, basit html için harika çalışıyor ve bu sınıfları tüm önyükleme ekranı boyutları için oluşturmak çok kolay.
Bir sütunun içeriği daha uzun olduğunda bölücünün çirkin görünümünün çok kısa olmasını düzeltmek için tüm sütunlara kenarlıklar ekleyin. Konum farklılıklarını telafi etmek için diğer her sütuna negatif bir kenar boşluğu verin.
Örneğin, üç sütun sınıfım:
.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;
}
Ve 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>
Bootstrap'in yatay bölücüleriyle aynı rengi istiyorsanız #ddd kullandığınızdan emin olun.
2018'de hala en iyi çözümü arıyorsanız, en az bir ücretsiz sözde öğeniz (:: after veya :: before) varsa bunun mükemmel bir şekilde çalıştığını buldum.
Sıranıza şu şekilde sınıf eklemeniz yeterlidir : <div class="row dikey bölücü ">
Ve bunu CSS'nize ekleyin:
.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;
}
Bu sınıfa sahip herhangi bir satır artık içerdiği tüm sütunlar arasında dikey bölücüye sahip olacaktır ...
Bunun nasıl çalıştığını bu örnekte görebilirsiniz.
2 sütun arasında dikey bir ayırıcı istiyorsanız, tek ihtiyacınız olan şey eklemek
class="col-6 border-left"
sütun div-lerinizden birine
FAKAT
Duyarlı tasarım dünyasında, bazen onu ortadan kaldırmanız gerekebilir.
Çözüm yok oluyor <hr>+ yok oluyor <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'de test edildi
Ben test ettim. İyi çalışıyor.
.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 ile diğer CSS yazmaktan kaçınarak kenarlıkları kullanabilirsiniz .
sınır sol
Ve içerik ve kenarlık arasında boşluk istiyorsanız, dolgu kullanabilirsiniz . (bu örnekte sol 4px dolgu)
pl-4
Misal:
<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'ye medya genişliği maddeleri eklendi, böylece şeylerin mobil uyumlu tarafında herhangi bir kötü sınır yok. Bu yardımcı olur umarım! Bu, en uzun sütunun uzunluğuna göre yeniden boyutlandırılacaktır. .Col-md-4 ve .col-md-6 üzerinde test edildi ve benim varsayımım, geri kalanıyla uyumlu olduğu yönünde. Yine de garanti yok.
.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>
Bir sütun alanınız olduğunu varsayarsak, bu bir seçenektir. İhtiyacınız olan şeye bağlı olarak sütunları yeniden dengeleyin.
<div class="col-1">
<div class="col-6 vhr">
</div>
</div>
.vhr{
border-right: 1px solid #333;
height:100%;
}
Yaptığım şey, ilgili açıklıklar arasındaki oluğu kaldırmak, ardından sol açıklık için bir sol kenarlık ve yalnızca tek bir çizgi vermek için sınırları üst üste gelecek şekilde sağ kenarlık için bir sağ kenarlık çizmekti. Bu şekilde görünen çizgi sadece sınırlardan biri olacaktır.
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>
Bunu dene, benim için çalışıyor