GST*_*TAR 5 html css grid-layout fluid-layout responsive-design
有哪些技术可用于创建在每个项目之间具有填充但仅在网格内有填充的产品网格?例如,我想要实现的目标如下:
样本标记:
<div id="container">
<div class="item">
<!-- content -->
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
#container { width: 100%; min-width: 960px; }
.item { float: left; width: 300px; height: 100px; }
Run Code Online (Sandbox Code Playgroud)
(在上面,.item
将输出9次).
该解决方案需要与IE8 +兼容,并且最好使用不是黑客的技术.我已经尝试使用display: table
与border-spacing
属性-但这也输出上外侧的填充.
我知道我还可以为项目添加特定的类来控制是否为该项目显示填充,但我希望有一个更"自动化"的解决方案.
编辑:填充宽度应该动态计算,例如,如果容器是960px,填充将是30px宽.
其次,如果最后一行上的项目少于3个,则这些项目不应该出现在行的中心,即如果只有两个项目,则最后一个"单元格"应该为空.
编辑:迄今为止所有解决方案都坚持要求指出间隙/填充的宽度.我想动态计算填充.我需要指定的唯一宽度是,.item
当前固定为300px.
web*_*iki 16
响应式网格:
elements widths + left/right magins = 100%;
overflow:hidden;
这很简单,不使用IE8不支持的任何属性.我很确定如果你删除边框和box-sizing属性,它在IE7中可以有一个不错的输出.
只是为了确保,负利润不是"黑客":
允许保证金属性的负值来源:w3.org
HTML:
<div id="wrapper">
<div id="container">
<div class="item"></div>
<div class="item"></div>
...
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
#wrapper {
overflow:hidden;
}
#container {
margin: -1.5%;
background:lightgrey;
}
#container:after {
content:'';
display:block;
clear:both; /* clear the floats */
}
.item {
margin:1.5%;
width:30.3333%;
padding-bottom:10%; /* to simulate height on the empty items */
background:grey;
border: 1px solid #000;
float:left;
/* following only if you want to add borders to the items */
box-sizing:border-box;
}
Run Code Online (Sandbox Code Playgroud)
之后,您只需要更改.items
with media查询的宽度,以重新排列所需断点上一行中的元素数.
示例:
@media screen and (max-width: 600px) {
.item {
width:47%;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3401 次 |
最近记录: |