官术网_书友最值得收藏!

Making the menu affix

The affix plugin is present only in version 3 of Bootstrap (it was removed in version 4), and it aims to toggle the position of an element between fixed and relative, emulating the effect of position: sticky, which is not present in all browsers.

We will apply the sticky effect the left #profile element although we do not have enough elements to make a scroll on our web page. Therefore, to make it simple, replicate the <li> in ul#feed to increase the number of items in the list. Do this three times or more to make a scroll in your web browser.

In div#profile, add the markup related to affix:

<div id="profile" class="col-md-3 hidden-sm hidden-xs" data-spy="affix" data-offset-top="0">
    …
    // rest of the profile HTML
</div>

Refresh the web browser. You will see that the affix is not working yet. Since we are making the left column with a fixed position with the affix plugin, it is removing the entire column from the grid, making the columns glitch from left to right.

So, we need a workaround for that. We must create some piece of JavaScript code using the events triggered for the plugin.

Let's use the affix.bs.affix event, which is an event fired just before the affixing of the element:

$(document).ready(function() {
    … // rest of the JavaScript code

    $('#profile').on('affix.bs.affix', function() {
        $(this).width($(this).width() - 1);
        $('#main').addClass('col-md-offset-3');
    }).on('affix-top.bs.affix', function() {
        $(this).css('width', '');
        $('#main').removeClass('col-md-offset-3');
    });
});

Thus, we have played with some tricks in the preceding JavaScript code.

In the first delegated event, .on('affix.bs.affix', handler),when the element switches to position: fixed, we keep the width of the left column. It would change the width because the .col-md-3 class does not have a fixed width; it uses a percentage width.

We also added the offset to the middle column, corresponding to the detached left column, the .col-md-offset-3 class.

The affix-top.bs.affix event does the opposite action, firing when the element returns to the original top position and removing the custom width and the offset class in the middle column.

To remove the fixed width and return to the .col-md-3 percentage width, just add the $(this).css('width', '') line. Also remove the .col-md-offset-3 class from the #main content.

Refresh the web browser, scroll the page, and see the result, exemplified in the next screenshot. Note that the profile is fixed on the left while the rest of the content scrolls with the page:

Making the menu affix
主站蜘蛛池模板: 西乌珠穆沁旗| 富裕县| 孟津县| 义马市| 仲巴县| 诸暨市| 黔西县| 昂仁县| 育儿| 万载县| 民乐县| 穆棱市| 雷波县| 昌宁县| 石泉县| 沽源县| 格尔木市| 苏州市| 上林县| 蒙自县| 湟源县| 南江县| 肃北| 达日县| 罗定市| 吉水县| 湖口县| 嫩江县| 阿拉尔市| 皮山县| 马山县| 承德县| 雷山县| 临沭县| 股票| 来宾市| 获嘉县| 永寿县| 句容市| 三台县| 苏尼特左旗|