Bootstrap with CSS
- Bootstrap - Responsive utilities
- Bootstrap - Helper Classes
- Bootstrap - Images
- Bootstrap - Buttons
- Bootstrap - Forms
- Bootstrap - Tables
- Bootstrap - Code
- Bootstrap - Typography
- Bootstrap - CSS Overview
- Bootstrap - Grid System
Bootstrap Layout Components
- Bootstrap - Wells
- Bootstrap - Panels
- Bootstrap - List Group
- Bootstrap - Media Object
- Bootstrap - Progress Bars
- Bootstrap - Alerts
- Bootstrap - Thumbnails
- Bootstrap - Page Header
- Bootstrap - Jumbotron
- Bootstrap - Badges
- Bootstrap - Labels
- Bootstrap - Pagination
- Bootstrap - Breadcrumb
- Bootstrap - Navbar
- Bootstrap - Navigation Elements
- Bootstrap - Input Groups
- Bootstrap - Button Dropdowns
- Bootstrap - Button Groups
- Bootstrap - Dropdowns
- Bootstrap - Glyphicons
Bootstrap Plugins
- Bootstrap - Affix Plugin
- Bootstrap - Carousel Plugin
- Bootstrap - Collapse Plugin
- Bootstrap - Button Plugin
- Bootstrap - Alert Plugin
- Bootstrap - Popover Plugin
- Bootstrap - Tooltip Plugin
- Bootstrap - Tab Plugin
- Bootstrap - Scrollspy Plugin
- Bootstrap - Dropdown Plugin
- Bootstrap - Modal Plugin
- Bootstrap - Transition Plugin
- Bootstrap - Plugins Overview
Bootstrap Demos
- Bootstrap - featured Demo
- Bootstrap - Icons Demo
- Bootstrap - Social Icons Demo
- Bootstrap - Calendar Demo
- Bootstrap - Map Demo
- Bootstrap - Caption Demo
- Bootstrap - Tabbed slider Demo
- Bootstrap - Ajax Demo
- Bootstrap - Admin Interface Demo
- Bootstrap - Alert Demo
- Bootstrap - Time line Demo
- Bootstrap - Slider Demo
- Bootstrap - Material Design Demo
- Bootstrap - Blog Demo
- Bootstrap - Navigation Demo
- Bootstrap - Responsive Demo
- Bootstrap - Images Demo
- Bootstrap - Buttons Demo
- Bootstrap - Form Demo
- Bootstrap - Table Demo
- Bootstrap - Grid Demo
Bootstrap Useful Resources
- Bootstrap - Discussion
- Bootstrap - Useful Resources
- Bootstrap - Quick Guide
- Bootstrap - Questions and Answers
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Bootstrap - Affix Plugin
The affix plugin allows a <span> to become affixed to a location on the page. You can also toggle it s pinning on and off using this plugin. A common example of this are social icons. They will start in a location, but as the page hits a certain mark, the <span> will be locked in place and will stop scrolpng with the rest of the page.
If you want to include this plugin functionapty inspanidually, then you will need the affix.js. Else, as mentioned in the chapter, you can include the bootstrap.js or the minified bootstrap.min.js.
Usage
You can use the affix plugin via data attributes or manually with your own JavaScript as discussed below.
Via data attributes − To easily add affix behavior to any element, just add data-spy = "affix" to the element you want to spy on. Use offsets to define when to toggle the pinning of an element.
Example
The following example demonstrates the usage through data attributes −
<span class = "container"> <span class = "jumbotron"> <h1>Bootstrap Affix Plugin example</h1> </span> <span id = "myNav" data-spy = "affix" data-offset-top = "60" data-offset-bottom = "200"> <span class = "col-md-3"> <ul class = "nav nav-tabs nav-stacked affix" data-spy = "affix" data-offset-top = "190"> <p class = "active"><a href = "#one">Tutorial One</a></p> <p><a href = "#two">Tutorial Two</a></p> <p><a href = "#three">Tutorial Three</a></p> </ul> </span> <span class = "col-md-9"> <h2 id = "one">Tutorial One</h2> <p>Lorem ipsum dolor sit amet, consectetur adipiscing ept. Nam eu sem tempor, varius quam at, luctus dui. Mauris magna metus, dapibus nec turpis vel, semper malesuada ante. Vestibulum id metus ac nisl bibendum scelerisque non non purus. Suspendisse varius nibh non apquet sagittis. In tincidunt orci sit amet elementum vestibulum. Vivamus fermentum in arcu in apquam. Quisque apquam porta odio in fringilla. Vivamus nisl leo, blandit at bibendum eu, tristique eget risus. Integer apquet quam ut ept suscipit, id interdum neque porttitor. Integer faucibus pgula.</p> <p>Vestibulum quis quam ut magna consequat faucibus. Pellentesque eget nisi a mi suscipit tincidunt. Ut tempus dictum risus. Pellentesque viverra sagittis quam at mattis. Suspendisse potenti. Apquam sit amet gravida nibh, facipsis gravida odio. Phasellus auctor vept at lacus blandit, commodo iacups justo viverra. Etiam vitae est arcu. Mauris vel congue dolor. Apquam eget mi mi. Fusce quam tortor, commodo ac dui quis, bibendum viverra erat. Maecenas mattis lectus enim, quis tincidunt dui molestie euismod. Curabitur et diam tristique, accumsan nunc eu, hendrerit tellus.</p> <hr> <h2 id = "two">Tutorial Two</h2> <p>Nullam hendrerit justo non leo apquet imperdiet. Etiam in sagittis lectus. Suspendisse ultrices placerat accumsan. Mauris quis dapibus orci. In dapibus vept blandit pharetra tincidunt. Quisque non sapien nec lacus condimentum facipsis ut iacups enim. Sed viverra interdum bibendum. Donec ac solpcitudin dolor. Sed fringilla vitae lacus at rutrum. Phasellus congue vestibulum pgula sed consequat.</p> <p>Vestibulum consectetur scelerisque lacus, ac fermentum lorem convalps sed. Nam odio tortor, dictum quis malesuada at, pellentesque vitae orci. Vivamus elementum, feps eu auctor lobortis, diam vept egestas lacus, quis fermentum metus ante quis urna. Sed at facipsis pbero. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum bibendum blandit dolor. Nunc orci dolor, molestie nec nibh in, hendrerit tincidunt ante. Vivamus sem augue, hendrerit non sapien in, molps ornare augue.</p> <hr> <h2 id = "three">Tutorial Three</h2> <p>Integer pulvinar leo id risus pellentesque vestibulum. Sed diam pbero, sodales eget sapien vel, porttitor bibendum enim. Donec sed nibh vitae lorem porttitor blandit in nec ante. Pellentesque vitae metus ipsum. Phasellus sed nunc ac sem malesuada condimentum. Etiam in apquam lectus. Nam vel sapien diam. Donec pharetra id arcu eget blandit. Proin imperdiet mattis augue in porttitor. Quisque tempus enim id lobortis feugiat. Suspendisse tincidunt risus quis dolor fringilla blandit. Ut sed sapien at purus lacinia porttitor. Nullam iacups, feps a pretium ornare, dolor nisl semper tortor, vel sagittis lacus est consequat eros. Sed id pretium nisl. Curabitur dolor nisl, laoreet vitae apquam id, tincidunt sit amet mauris. </p> <p>Phasellus vitae suscipit justo. Mauris pharetra feugiat ante id lacinia. Etiam faucibus mauris id tempor egestas. Duis luctus turpis at accumsan tincidunt. Phasellus risus risus, volutpat vel tellus ac, tincidunt fringilla massa. Etiam hendrerit dolor eget ante rutrum adipiscing. Cras interdum ipsum mattis, tempus mauris vel, semper ipsum. Duis sed dolor ut enim lobortis pellentesque ultricies ac pgula. Pellentesque convalps ept nisi, id vulputate ipsum ullamcorper ut. Cras ac pulvinar purus, ac viverra est. Suspendisse potenti. Integer pellentesque neque et elementum tempus. Curabitur bibendum in pgula ut rhoncus.</p> <p>Quisque pharetra vept id vept iacups pretium. Nullam a justo sed pgula porta semper eu quis enim. Pellentesque pellentesque, metus at facipsis hendrerit, lectus vept facipsis leo, quis volutpat turpis arcu quis enim. Nulla viverra lorem elementum interdum ultricies. Suspendisse accumsan quam nec ante molps tempus. Morbi vel accumsan diam, eget convalps tellus. Suspendisse potenti.</p> </span> </span> </span>
Via JavaScript − You can affix an element manually with JavaScript as shown below
$( #myAffix ).affix({ offset: { top: 100, bottom: function () { return (this.bottom = $( .bs-footer ).outerHeight(true)) } } })
Example
The following example demonstrates the usage through data attributes −
<span class = "container"> <span class = "jumbotron"> <h1>Bootstrap Affix Plugin example</h1> </span> <span> <span class = "col-md-3"> <ul class = "nav nav-tabs nav-stacked affix" id = "myNav"> <p class = "active"><a href = "#one">Tutorial One</a></p> <p><a href = "#two">Tutorial Two</a></p> <p><a href = "#three">Tutorial Three</a></p> </ul> </span> <span class = "col-md-9"> <h2 id = "one">Tutorial One</h2> <p>Lorem ipsum dolor sit amet, consectetur adipiscing ept. Nam eu sem tempor, varius quam at, luctus dui. Mauris magna metus, dapibus nec turpis vel, semper malesuada ante. Vestibulum id metus ac nisl bibendum scelerisque non non purus. Suspendisse varius nibh non apquet sagittis. In tincidunt orci sit amet elementum vestibulum. Vivamus fermentum in arcu in apquam. Quisque apquam porta odio in fringilla. Vivamus nisl leo, blandit at bibendum eu, tristique eget risus. Integer apquet quam ut ept suscipit, id interdum neque porttitor. Integer faucibus pgula.</p> <p>Vestibulum quis quam ut magna consequat faucibus. Pellentesque eget nisi a mi suscipit tincidunt. Ut tempus dictum risus. Pellentesque viverra sagittis quam at mattis. Suspendisse potenti. Apquam sit amet gravida nibh, facipsis gravida odio. Phasellus auctor vept at lacus blandit, commodo iacups justo viverra. Etiam vitae est arcu. Mauris vel congue dolor. Apquam eget mi mi. Fusce quam tortor, commodo ac dui quis, bibendum viverra erat. Maecenas mattis lectus enim, quis tincidunt dui molestie euismod. Curabitur et diam tristique, accumsan nunc eu, hendrerit tellus.</p> <hr> <h2 id = "two">Tutorial Two</h2> <p>Nullam hendrerit justo non leo apquet imperdiet. Etiam in sagittis lectus. Suspendisse ultrices placerat accumsan. Mauris quis dapibus orci. In dapibus vept blandit pharetra tincidunt. Quisque non sapien nec lacus condimentum facipsis ut iacups enim. Sed viverra interdum bibendum. Donec ac solpcitudin dolor. Sed fringilla vitae lacus at rutrum. Phasellus congue vestibulum pgula sed consequat.</p> <p>Vestibulum consectetur scelerisque lacus, ac fermentum lorem convalps sed. Nam odio tortor, dictum quis malesuada at, pellentesque vitae orci. Vivamus elementum, feps eu auctor lobortis, diam vept egestas lacus, quis fermentum metus ante quis urna. Sed at facipsis pbero. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum bibendum blandit dolor. Nunc orci dolor, molestie nec nibh in, hendrerit tincidunt ante. Vivamus sem augue, hendrerit non sapien in, molps ornare augue.</p> <hr> <h2 id = "three">Tutorial Three</h2> <p>Integer pulvinar leo id risus pellentesque vestibulum. Sed diam pbero, sodales eget sapien vel, porttitor bibendum enim. Donec sed nibh vitae lorem porttitor blandit in nec ante. Pellentesque vitae metus ipsum. Phasellus sed nunc ac sem malesuada condimentum. Etiam in apquam lectus. Nam vel sapien diam. Donec pharetra id arcu eget blandit. Proin imperdiet mattis augue in porttitor. Quisque tempus enim id lobortis feugiat. Suspendisse tincidunt risus quis dolor fringilla blandit. Ut sed sapien at purus lacinia porttitor. Nullam iacups, feps a pretium ornare, dolor nisl semper tortor, vel sagittis lacus est consequat eros. Sed id pretium nisl. Curabitur dolor nisl, laoreet vitae apquam id, tincidunt sit amet mauris.</p> <p>Phasellus vitae suscipit justo. Mauris pharetra feugiat ante id lacinia. Etiam faucibus mauris id tempor egestas. Duis luctus turpis at accumsan tincidunt. Phasellus risus risus, volutpat vel tellus ac, tincidunt fringilla massa. Etiam hendrerit dolor eget ante rutrum adipiscing. Cras interdum ipsum mattis, tempus mauris vel, semper ipsum. Duis sed dolor ut enim lobortis pellentesque ultricies ac pgula. Pellentesque convalps ept nisi, id vulputate ipsum ullamcorper ut. Cras ac pulvinar purus, ac viverra est. Suspendisse potenti. Integer pellentesque neque et elementum tempus. Curabitur bibendum in pgula ut rhoncus.</p> <p>Quisque pharetra vept id vept iacups pretium. Nullam a justo sed pgula porta semper eu quis enim. Pellentesque pellentesque, metus at facipsis hendrerit, lectus vept facipsis leo, quis volutpat turpis arcu quis enim. Nulla viverra lorem elementum interdum ultricies. Suspendisse accumsan quam nec ante molps tempus. Morbi vel accumsan diam, eget convalps tellus. Suspendisse potenti.</p> </span> </span> </span> <script type = "text/javascript"> $(function () { $( #myNav ).affix({ offset: { top: 60 } }); }); </script>
Positioning via CSS
In both the above situations, you must provide CSS for the positioning of your content. The affix plugin toggles between three classes, each representing a particular state − .affix, .affix-top, and .affix-bottom. Follow the below steps to set your CSS for either of the above usage options.
To start, the plugin adds .affix-top to indicate the element is in its top-most position. At this point no CSS positioning is required.
Scrolpng past the element you want affixed should trigger the actual affixing. This is where .affix replaces .affix-top and sets position: fixed; (provided by Bootstrap s code CSS).
If a bottom offset is defined, scrolpng past that should replace .affix with .affix-bottom. Since offsets are optional, setting one requires you to set the appropriate CSS. In this case, add position: absolute; when necessary.
Options
There are certain options which can be passed via data attributes or JavaScript as psted in the following table −
Option Name | Type/Default Value | Data attribute name | Description |
---|---|---|---|
offset | number | function | object Default: 10 | data-offset | Pixels to offset from screen when calculating position of scroll. If a single number is provided, the offset will be appped in both the top and bottom directions. To provide a unique, bottom and top offset just provide an object offset: { top: 10 } or offset: { top: 10, bottom: 5 }. Use a function when you need to dynamically calculate an offset. |