Css 如何创建栅格/平铺视图?
例如,我有一些class.article,我想把这个类看作网格视图。所以我采用了这种风格:Css 如何创建栅格/平铺视图?,css,grid,positioning,css-float,tiles,Css,Grid,Positioning,Css Float,Tiles,例如,我有一些class.article,我想把这个类看作网格视图。所以我采用了这种风格: .article{ width:100px; height:100px; background:#333; float:left; margin:5px; } 该样式将使.article看起来平铺/网格化。在固定高度下工作很好。但是如果我想将高度设置为自动(根据其中的数据自动拉伸),网格看起来很糟糕 我想把视图做成这样: 这种布局称为砌体布局。砌体是另一种网格布局,但它将填充因图元
.article{
width:100px;
height:100px;
background:#333;
float:left;
margin:5px;
}
该样式将使.article看起来平铺/网格化。在固定高度下工作很好。但是如果我想将高度设置为自动(根据其中的数据自动拉伸),网格看起来很糟糕
我想把视图做成这样:
这种布局称为砌体布局。砌体是另一种网格布局,但它将填充因图元高度不同而产生的空白 是jQuery插件之一,用于创建砌体布局
或者,您可以使用CSS3S。但是现在基于jQuery的插件是最好的选择,因为它与CSS3列存在兼容性问题。如果你想更进一步,请使用同位素,它是砌体的高级版本(由同一作者开发)。它不是纯CSS,它使用Javascript的帮助,但非常流行,所以你会找到大量的文档 如果您发现它非常复杂,那么有许多高级插件已经基于同位素进行了开发,例如媒体盒,您可以使用flexbox
#柔性容器{
显示器:flex;
柔性流:柱包裹;
}
#flex container>:第n个子(3n+1){order:1;}/*第1列*/
#flex容器>:第n个子(3n+2){顺序:2;}/*第2列*/
#flex容器>:第n个子(3n+3){顺序:3;}/*第3列*/
#flex container>:第n个子级(-n+3){
分页符之前:始终;/*CSS 2.1语法*/
在之前中断:始终;/*新语法*/
}
遗憾的是,并非所有浏览器都支持flexbox中的换行符。不过,它可以在Firefox上运行#柔性容器{
显示器:flex;
柔性流:柱包裹;
}
#flex容器>:第n个子(3n+1){顺序:1;}/*第1列*/
#flex容器>:第n个子(3n+2){顺序:2;}/*第2列*/
#flex容器>:第n个子(3n+3){顺序:3;}/*第3列*/
#flex容器>:第n个子级(-n+3){
分页符之前:始终;/*CSS 2.1语法*/
在之前中断:始终;/*新语法*/
}
/*以下是可选的*/
#flex容器>div{
背景:#666;
颜色:#fff;
保证金:3倍;
显示器:flex;
证明内容:中心;
对齐项目:居中;
字体大小:36px;
}
#flex容器>:第n个子(1){高度:100px;}
#flex容器>:第n个子(2){高度:50px;}
#flex容器>:第n个子(3){高度:75px;}
#flex容器>:第n个子(4){高度:50px;}
#flex容器>:第n个子(5){高度:100px;}
#flex容器>:第n个子(6){高度:50px;}
#flex容器>:第n个子(7){高度:100px;}
#flex容器>:第n个子(8){高度:75px;}
#flex容器>:第n个子(9){高度:125px;}
123
456
789
解决仅使用css的问题的最佳选项是使用css列计数属性
.content-box {
border: 10px solid #000000;
column-count: 3;
}
查看此项了解更多信息:既然CSS3在主要浏览器中广泛可用且兼容,那么现在是时候使用配备SO代码片段工具的纯解决方案了:
对于使用CSS3创建砌体布局,
柱数
以及柱间距
就足够了。但我也使用了媒体查询
,使其具有响应性
在跳入实现之前,请考虑添加一个jQuery砖石库回退以使您的代码兼容传统浏览器,尤其是IE8-:
会更安全。<!--[if lte IE 9]>
<script src="/path/to/js/masonry.pkgd.min.js"></script>
<![endif]-->
砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体
砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体
砌体纯CSS3砌体纯CSS3
砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体
砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体
砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体
砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体纯CSS3砌体
使用,您可以创建非常相似的布局
1) 设置三个固定宽度的网格列
ul{
显示:网格;
网格模板列:150px 150px 150px;
...
}
2) 确保高度较大的项目跨越两行
li:n个孩子(1),
李:第n个孩子(3),
李:第n个孩子(5岁),
李:第n个孩子(8岁),
李:第n个孩子(9岁),
李:第n个孩子(10岁),
李:第n个孩子(12)
{
网格行:跨度2;
}
正文{
保证金:0;
}
保险商实验室{
显示:网格;
网格模板列:150px 150px 150px;
网格间距:1rem;
证明内容:中心;
对齐项目:居中;
/*钻孔特性:*/
列表样式:无;
宽度:90vw;
高度:85vh;
保证金:4vh自动;
边框:5px纯绿色;
填充:1rem;
溢出:自动;
计数器重置:项目;
}
李{
位置:相对位置;
}
李:之后{
内容:柜台(项目);
反增量:项目;
位置:绝对位置;
填充:0.3rem;
背景:鲑鱼;
颜色:白色;
左:0;
排名:0;
}
img{
外形:5px固体鲑鱼;
}
李:第n个孩子(1),
李:第n个孩子(3),
李:第n个孩子(5岁),
李:第n个孩子(8岁),
李:第n个孩子(9岁),
李:第n个孩子(10岁),
李:第n个孩子(12)
{
网格行:跨度2;
}
您可以使用display:grid
例如:
这是一个有7列的网格,您的行具有自动大小
.myGrid{
显示