如何使用CSS制作一个曲线边六angular形
这是我的CSS。
CSS
#hexagon-circle { width: 100px; height: 55px; background: red; position: relative; border-radius: 10px;} #hexagon-circle:before { content: ""; position: absolute; top: -25px; left: 0; width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-bottom: 29px solid red; border-radius: 10px;} #hexagon-circle:after { content: ""; position: absolute; bottom: -25px; left: 0; width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-top: 29px solid red; border-radius: 10px;}
输出是六边形的四边是弯曲的,但是顶部和底部不是。 我想使六angular形的所有边缘弯曲。 如何使上下边缘弯曲? 或如何使三angular形的顶部边缘弯曲?
http://jsfiddle.net/yR7zt/ 1
我想你正在寻找这个。
CSS
.hex { position: relative; margin: 1em auto; width: 10em; height: 17.32em; border-radius: 1em/.5em; background: orange; transition: opacity .5s; } .hex:before, .hex:after { position: absolute; width: inherit; height: inherit; border-radius: inherit; background: inherit; content: ''; } .hex:before { -webkit-transform: rotate(60deg); -ms-transform: rotate(60deg);/*Added for IE9*/ transform: rotate(60deg); } .hex:after { -webkit-transform: rotate(-60deg); -ms-transform: rotate(-60deg);/*Added for IE9*/ transform: rotate(-60deg); }
小提琴
请问下一个问题,然后再问一下。 没有恶意 :)
我知道这是一个相当古老的问题,但我想我会添加一个答案,以显示更多关于它是如何工作的。
所以,首先,我们需要在页面上创build一个元素。 我去了一个height:300px; width:180px;
height:300px; width:180px;
和10px的边框半径。 只因为我喜欢数字的圆整性(原谅双关语)。 给这个元素一个position:relative;
意味着我们可以在这里相对于这个div absolute
定位一切。
然后,我们需要创build两个伪元素,它们的高度和宽度与父级相同。
由于伪元素就是伪元素,我们需要添加一个content:
给他们。 因为我们可以把东西放在父母身上,所以我们并不需要这些东西,所以把它们设置为"";
这导致我们如何创build六边形,而不是我们目前拥有的矩形。 要做到这一点,我们将不得不包括一个旋转,以便生成六边形的其他边。 由于有6个边,而且需要加360度的angular度,我们可以将伪元素中的一个旋转60度。 另一个我们将旋转-60度(或300度,如果你愿意)。
这给我们留下了我们的“六边形”,我们可以根据需要添加一些漂亮的造型和hoveranimation:
.roundHex { position: relative; margin: 0 auto; background: rgba(0, 0, 0, 0.2); border-radius: 10px; height: 300px; width: 180px; transition: all 1s; line-height:300px; text-align:center; color:white; font-size:20px; } .roundHex:before, .roundHex:after { content: ""; position: absolute; top: 0; left: 0; background: inherit; border-radius: inherit; height: 100%; width: 100%; z-index:-1; } .roundHex:before { -webkit-transform: rotate(60deg); -moz-transform: rotate(60deg); transform: rotate(60deg); transition: all 1s 0.5s; } .roundHex:after { -webkit-transform: rotate(-60deg); -moz-transform: rotate(-60deg); transform: rotate(-60deg); transition: all 1s 1s; } .roundHex:hover { background: tomato; }
<div class="roundHex">HOVER ME</div>
尝试这种方式:(工作在铬和在即10)
<br><br><br> <div id="hexagon-circle"></div> <style> #hexagon-circle { position: relative; margin: 1em auto; width: 10em; height: 17.32em; border-radius: 1em/.5em; opacity: .25; background: orange; transition: opacity .5s; cursor: pointer; } #hexagon-circle:before, #hexagon-circle:after { position: absolute; width: inherit; height: inherit; border-radius: inherit; background: inherit; content: ''; } #hexagon-circle:before { transform: rotate(60deg); -ms-transform:rotate(60deg); /* IE 9 */ -webkit-transform:rotate(60deg); /* Opera, Chrome, and Safari */ } #hexagon-circle:after { transform: rotate(-60deg); -ms-transform:rotate(-60deg); /* IE 9 */ -webkit-transform:rotate(-60deg); /* Opera, Chrome, and Safari */ } </style>
你可以试试这个方法:
CSS
#hexagon-circle { position: relative; margin: 1em auto; width: 10em; height: 17.32em; border-radius: 1em/.5em; background: red; transition: opacity .5s; cursor: pointer;} #hexagon-circle:before { position: absolute; width: inherit; height: inherit; border-radius: inherit; background: inherit; content: ''; -webkit-transform: rotate(60deg); /* Chrome, Opera 15+, Safari 3.1+ */ -ms-transform: rotate(60deg); /* IE 9 */ transform: rotate(60deg);} /* Firefox 16+, IE 10+, Opera */ #hexagon-circle:after { position: absolute; width: inherit; height: inherit; border-radius: inherit; background: inherit; content: ''; -webkit-transform: rotate(-60deg); /* Chrome, Opera 15+, Safari 3.1+ */ -ms-transform: rotate(-60deg); /* IE 9 */ transform: rotate(-60deg);} /* Firefox 16+, IE 10+, Opera */
DEMO
使用当前的代码,使用顶部和底部的三angular形,可以稍微修改它们以使其具有弯曲的外观。 将#hexagon-circle:before
宽度添加到#hexagon-circle:before
和#hexagon-circle:after
并将border-left
和border-right
减less2px
。
Js小提琴在这里
#hexagon-circle { width: 100px; height: 55px; background: red; position: relative; border-radius: 10px; } #hexagon-circle:before { content: ""; position: absolute; top: -25px; left: 0; width: 4px; height: 0; border-left: 48px solid transparent; border-right: 48px solid transparent; border-bottom: 29px solid red; border-radius: 10px; } #hexagon-circle:after { content: ""; position: absolute; bottom: -25px; left: 0; width: 4px; height: 0; border-left: 48px solid transparent; border-right: 48px solid transparent; border-top: 29px solid red; border-radius: 10px; }
这不是一个真正的曲线,因为它创build了一条直线,但它给人的印象是,在形状的上下文中可能会弯曲。