방법: 1. 두 상자 요소 모두에 "dislpay:inline-block"을 설정합니다. 2. 두 상자 요소를 모두 부동으로 설정합니다. 3. 왼쪽 고정 너비 요소는 부동이고 오른쪽 요소는 margin-left로 설정됩니다. 값이 고정 너비보다 큽니다. 4. 부동 + BFC 5. 절대 위치 지정 + 왼쪽 여백 등.
이 튜토리얼의 운영 환경: Windows7 시스템, CSS3&&HTML5 버전, Dell G3 컴퓨터.
2열 레이아웃에는 두 가지 유형이 있습니다. 하나는 왼쪽 너비가 고정되고 오른쪽은 적응형이고, 다른 하나는 두 열 모두 적응형입니다. 즉, 왼쪽의 너비는 자식 요소에 의해 결정되고 나머지 공간은 오른쪽에 채워집니다. CSS 면접 질문은 일반적인 테스트 질문이자 프런트 엔드 개발 엔지니어가 마스터해야 하는 기술이기도 합니다. 구현 방법은 아래에서 소개됩니다.
원리: 두 요소 모두 dislpay:inline-block으로 설정해야 합니다. html 공백의 영향을 없애려면 상위 요소의 글꼴 크기를 다음과 같이 설정해야 합니다. 0으로 설정하고 오른쪽은 0으로 설정해야 합니다. 적응형 요소의 너비는 calc 함수를 사용하여 계산됩니다. 두 요소의 높이가 다른 경우 요소에 대해 수직 정렬:상단 조정을 설정할 수 있습니다.
단점: 상위 요소의 글꼴 크기가 0으로 설정되어 있으므로 하위 요소의 텍스트가 표시되지 않습니다.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> *{ padding: 0; margin: 0; } .box{ height: 600px; width: 100%; font-size:0; } .left{ display: inline-block; width: 100px; height: 200px; background-color: red; vertical-align: top; } .right{ display: inline-block; width: calc(100% - 100px); height: 400px; background-color: blue; vertical-align: top; } </style> </head> <body> <div class="box"> <div class="left"> <span>1234</span> </div> <div class="right"> <span>1234</span> </div> </div> </body> </html>
원리: 두 요소 float로 설정되어 있고 오른쪽이 float로 설정됨 calc 함수를 사용하여 적응형 요소의 너비 계산
단점: 상위 요소에서 float를 지워야 함
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> *{ padding: 0; margin: 0; } .box{ height: 600px; width: 100%; } .left{ float: left; width: 100px; height: 200px; background-color: red; } .right{ float: left; width: calc(100% - 100px); height: 400px; background-color: blue; } </style> </head> <body> <div class="box"> <div class="left"> <span> 123adadadddddddddddddddddddddddddddddddddddddddd </span> </div> <div class="right"></div> </div> </body> </html>
원리: 왼쪽의 고정 너비 요소는 부동이고 오른쪽의 적응형 요소는 여백으로 설정됩니다. -left 값은 고정 너비 요소의 너비보다 클 수 있습니다
단점: 상위 요소는 float
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> *{ padding: 0; margin: 0; } .box{ height: 600px; width: 100%; } .left{ float: left; width: 100px; height: 200px; background-color: red; } .right{ margin-left: 100px; height: 400px; background-color: blue; } </style> </head> <body> <div class="box"> <div class="left"> <p>1234</p> </div> <div class="right"> <p>1234</p> </div> </div> </body> </html>
원칙: 상위 요소는 오버플로를 설정합니다. 숨겨진, 왼쪽 고정 너비 요소는 부동하고 오른쪽 적응 요소는 설정됩니다. Overflow:auto BFC 생성
단점: 왼쪽 요소의 내용이 설정된 너비를 초과하면 오른쪽 요소와 겹칩니다
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> *{ padding: 0; margin: 0; } .box{ height: 600px; width: 100%; overflow: hidden; } .left{ float: left; width: 100px; height: 200px; background-color: red; } .right{ overflow: auto; height: 400px; background-color: blue; } </style> </head> <body> <div class="box"> <div class="left">111111111111111111111111</div> <div class="right">111111111111111111111111111111111111111111111</div> </div> <div class="right"></div> </body> </html>
원리: 상위 요소는 상대적 위치에 있고 왼쪽 요소는 절대 위치에 있으며 오른쪽 적응 요소는 margin-left 값을 고정 너비 요소의 너비보다 크게 설정합니다.
단점: 상위 요소가 상대 요소로 설정됩니다. positioning
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> *{ padding: 0; margin: 0; } .box{ height: 600px; width: 100%; position: relative; } .left{ position: absolute; width: 100px; height: 200px; background-color: red; } .right{ margin-left: 100px; height: 400px; background-color: blue; } </style> </head> <body> <div class="box"> <div class="left"></div> <div class="right"></div> </div> </body> </html>
원리: 상위 요소 세트 디스플레이: 플렉스, 적응형 요소 세트 플렉스: 1
단점: 호환성 문제가 있으며 IE10 이하에서는 지원되지 않습니다
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> *{ padding: 0; margin: 0; } .box{ height: 600px; width: 100%; display: flex; } .left{ width: 100px; height: 200px; background-color: red; } .right{ flex: 1; height: 400px; background-color: blue; } </style> </head> <body> <div class="box"> <div class="left"></div> <div class="right"></div> </div> </body> </html>
엄밀히 말하면 두 요소가 모두 적응형이라는 의미는 아니며, 위의 고정 너비가 하위 요소에 의해 늘어나도록 변경된 것뿐입니다
왼쪽 요소의 너비가 설정되지 않고 하위 요소에 의해 늘어납니다.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> .parent{ display: table; width: 100%; } .box{ display: table-cell; width: 0.1%; } .left{ margin-right: 20px; background-color: red; height: 200px; } .right{ display: table-cell; background-color: blue; height: 300px; } </style> </head> <body> <div class="parent"> <div class="box"> <div class="left">126545453dddddddd453453453</div> </div> <div class="right">12121</div> </div> </body> </html>
(동영상 공유 학습: css 동영상 튜토리얼)
위 내용은 CSS에서 두 개의 열 레이아웃을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!