CSS 实现蜂巢/六边形图集

不知道为什么,UI 很喜欢设计蜂巢效果(摊手)

一、实现六边形

首先用传统的方式来分析一下六边形

可以拆分成三个矩形,每个矩形旋转正负 60°得到其它两个矩形

由此可以设计出基本的 HTML 结构

矩形的宽高先随便设置,后面组件化的时候再计算其关系,通过 props 设置

然后设置 CSS 样式

.w-comb{background-color:#e4e4e4;display:inline-block;position:relative;

}.w-comb-sub1,

.w-comb-sub2{background-color:#e4e4e4;position:absolute;width:inherit;height:inherit;

}.w-comb-sub1{transform:rotate(-60deg);

}.w-comb-sub2{transform:rotate(60deg);

}

一个六边形就完成了

不过这只是传统的方式,如果不考虑兼容性问题,可以直接使用 clip-path 画一个六边形

.w-comb{clip-path:polygon(

0 25%,

50% 0,

100% 25%,

100% 75%,

50% 100%,

0 75%

);

}

非常简单粗暴!不需要子节点不需要旋转,只要一行代码,六边形带回家!

二、设置尺寸

实际的应用场景通常都是一堆六边形拼在一起,所以需要将单个六边形处理为组件

首先的问题就是,如何设置六边形的尺寸,这需要用一下初中学到的数学知识

经过计算,当矩形的长为 x 的时候,宽(边长 a )为

对角线 b 为

然后就能规定六边形的尺寸

如果是三个矩形旋转而成的传统方案:

// 传统方案

const RADICAL_3 = 1.7320508;const Comb = (props) =>{const { className } =props;const width = props.size || 80;const height = Math.ceil(width /RADICAL_3);return(

width,

height,

}}>

)

}

如果是直接使用 clip-path 绘制的六边形:

//clip-path

const RADICAL_3 = 1.7320508;const Comb = (props) =>{const { className } =props;const width = props.size || 80;const height = 2 * Math.ceil(width /RADICAL_3);return(

width,

height,

}}>

)

}

三、排列蜂巢

定义一个 spacing 字段,用来设置 margin-right,然后排列出一排六边形

再生成第二排的时候,需要调整一下 top 和 left

left 为矩形长 ( x ) 的一半(这是基础偏移量,实际需要的距离在这个数字上增加)

而 top 则为六边形边长 ( a ) 的一半的一半(基础偏移量)

后面每一行的 top 都会增加,而 left 仅在偶数行生效

四、添加内容

在传统方案中,是以横向的矩形为基础,所以六边形的内容可以直接写在矩形里

原文链接:https://www.cnblogs.com/wisewrong/p/12202197.html

如有疑问请与原作者联系

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

css六边形插入图片蜂巢幻灯代码,CSS 实现蜂巢/六边形图集相关推荐

  1. html如何载入图片,CSS如何插入图片?

    在CSS中,可以使用background-image属性或background属性来插入图片.background-image属性或background属性可以为元素设置背景图像.初始背景图像(原图像 ...

  2. html中 怎么加入图片,css怎么插入图片?

    在前端页面的开发中,插入图片的方法有两种:使用img标签插入图片,使用background属性和background-image属性插入背景图片.下面本篇文章就来给大家介绍一下CSS backgrou ...

  3. 如何html在页面插入图片,css怎么插入图片?

    在前端页面的开发中,插入图片的方法有两种:使用img标签插入图片,使用background属性和background-image属性插入背景图片.下面本篇文章就来给大家介绍一下CSS backgrou ...

  4. css六边形插入图片蜂巢幻灯代码,纯css绘制蜂巢六边形效果

    html> CSS3 实现六边形图片展示效果 body, div, img, ul, li { margin: 0; padding: 0; } body { font-size: 12px; ...

  5. css中两行图片整齐排布,css 标题一行图片 两行文字的排列方法以及相关问题处理...

    今天就遇到了这么一个效果,代码原理比较简单就是图片float:left;,但是如果在做一个比较复杂的模板时,有可能遇到很多问题,使标题文字不能和图片对齐. 今天遇到一个问题,错误效果如下 正确显示应为 ...

  6. css中在图片上加透明,css 给图片添加滤镜效果,透明层毛玻璃效果

    我们用的第一个滤镜是sepia(),他会给图片增加一整降饱和度的橙色染色效果 原图 添加sepia滤镜的效果 img{ width:100%; transition: .5s filter; filt ...

  7. css中设置图片旋转45度,css 实现缓和变量,鼠标悬停时元素旋转45度动画

    可重复使用的变数transition-timing-function 属性,比内置更强大ease ,ease-in ,ease-out 和ease-in-out . HTML CSS :root { ...

  8. css如何让图片均匀分布,如何在CSS中均匀分布?

    我建议使用grid 960系统或类似的东西.网格960使用12列网格行布局,均匀分布直接div.这非常灵活,因为您可以使用许多不同的组合.它实现了你所追求的.希望这会有所帮助. CSS:强> . ...

  9. css怎么设置图片卷角效果,CSS设计教程:轻松实现卷角效果

    我们将做成这样: Step 1 我们将开始制作内容框的头部, 创建一个新图层命名为header, 然后设置前景色为#818283, 现在抓取一个矩形(262x27), 确保你设置为'填充像素',然后创 ...

最新文章

  1. object标签与embad掉钱_使用object或embed标签来播放SWF文件
  2. Android中有关数据库SQLite的介绍
  3. C++中实现回调机制的几种方式
  4. jQuery综合案例——打地鼠(教学版本·附源码)
  5. 设置网格_设置一个自动运行网格条件单
  6. indexOf、lastIndexOf、substring等详解
  7. php携程语比,PHP 协程
  8. linux安装 lr agent
  9. C++primer 6.7节练习
  10. 亲民地理第39期-佛山(3)千灯湖
  11. 显示器接口针脚定义(D-sub15)
  12. “梧桐杯”中国移动大数据应用创新大赛 - 智慧金融赛道Baseline
  13. 解决zing生成二维码时二维码太小、白框太大的问题
  14. linux的man命令功能,Linux中的MAN命令
  15. 什么是索引,索引的优缺点
  16. 微信小程序基础库版本与微信版本对应关系
  17. Git安装、配置和使用
  18. 面对找不到工作的困难,小伙选择创业开酒吧,月收入竟达到了6万
  19. IE8提示js错误(KB927917)解决方法
  20. lr_convert_string_encoding: 对中文进行UTF-8转码

热门文章

  1. 区块链——Hyperledger Fabric2.2多机搭建及区块链浏览器
  2. 2022年全国职业院校技能大赛“网络安全”竞赛试题文件上传渗透测试答案Flag
  3. 图像语义分割实践(四)损失函数与实现
  4. 大数据环境下的地税预算执行审计
  5. 书论27 唐太宗《论书》
  6. sql 取两条相邻数据之间的时间差
  7. QMT vs Ptrade 速度对比 (二)实时行情速度对比
  8. 生产模式及MRP策略分析
  9. Acwing 1126. 最小花费【图论、单源最短路】
  10. squid 正向代理