Css写六边形的两种方法

正六边形:

1、三个长方形组成

在这里插入图片描述
代码如下:

<div class="hexagon"></div>
<style>
	.hexagon{
		font-size: 16px;
		position: relative;
		display: inline-block;
		margin: 0 0.5rem;
		width: 4rem;
		height: calc(4rem * 1.732);   /*这里要写成1.732,是经过计算的,这样的才是正六边形*/
		background-color: #f006;  
		/* #f006,其中#f00表示红色,最后的6表示透明度opacity:0.4,透明度也是十六进制的 */
	}
	.hexagon:before,
	.hexagon:after{
		content:'';
		position:absolute;
		width:inherit;
		height:inherit;
		background-color:inherit;
		left:0;
		transform:rotate(-60deg);
	}
	.hexagon:after{
		transform:rotate(60deg);
	}
	.rounded,
	.rounded:before,
	.rounded:after{
		border-radius: 0.75rem / 0.25rem;
		/*  "/"前边的值是每个角的X轴方向的弧度, "/"后边的值是每个角的Y轴方向的弧度
			等同于0.75rem 0.75rem 0.75rem 0.75rem / 0.25rem 0.25rem 0.25rem 0.25rem
		*/
	}
</style>

透明度可以看这里https://blog.csdn.net/qi__lu/article/details/115662417?spm=1001.2014.3001.5502

border-radius这个可以打开F12,看一下

在这里插入图片描述
一个值,就代表四个角的X轴都是这个值,和margin、padding的意思是一样的,
只不过margin和padding的值指的是正上方,正右方,正下方和正左方;
而border-radius因为表示的是角的弧度,所以指的是上左角,上右角,下右角和下左角
可以看出来,他们都是按照顺时针的方向的顺序来的。

/* 如果想要加阴影,可以使用filter*/
	.hexagon{
		filter:drop-shadow(0px 5px 18px rgb(44,120,253));
	}

filter 的一些内容可以看这里:https://blog.csdn.net/qi__lu/article/details/124706121?spm=1001.2014.3001.5502
这个方法遗憾的地方是,不能是渐变的,因为是三个长方形摞在一起的,一层一层的

2、两个长方形,超出部分隐藏

在这里插入图片描述
看图就可以知道,是一个长方形,然后通过各种变形(旋转、倾斜等),形成一个外边框,然后再来一个长方形(纠正第一个长方形的变形),在第一个长方形内部的可以展示出来,超出的部分就隐藏
代码如下:

<div class="hexagon2"></div>
<style>
	.hexagon2{
		width: 16vw;
		height: 16vw;
		position: relative;
		overflow: hidden;
		-webkit-transform: rotate(-30deg) skewX(30deg) scaleY(0.86603);
		transform: rotate(-30deg) skewX(30deg) scaleY(0.86603);
	}
	.hexagon2:after{
		content: '';
		position: absolute;
		left: calc(50% - 6.9282vw);
		width: 13.85641vw;
		height: 16vw;
		-webkit-transform: scaleY(1.1547) skewX(-30deg) rotate(30deg);  /* 注意变形的顺序*/
		transform: scaleY(1.1547) skewX(-30deg) rotate(30deg);
		background: -webkit-linear-gradient(black, cyan);
    	background: linear-gradient(0deg, #2C78FD, cyan);
	}
</style>

这个方法也可以用filter 加阴影,但是不能加圆角border-radius ,不能实现,好遗憾。

如果你有什么好的办法,可以用css写一个正六边形,而且有圆角,是渐变色的,并且可以加阴影的话,请留言,感谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值