Jquery slideUp() slideDown() 跳转故障,WordPress

Jquery slideUp() slideDown() jump glitch, WordPress

我正在使用 jquery (v2.2.4) slideUp()slideDown() 到 show/hide 一个 <details> 标签。 <details> 内有 3 个内容不同的 div:一个显示最近的帖子,另一个显示最近的评论,第三个显示搜索字段。每个按钮都有一个 <a> 标签,它还会检查子内容 div 是否处于活动状态,并相应地添加或删除 类。

虽然 jquery 在显示和隐藏 <details> 以及添加和删除 类 方面有效,但幻灯片动画似乎仅适用于大约 5 个像素,然后它 "jumps" 打开。由于 div 中的内容是动态的,我无法在任何东西上设置特定的高度。

我认为这与 WordPress 没有任何关系,因为我在其他模板中使用它没有问题,尽管我没有在主要内容区域中显示和隐藏多个内容区域。

我不确定这是否与 CSS 或 jquery 或两者有关 — 猜测是某种 CSS 冲突。我在这里查看了有关幻灯片故障的其他主题,但就 marginpadding 看不出与我的问题有什么关系。我认为这可能是一个 float 问题,但我确实对使用伪元素的 <ul> 标签和 display:table 有一个针对浮动 <li>.

显示问题的清晰修复

欢迎指教。

HTML/PHP:

<div id="tips-nav" class="wrap cf" role="complementary">

    <nav class="tips-navigation">
        <ul>
            <li id="post-link"><a id="post-link-a">post</a></li>
            <li id="comment-link"><a id="comment-link-a">comment</a></li>
            <li id="search-link"><a id="search-link-a">search</a></li>
        </ul>
    </nav>
    <details id="tip-nav-content" class="wrap cf">
        <div id="post-content">
            <header>
                <h4>recent posts</h4>
            </header>
            <ul id="pc-post-ul" class="tip-nav-ul cf">
                <?php
                    $args = array(
                        'numberposts' => '5',
                        'post_type' => 'tips',
                        'offset' => '0',
                        'orderby' => 'post_date',
                        'order' => 'DESC',
                        'post_status' => 'publish'
                    );
                    $recent_posts = wp_get_recent_posts( $args );
                    foreach( $recent_posts as $recent ){
                        echo '<li><div class="tip-nav-thumb">' . get_the_post_thumbnail($recent["ID"], 'tip-nav-thumb') . '</div><p>' . get_the_title($recent["ID"]) . '</p><p>' . get_the_time('l, F j, Y', $recent["ID"]) .'</p>' . '<a class="clickBlock" href="' . get_permalink($recent["ID"]) . '"></a></li>';
                    }
                ?>
            </ul>
            <a class="kill-tn-content">close</a>
        </div>
        <div id="comment-content">
            <header>
                <h4>recent comments</h4>
            </header>
            <ul id="pc-comment-ul" class="tip-nav-ul cf">
                <?php recent_comments(); ?>
            </ul>
            <a class="kill-tn-content">close</a>
        </div>
        <div id="search-content">
            <header>
                <h4>search for stuff</h4>
            </header>
            <div class="search-bar">
                <form method="get" id="searchform" action="<?php bloginfo('home'); ?>/">
                    <div><input type="text" name="s" id="s" value="Find some crap" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;"/>
                    <input type="submit" id="searchsubmit" value="g" class="btn" />
                    </div>
                </form>
            </div>
            <a class="kill-tn-content">close</a>
        </div>
    </details>

</div>

jquery:

$('#post-link-a').click(function () {
    if($('#tip-nav-content').is(':hidden')){
        if($('#post-content').hasClass('show-the-content')){
            $('#tip-nav-content').slideDown();
        }
        else {
            $('#search-content').removeClass('show-the-content');
            $('#comment-content').removeClass('show-the-content');
            $('#post-content').addClass('show-the-content');
            $('#tip-nav-content').slideDown();
        }
    }
    else if($('#tip-nav-content').is(':visible')){
        if($('#post-content').hasClass('show-the-content')){
            $('#tip-nav-content').slideUp();
        }
        else {
            $('#search-content').removeClass('show-the-content');
            $('#comment-content').removeClass('show-the-content');
            $('#post-content').addClass('show-the-content');
        }
    }
    else {
        // nada
    }
});
$('#comment-link-a').click(function () {
    if($('#tip-nav-content').is(':hidden')){
        if($('#comment-content').hasClass('show-the-content')){
            $('#tip-nav-content').slideDown();
        }
        else {
            $('#search-content').removeClass('show-the-content');
            $('#post-content').removeClass('show-the-content');
            $('#comment-content').addClass('show-the-content');
            $('#tip-nav-content').slideDown();
        }
    }
    else if($('#tip-nav-content').is(':visible')){
        if($('#comment-content').hasClass('show-the-content')){
            $('#tip-nav-content').slideUp();
        }
        else {
            $('#search-content').removeClass('show-the-content');
            $('#post-content').removeClass('show-the-content');
            $('#comment-content').addClass('show-the-content');
        }
    }
    else {
        // nada
    }
});
$('#search-link-a').click(function () {
    if($('#tip-nav-content').is(':hidden')){
        if($('#search-content').hasClass('show-the-content')){
            $('#tip-nav-content').slideDown();
        }
        else {
            $('#post-content').removeClass('show-the-content');
            $('#comment-content').removeClass('show-the-content');
            $('#search-content').addClass('show-the-content');
            $('#tip-nav-content').slideDown();
        }
    }
    else if($('#tip-nav-content').is(':visible')){
        if($('#search-content').hasClass('show-the-content')){
            $('#tip-nav-content').slideUp();
        }
        else {
            $('#post-content').removeClass('show-the-content');
            $('#comment-content').removeClass('show-the-content');
            $('#search-content').addClass('show-the-content');
        }
    }
    else {
        // nada
    }
});
$('.kill-tn-content').click(function () {
    $('#tip-nav-content').slideUp();
});

CSS:

#tips-nav { position:relative; margin:0; padding:0; background:#E3DECB; } 
#tip-nav-content { position:relative; display:none; overflow: hidden; margin:0; padding:0; }
#tip-nav-content:before { content:''; position:absolute; top: -10px; left: -10px; width:105%; height:10px; box-shadow: 0 0 15px rgba(26, 40, 53,.8); }

.tips-navigation { position:relative; height:50px; overflow:hidden; }
.tips-navigation ul { position:relative; height:50px; margin:0; padding:0; }
.tips-navigation li { display:block; float:left; text-align: center; background:#1A2835; }
.tips-navigation li:hover { background:#DB5D3B; }
.tips-navigation a { display:block; line-height: 49px; padding:0 0 1px; }
.tips-navigation a:before { font-family:dd_icons !important; font-size:.9em; margin-right:4px; }

#post-content { display:none; }
#comment-content { display:none; }
#search-content { display:none; }

.show-the-content { display:block !important; }

#tip-nav-content header { background:#CEC7B3; padding:15px 0; }
#tip-nav-content h4 { padding:0 20px; margin:0; }
#post-content h4:before, #comment-content h4:before { content:'T'; font-family: dd_icons; margin-right:7px; display:inline-block; font-size:1.2em; vertical-align: -2px; }
#search-content h4:before { content:'g'; font-family: dd_icons; margin-right:7px; display:inline-block; font-size:1.2em; vertical-align: -2px; }

.tip-nav-ul { margin:0; }
.tip-nav-ul li { position:relative; display:block; }
.tip-nav-ul li:hover { background:#DB5D3B; }
.tip-nav-ul li:hover a:before { color:#2A3F51; }
.tip-nav-ul li a { display:inline-block; margin:4px 0 0 0; padding:13px 13px !important; }
#pc-comment-ul li a { display:block; margin:0; padding:10px 0; font-size:.9em; }
#pc-comment-ul li:last-of-type { border:none; }
#pc-comment-ul li { height:initial; border-bottom:1px dashed #AAA48F; }
.rc-link:before { content:'b'; font-family: dd_icons; color:#898472; display:inline-block; margin-right:4px; }
#pc-post-ul li { overflow:hidden; padding:7px; border-bottom:1px dashed #AAA48F; }
#pc-post-ul li:last-of-type { border:none; }
#pc-comment-ul li:hover, #pc-post-ul li:hover { border-color:#DB5D3B; }
.tip-nav-ul li p { font-size:.9em; margin:0; color:#DB5D3B; }
.tip-nav-ul li:hover p { color:#fff; }
.tip-nav-ul li:hover p + p { color:#ddd; }
.tip-nav-ul li p + p { font-size:.8em; margin:0; color:initial; }
.tip-nav-thumb { display:block; float:left; width:52px; height:52px; background:#0F171E; margin-right:10px; }

.cf:before, .cf:after { content: ""; display: table; }
.cf:after { clear: both; }

我发现了这个问题,所以我想 post 如果其他人遇到这个问题,我会解决这个问题。

内容 div 有一些旧的 CSS 来自我交换 类 qith Jquery 并使用 CSS 转换的测试。那行不通,所以我开始使用 slideUp()slideDown()。我在添加 jquery 后忘记删除这些转换,这似乎导致了故障。一旦我删除了 CSS 过渡,就没有更多的跳跃,现在一切都变得流畅了。