부트 스트랩에서 두 열 사이의 세로 구분선


답변:


97

코드가 다음과 같은 경우 :

<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>

따라서 "mycontent-left"클래스에 CSS를 추가하여 구분선을 만들 수 있습니다.

.mycontent-left {
  border-right: 1px dashed #333;
}

1
위의 문제는 테두리가 첫 번째 범위에서 내 콘텐츠에 붙어 있다는 것입니다. 첫 번째 기간에는 형태가 있고 테두리가 내용물을 껴안고 있습니다. 어떻게 분리 할 수 ​​있습니까?
murtaza52

단순-content-left 및 content-right DIVS에 약간의 패딩을 추가합니다.
Billy Moat 2013 년

10
오른쪽의 내용이 <span>왼쪽보다 높으면 문제가 발생합니다 . 이 경우 수직선이보기 흉할 것입니다.
lvarayut 2014-06-18

열의 높이가 다른 min-height: 100%; height: 100%;경우 컨테이너의 CSS divdiv각 열을 포함 하는 s를 설정하여 줄을 끝까지 실행할 수 있습니다 .
raul

@raul flexbox를 사용하는 경우에만 작동한다고 생각합니다. col-*div에서 수레를 사용하는 경우 작동하지 않습니다.
Jacob Stamm

30

.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>


1
'+'선택기를 사용하면 첫 번째 및 마지막 하위 클래스가 필요하지 않습니다..row.vertical-divider div[class^="col-"] + div[class^="col-"] { text-align: center; padding-bottom: 100px; margin-bottom: -100px; border-left: 3px solid #0396D1; }
Vasyl

1
이 솔루션이 최고입니다
Wai Yan Hein

21

Bootstrap 4에는 border-right사용할 수 있는 유틸리티 클래스 가 있습니다.

예를 들어 다음과 같이 할 수 있습니다.

<div class="row">
  <div class="col-6 border-right"></div>
  <div class="col-6"></div>
</div>

14

여기에 제가 한동안 사용해온 또 다른 옵션이 있습니다. 주로 시각적으로 분리 된 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 닫기 이전마지막 요소를 제외한 모든 요소 와 일치하고 오른쪽 테두리를 추가합니다.

.col-md-border + .col-md-border이 두 개가 서로 옆에 있고 왼쪽 테두리와 -1px 음의 여백을 추가하는 경우 동일한 클래스의 두 번째 div를 찾습니다. 음수 여백은 어떤 열의 높이가 더 크고 구분 기호가 가장 높은 열과 같은 높이인지 더 이상 중요하지 않은 이유입니다.

또한 몇 가지 문제가 있습니다 ...

  1. 영리하거나 게으르고 동일한 행 요소 내에서 / 클래스 col-XX-X와 함께 클래스를 사용하려고 할 때 .hidden-XXvisible-XX
  2. 열이 많고 완벽한 픽셀이 필요할 때. n-1 열을 왼쪽으로 1px 이동하기 때문에.

... 그러나 다른 한편으로는 반응이 빠르고 간단한 html에서 잘 작동하며 모든 부트 스트랩 화면 크기에 대해 이러한 클래스를 쉽게 만들 수 있습니다.


8

한 열의 내용이 더 클 때 구분선이 너무 짧아서보기 흉한 부분을 수정하려면 모든 열에 테두리를 추가합니다. 포지션 차이를 보상하기 위해 다른 모든 열에 마이너스 마진을 제공합니다.

예를 들어, 세 가지 열 클래스 :

.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를 사용해야합니다.


이 솔루션이 마음에 들지만 3 개 이상의 컬럼 용으로 만 설계되었습니다. 두 개만 원하면 어떨까요? 중간 ".borders"div는 여백을 조정할 수 없습니다.
Matthew Zackschewski

6

2018 년에도 최상의 솔루션을 찾고 있다면, 하나 이상의 무료 가상 요소 (:: 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;
}

이 클래스가있는 모든 행은 이제 포함 된 모든 열 사이에 세로 구분선이 있습니다.

이 예제 에서 이것이 어떻게 작동하는지 볼 수 있습니다 .


1
생락 -에 [클래스 * = 'col-'] "대장균"클래스 스트랩 4 호환성 ([클래스 * = 'COL']까지)
트레이 Dibler

"디스플레이로 인해 속성이 무시됩니다. '디스플레이 : 인라인'을 사용하면 너비, 높이, 여백-상단, 여백-하단 및 부동 속성이 효과가 없습니다 .css"
Shuja Ahmed

5

두 열 사이에 세로 구분선을 사용하려면 다음을 추가하기 만하면됩니다.

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에서 테스트 됨


4

나는 그것을 테스트했다. 잘 작동합니다.

.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>

1
필요에 따라 완벽하게 작품도 당신이 한 일을 설명 했어야합니다.
Atik M.

완벽하고 완벽하게 반응합니다. 열이 작은 화면에 쌓여도 원하는대로 테두리가 사라집니다! 아주 쉬운 해결책, 감사합니다! :)
rmcsharry

1
작동하지 않는, 올바른 분리는 여전히 여기 봐 가지고 : jsfiddle.net/k4uavbtz
예브게니 Afanasyev

3 개 이상의 열에서 작동합니다. 두 개의 열만 사용하는 경우 구분선은 왼쪽 열의 높이를 따릅니다. 따라서 오른쪽 열이 더 길면 테두리가 충분히 크지 않습니다.
Matthew Zackschewski

4

으로 부트 스트랩 4 당신이 사용할 수있는 테두리를 다른 CSS를 작성 방지.

테두리 왼쪽

내용과 테두리 사이에 공간을 원하면 padding 을 사용할 수 있습니다 . (이 예제에서는 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>


2

테두리를 보려면 전체 페이지에서 열어야합니다!

CSS에 미디어 너비 절을 추가하여 모바일 친화적 인 측면에 불쾌한 경계가 없도록했습니다. 도움이 되었기를 바랍니다! 가장 긴 열의 길이로 크기가 조정됩니다. .col-md-4 및 .col-md-6에서 테스트되었으며 내 가정은 나머지와 호환됩니다. 그래도 보장은 없습니다.

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>


2

열 공간이 있다고 가정하면 이것은 옵션입니다. 필요한 항목에 따라 컬럼의 균형을 재조정하십시오.

<div class="col-1">
    <div class="col-6 vhr">
    </div>
</div>
.vhr{
  border-right: 1px solid #333;
  height:100%;
}

0

내가 한 일은 각 범위 사이의 거터를 제거한 다음 왼쪽 범위에 왼쪽 테두리를 그리고 오른쪽 범위에 오른쪽 테두리를 그려서 테두리가 겹치는 방식으로 단일 선을 제공했습니다. 이렇게하면 보이는 선이 테두리 중 하나가됩니다.

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>

이것을 시도해보십시오.


1
두 div의 높이가 같지 않은 경우 추악합니다.
Alain Tiemblo

-2

이것을 사용하십시오, 100 % 보장 :-

vr {
  margin-left: 20px;
  margin-right: 20px;
  height: 50px;
  border: 0;
  border-left: 1px solid #cccccc;
  display: inline-block;
  vertical-align: bottom;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.