好吧,如果每个边距相同,那么给容器一个数据属性。如果每个边距都有不同的高度,最直观的选择是为每个项目放置一个数据属性。
如果每个边距都相同,这是你的代码
$(".fixed-header").each(function(item) {
$($(item).next()).css('margin-top', $(item).parent().data('margin-height'));
});
您的标记应如下所示:
<div id="page-container" data-margin-height="50px">
<div id="header" class="fixed-header">header</div>
<div>Test 2</div>
<div>Test 3</div>
<div>Test 4</div>
<div>Test 5</div>
</div>
这相当于下面的 CSS,如果每个页面容器也具有相同的值。
.page-container .fixed-header + div {
margin-top: 50px;
}
您也可以使用 PHP 生成此 CSS 文件。为了让生活更轻松,您甚至可以将其嵌入到您的 HTML 模板中。如果 margin-height 没有反映任何信息,那么可能生成 CSS 是最好的选择,因为这样,您不需要将无用的信息放在 <style> 或 <script> 标记之外。
<style>
.page-container .fixed-header + div {
margin-top: <?php echo $header_options['header_height'] ?>;
}
</style>
另一种选择是使用 CSS3 attr,目前尚未在所有浏览器中完全支持。
https://developer.mozilla.org/en-US/docs/Web/CSS/attr
.page-container .fixed-header + div {
margin-top: attr(data-margin-height);
}
这可以让您摆脱脚本,但不幸的是,您必须为每个 .fixed-header 设置 data-margin-height。
我在这些示例中使用了 .page-container 类,因为如果您在同一页面上有多个不同的容器,则可以使用此解决方案。如果您只需要一个,您可以将每个.page-container 替换为#page-container,代码将起作用。小提琴:
http://jsfiddle.net/k5V2a/