jQuery slideDown 不流畅

标签 jquery html css

我正在为我的 friend 开发一个 jQuery 菜单。菜单搞定了,唯一的问题就是下滑不流畅,这里找不到问题。

jQuery 代码:

$.fn.vmenu=function(settings)
{
    vMenu={
        init: function(elem) {
            $(elem).find('li').each(function(){
                var u=$(this).children('ul');
                if (u.length>0) {
                    $(this).addClass('has_child');
                }
                var a=$(this).children('a');
                if (a.hasClass('active')) {
                    $(this).addClass('active').parents('li').addClass('open');
                }
            });

            $(elem).find('ul').each(function(){
                var o=$(this).find('li.open');
                var a=$(this).find('a.active');
                if (o.length == 0 && a.length==0) {
                    $(this).css('display','none');
                }
            });

            $(elem).find('a').click(function(){
                return vMenu.click($(this));
            });
        },
        click: function(elem) {
            var l=$(elem).parent('li');
            var u=$(l).children('ul');

            if (u.length == 0) {
                return this.forward(elem);
            }

            if ($(l).hasClass('open')) {
                $(l).removeClass('open');
                $(l).find('ul').stop(true,true).slideUp(300);
                $(l).find('li').removeClass('open');
                if($(l).children('a').hasClass('open')) {
                    $(l).children('a').css({color:'#939393'});
                    $(l).children('a').removeClass('open');
                }
            } else {
                $(l).addClass('open');
                $(u).stop(true,true).slideDown(300);
                $(l).children('a').css({color:'#F37121'});
                $(l).children('a').addClass('open');
            }

            return false;
        },
        forward: function(elem) {
            return true;
        }
    }
    vMenu.init($(this));
}

$(document).ready(function(){
 $('#vmenu').vmenu();
});

CSS 代码:

/* ### partner box ### */
.partnerBox { padding-top: 52px; width: 253px; float: left; background: url('http://www.realbingo.nl/images/partner-top.png') left top no-repeat; }
.partnerBox .bottom { padding-bottom: 12px; float: left; background: url('http://www.realbingo.nl/images/paasbonus-bottom.png') left bottom no-repeat; }
.partnerBox .mid { padding: 0 20px 0 15px; width: 218px; float: left; background: url('http://www.realbingo.nl/images/paasbonus-mid.png') left top repeat-y; }
.partnerBox h3 { padding-left: 5px; margin-top: -36px; color: #fff; font-size: 20px; }
.partnerBox ul { padding: 0px 0 0 0; margin-bottom: -5px; overflow: hidden; width: 100%; }
.partnerBox li { padding-left: 5px; font-size: 13px; float: left; list-style: none; width: 208px; line-height: 39px; border-bottom: 0px; }
.partnerBox li a { padding-left: 9px; color: #939393; text-decoration: none; display: block; background: url('http://www.realbingo.nl/images/arrow1.png') left center no-repeat; }
.partnerBox li a:hover { color: #F37121 !important; }
#vmenu li { border-bottom: #ece3e3 solid 1px; }
#vmenu li > ul > li { border-bottom: 0px; height: 30px; line-height: 30px; margin-top: -8px;}
.text ul{ line-height: 18px; margin-bottom: 2px; }

HTML代码:

<div class="partnerBox">
    <div class="bottom">
        <div class="mid">
            <h3>Linkpartners</h3>
            <ul id="vmenu">
                <li><a href="#">Bingo</a>
                    <ul>
                        <li><a href="#">Link 1</a></li>
                        <li><a href="#">Link 2</a></li>
                    </ul>
                </li>
                <li><a href="#">Roulette</a>
                    <ul>
                        <li><a href="#">Link 1</a></li>
                        <li><a href="#">Link 2</a></li>
                    </ul>
                </li>
                <li><a href="#">Poker</a>
                    <ul>
                        <li><a href="#">Link 1</a></li>
                        <li><a href="#">Link 2</a></li>
                    </ul>
                </li>
                <li class="text"><a href="#">Tekst</a>
                    <ul>
                        Dit is een lap tekst die door en door gaat tot het einde.. en verder... :D:D:D:D:D:D:D:D
                    </ul>
                </li>
            </ul>   
        </div>
    </div>
</div>

任何使代码更高效的提示和/或想法也非常感谢。

最佳答案

如果您谈论的是 slideDown 到达显示底部时的跳跃,这很可能是由“.text ul”CSS 的底部边距引起的。 jQuery 无法计算包括边距在内的高度。

如果您谈论的是在动画期间四处移动的 slideDown 内容,这通常与您正在滑动的元素或第一个子元素的顶部填充有关。

关于jQuery slideDown 不流畅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7620902/

相关文章:

html - CSS/HTML 将文本放在图像下,与哪个视口(viewport)/分辨率无关

javascript - 聚合物 : Style Parent Element from dom-repeat data item

javascript - 为什么没有适用于 IE9 等旧版浏览器的 flexbox polyfill?

html - 将表单 float 到图像上 - 侧边栏

html - 具有鼠标悬停和选定效果的 CSS 导航菜单。如何应用 "selected"?

javascript - 定位提示确认的 img

javascript - 如何使用jq设置p标签中的值?

CSS : customize word spacing property

javascript - jQuery:检测数据元素的变化

javascript - 在 $(document).ready() 中定义的调用函数