在粘贴底部到达并向后滚动顶部后,Affix Bootstrap闪烁 [英] Affix Bootstrap flickers after affix-bottom reached and scrolling back top

查看:76
本文介绍了在粘贴底部到达并向后滚动顶部后,Affix Bootstrap闪烁的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个小的单页面布局网站,它使用Bootstrap的Affix-Plugin来修复sidenav-affix-top / affix-switch正常工作但是如果我到达affix-bottom我得到2问题:

i have a small one-page-layout site which uses the Affix-Plugin from Bootstrap to get the sidenav-fixed - the affix-top/affix-switch works fine as intended but if i reach affix-bottom i got 2 problems:

首先:sidenav在第10个列表项之前被切断

first: the sidenav is cut off right before the 10th list-item

第二个:如果我滚动回到顶部的词缀 - 底部和词缀类正在口吃。另外一个方法是删除附加内容,附加内容并在几毫秒内完成。

second: if i scroll back to top the affix-bottom and affix-classes are stuttering against. affix-bottom gets removed, affix added and within miliseconds the other way round.

标记:

<div class="page">
<main>
  <section class="scenecontainer intern bright">
                    <div class="container overlay">
                        <div class="row">
                            <div class="col-md-12">
                                <h2>Wissensdatenbank</h2>
                            </div>
                        </div>
                        <div class="row unmatch">
                            <div class="col-sm-9">
                                <h3>Überpunkt Wissendatenbank</h3>
                                <p>Überall dieselbe alte Leier. Das Layout ist fertig, der Text lässt auf sich warten. Damit das Layout nun nicht nackt im Raume steht und sich klein und leer vorkommt, springe ich ein: der Blindtext.</p>

                                <p>Genau zu diesem Zwecke erschaffen, immer im Schatten meines großen Bruders »Lorem Ipsum«, freue ich mich jedes Mal, wenn Sie ein paar Zeilen lesen. Denn esse est percipi - Sein ist wahrgenommen werden.</p>

                                <p>Und weil Sie nun schon die Güte haben, mich ein paar weitere Sätze lang zu begleiten, möchte ich diese Gelegenheit nutzen, Ihnen nicht nur als Lückenfüller zu dienen, sondern auf etwas hinzuweisen, das es ebenso verdient wahrgenommen zu werden: Webstandards nämlich.</p>

                                <p>Sehen Sie, Webstandards sind das Regelwerk, auf dem Webseiten aufbauen. So gibt es Regeln für HTML, CSS, JavaScript oder auch XML; Worte, die Sie vielleicht schon einmal von Ihrem Entwickler gehört haben.</p>

                                <p>Diese Standards sorgen dafür, dass alle Beteiligten aus einer Webseite den größten Nutzen ziehen. Im Gegensatz zu früheren Webseiten müssen wir zum Beispiel nicht mehr zwei verschiedene Webseiten für den Internet Explorer und einen anderen Browser programmieren.</p>

                                <p>Es reicht eine Seite, die - richtig angelegt - sowohl auf verschiedenen Browsern im Netz funktioniert, aber ebenso gut für den Ausdruck oder die Darstellung auf einem Handy geeignet ist. Wohlgemerkt: Eine Seite für alle Formate. Was für eine Erleichterung.</p>

                                <p>Standards sparen Zeit bei den Entwicklungskosten und sorgen dafür, dass sich Webseiten später leichter pflegen lassen. Natürlich nur dann, wenn sich alle an diese Standards halten. Das gilt für Browser wie Firefox, Opera, Safari und den Internet Explorer ebenso wie für die Darstellung in Handys.</p>

                                <p>Und was können Sie für Standards tun? Fordern Sie von Ihren Designern und Programmieren einfach standardkonforme Webseiten. Ihr Budget wird es Ihnen auf Dauer danken. Ebenso möchte ich Ihnen dafür danken, dass Sie mich bin zum Ende gelesen haben. Meine Mission ist erfüllt. Ich werde hier noch die Stellung halten, bis der geplante Text eintrifft. Ich wünsche Ihnen noch einen schönen Tag. Und arbeiten Sie nicht zuviel!</p>
                                <p>Und was können Sie für Standards tun? Fordern Sie von Ihren Designern und Programmieren einfach standardkonforme Webseiten. Ihr Budget wird es Ihnen auf Dauer danken. Ebenso möchte ich Ihnen dafür danken, dass Sie mich bin zum Ende gelesen haben. Meine Mission ist erfüllt. Ich werde hier noch die Stellung halten, bis der geplante Text eintrifft. Ich wünsche Ihnen noch einen schönen Tag. Und arbeiten Sie nicht zuviel!</p>
                                <p>Und was können Sie für Standards tun? Fordern Sie von Ihren Designern und Programmieren einfach standardkonforme Webseiten. Ihr Budget wird es Ihnen auf Dauer danken. Ebenso möchte ich Ihnen dafür danken, dass Sie mich bin zum Ende gelesen haben. Meine Mission ist erfüllt. Ich werde hier noch die Stellung halten, bis der geplante Text eintrifft. Ich wünsche Ihnen noch einen schönen Tag. Und arbeiten Sie nicht zuviel!</p>
                                <p>Und was können Sie für Standards tun? Fordern Sie von Ihren Designern und Programmieren einfach standardkonforme Webseiten. Ihr Budget wird es Ihnen auf Dauer danken. Ebenso möchte ich Ihnen dafür danken, dass Sie mich bin zum Ende gelesen haben. Meine Mission ist erfüllt. Ich werde hier noch die Stellung halten, bis der geplante Text eintrifft. Ich wünsche Ihnen noch einen schönen Tag. Und arbeiten Sie nicht zuviel!</p>
                                <p>Und was können Sie für Standards tun? Fordern Sie von Ihren Designern und Programmieren einfach standardkonforme Webseiten. Ihr Budget wird es Ihnen auf Dauer danken. Ebenso möchte ich Ihnen dafür danken, dass Sie mich bin zum Ende gelesen haben. Meine Mission ist erfüllt. Ich werde hier noch die Stellung halten, bis der geplante Text eintrifft. Ich wünsche Ihnen noch einen schönen Tag. Und arbeiten Sie nicht zuviel!</p>
                                <p>Und was können Sie für Standards tun? Fordern Sie von Ihren Designern und Programmieren einfach standardkonforme Webseiten. Ihr Budget wird es Ihnen auf Dauer danken. Ebenso möchte ich Ihnen dafür danken, dass Sie mich bin zum Ende gelesen haben. Meine Mission ist erfüllt. Ich werde hier noch die Stellung halten, bis der geplante Text eintrifft. Ich wünsche Ihnen noch einen schönen Tag. Und arbeiten Sie nicht zuviel!</p>
                                <p>Und was können Sie für Standards tun? Fordern Sie von Ihren Designern und Programmieren einfach standardkonforme Webseiten. Ihr Budget wird es Ihnen auf Dauer danken. Ebenso möchte ich Ihnen dafür danken, dass Sie mich bin zum Ende gelesen haben. Meine Mission ist erfüllt. Ich werde hier noch die Stellung halten, bis der geplante Text eintrifft. Ich wünsche Ihnen noch einen schönen Tag. Und arbeiten Sie nicht zuviel!</p>
                                <p>Und was können Sie für Standards tun? Fordern Sie von Ihren Designern und Programmieren einfach standardkonforme Webseiten. Ihr Budget wird es Ihnen auf Dauer danken. Ebenso möchte ich Ihnen dafür danken, dass Sie mich bin zum Ende gelesen haben. Meine Mission ist erfüllt. Ich werde hier noch die Stellung halten, bis der geplante Text eintrifft. Ich wünsche Ihnen noch einen schönen Tag. Und arbeiten Sie nicht zuviel!</p>
                                <p>Und was können Sie für Standards tun? Fordern Sie von Ihren Designern und Programmieren einfach standardkonforme Webseiten. Ihr Budget wird es Ihnen auf Dauer danken. Ebenso möchte ich Ihnen dafür danken, dass Sie mich bin zum Ende gelesen haben. Meine Mission ist erfüllt. Ich werde hier noch die Stellung halten, bis der geplante Text eintrifft. Ich wünsche Ihnen noch einen schönen Tag. Und arbeiten Sie nicht zuviel!</p>
                                <p>Und was können Sie für Standards tun? Fordern Sie von Ihren Designern und Programmieren einfach standardkonforme Webseiten. Ihr Budget wird es Ihnen auf Dauer danken. Ebenso möchte ich Ihnen dafür danken, dass Sie mich bin zum Ende gelesen haben. Meine Mission ist erfüllt. Ich werde hier noch die Stellung halten, bis der geplante Text eintrifft. Ich wünsche Ihnen noch einen schönen Tag. Und arbeiten Sie nicht zuviel!</p>
                                <p>Und was können Sie für Standards tun? Fordern Sie von Ihren Designern und Programmieren einfach standardkonforme Webseiten. Ihr Budget wird es Ihnen auf Dauer danken. Ebenso möchte ich Ihnen dafür danken, dass Sie mich bin zum Ende gelesen haben. Meine Mission ist erfüllt. Ich werde hier noch die Stellung halten, bis der geplante Text eintrifft. Ich wünsche Ihnen noch einen schönen Tag. Und arbeiten Sie nicht zuviel!</p>
                                <p>Und was können Sie für Standards tun? Fordern Sie von Ihren Designern und Programmieren einfach standardkonforme Webseiten. Ihr Budget wird es Ihnen auf Dauer danken. Ebenso möchte ich Ihnen dafür danken, dass Sie mich bin zum Ende gelesen haben. Meine Mission ist erfüllt. Ich werde hier noch die Stellung halten, bis der geplante Text eintrifft. Ich wünsche Ihnen noch einen schönen Tag. Und arbeiten Sie nicht zuviel!</p>
                                <p>Und was können Sie für Standards tun? Fordern Sie von Ihren Designern und Programmieren einfach standardkonforme Webseiten. Ihr Budget wird es Ihnen auf Dauer danken. Ebenso möchte ich Ihnen dafür danken, dass Sie mich bin zum Ende gelesen haben. Meine Mission ist erfüllt. Ich werde hier noch die Stellung halten, bis der geplante Text eintrifft. Ich wünsche Ihnen noch einen schönen Tag. Und arbeiten Sie nicht zuviel!</p>
                                <p>Und was können Sie für Standards tun? Fordern Sie von Ihren Designern und Programmieren einfach standardkonforme Webseiten. Ihr Budget wird es Ihnen auf Dauer danken. Ebenso möchte ich Ihnen dafür danken, dass Sie mich bin zum Ende gelesen haben. Meine Mission ist erfüllt. Ich werde hier noch die Stellung halten, bis der geplante Text eintrifft. Ich wünsche Ihnen noch einen schönen Tag. Und arbeiten Sie nicht zuviel!</p>
                            </div>
                            <div class="col-sm-3">
                                <nav class="sidebar hidden-print hidden-xs">
                                    <ul class="nav sidenav">
                                        <li class="active parent">
                                            <a href="#">Überpunkt 1</a>
                                            <ul class="subnav">
                                                <li><a href="#">Unterpunkt 1</a></li>
                                                <li><a href="#">Unterpunkt 2</a></li>
                                                <li><a href="#">Unterpunkt 3</a></li>
                                                <li><a href="#">Unterpunkt 4</a></li>
                                            </ul>
                                        </li>
                                        <li><a href="#">Menüpunkt 2</a></li>
                                        <li><a href="#">Menüpunkt 3</a></li>
                                        <li><a href="#">Menüpunkt 4</a></li>
                                        <li><a href="#">Menüpunkt 5</a></li>
                                        <li><a href="#">Menüpunkt 6</a></li>
                                        <li><a href="#">Menüpunkt 7</a></li>
                                        <li><a href="#">Menüpunkt 8</a></li>
                                        <li><a href="#">Menüpunkt 9</a></li>
                                        <li><a href="#">Menüpunkt 10</a></li>
                                    </ul>
                                </nav>
                            </div>
                        </div>
                    </div>
                </section>
                <section class="scenecontainer intern bright">
                    <div class="container overlay">
                        <div class="row">
                            <div class="col-sm-12">
                                <form id="fileupload" class="form-horizontal" action="#" method="POST" enctype="multipart/form-data">
                                    <fieldset>
                                        <!-- Text input-->
                                        <div class="form-group">
                                            <label class="col-sm-4" for="nachname">Nachname:</label>  
                                            <div class="col-sm-8">
                                                <input id="nachname" name="nachname" type="text" placeholder="placeholder" class="form-control input-sm">
                                                <span class="help-block">Bitte geben Sie Ihren Nachnamen ein.</span>  
                                            </div>
                                        </div>

                                        <div class="form-group">
                                            <label class="col-sm-4" for="vorname">Vorname:</label>  
                                            <div class="col-sm-8">
                                                <input id="vorname" name="vorname" type="text" placeholder="placeholder" class="form-control input-sm">
                                                <span class="help-block">Bitte geben Sie Ihren Vornamen ein.</span>  
                                            </div>
                                        </div>

                                        <div class="form-group">
                                            <label class="col-sm-4" for="email">E-Mail:</label>  
                                            <div class="col-sm-8">
                                                <input id="email" name="email" type="email" placeholder="placeholder" class="form-control input-sm">
                                                <span class="help-block">Bitte geben Sie Ihre E-Mail Adresse ein.</span>  
                                            </div>
                                        </div>

                                        <div class="form-group">
                                          <label class="col-sm-4" for="selectbasic">Für welche Seminargruppe?</label>
                                          <div class="col-sm-8">
                                            <select id="selectbasic" name="selectbasic" class="form-control">
                                              <option value="1">Option one</option>
                                              <option value="2">Option two</option>
                                            </select>
                                          </div>
                                        </div>

                                        <!-- Multiple Checkboxes -->
                                        <div class="form-group">
                                            <label class="col-sm-4">Freigabe für folgende User:</label>
                                            <div class="col-sm-8">
                                                <div class="checkbox">
                                                    <label for="checkboxes0">
                                                        <input type="checkbox" name="checkboxes" id="checkboxes0" value="1">
                                                        Erika Mustermann
                                                    </label>
                                                </div>
                                                <div class="checkbox">
                                                    <label for="checkboxes1">
                                                        <input type="checkbox" name="checkboxes" id="checkboxes1" value="2">
                                                        Max Mustermann
                                                    </label>
                                                </div>
                                            </div>
                                        </div>

                                        </fieldset>
                                    <!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload -->
                                    <div class="row fileupload-buttonbar">
                                        <div class="col-lg-7">
                                            <!-- The fileinput-button span is used to style the file input field as button -->
                                            <span class="btn btn-success fileinput-button">
                                                <i class="glyphicon glyphicon-plus"></i>
                                                <span>Datei auswählen</span>
                                                <input type="file" name="files[]" multiple>
                                            </span>
                                            <button type="submit" class="btn btn-primary start">
                                                <i class="glyphicon glyphicon-upload"></i>
                                                <span>Start upload</span>
                                            </button>
                                        </div>
                                    </div>
                                </form>
                            </div>
                        </div>
                    </div>
                </section>
</main>
</div>

js(附加):

var target = $(".sidebar").closest("div");
    target.attr("id", "affixcontainer");
    var bottom = $("#affixcontainer").closest(".scenecontainer").next(".scenecontainer").outerHeight(true);
    $(".sidebar").affix({
        offset: {
            top: $(".sidebar").offset().top,
            //target: $("#affixcontainer"),
            bottom: bottom
        } 
    });

jsfiddle: https://jsfiddle.net/3xL6cfe0/

jsfiddle: https://jsfiddle.net/3xL6cfe0/

推荐答案

我认为闪烁是绝对的滚动时应用的定位。这可以通过在应用词缀时调整宽度来解决。

I think the flicker is due the absolute positioning that gets applied as you scroll. This can be resolved by adjusting the width when the affix is applied.

.on('affix.bs.affix', function () { // before affix
    $(this).css({'width': $(this).outerWidth()});  // variable widths
});

为防止导航被截止,请添加一些额外的CSS:

To prevent the nav from getting cut-off, add some additional CSS:

.sidebar.affix > .nav {
    position: relative;
    top: 0;
}
.sidebar.affix-bottom > .nav {
    position: relative;
    top: -100px;
}

演示: http://codeply.com/go/AldWE19XrQ

这篇关于在粘贴底部到达并向后滚动顶部后,Affix Bootstrap闪烁的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆