- Bootstrap 4:Responsive Web Design
- Silvio Moreto Matt Lambert Benjamin Jakobus Jason Marah
- 391字
- 2021-07-09 18:54:53
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:

- Kibana Essentials
- Visual C++實例精通
- Instant QlikView 11 Application Development
- Learning Hunk
- Geospatial Development By Example with Python
- Julia 1.0 Programming Complete Reference Guide
- Mastering Apache Storm
- WordPress Search Engine Optimization(Second Edition)
- Selenium WebDriver Practical Guide
- 快樂編程:青少年思維訓練
- 零基礎學SQL(升級版)
- 深入淺出 HTTPS:從原理到實戰
- Getting Started with Windows Server Security
- Learning NHibernate 4
- Python程序員面試算法寶典