Twitterブートストラップを使用していて、2つの列(span6)を持つ行があります。両方のスパンの間に垂直仕切りを作成するにはどうすればよいですか。
ありがとう、ムルタザ
Twitterブートストラップを使用していて、2つの列(span6)を持つ行があります。両方のスパンの間に垂直仕切りを作成するにはどうすればよいですか。
ありがとう、ムルタザ
回答:
コードが次のようになっている場合:
<div class="row">
<div class="span6">
</div>
<div class="span6">
</div>
</div>
次に、コンテンツの保持/スタイル設定に「span6」DIVS内で追加の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%;
、コンテナのCSSdiv
とdiv
各列を含むsを設定することで、行を最後まで実行できます。
col-*
divでfloatを使用している場合、これは機能しません。
.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は、他のcolがない要素内にある必要があります。そうでない場合、セレクターが期待どおりに機能しない可能性があります。
.col-md-border:not(:last-child)
.row closeの前の最後の要素を除くすべての要素に一致し、それに右の境界線を追加します。
.col-md-border + .col-md-border
これら2つが互いに隣接している場合、同じクラスの2番目のdivと一致し、左の境界線と-1pxの負のマージンを追加します。負のマージンは、どの列の高さが高くても問題がなくなり、セパレータが最も高い列と同じ高さの1pxになる理由です。
また、いくつかの問題があります...
col-XX-X
でhidden-XX
/visible-XX
クラスと一緒にクラスを使用しようとする場合。...しかし一方で、応答性が高く、単純なhtmlに最適であり、すべてのブートストラップ画面サイズに対してこれらのクラスを簡単に作成できます。
1つの列のコンテンツが高いときに仕切りが短すぎるという見苦しい外観を修正するには、すべての列に境界線を追加します。1つおきの列に負のマージンを与えて、位置の違いを補正します。
たとえば、私の3つの列クラス:
.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>
Bootstrapの水平仕切りと同じ色が必要な場合は、必ず#dddを使用してください。
2018年もまだ最良の解決策を探しているのであれば、少なくとも1つの無料の疑似要素(:: afterまたは:: before)がある場合にこれが完全に機能する方法を見つけました。
次のように行にクラスを追加する必要があります:<div class="row
vertical-divider ">
そしてこれを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の1つに
だが
レスポンシブデザインの世界では、時々それを消す必要があるかもしれません。
解決策は消えていく<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/
Bootstrap4.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>
ではブートストラップ4を使用でき境界線を他のCSSを書い避け、。
ボーダー左
また、コンテンツと境界線の間にスペースが必要な場合は、パディングを使用できます。(この例では、左4pxのパディング)
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>
さて、私がしたことは、それぞれのスパン間の溝を取り除き、次に、左スパンの左境界線と右スパンの右境界線を、それらの境界線がちょうど1本の線になるように重なるように描画することでした。このようにして、表示される線は境界線の1つになります。
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>
これを試してみてください