CSS를 사용하여 3 div를 나란히 플로팅하는 방법은 무엇입니까?


270

2 div를 나란히 띄우는 방법을 알고 있습니다. 하나는 왼쪽으로, 다른 하나는 오른쪽으로 플로팅합니다.

그러나 3 div 로이 작업을 수행하는 방법 또는이 목적으로 테이블을 사용해야합니까?


3
정보가 충분하지 않습니다. 레이어는 얼마나 넓습니까?
Josh Stodola

8
나는 display: inline-block그 사람들을 떠 다니기보다는 너비가 전체 컨테이너 너비보다 작 으면 서로 옆에 있습니다.
Adam Waite

"display : table"을 사용하는 것이 좋습니다. 가장 유지 관리 가능하고 안정적인 솔루션입니다. 참조 stackoverflow.com/questions/14070787/...
존 헨켈

답변:


300

너비를 지정하고 float: left;예를 들어 보겠습니다.

<div style="width: 500px;">
 <div style="float: left; width: 200px;">Left Stuff</div>
 <div style="float: left; width: 100px;">Middle Stuff</div>
 <div style="float: left; width: 200px;">Right Stuff</div>
 <br style="clear: left;" />
</div>

6
페이지가 확장 될 때 모두 확장하려면 어떻게해야합니까?
CodyBugstein

31
@imray는 px 대신 %를 사용합니다
TehTris

9
<br style="clear: left;" />특히 해당 스타일과 함께 사용하는 이유를 자세히 설명해 주시겠습니까?
Mike de Klerk

2
@MikedeKlerk 부모가 쓰러지지 않도록 명확한 해결책입니다.
Angel Politis 2016

@Nick Craver가 설명했듯이 모든 요소에 float : left 속성을 제공해야 합니다. float 속성은 요소가 부모 컨테이너 의 왼쪽 또는 오른쪽을 따라 배치되는 방식을 지정하기 때문에 발생합니다 .
Nesha Zoric

130

현대적인 방법은 CSS flexbox 를 사용하는 것 입니다. 지원 테이블을 참조하십시오 .

.container {
  display: flex;
}
.container > div {
  flex: 1; /*grow*/
}
<div class="container">
  <div>Left div</div>
  <div>Middle div</div>  
  <div>Right div</div>
</div>

CSS 표를 사용할 수도 있습니다 ( 지원 표 참조) .

.container {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr; /* fraction*/
}
<div class="container">
  <div>Left div</div>
  <div>Middle div</div>  
  <div>Right div</div>
</div>


52

두 div의 경우와 같은 방법으로 세 번째 div도 왼쪽 또는 오른쪽으로 플로팅하십시오.

<style>
  .left{float:left; width:33%;}
</style>

<div class="left">...</div>
<div class="left">...</div>
<div class="left">...</div>

3
그러나 DIV는 블록 레벨 요소입니다. 그런 다음 어떻게 나란히 배치되고 다음 줄에는 표시되지 않습니다 (블록 수준 요소는 줄 바꿈으로 시작하고 끝남). 플로트에 다른 영향이 있습니까?
Ashwin

26

그들을 모두 떠내려 라

너비가 컨테이너 (다른 div 또는 창)에 모두 들어갈 수 있도록 지정해야합니다. 그렇지 않으면 줄 바꿈됩니다.


23
<br style="clear: left;" />

누군가가 거기에 게시 한 코드는 트릭을했습니다 !!! 컨테이너 DIV를 닫기 직전에 붙여 넣을 때 모든 후속 DIV가 상단에서 나란히 만든 DIV와 겹치지 않도록 도와줍니다!

<div>
<div class="left"></div>
<div class="left"></div>
...
...
<div class="left"></div>
<!--  then magic trick comes here  -->
<br style="clear: left;" />
</div>

타다 아 !! :)


16

3 개의 div를 모두 왼쪽으로 띄우십시오. 여기처럼 :

.first-div {
  width:370px;
  height:150px;
  float:left;
  background-color:pink;
}

.second-div {
  width:370px;
  height:150px;
  float:left;
  background-color:blue;
}

.third-div {
  width:370px;
  height:150px;
  float:left;
  background-color:purple;
}

6
요점은 내 대답이 가장 정확하고 새로운 사람이 인터넷 에서이 Q를 검색 할 때 가장 도움이 될 내 대답을 보게 될 것입니다.
Arwen

2
그럴 수도 있습니다. 그러나 설명이 부족합니다. 이 사이트에서는 다른 답변을 하나의 결합 된 더 나은 답변으로 병합하여 다른 답변을 복사해도됩니다. 당신은 당신을 편집하고 완료 할 수 있습니다. 그러나 신규 사용자에게는 몇 가지 제한 사항 (공개, 링크 수)이 있으므로 이전 질문과 답변 된 질문에 집중하지 않는 것이 좋습니다.
cfi

@ cfi 감사합니다, 나중에 참조 할 수 있도록 보관하겠습니다.
Arwen

10

나는 보통 첫 번째를 왼쪽으로, 두 번째를 오른쪽으로 띄웁니다. 세 번째는 자동으로 그들 사이에 정렬됩니다.

<div style="float: left;">Column 1</div>
<div style="float: right;">Column 3</div>
<div>Column 2</div>

5
브라우저 크기를 조정할 때 엉망이되지 않습니까?
CodyBugstein

10
<style>
.left-column
{
float:left;
width:30%;
background-color:red;
}
.right-column
{
float:right;
width:30%;
background-color:green;
}
.center-column
{
margin:auto;
width:30%;
background-color:blue;
}
</style>

<div id="container">
<section class="left-column">THIS IS COLUMN 1 LEFT</section>
<section class="right-column">THIS IS COLUMN 3 RIGHT</section>
<section class="center-column">THIS IS COLUMN 2 CENTER</section>
</div>

이 방법의 장점은 100 % 미만으로 유지하는 한 각 열 너비를 서로 독립적으로 설정할 수 있다는 것입니다. 3 x 30 %를 사용하는 경우 나머지 10 %는 열 사이의 5 % 분배기 공간으로 분할됩니다.



7

스타일에 "display : block"을 추가하십시오

<style>
   .left{
          display: block;
          float:left; 
          width:33%;
    }
</style>


<div class="left">...</div>
<div class="left">...</div>
<div class="left">...</div>

6

부트 스트랩 답변을 보지 못했기 때문에 그만한 가치가 있습니다.

<div class="col-xs-4">Left Div</div>
<div class="col-xs-4">Middle Div</div>
<div class="col-xs-4">Right Div</div>
<br style="clear: both;" />

부트 스트랩이 백분율을 알아 내도록하십시오. 만약을 대비하여 둘 다 지우고 싶습니다.


1
부트 스트랩 4에서는 행 클래스로 div의 모든 것을 래핑해야한다고 생각합니다.
John Grabauskas

5

이 방법을 선호합니다. 이전 버전의 IE에서는 플로트가 제대로 지원되지 않습니다 (정말? ...)

.column-left{ position:absolute; left: 0px; width: 33.3%; background: red; }
.column-right{position:absolute; left:66.6%; width: 33.3%; background: green; }
.column-center{ position:absolute; left:33.3%; width: 33.3%; background: yellow; }

업데이트 : 물론이 기술을 사용하고 절대 위치로 인해 컨테이너에 div를 묶고 사후 처리를 수행하여 if의 높이를 정의해야합니다.

jQuery(document).ready(function(){ 
    jQuery('.main').height( Math.max (
        jQuery('.column-left').height(),
        jQuery('.column‌​-right').height(),
        jQuery('.column-center').height())
    ); 
});

세계에서 가장 놀라운 것은 아니지만 적어도 오래된 IE에서는 깨지지 않습니다.


물론,이 기술을 사용하고 절대 위치로 인해 용기에 div를 묶고 다음과 같은 경우의 높이를 정의하기 위해 후 처리를 수행해야합니다.
jpbourbon

jQuery (문서) .ready (함수 () {jQuery ( '. main'). height (Math.max (jQuery ( '. column-left'). height (), jQuery ( '. column-right'). height) (), jQuery ( '. column-center'). height ()));}); 세계에서 가장 놀라운 것은 아니지만 적어도 오래된 IE에서는 깨지지 않습니다.
jpbourbon

4

그러나 Chrome에서 작동합니까?

각 div를 플로팅하고 행에 대해 clear; 둘 다 설정하십시오. 원하지 않으면 너비를 설정할 필요가 없습니다. Chrome 41, Firefox 37, IE 11에서 작동

JS 피들 클릭

HTML

<div class="stack">
    <div class="row">
        <div class="col">
            One
        </div>
        <div class="col">
            Two
        </div>
    </div>
        <div class="row">
        <div class="col">
            One
        </div>
        <div class="col">
            Two
        </div>
                    <div class="col">
            Three
        </div>
    </div>
</div>

CSS

.stack .row { 
clear:both;

}
.stack .row  .col    {
    float:left;
      border:1px solid;

}

3

다음은 <footer>요소 내부에서 이와 비슷한 작업을 수행하는 방법입니다 .

<div class="content-wrapper">

    <div style="float:left">
        <p>&copy; 2012 - @DateTime.Now.Year @Localization.ClientName</p>
    </div>

    <div style="float:right">
        <p>@Localization.DevelopedBy <a href="http://leniel.net" target="_blank">Leniel Macaferi</a></p>
    </div>

    <div style="text-align:center;">
        <p>☎ (24) 3347-3110 | (24) 8119-1085&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;✉ @Html.ActionLink(Localization.Contact, MVC.Home.ActionNames.Contact, MVC.Home.Name)</p>
    </div>

</div>

CSS :

.content-wrapper
{
    margin: 0 auto;
    max-width: 1216px;
}

2

@Leniel이 방법은 좋지만 모든 부동 div에 너비를 추가해야합니다. 나는 그것들을 같은 너비로 만들거나 고정 너비를 할당한다고 말합니다. 같은 것

.content-wrapper > div { width:33.3%; }

추가하지 않고 각 div에 클래스 이름을 지정할 수 있습니다 inline style . 이는 좋은 방법이 아닙니다.

다음 내용이이 div 아래에 남아 있지 않도록 clearfix div 또는 clear div를 사용해야합니다.

clearfix div 사용 방법에 대한 자세한 내용은 여기를 참조하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.