关于圣杯布局理解与疑问?
<!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 份
- 解答问题 36712 个
从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星