html – 具有边框/轮廓的六边形

前端之家收集整理的这篇文章主要介绍了html – 具有边框/轮廓的六边形前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道可以使用以下代码创建六边形形状:
.hex:before {
    content: " ";
    width: 0; height: 0;
    border-bottom: 30px solid #6C6;
    border-left: 52px solid transparent;
    border-right: 52px solid transparent;
    position: absolute;
    top: -30px;
}

.hex {
    margin-top: 30px;
    width: 104px;
    height: 60px;
    background-color: #6C6;
    position: relative;
}

.hex:after {
    content: "";
    width: 0;
    position: absolute;
    bottom: -30px;
    border-top: 30px solid #6C6;
    border-left: 52px solid transparent;
    border-right: 52px solid transparent;
}

我如何创建一个填充一种颜色的六边形,并用另一种颜色勾勒出来?我试图解决它,但似乎不可能.

欢迎任何其他选择,我想避免使用图像.

解决方法

通过伪元素通过边界创建六边形是不可能实现的.一种替代方案是在六边形内叠加六边形,从而实现相同的期望结果.

这是一个可以实现的example

LIVE EXAMPLE HERE

HTML – 相当基本,为更多的边框继续相同的模式.

<div class="hex">
    <div class="hex inner">
        <div class="hex inner2"></div>
    </div>
</div>

CSS(三层 – 两个内在元素)

从六角形类开始,定义shape / size / colors:

.hex {
    margin-top: 70px;
    width: 208px;
    height: 120px;
    background: #6C6;
    position: relative;
}
.hex:before,.hex:after {
    content:"";
    border-left: 104px solid transparent;
    border-right: 104px solid transparent;
    position: absolute;
}
.hex:before {
    top: -59px;
    border-bottom: 60px solid #6C6;
}
.hex:after {
    bottom: -59px;
    border-top: 60px solid #6C6;
}

调整内部类,并使用transform: scale()按比例缩小内部元素的尺寸.在这个例子中,使用了一个比例尺(.8,.8).如果你想要更粗的边框,减少数字;相反,如果你想要更薄的边框,增加数字.

指定和覆盖颜色,还增加z-index值以使元素向前.

.hex.inner {
    background-color:blue;
    -webkit-transform: scale(.8,.8);
    -moz-transform: scale(.8,.8);
    transform: scale(.8,.8);
    z-index:1;
}
.hex.inner:before {
    border-bottom: 60px solid blue;
}
.hex.inner:after {
    border-top: 60px solid blue;
}

样式第二个嵌套元素,基本上遵循与上次相同的步骤.因为它在一个已经缩放的元素内,所以使用相同的比例值是没有价值的.当然,你可以使用任何你想要的;这只是一个基本的例子.

.hex.inner2 {
    background-color:red;
    -webkit-transform: scale(.8,.8);
    z-index:2;
}
.hex.inner2:before {
    border-bottom: 60px solid red;
}
.hex.inner2:after {
    border-top: 60px solid red;
}

再次,live example here

猜你在找的HTML相关文章