부트 스트랩을 사용하고 있습니다. 세 개의 기둥을 모두 같은 높이로 만들려면 어떻게해야합니까?
다음은 문제의 스크린 샷입니다. 파란색과 빨간색 열이 노란색 열과 같은 높이가 되길 원합니다.
코드는 다음과 같습니다.
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container-fluid">
<div class="row">
<div class="col-xs-4 panel" style="background-color: red">
some content
</div>
<div class="col-xs-4 panel" style="background-color: yellow">
catz
<img width="100" height="100" src="https://lorempixel.com/100/100/cats/">
</div>
<div class="col-xs-4 panel" style="background-color: blue">
some more content
</div>
</div>
</div>
답변
부트 스트랩 4를 사용하는 솔루션 4
Bootstrap 4는 Flexbox를 사용하므로 추가 CSS가 필요 없습니다.
<div class="container">
<div class="row ">
<div class="col-md-4" style="background-color: red">
some content
</div>
<div class="col-md-4" style="background-color: yellow">
catz
<img width="100" height="100" src="https://placekitten.com/100/100/">
</div>
<div class="col-md-4" style="background-color: green">
some more content
</div>
</div>
</div>
음수 여백을 사용하는 솔루션 1 (응답 성이 깨지지 않음)
.row{
overflow: hidden;
}
[class*="col-"]{
margin-bottom: -99999px;
padding-bottom: 99999px;
}
테이블을 사용하는 솔루션 2
.row {
display: table;
}
[class*="col-"] {
float: none;
display: table-cell;
vertical-align: top;
}
flex를 사용한 솔루션 3 은 2015 년 8 월에 추가되었습니다.이 솔루션 전에는 의견이 게시되지 않았습니다.
.row {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
flex-wrap: wrap;
}
.row > [class*='col-'] {
display: flex;
flex-direction: column;
}
답변
2020 업데이트
CSS flexbox를 사용 하는 Bootstap 3.x에 대한 최선의 접근 방식 (최소 CSS 필요)
.equal {
display: flex;
display: -webkit-flex;
flex-wrap: wrap;
}
특정 중단 점에 동일한 높이의 플렉스 박스 만 적용하려면 (반응 형) 미디어 쿼리를 사용하십시오. 예를 들어 다음은 sm
(768px) 이상입니다.
@media (min-width: 768px) {
.row.equal {
display: flex;
flex-wrap: wrap;
}
}
이 솔루션은 여러 행 (열 줄 바꿈)에도 잘 작동합니다.
https://www.bootply.com/gCEXzPMehZ
다른 해결 방법
이러한 옵션은 다른 사람들이 권장하지만 반응 형 디자인 에는 적합하지 않습니다 . 이들은 열 줄 바꿈이없는 간단한 단일 행 레이아웃에만 작동합니다.
2) display : table-cell 사용 (이 솔루션은 반응 형 그리드에도 영향을 미치므로 @media 쿼리는 table
열이 세로로 쌓이기 전에 더 넓은 화면 에만 표시하는 데 사용할 수 있음 )
부트 스트랩 4
Flexbox는 이제 Bootstrap 4에서 기본적으로 사용되므로 추가 CSS가 동일한 높이 열을 만들 필요가 없습니다 : http://www.codeply.com/go/IJYRI4LPwU
예:
<div class="container">
<div class="row">
<div class="col-md-6"></div>
<div class="col-md-6"></div>
</div>
</div>
답변
자바 스크립트가 필요하지 않습니다. 다음 과 같이 .row-eq-height
기존 클래스 를 추가하십시오 .row
.
<div class="row row-eq-height">
<div class="col-xs-12 col-sm-4 panel" style="background-color: red">
some content
</div>
<div class="col-xs-6 col-sm-4 panel" style="background-color: yellow">
kittenz
<img src="http://placekitten.com/100/100">
</div>
<div class="col-xs-6 col-sm-4 panel" style="background-color: blue">
some more content
</div>
</div>
팁 : 행에 열이 12 개를 초과하면 부트 스트랩 그리드가 줄 바꿈에 실패합니다. 따라서 div.row.row-eq-height
12 열마다 새로운 것을 추가하십시오 .
팁 : 추가해야 할 수도 있습니다
<link rel="stylesheet" href="http://getbootstrap.com.vn/examples/equal-height-columns/equal-height-columns.css" />
당신의 HTML에
답변
귀하의 질문에 대답하기 위해 접두사 CSS 가 있는 전체 응답 데모를 볼 수 있습니다 .
/* Using col-xs media query breakpoint but you can change 481 to 768 to only apply to col-sm and above if you'd like*/
@media only screen and (min-width : 481px) {
.flex-row {
display: flex;
flex-wrap: wrap;
}
.flex-row > [class*='col-'] {
display: flex;
flex-direction: column;
}
.flex-row.row:after,
.flex-row.row:before {
display: flex;
}
}
위의 스크린 샷과 같이 플렉스 열 내에서 썸네일 컨텐츠 플렉스에 대한 지원을 추가하려면 다음을 추가하십시오 … 패널을 사용 하여이 작업을 수행 할 수 있습니다.
.flex-row .thumbnail,
.flex-row .caption {
display: flex;
flex: 1 0 auto;
flex-direction: column;
}
.flex-text {
flex-grow: 1;
}
.flex-row img {
width: 100%;
}
flexbox는 IE9 이하에서 작동하지 않지만 Javascript 그리드 와 같은 조건부 태그를 폴리 필로 사용하여 대체를 사용하여 데모를 사용할 수 있습니다 .
<!--[if lte IE 9]>
<![endif]-->
허용 된 답변의 다른 두 가지 예는 … 테이블 데모는 괜찮은 아이디어이지만 잘못 구현되고 있습니다. 부트 스트랩 열 클래스에 CSS를 적용하면 그리드 프레임 워크가 완전히 손상됩니다. [class*='col-']
너비가 정의 된 테이블 스타일은 1과 2에 대해 사용자 정의 선택기를 사용해야합니다 . 높이와 너비가 같은 열을 원할 경우에만이 방법을 사용해야합니다. 다른 레이아웃 용이 아니며 반응이 없습니다. 그러나 모바일 디스플레이에서 대체 할 수 있습니다 …
<div class="table-row-equal">
<div class="thumbnail">
Content...
</div>
<div class="thumbnail">
Content...
</div>
</div>
@media only screen and (min-width : 480px){
.table-row-equal {
display: table;
width: 100%;
table-layout: fixed;
border-spacing: 30px 0px;
word-wrap: break-word;
}
.table-row-equal .thumbnail {
float: none;
display: table-cell;
vertical-align: top;
width: 1%;
}
}
마지막으로, 하나의 실제 레이아웃 버전을 구현하는 승인 된 답변의 첫 번째 데모는 일부 상황에서는 적합하지만 부트 스트랩 열에는 적합하지 않습니다. 그 이유는 모든 열이 컨테이너 높이로 확장되기 때문입니다. 따라서 열이 옆의 요소가 아닌 전체 컨테이너로 확장되므로 응답 성이 손상됩니다. 이 방법을 사용하면 더 이상 행에 아래쪽 여백을 적용 할 수 없으며 앵커 태그로 스크롤하는 등 다른 문제가 발생할 수 있습니다.
전체 코드는 flexbox 코드를 자동으로 접두어로 추가 한 Codepen을 참조하십시오.
답변
하나의 행만 표시하므로 유스 케이스가 해당 행으로 제한 될 수 있습니다. 여러 행이있는 경우이 플러그인 -github Javascript-grids- 가 완벽하게 작동합니다! 각 패널을 가장 높은 패널로 확장하여 해당 행에서 가장 높은 패널을 기준으로 각 행에 다른 높이를 지정할 수 있습니다. jquery 솔루션 대 CSS이지만 대안 접근법으로 권장하고 싶었습니다.
답변
모든 브라우저에서이 작업을 수행하려면 javascript를 사용하십시오.
$( document ).ready(function() {
var heights = $(".panel").map(function() {
return $(this).height();
}).get(),
maxHeight = Math.max.apply(null, heights);
$(".panel").height(maxHeight);
});
답변
이 스레드와 다른 페이지에서 제안한 것들을 많이 시도했지만 모든 브라우저에서 100 % 작동하지는 않았습니다.
그래서 나는 꽤 많은 시간을 실험하고 이것을 생각해 냈습니다.
1 개의 클래스 만 있는 flexbox 를 사용하여 Bootstrap Equal Height 열 을 위한 완벽한 솔루션 . 이것은 모든 주요 브라우저 IE10 +에서 작동합니다.
CSS :
.row.equal-cols {
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
}
.row.equal-cols:before,
.row.equal-cols:after {
display: block;
}
.row.equal-cols > [class*='col-'] {
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
}
.row.equal-cols > [class*='col-'] > * {
-webkit-flex: 1 1 auto;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
}
HTML :
<div class="container">
<div class="row equal-cols">
<div class="col-sm-4">
<div class="content"></div>
</div>
<div class="col-sm-4">
<div class="content"></div>
</div>
<div class="col-sm-4">
<div class="content"></div>
</div>
</div>
</div>
더 많은 버전의 IE를 지원하려면 예를 들어 https://github.com/liabru/jquery-match-height를 사용 하고의 모든 하위 열을 타겟팅 할 수 있습니다 .equal-cols
. 이처럼 :
// Create a check for IE9 (or any other specific browser).
if(IE9) {
$(".row.equal-cols > [class*='col-']").matchHeight();
}
이 폴리 필이 없으면 열은 일반적인 부트 스트랩 열처럼 작동하므로 대체로 좋습니다.