我正在尝试通过 Sass 而不是通过 Sass 绘制 CSS 八边形,并且我在两个版本中都使用了变量。对于 2 的平方根、一个三角形的宽度以及八边形内两个三角形之间的距离,我使用了几乎相同的表达式。
/* Sass */
$color: #f44;
$sqrt2: sqrt(2);
$octTriW: (100% - (($sqrt2 * 100) / ($sqrt2 + 2))) / 2;
$octTri2Tri: ceil(100% - $octTriW * 2);
.octagon-sass {
background:
linear-gradient(-45deg,$color 50%,transparent 50%) 0% 0% / ($octTriW $octTriW),
linear-gradient(45deg,$color 50%,transparent 50%) 100% 0 / ($octTriW $octTriW),
linear-gradient(-135deg,$color 50%,transparent 50%) 0 100% / ($octTriW $octTriW),
linear-gradient(135deg,$color 50%,transparent 50%) 100% 100% / ($octTriW $octTriW),
linear-gradient($color,$color) 50% 50% / ($octTri2Tri 100%),
linear-gradient($color,$color) 50% 50% / (100% $octTri2Tri);
}
/* CSS */
:root {
--color: #f44;
--sqrt2: 1.4142;
--octTriW: calc(100% - ((var(--sqrt2) * 100) / (var(--sqrt2) + 2)) / 2);
--octTri2Tri: calc(100% - var(--octTriW) * 2 + 0.6);
}
.octagon-root {
background:
linear-gradient(-45deg,var(--color) 50%,transparent 50%) 0% 0% / var(--octTriW) var(--octTriW),
linear-gradient(45deg,var(--color) 50%,transparent 50%) 100% 0 / var(--octTriW) var(--octTriW),
linear-gradient(-135deg,var(--color) 50%,transparent 50%) 0 100% / var(--octTriW) var(--octTriW),
linear-gradient(135deg,var(--color) 50%,transparent 50%) 100% 100% / var(--octTriW) var(--octTriW),
linear-gradient(var(--color),var(--color)) 50% 50% / var(--octTri2Tri) 100%,
linear-gradient(var(--color),var(--color)) 50% 50% / 100% var(--octTri2Tri);
}
/* Base style of shape */
.shape {
background-repeat: no-repeat;
display: inline-block;
outline: 1px solid #bbb;
width: 200px;
height: 200px;
}
<div class="shape octagon-sass"></div>
<div class="shape octagon-root"></div>
目前,Sass 版本没有问题,但由于与我的 for和undercalc()
表达式有关,常规的 CSS 根本不会出现,我似乎无法弄清楚它是什么。这是正在发生的事情的屏幕截图(带有变量的标记):--octTriW
--octTri2Tri
:root
我尝试移动 %s 并添加更多,但没有运气。知道我可能遗漏了什么或做错了什么吗?
(参见CodePen上的演示)