jQuery circle菜单导航在切换关闭后创建小圆圈
jQuery circle menu navigation creating tiny circle after toggle close
当我点击主圆圈时,周围的5个圆圈将完全最小化(100%隐藏),但它们并没有完全最小化。最小化后,主圆上方有一个小圆。如何在切换关闭后完全最小化(隐藏)主圆顶部的小圆。
我试过jQuery隐藏,但它隐藏了整个元素,
下面是jQuery代码,
var nbOptions = 8;
var angleStart = -360;
// jquery rotate animation
function rotate(li,d) {
$({d:angleStart}).animate({d:d}, {
step: function(now) {
$(li)
.css({ transform: 'rotate('+now+'deg)' })
.find('label')
.css({ transform: 'rotate('+(-now)+'deg)' });
}, duration: 0
});
}
// show / hide the options
function toggleOptions(s) {
$(s).toggleClass('open');
var li = $(s).find('li');
var deg = $(s).hasClass('half') ? 180/(li.length-1) : 360/li.length;
for(var i=0; i<li.length; i++) {
var d = $(s).hasClass('half') ? (i*deg)-90 : i*deg;
$(s).hasClass('open') ? rotate(li[i],d) : rotate(li[i],angleStart);
}
}
$('.selector button').click(function(e) {
toggleOptions($(this).parent());
});
setTimeout(function() { toggleOptions('.selector'); }, 100);
http://jsfiddle.net/adzFe/2574/
您确实需要删除.selector.open li input + label
中的border
和padding
,但您可以使用另一个类来打开和关闭。
.open1 {
padding: 6px;
border:1px solid #999;
}
添加此JS:
function toggleOptions(s) {
$(s).toggleClass('open');
var li = $(s).find('li');
li.find("label").toggleClass("open1"); // NEW
...
}
Fiddle:http://jsfiddle.net/adzFe/2576/
我同意,小圆圈是由错误类的额外填充引起的,我已经将填充移到了选择器.open。现在它没有显示任何小圆圈。
.selector li input + label {
position: absolute;
left: 50%;
bottom: 120%;
width: 0;
height: 0;
margin-left: 0;
background: #fff;
border-radius: 50%;
text-align: center;
overflow: hidden;
cursor: pointer;
background:#eee;
transition: all 0.8s ease-in-out, color 0.1s, background 0.1s;
}
.selector li input + label img {
border-radius:50%;
}
.selector.open li input + label {
width: 90px;
height: 90px;
margin-left: -40px;
padding:6px;
border:1px solid #999;
box-shadow: 0 3px 3px rgba(0, 0, 0, 0.1);
}
.selector.open li input + label:hover {
border:1px solid #fff;
padding:6px;
background:#fff;
}
.mainimage{
width:100%;
height:100%;
border-radius:50%;
}
工作代码
http://jsfiddle.net/adzFe/2577/
看起来问题出在CSS .selector li input + label
规则中。在这个规则中,仍然有一些padding
和border
宽度,这给了圆一些大小。将这两个值更改为0,它们应该完全隐藏:
.selector li input + label {
position: absolute;
left: 50%;
bottom: 120%;
width: 0;
height: 0;
margin-left: 0;
background: #fff;
border-radius: 50%;
text-align: center;
overflow: hidden;
cursor: pointer;
border:0 solid #999; /* previously 1px */
padding:0; /* previously 6px */
background:#eee;
transition: all 0.8s ease-in-out, color 0.1s, background 0.1s;
}
更新:由于需要padding
和border
,您可以在菜单圆具有open
类时将规则集调整为具有这些值,并在类不存在时将其删除
http://jsfiddle.net/avt0fvk4/
相关文章:
- 创建带有和不带有JavaScript的Bootstrap下拉菜单
- 创建下拉菜单
- Jquerymobile-使用javascript创建选择菜单
- 基于下拉菜单创建开关
- 尝试创建一个具有z-index的堆叠菜单'使用HTML5/CSS3/JS
- 在jQuery中创建向下滑动子菜单的最有效方法
- 如何创建菜单项根据运行时值更改的 html 上下文菜单
- 尝试使用 jQuery 创建菜单,但我的代码不起作用
- 动态创建菜单以在不同的网页中导入
- 使用 AngularJS 从 JSON 文件创建菜单
- 如何创建菜单像kijiji's的主页,带有html和jquery或javascript
- extjs如何使用单选按钮创建菜单
- jQuery JSON循环通过嵌套对象来创建菜单
- 在流体中动态创建菜单
- 如何添加class="active"使用Javascript创建菜单栏
- 在javascript中创建菜单存在问题
- 使用jQuery创建菜单
- 如何在ng-grid中创建菜单
- 如何从json文件创建菜单
- 在jQueryMobile中创建菜单的最佳方式是什么?