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

트위터 부트 스트랩을 사용하고 있으며 두 개의 열 (span6)이있는 행이 있습니다. 두 범위 사이에 수직 구분선을 어떻게 만듭니 까?

고마워, Murtaza



답변

코드가 다음과 같은 경우 :

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


답변

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


답변

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

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

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


답변

여기에 제가 한동안 사용해온 또 다른 옵션이 있습니다. 주로 시각적으로 분리 된 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에서 잘 작동하며 모든 부트 스트랩 화면 크기에 대해 이러한 클래스를 쉽게 만들 수 있습니다.


답변

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

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

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

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

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


답변

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

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