关于圣杯布局理解与疑问?
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>圣杯布局</title> <style type="text/css"> .header,.footer{ width: 100%; height: 100px; font-size: 20px; line-height: 100px; text-align: center; background-color: #eee; } .main{ min-height: 500px; background-color: green; padding: 0 220px 0 200px; } .middle,.left,.right{ float: left; position: relative; min-height: 500px; } .middle{ width: 30%; background-color: #ddd; } .left{ margin-left: -30%; width: 200px; left: -200px; background-color: red; } .right{ width: 220px; background-color: blue; /*margin-left: -220px; right: -220px;*/ /*margin-right: -220px;*/ } </style> </head> <body> <div class="header">这是头部</div> <div class="main"> <div class="middle">这是中间部分,最先渲染</div> <div class="left">左边</div> <div class="right">右边</div> </div> <div class="footer">这是尾部</div> </body> </html>
分析:
1.假设我们给中间的middle的宽度不设置为100%,而是设置为30%,当main的空间足够的时候,三个都使用了flat:left;会一行依次排列
(注意:main的实际宽度为出去两边padding的宽度)如图
2.当我给left使用了margin-left:-30%;也就是middle的宽度以后,出现以下布局:
left部分向左移动middle的宽度,到达middle的最左侧,与最左侧对齐
注意:此时的right并不是跟随left一起移动,而是紧挨着middle部分,与middle相邻
3.由此可得:如果此时middle的宽度是100%的话,
left部分再使用left:-200px;刚好填充main左侧的padding部分
4.而right部分,使用 margin-right:-220px;即刚好可以填充mian右侧的padding部分
对于方法2:margin-left:-220px; 这里使用这样仅仅是为了使right部分在mian空间不够的情况下,从下面移动到上面middle的右侧,与middle的最右侧对齐
然后再使用 right:-220px;向右移动填充mian的右padding
【注意:如果mian空间足够的话,实际上是没移动的!】
不知道这样理解对不对:
疑问:按html布局的话,right的左侧应该是left的,为什么left使用了margin-left:-30%;之后,right紧邻着middle,而此时的margin也是相对middle的
正在回答 回答被采纳积分+1
- 参与学习 人
- 提交作业 11218 份
- 解答问题 36713 个
从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星