网站首页 > 基础教程 正文
本文将用grid布局实现蜂巢(正六边形)状的布局
效果图
- 特点
- 列数确定可控
- 边距确定可控
- 交错排列
- 纯CSS实现
实现步骤
所谓蜂巢,即多个正六边形交错排列而成
第一步
首先,我们知道在正常情况下,CSS布局是难以实现这种不同行之间相互堆叠同时列交错排布的效果,所以我们需要一种取巧的方法
如果单纯地排列蜂窝状的不规则盒,仅用CSS很难实现,所以我们可以把它抽象为一个矩形,用CSS排列矩形盒就很容易了,用最基础的grid布局即可实现,但单纯的grid布局并不能实现交错排列效果,我们需要实现大致如下的效果:
由于是正六边形,故边距是固定可计算的
假设设置各蜂窝边距为10px,那么:
列边距column-gap:10px
行边距row-gap:六边形边长一半(sin30°) + 10px
第二步
接下来就需要解决交错问题了,对与grid而言,单个交错的网格是实现不了的,但我们可以让子项占据多格,如一个蜂窝占据2格,以此实现交错效果
由于每个蜂窝均占据两格,故边距也占据了两份,如不调整,列边距会是行边距的两倍,会给人错位的感觉,故需对计算公式做一些调整
假设设置各蜂窝边距为10px,那么:
列边距column-gap:5px
行边距row-gap:六边形边长一半(sin30°) + 10px
列边距为原来的一半,行边距不变
最终实现效果图如下
第三步
为了实现行与行之间交错效果,需要对偶数行进行一些处理,让每一个偶数行第一个蜂窝占据3格
可用子选择器:nth-child()实现
使用grid布局,列数量是可以固定的,假设这里为12格,即可容纳6个蜂窝,即x = 6
那么每偶数行的第一个蜂窝为:
完整代码
- HTML结构
- CSS样式
- 上一篇: CSS3之grid网页布局
- 下一篇: 前端入门——css Grid网格基础知识
猜你喜欢
- 2024-12-09 10个人9个答错,另外1个只对一半:数据库的锁,到底锁的是什么?
- 2024-12-09 北京地铁1号线八通线已恢复运营 乘客可在车站领取延误说明
- 2024-12-09 一行CSS代码搞定响应式布局
- 2024-12-09 推荐一款比flex更强大的CSS布局——Grid布局
- 2024-12-09 「前端进阶」干货!深度解析瀑布流布局
- 2024-12-09 从零开始的Grid布局掌握
- 2024-12-09 CSS新特性contain,控制页面的重绘与重排
- 2024-12-09 使用 CSS Grid Generator来快速使用及学习 Grid 布局
- 2024-12-09 2个将HTML5打包成app的方法
- 2024-12-09 重磅!2022年CSS新增的10个实用功能
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)