博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
圣杯布局、双飞翼布局与flex布局实现
阅读量:7143 次
发布时间:2019-06-28

本文共 5180 字,大约阅读时间需要 17 分钟。

圣杯布局与双飞翼布局的前半部分是相同的:

1)middle、left、right三栏全部浮动(float:left);

2)middle中间栏放在文档流前优先渲染(因为浮动元素会把块级元素的位置空出来);

3)footer元素中要用clear:both;清除浮动;

4)middle中间栏的宽度设为100%;left的margin-left应为-100%;right的margin-left应为-right元素的宽;

此时中间部分(middle)的内容会被左右遮挡,解决这个问题,圣杯布局与双飞翼布局的方法是不同的:

圣杯布局:

1)将left、middle、right放置在一个div中(class='bd');

2)将div的padding-left设为left元素的宽,padding-right设为right元素的宽;

2)此时left、right的位置也会发生改变,需要将其设为相对位置(position:relative),通过设置left或right属性移动元素;

双飞翼布局:

1)将middle中的内容放置在一个div(class='mi_ct')中;

2)将这个div的margin-left设置为left元素的宽,margin-right设置为right元素的宽;

一、圣杯布局

1 
header
2
3
4
middle
5
left
6
right
7
8
1     /*header头部*/ 2      .hd { 3              background-color: #666; 4              /*内容居中*/ 5              display: flex; 6              justify-content: center; 7              align-items: center; 8              height: 50px; 9          }10          /*footer尾部*/11          .footer {12              background-color: #666;13              display: flex;14              justify-content: center;15              align-items: center;16              height: 30px;    17              /*清除浮动*/18              clear: both;19          }20          /*放置left、right、middle*/21          .bd {22              padding: 0 100px 0 200px;23          }24          /*middle部分*/25          .mi {26              background-color: red;27              float: left;28              width: 100%;29              height: 100px;30          }31          /*left部分*/32          .le {33              background-color: green;34              float: left;35              margin-left: -100%;36              width: 200px;37              position: relative;38              left: -200px;39              height: 100px;40          }41          /*right部分*/42          .ri {43              background-color: yellow;44              float: left;45              margin-left: -100px;46              width: 100px;47              position: relative;48              right: -100px;49             height: 100px;50          }

二、双飞翼布局

1 
header
2
3
4
middle
5
left
6
right
7
8
1     .hd { 2             background-color: #666; 3             display: flex; 4             justify-content: center; 5             align-items: center; 6             height: 50px; 7         } 8         .footer { 9             background-color: #666;10             display: flex;11             justify-content: center;12             align-items: center;13             height: 30px;14             clear: both;15         }16         .mi {17             background-color: red;18             float: left;19             width: 100%;20             height: 100px;21         }22         /*放置内容部分*/23         .mi_ct {24             margin-left: 200px;25             margin-right: 100px;26         }27         .le {28             background-color: green;29             float: left;30             margin-left: -100%;31             width: 200px;32             height: 100px;33         }34         .ri {35             background-color: yellow;36             float: left;37             margin-left: -100px;38             width: 100px;39             height: 100px;40         }

三、flex布局实现

1) 需在外部用一个div(class='contan')放置所有内容,display设为flex,并且可换行flex-wrap:wrap;

2)头部、尾部宽度为100%,将中间部分(bd)挤到中间;

3)中间(bd)宽度也为100%,display设为flex,使其中内容为三栏布局(left、right宽度固定,中间middle自适应(flex:1));

1 
2
header
3
4
left
5
6
middle
7
right
8
9
10
1     .contain { 2             display: flex; 3             flex-wrap: wrap; 4             height: 300px; 5         } 6         .hd { 7             background-color: #666; 8             width: 100%; 9             height: 15%;10             display: flex;11             justify-content: center;12             align-items: center;13         }14         .footer {15             background-color: #666;16             width: 100%;17             height: 10%;18             display: flex;19             justify-content: center;20             align-items: center;21         }22         .bd {23             display: flex;24             width: 100%;25             height: 75%;26         }27         .mi {28             background-color: red;29             flex: 1;30             display: flex;31             justify-content: center;32             align-items: center;33         }34         .le {35             background-color: green;36             width: 200px;37             display: flex;38             justify-content: flex-start;39             align-items: center;40         }41         .ri {42             background-color: yellow;43             width: 100px;44             display: flex;45             justify-content: flex-end;46             align-items: center;47         }

转载于:https://www.cnblogs.com/liyuemeng/p/10769290.html

你可能感兴趣的文章
服务提供商SD-WAN市场非常广阔
查看>>
阳光电源逆变器实现光伏电站无功电压控制试验成功
查看>>
长安镇着手布局5G网络 打造全国“智慧城市”建设新样板
查看>>
从云图计划看浪潮云野心
查看>>
雅虎关闭多个业务 CEO要下台?
查看>>
新区发力“互联网+”政务服务 云平台互联互通
查看>>
iPhone7 A10处理器性能竟这么强大 吊打骁龙820
查看>>
反DDoS安全公司Staminus遭网络攻击,敏感数据泄露
查看>>
揭秘基于注册表隐藏的无文件攻击
查看>>
保利协鑫宣布无偿转让成熟黑硅技术
查看>>
美国太阳能蓬勃,未来 5 年可望成长 3 倍
查看>>
RFID助力生产 流程透明和可靠控制
查看>>
简政放权:能源领域的下一步
查看>>
大数据人才培养之路该如何走
查看>>
IBM联手英伟达推出针对机器学习的新服务器
查看>>
云存储或许能解决医疗行业存储爆炸问题
查看>>
安防应用展空间广阔 视频监控份额大
查看>>
网络提速助推智能家居 智慧应用惠及千家
查看>>
Dropbox泄密事件仍在蔓延 一家成人网站被爆掉80万帐号密码
查看>>
2024年全球电缆市场有望突破千亿美元大关
查看>>