我正在尝试创建一个圆形的菜单按钮,当您单击时,它会变成圆角三角形并且菜单会关闭。目前虽然我已经能够添加圆角三角形,但似乎不能影响三角形的最终外观。当我在原始方块上应用50%的边框半径时,会使圆角三角形变为此[puu.sh] http://puu.sh/gZ6e9/b5d03cd612.png.[puu.sh]
它是一个菜单按钮,与使用jscript的大多数汉堡包按钮相同。
唯一的问题是,是一个无法弄清楚如何使它成为一个圆圈开始,没有50%的边界半径也适用于圆角三角形。
我不太了解javascript的编码,但我知道css和html。
我把所有这些放在codepen [codepen]http://codepen.io/Kiwimoose/pen/PwgBdB [codepen]
如果有人对如何修复它有任何想法,那将非常感激。
<div class="container" >
<a href="#menu" id="toggle"><span></span></a> <!--hamburger button-->
<div id="menu" title="menu"> <!--Menu and items in the menu-->
<ul>
<li><a href="#" >1</a></li>
<li><a href="#" >2</a></li>
<li><a href="#" >3</a></li>
<li><a href="#" >4</a></li>
</ul>
</div>
var theToggle = document.getElementById('toggle');
// based on Todd Motto functions
// http://toddmotto.com/labs/reusable-js/
// hasClass
function hasClass(elem, className) {
return new RegExp(' ' + className + ' ').test(' ' + elem.className + ' ');
}
// addClass
function addClass(elem, className) {
if (!hasClass(elem, className)) {
elem.className += ' ' + className;
}
}
// removeClass
function removeClass(elem, className) {
var newClass = ' ' + elem.className.replace( /[\t\r\n]/g, ' ') + ' ';
if (hasClass(elem, className)) {
while (newClass.indexOf(' ' + className + ' ') >= 0 ) {
newClass = newClass.replace(' ' + className + ' ', ' ');
}
elem.className = newClass.replace(/^\s+|\s+$/g, '');
}
}
// toggleClass
function toggleClass(elem, className) {
var newClass = ' ' + elem.className.replace( /[\t\r\n]/g, " " ) + ' ';
if (hasClass(elem, className)) {
while (newClass.indexOf(" " + className + " ") >= 0 ) {
newClass = newClass.replace( " " + className + " " , " " );
}
elem.className = newClass.replace(/^\s+|\s+$/g, '');
} else {
elem.className += ' ' + className;
}
}
theToggle.onclick = function() {
toggleClass(this, 'on');
return false;
}
答案 0 :(得分:1)
当border radius: 50%
元素没有类#toggle
时,您只想应用.on
。为此,只需将border-radius: 50%
应用于border-radius: 0
即可覆盖#toggle.on
。
这是更新的代码集:http://codepen.io/anon/pen/QwPBPX
#toggle span,
#toggle span:after,
#toggle span:before {
width: 100%;
height: 100px;
background-color: #9fe8b7;
transition: all 0.3s;
backface-visibility: hidden;
border-radius: 50%;
}
#toggle.on span,
#toggle.on span:after,
#toggle.on span:before {
border-radius: 0; /* Insert this */
}
答案 1 :(得分:0)
这应该根据您的尺寸制作一个圆圈。
border-radius: 75px;
-webkit-border-radius: 75px;
-moz-border-radius: 75px;
您可以使用变换和活动为此添加事件,以便在三角形和圆形之间切换。