6

我必须创建一个六边形,我真的希望它是完整的 HTML 和 CSS。它几乎完成了,除了它不是完全对称的事实。左角与右角不对齐。当前的CSS:

.hexagon.outer {
    width: 318px;
    height: 452px;
    position: relative;
}
.hexagon.outer, .hexagon.outer:before, .hexagon.outer:after {
   background-repeat:no-repeat;
    background-color: #585858;
}
.hexagon.outer:before, .hexagon.outer:after {
    content: "";
    position: absolute;
    width: 262px;
    height: 262px;
    top:95px;
    -moz-transform: rotate(54.5deg) skew(22.5deg);
    -webkit-transform: rotate(54.5deg) skew(22.5deg);
    transform: rotate(54.5deg) skew(22.5deg);
}
.hexagon.outer:before {
    left: -130px;
}
.hexagon.outer:after {
    left: 186px;
}
.hexagon.outer span {
    position: absolute;
    top: 0;
    left: 0;
    width: 100px;
    height: 55px;
    background:#585858;
    z-index: 1;
}

.hexagon.inner {
    width: 276px;
    height: 372px;
    position: relative;
    margin:0 auto;
    top: 40px;
    z-index:4;

}
.hexagon.inner, .hexagon.inner:before, .hexagon.inner:after {
   background-repeat:no-repeat;
    background-color: white;
}
.hexagon.inner:before, .hexagon.inner:after {   
    content: "";
    padding:0;
    margin:0;
    position: absolute;
    width: 215px;
    height: 215px;
    top:79px;
    -moz-transform: rotate(54.5deg) skew(22.5deg);
    -webkit-transform: rotate(54.7deg) skew(22.5deg);
    transform: rotate(54.7deg) skew(22.5deg);
}

.hexagon.inner:before {
    left: -107px;
}
.hexagon.inner:after {
    left: 169px;
}
.hexagon.inner span {
    position: absolute;
    top: 0;
    left: 0;
    width: 100px;
    height: 55px;
    background:#585858;
    z-index: 1;
}

的HTML:

<div class="hexagon outer">
   <div class="hexagon inner">

   </div>
</div>

示例:http: //jsfiddle.net/jK7sH/

外六边形最终会产生(背景)效果,这就是为什么有两个(内六边形和外六边形)。

我试图通过反复试验来对齐它们,但我认为这不起作用,因为 :before 和 :after 矩形是倾斜的。

是否可以在不使用边框的情况下仅使用 CSS 创建对称六边形?

在此先感谢您提供所有信息!

4

1 回答 1

0

六边形是 8 面,不是吗?

您可以尝试使用背景线性渐变 http://dabblet.com/gist/5767212

将它们悬停在上面,看看它在宽度增加时的反应。

于 2013-06-12T17:40:06.763 回答