【问题标题】:jQuery elastic menujQuery 弹性菜单
【发布时间】:2013-05-23 13:06:13
【问题描述】:

我尝试使用 jQuery 创建的弹性菜单有问题。它在 Safari 中看起来(几乎)不错(当鼠标悬停时,菜单右侧有一点晃动)。但在 Chrome 和 Firefox 中,最后一个菜单(联系人)有时会跳到下一行。我对 jQuery 很陌生,我无法看到问题...

您可以在this fiddle 中看到它的实际效果

这是我的代码:

jQuery

$(document).ready(function(){


var bouton = $('#menu li a'),
vitesse = 300;

bouton.hover(function(){
    var leParent = $(this).parent();
    leParent.stop().animate({ width: "40%" }, vitesse )
    .siblings().stop().animate({ width: "20%" }, vitesse );
    });

bouton.mouseout(function(){
    var leParent = $(this).parent();
    leParent.stop().animate({ width: "25%" }, vitesse )
    .siblings().stop().animate({ width: "25%" }, vitesse );
    });


});

HTML

<ul id="menu">
<li><a href="#">Accueil</a></li>
<li><a href="#">Produits</a></li>
<li><a href="#">Portfolio</a></li>
<li><a href="#">Contact</a></li>
</ul>

CSS

html, body{margin:0;
padding:0;}


#menu{
padding:0;
width:80%;
margin:10px auto;
list-style-type:none;
}

#menu li{
margin:0;
padding:0;
width:25%;
float:left;
text-align:center;
background-color:#C03;
}


#menu li a{
border-left:1px solid white;
padding:10px 0;
color:#FFF;
text-decoration:none;
display:block;
}

【问题讨论】:

    标签: jquery menu mouseover


    【解决方案1】:

    您正在为浮动元素设置动画。当不适合您的容器时,它们会显示在下方。

    您应该在制作动画时留出一些空间。

    这样做:

    #menu {
         text-align: center;
    }
    

    使其居中。

    删除:

    #menu li {
        float: left;
    }
    

    并添加:

    #menu li {
        display: inline-block;
    }
    

    并将元素的宽度更改为 24%,将缩小后的按钮大小更改为 19%。

    最后确保删除 li 元素之间的所有空格。

    <ul id="menu">
        <li><a href="#">Accueil</a></li><!--
        --><li><a href="#">Produits</a></li><!--
        --><li><a href="#">Portfolio</a></li><!--
        --><li><a href="#">Contact</a></li>
    </ul>
    

    现在应该可以了。

    http://jsfiddle.net/jRMZM/2/

    您始终可以在窗口调整大小事件处理程序中自己计算百分比,并确保在百分比计算中执行 Math.floor()。

    编辑: http://jsfiddle.net/zWCf8/3/

    【讨论】:

    • 感谢您的回答。但是我不明白为什么当按钮翻转时它们并不总是适合我的容器,百分比为 40%、20%、20% 20%。另外,如果我在正常状态下使用 24%,我将在容器右侧有 4% 的空间...
    • 不同的浏览器以不同的方式呈现浮点值。如果你想控制这一点,你应该在测量目标宽度后自己计算百分比。
    • 4% 的空间是因为您没有删除 li 元素之间的换行符。 ( 东西)
    • 好吧,我做到了,但看看我所说的额外 4%(容器的黄色背景)是什么意思:jsfiddle.net/Wally/zWCf8/1 +“联系人”按钮的右边框随着这些百分比移动得更多...
    • 如果你不想要保证金,你应该计算你的百分比:jsfiddle.net/zWCf8/3
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多