两栏布局,左边定宽200px,右边自适应。如何实现?
我的第一个反应就是:用flex伸缩盒呀,然后balabala...
说完之后,面试官说,还有没有别的方法?flex有些浏览器不支持
嗯...我愣了一下,平常遇到这种问题貌似都是这么写的...
别的方法?我又想了想。JS?对,JS肯定可以。
然后就说,可以用JS获取当前窗口宽度,然后减去200px就是右边的宽度了
面试官:嗯,这样的确可以,但是布局一般不要用JS,还有没有别的方法?CSS的
额,这下我完全愣住了好嘛,人也变得有些紧张。还要别的方法啊,什么方法呢???
哎呀妈呀,想不出来,肿么办...
然后面试官看了我半天,十分体谅的说,那我们进行下一个问题吧...
(以上面试官原话记不大请了,但是意思就是这样~)
回来后,经过百度,哇!原来方法如此之多~还如此简单~
下面就来总结一下~
一、两栏布局(左定宽,右自动)
1. float + margin
即固定宽度元素设置float属性为left,自适应元素设置margin属性,margin-left应>=定宽元素宽度。
举例:
HTML代码:
-
- 我是左栏
- 我是右栏
CSS代码
- html,body,div{
- margin: 0;
- padding: 0;
- }
- .wrap{
- margin: 10px;
- }
- .wrap_left{
- float: left;
- width: 200px;
- background-color: red;
- }
- .wrap_right{
- margin-left: 220px;
- background-color: green;
- }
运行代码复制代码保存代码提示:您可以先修改部分代码再运行!power by W3Cfuns.com
2.position + margin
即在父标签设置position属性为relative;子标签中定宽元素设置position属性为absolute;自适应元素设置margin属性,margin-left>=定宽元素宽度。
举例:
HTML代码
-
- 我是左栏
- 我是右栏
CSS代码
- html,body,div{
- margin: 0;
- padding: 0;
- }
- .wrap{
- margin: 10px;
- position: relative;
- }
- .wrap_left{
- position: absolute;
- width: 200px;
- background-color: red;
- }
- .wrap_right{
- margin-left: 220px;
- background-color: green;
- }
运行代码复制代码保存代码提示:您可以先修改部分代码再运行!power by W3Cfuns.com
3.float + 负margin
即给自适应宽度元素定义一个父标签,并设置float属性为left;width为100%;自适应宽度元素设置margin,margin-left应>=定宽元素宽度;
固定宽度元素设置margin-left属性为负值:-100%;
除此之外应注意HTML结构中应先写自适应元素,再写固定宽度元素。
举例:
HTML代码
- 我是右栏
-
- 我是左栏
CSS代码
- html,body,div{
- margin: 0;
- padding: 0;
- }
- .wrap{
- float: left;
- width: 100%;
- }
- .wrap .wrap_right{
- margin-left: 220px;
- background-color: green;
- }
- .wrap_left{
- float: left;
- width: 200px;
- margin-left: -100%;
- background-color: red;
- }
运行代码复制代码保存代码提示:您可以先修改部分代码再运行!power by W3Cfuns.com
注:使用的float属性,必要时清除一下浮动。
4.用table布局实现
来自评论里@qazxsw的方法:
运行代码复制代码保存代码提示:您可以先修改部分代码再运行!power by W3Cfuns.com
不过这个方法,一定要设置高度才可以~
5.触发BFC实现 —— 来自评论里柯南同学@15913127081的方法
关于BFC是什么、怎么触发BFC以及BFC可以用来做什么,大家可以看看这篇,前端精选文摘:BFC 神奇背后的原理(我会告诉你我也是才看的么~哈哈~)
实现方法,即为定宽元素设置float:left;自适应宽度元素设置可以触发BFC的属性。(可以触发BFC的属性?继续看上面那个链接!!)
示例:
HTML代码:
-
- 我是左栏
-
- 我是右栏
CSS代码:
- html,body,div{
- margin: 0;
- padding: 0;
- }
- .wrap_left{
- float: left;
- width: 200px;
- background-color: red;
- }
- .wrap_right{
- overflow: hidden;
- background-color: green;
- }
运行代码复制代码保存代码提示:您可以先修改部分代码再运行!power by W3Cfuns.com
前面有说到一般我都是用的flex伸缩盒,那也来说一下用flex怎么实现的吧
6.flex伸缩盒方法
即父标签设置display:flex属性,自适应元素设置flex-grow:1;
HTML代码
-
- 我是左栏
- 我是右栏
CSS代码
- html,body,div{
- margin: 0;
- padding: 0;
- }
- .wrap{
- display: flex;
- display: -webkit-flex;
- }
- .wrap_left{
- width: 200px;
- background-color: red;
- }
- .wrap_right{
- flex-grow:1;
- -webkit-flex-grow:1;
- background-color: green;
- }
运行代码复制代码保存代码提示:您可以先修改部分代码再运行!power by W3Cfuns.com
进阶
二、三栏布局
掌握了上面的方法,我们会发现制作一个三栏布局也是非常容易的。
下面我们在上面栗子的基础上,看看实现一个两侧定宽,中间自适应的三栏布局如何实现
1. float + margin(两侧定宽,中间自适应)
HTML代码:
-
- 我是左栏
-
- 我是右栏
-
- 我是中间栏
CSS代码:
- html,body,div{
- margin: 0;
- padding: 0;
- }
- .wrap_left{
- width: 200px;
- float: left;
- background-color: red;
- }
- .wrap_content{
- margin-left: 220px;
- margin-right: 220px;
- background-color: yellow;
- }
- .wrap_right{
- width: 200px;
- float: right;
- background-color: green;
- }
运行代码复制代码保存代码提示:您可以先修改部分代码再运行!power by W3Cfuns.com
2. position + margin(两侧定宽,中间自适应)
HTML代码:
- 我是左栏
-
- 我是右栏
-
- 我是中间栏
CSS代码
- html,body,div{
- margin: 0;
- padding: 0;
- }
- .wrap_left{
- width: 200px;
- position: absolute;
- background-color: red;
- left: 0;
- }
- .wrap_content{
- margin-left: 220px;
- margin-right: 220px;
- background-color: yellow;
- }
- .wrap_right{
- width: 200px;
- position: absolute;
- right: 0;
- background-color: green;
- }
运行代码复制代码保存代码提示:您可以先修改部分代码再运行!power by W3Cfuns.com
3.float + 负margin(两侧定宽,中间自适应)
HTML代码
- 我是中间栏
-
- 我是左栏
-
- 我是右栏
CSS代码
- html,body,div{
- margin: 0;
- padding: 0;
- }
- .wrap{
- float: left;;
- width: 100%;
- }
- .wrap_left{
- width: 200px;
- float: left;
- margin-left: -100%;
- background-color: red;
- }
- .wrap_content{
- margin-left: 220px;
- margin-right: 220px;
- background-color: yellow;
- }
- .wrap_right{
- width: 200px;
- float: left;
- margin-left: -200px;
- background-color: green;
- }
运行代码复制代码保存代码提示:您可以先修改部分代码再运行!power by W3Cfuns.com
4.table实现
运行代码复制代码保存代码提示:您可以先修改部分代码再运行!power by W3Cfuns.com
5.BFC方法
HTML代码
-
- 我是左栏
-
- 我是右栏
-
- 我是中间栏
CSS代码
- html,body,div{
- margin: 0;
- padding: 0;
- }
- .wrap_left{
- float: left;
- width: 200px;
- background-color: red;
- }
- .wrap_right{
- float: right;
- width: 200px;
- background-color: green;
- }
- .wrap_content{
- overflow: hidden;
- background-color: yellow;
- }
运行代码复制代码保存代码提示:您可以先修改部分代码再运行!power by W3Cfuns.com
注:HTML中先写定宽元素,再写自适应宽度元素。
6.flex伸缩盒
即父标签设置display:flex属性,自适应元素设置flex-grow:1;
HTML代码
-
- 我是左栏
- 我是中间栏
- 我是右栏
CSS代码
- html,body,div{
- margin: 0;
- padding: 0;
- }
- .wrap{
- display: flex;
- display: -webkit-flex;
- }
- .wrap_left{
- width: 200px;
- background-color: red;
- }
- .wrap_right{
- width: 200px;
- background-color: green;
- }
- .wrap_content{
- flex-grow:1;
- -webkit-flex-grow:1;
- background-color: yellow;
- }

공식 계정 웹 페이지 업데이트 캐시, 이것은 간단하고 간단하며 냄비를 마시기에 충분히 복잡합니다. 공식 계정 기사를 업데이트하기 위해 열심히 노력했지만 사용자는 여전히 기존 버전을 열었습니까? 이 기사에서는이 뒤에있는 비틀기와 회전을 살펴 보고이 문제를 우아하게 해결하는 방법을 살펴 보겠습니다. 읽은 후에는 다양한 캐싱 문제를 쉽게 처리 할 수있어 사용자가 항상 가장 신선한 콘텐츠를 경험할 수 있습니다. 기본 사항에 대해 먼저 이야기 해 봅시다. 액세스 속도를 향상시키기 위해 브라우저 또는 서버는 일부 정적 리소스 (예 : 그림, CSS, JS) 또는 페이지 컨텐츠를 저장합니다. 다음에 액세스 할 때 다시 다운로드하지 않고도 캐시에서 직접 검색 할 수 있으며 자연스럽게 빠릅니다. 그러나 이것은 또한 양날의 검입니다. 새 버전은 온라인입니다.

이 기사에서는 브라우저에서 직접 사용자 입력을 검증하기 위해 필요한, Pattern, Min, Max 및 Length 한계와 같은 HTML5 양식 검증 속성을 사용하는 것에 대해 설명합니다.

기사는 HTML5 크로스 브라우저 호환성을 보장하기위한 모범 사례에 대해 논의하고 기능 감지, 점진적 향상 및 테스트 방법에 중점을 둡니다.

이 기사는 CSS를 사용한 웹 페이지에 효율적인 PNG 테두리 추가를 보여줍니다. CSS는 JavaScript 또는 라이브러리에 비해 우수한 성능을 제공하며, 미묘하거나 눈에 띄는 효과를 위해 테두리 너비, 스타일 및 색상 조정 방법을 자세히 설명합니다.

이 기사는 HTML & LT; Datalist & GT에 대해 논의합니다. 자동 완성 제안을 제공하고, 사용자 경험을 향상시키고, 오류를 줄임으로써 양식을 향상시키는 요소. 문자 수 : 159

이 기사는 html5 & lt; time & gt; 시맨틱 날짜/시간 표현 요소. 인간이 읽을 수있는 텍스트와 함께 기계 가독성 (ISO 8601 형식)에 대한 DateTime 속성의 중요성을 강조하여 Accessibilit를 향상시킵니다.

이 기사는 HTML & lt; Progress & Gt에 대해 설명합니다. 요소, 그 목적, 스타일 및 & lt; meter & gt의 차이; 요소. 주요 초점은 & lt; progress & gt; 작업 완료 및 & lt; meter & gt; Stati의 경우

이 기사는 HTML & lt; meter & gt에 대해 설명합니다. 범위 내에 스칼라 또는 분수 값을 표시하는 데 사용되는 요소 및 웹 개발의 일반적인 응용 프로그램. & lt; meter & gt; & lt; Progress & Gt; 그리고 Ex


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
