我试图实现以下布局:
我的问题是#3,实际的内容文本区域。由于可调整大小的图像,我无法使用固定位置,但是我不能通过在图像DIV中放置溢出:auto的内容DIV来使用与#3相关的位置 - 因为那时图像也开始滚动。我认为由于图像尺寸的不同,我必须将内容文本作为图像横幅的子项,但我无法按照我想要的方式获取它。
HTML:
<div id="nav">
... navigation banner ...
</div>
<div id="topimg">
<img src="images/01-shop.jpg" width="100%">
<div id="content">
... text ...
</div>
</div>
<div id="footer">
... footer content ...
</div>
CSS:
#nav {
position: fixed;
height: 47px;
width: 90%;
margin-left:5%;
margin-right:5%;
}
#topimg {
position: fixed;
width: 80%;
margin-left:10%;
margin-right:10%;
top: 90px;
}
#content {
position: ???
width: 80%;
margin-left:10%;
margin-right:10%;
overflow: auto;
}
#footer {
position: fixed;
height: 27px;
width: 90%;
bottom:10px;
margin-left:5%;
margin-right:5%;
}
有没有人有好的建议?
提前谢谢!
答案 0 :(得分:0)
这是你正在寻找的吗? - FIDDLE
我不确定你是否真的需要做很多position: fixed
的直接布局。
(我添加了边框只是为了让事情更容易看到)
CSS
#nav {
height: 47px;
width: 90%;
margin-left:5%;
margin-right:5%;
border: 1px solid black;
}
#topimg {
width: 80%;
margin-left:10%;
margin-right:10%;
margin-top: 20px;
border: 1px solid red;
}
#content {
width: 80%;
margin-left:10%;
margin-right:10%;
overflow: auto;
}
#footer {
position: fixed;
bottom:10px;
height: 27px;
width: 90%;
margin-left:5%;
margin-right:5%;
border: 1px solid blue;
}
答案 1 :(得分:0)
工作小提琴:http://jsfiddle.net/jkkhbku8/5/
如果我理解你的问题,这应该是可以实现的。这里有一点点,所以我会尽力解释。
首先,您需要在标题下方添加一个psuedo元素,以填充标题和图像横幅之间的空白。这是在文本向上滚动时。它应与文档正文颜色相同。
接下来,由于图像横幅div固定在位,但您希望它响应浏览器宽度,您需要将其设置为0px的高度并使用填充使其高度为其宽度的百分比。此填充将基于您的图像比例,但可能需要一些调整,因为持有人每侧设置10%的折扣。对于16:9的图像,通常使用padding-bottom: 56.25%
,但基于10%的左右边距,理想的填充底部为45%。你可以为你的形象调整一下。
#topimg {
height: 0px;
padding-bottom: 45%;
}
如果您不知道图像的比例,那么您需要使用一些JS来找出它并设置填充。
对于内容,您需要首先使用margin-top: 90px
(标题的高度)将其向下推,然后使用padding-top: 45%
(#topimg的高度)将其填充。这将确保它在调整大小时隐藏在图像div之下。您还需要在其上放置一个边距底部,以便在滚动时将其从页脚推开。
最后,因此您无法看到固定页脚下方的文字,您需要将其保留在底部并使用padding-bottom: 10px
代替bottom: 10px
,然后为其提供纯色背景色。你当然可以在这里使用另一个psuedo元素,但同样容易使用填充。
希望有所帮助。