css布局1:左右宽度固定中间自适应html布局解决方案(同一侧宽度固定,另一侧自适应)
Posted cui-ting
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了css布局1:左右宽度固定中间自适应html布局解决方案(同一侧宽度固定,另一侧自适应)相关的知识,希望对你有一定的参考价值。
https://www.jb51.net/web/639884.html
本文介绍了详解左右宽度固定中间自适应html布局解决方案,分享给大家,具体如下:
a.使用浮动布局
html结构如下(为什么中间的网格宽度显示的和实际的不一样?怎么造成的;解决方法就是让中间的非浮动元素可以看到两边的浮动元素,例如为.center加overflow:hidden)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
< div class = "box" > < div class = "left" >left</ div > < div class = "right" >right</ div > < div class = "center" >center</ div > </ div > //此处注意要先渲染左、右浮动的元素才到中间的元素。元素浮动后剩余兄弟块级元素会占满父元素的宽度 < style > .box height:200px; width:800px;
.left float:left; width:300px;
.right float:right; width:300px;
</ style > |
b.使用固定定位
html结构如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
< div class = "box" > < div class = "left" >left</ div > < div class = "right" >right</ div > < div class = "center" >center</ div > </ div > //和浮动布局同理,先渲染左右元素,使其定位在父元素的左右两端,剩余的中间元素占满父元素剩余宽度。 < style > .box position: relative;
.left position: absolute; width: 100px; left: 0;
.right width:100px; position: absolute; right: 0;
.center margin: 0 100px; background: red;
</ style > |
c.表格布局
将父元素display:table,子元素display:table-cell,会将它变为行内块。
这种布局方式的优点是兼容性好。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
< div class = "box" > < div class = "left" > left </ div > < div class = "center" > center </ div > < div class = "right" > right </ div > </ div > < style > .box display: table; width: 100%;
.left display: table-cell; width: 100px; left: 0;
.right width:100px; display: table-cell;
.center width: 100%; background: red;
</ style > |
d.弹性布局
父元素display:flex子元素会全部并列在一排。
子元素中flex:n的宽度会将父元素的宽度/n
如flex:1,宽度就等于父元素高度。
弹性布局的缺点是兼容性不高,目前IE浏览器无法使用弹性布局
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
< div class = "box" > < div class = "left" > left </ div > < div class = "center" > center </ div > < div class = "right" > right </ div > </ div > < style > .box display: flex; width: 100%;
.left width: 100px; left: 0;
.right width:100px;
.center flex:1;
</ style > |
e.网格布局
父元素display:grid;
grid-templatecolumns:100px auto 100px;
依次为第一个子元素宽100px 第二个自适应 第三个100px;
网格布局的优点是极为简便,直接通过父元素样式决定,缺点是兼容性不高。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
< div class = "box" > < div class = "left" > left </ div > < div class = "center" > center </ div > < div class = "right" > right </ div > </ div > < style > .box display: grid; grid-template-columns: 100px auto 100px; width: 100%;
</ style > |
以上是关于css布局1:左右宽度固定中间自适应html布局解决方案(同一侧宽度固定,另一侧自适应)的主要内容,如果未能解决你的问题,请参考以下文章
《web前端笔记30》css三栏布局、左右两栏宽度固定,中间自适应
记一道css面试题 : 三栏布局两边宽度固定,中间宽度自适应,并且布局随屏幕大小改变。