在CSS中创建六边形,对称

时间:2013-06-12 16:32:30

标签: css css3

我必须创建一个六边形,我真的希望它是完整的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/

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

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

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

提前感谢所有信息!

1 个答案:

答案 0 :(得分:0)

六边形是8面,不是吗?

你可以试试背景线性渐变 http://dabblet.com/gist/5767212

将它们悬停在其中,看看它在宽度增加时会如何反应。