詳解BootStrap中Affix控件的使用及保持布局的美觀的方法
Affix是BootStrap中的一個很有用的控件,他能夠監(jiān)視瀏覽器的滾動條的位置并讓你的導(dǎo)航始終都在頁面的可視區(qū)域。一開始的時候,導(dǎo)航在頁面中是普通的流式布局,占有文檔中固定的位置,當(dāng)頁面滾動的時候,導(dǎo)航就自動變成了固定布局(fixed),始終處于用戶的視區(qū),下面來說說他的用法。首先來看看他的實(shí)現(xiàn)原理。它是通過實(shí)時修改頁面元素的class屬性來實(shí)現(xiàn)的
開始的時候應(yīng)用affix的元素的class中會自動添加affxi-top屬性
當(dāng)滾動條滾動以至于導(dǎo)航快要到頁面頂部的時候這時候在元素的class中會將affix-top變?yōu)閍ffix
當(dāng)拖動滾動條到頁面底部的時候,affix又會自動變?yōu)閍ffix-bottom
以上過程完全有控件自己實(shí)現(xiàn),無須我們干預(yù),我們只需要寫好這些狀態(tài)的css就可以了
如我們可以設(shè)置
.affix-top { top:150px; } .affix { top:20px;//通常用bootstrap構(gòu)建的網(wǎng)站頭部都有個導(dǎo)航條 } .affix-bottom { …… }
下面我們看看它的使用方法
1、通過data屬性
你只需為需要監(jiān)聽的頁面元素添加data-spy="affix"即可。然后使用偏移量來確定一個元素的開和關(guān).
<ul class="nav nav-tabs nav-stacked affix" data-spy="affix" data-offset-top="190"> <li class="active"><a href="#one">Tutorial One</a></li> <li><a href="#two">Tutorial Two</a></li> <li><a href="#three">Tutorial Three</a></li> </ul>
其中data-offset-top為處于affix-top狀態(tài)元素距離頁面頂端的位置。當(dāng)滾動到頁面頂端的使用我們可以設(shè)置".affix"的樣式來重新設(shè)置其"top"值。
2、通過javascript調(diào)用
示例代碼如下:
$('#myNav').affix({ offset: { top: 100,//滾動中距離頁面頂端的位置 bottom: function () {//滾動完成時距離頁面底部的位置 return (this.bottom = $('.bs-footer').outerHeight(true)) } } })
HTML代碼如下(只展示核心代碼):
<ul class="nav nav-tabs nav-stacked affix" id="myNav"> <li class="active"><a href="#one">Tutorial One</a></li> <li><a href="#two">Tutorial Two</a></li> <li><a href="#three">Tutorial Three</a></li> </ul> …… <div class="bs-footer"> </div>
以上似乎已經(jīng)介紹完了bootstrap中affix的使用,但是在實(shí)際使用的過程中我們會發(fā)現(xiàn),當(dāng)拖動滾動條的時候使用了affix的頁面元素的寬度會發(fā)生變化,從而導(dǎo)致頁面布局的雜亂,所以我們在定義affix的css中最好寫死它的寬度如:
.affix{ width:250px; }
這樣在視窗足夠大的時候是沒有任何問題的,但是當(dāng)拖動改變視窗的大小后會發(fā)現(xiàn)布局又變亂了,這個問題困擾了我許久,最后通過分析bootcss的源碼我發(fā)現(xiàn)該網(wǎng)站在所有使用affix的元素的class中都添加了"hidden-print" "hidden-xs" "hidden-sm"這些屬性,用于當(dāng)屏幕不是符合要求的情況下可以隱藏affix,雖然影響了易用性,但是保證了布局無論在哪種情況下都是整齊的。
以上所述是小編給大家介紹的詳解BootStrap中Affix控件的使用及保持布局的美觀的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- BootStrap框架個人總結(jié)(bootstrap框架、導(dǎo)航條、下拉菜單、輪播廣告carousel、柵格系統(tǒng)布局、標(biāo)簽頁tabs、模態(tài)框、菜單定位)
- bootstrap學(xué)習(xí)使用(導(dǎo)航條、下拉菜單、輪播、柵格布局等)
- 精彩的Bootstrap案例分享 重點(diǎn)在注釋!(選項(xiàng)卡、柵格布局)
- Bootstrap布局之柵格系統(tǒng)詳解
- Bootstrap每天必學(xué)之柵格系統(tǒng)(布局)
- 談一談bootstrap響應(yīng)式布局
- Bootstrap布局方式詳解
- JS組件Bootstrap Table布局詳解
- Bootstrap三種表單布局的使用方法
- Bootstrap 布局組件(全)
- 全面解析Bootstrap布局組件應(yīng)用
- 全面解析bootstrap格子布局
- Bootstrap實(shí)現(xiàn)的經(jīng)典柵格布局效果實(shí)例【附demo源碼】
相關(guān)文章
使用layui實(shí)現(xiàn)的左側(cè)菜單欄以及動態(tài)操作tab項(xiàng)方法
今天小編就為大家分享一篇使用layui實(shí)現(xiàn)的左側(cè)菜單欄以及動態(tài)操作tab項(xiàng)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09ES6中Set和Map數(shù)據(jù)結(jié)構(gòu)的簡單講解
大家心里是否產(chǎn)生過這樣的疑問,JS中既然已經(jīng)有對象這種數(shù)據(jù)結(jié)構(gòu),我們?yōu)槭裁催€要再單獨(dú)去使用Set或者M(jìn)ap呢?下面這篇文章主要給大家介紹了關(guān)于ES6中Set和Map數(shù)據(jù)結(jié)構(gòu)的相關(guān)資料,需要的朋友可以參考下2022-08-08js實(shí)現(xiàn)數(shù)字遞增特效【仿支付寶我的財(cái)富】
本篇文章主要介紹了js實(shí)現(xiàn)仿支付寶我的財(cái)富里的數(shù)字遞增特效,具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-05-05JavaScript實(shí)現(xiàn)PC端橫向輪播圖
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)PC端橫向輪播圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02微信小程序 功能函數(shù)小結(jié)(手機(jī)號驗(yàn)證*、密碼驗(yàn)證*、獲取驗(yàn)證碼*)
這篇文章主要介紹了微信小程序功能函數(shù)手機(jī)號驗(yàn)證、密碼驗(yàn)證,獲取驗(yàn)證碼*的相關(guān)代碼,非常不錯,具有參考借鑒價(jià)值,需要的朋友可以參考下2017-12-12基于JS代碼實(shí)現(xiàn)當(dāng)鼠標(biāo)懸停表格上顯示這一格的全部內(nèi)容
這篇文章主要介紹了基于JS代碼實(shí)現(xiàn)當(dāng)鼠標(biāo)懸停表格上顯示這一格的全部內(nèi)容 的相關(guān)資料,需要的朋友可以參考下2016-06-06uniapp-路由uni-simple-router安裝配置教程
專為uniapp打造的路由器,和uniapp深度集成,uniapp用到了很多vue的api,但在路由管理的功能相對于vue-router還是比較欠缺的,比如全局導(dǎo)航守衛(wèi),本文給大家講解uniapp-路由uni-simple-router相關(guān)知識,感興趣的朋友跟隨小編一起看看吧2022-11-11淺談如何使用webpack構(gòu)建多頁面應(yīng)用
這篇文章主要介紹了淺談如何使用webpack構(gòu)建多頁面應(yīng)用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05