摘要:設(shè)置側(cè)邊欄定位有了中間內(nèi)容區(qū)域頂部與頁(yè)面最上方的距離,以及頁(yè)面頂部導(dǎo)航欄的高度,側(cè)邊欄需要向下移動(dòng)的距離很容易就算出來(lái)了。
用 bigSlide 生成的可滑動(dòng)側(cè)邊欄需要更改其定位和高度屬性,更改定位令其與中間內(nèi)容區(qū)域的頂部對(duì)齊,更改高度令其與中間內(nèi)容區(qū)域的底部對(duì)齊。這個(gè)問題可以拆分為下面幾個(gè)需求來(lái)依次實(shí)現(xiàn):
更改側(cè)邊欄定位 獲取中間內(nèi)容區(qū)域頂部與頁(yè)面最上方的距離通過結(jié)合 CSS 選擇器,可以快速定位目標(biāo)元素,然后利用 offset() 方法的 top 屬性,即可得到元素頂部與頁(yè)面最上方的距離。
var topOffsetToTop = $("div.main-body div.view-tab.learn-tab").offset().top;
參考內(nèi)容:jQuery: the offset() and position() method
獲取頁(yè)面頂部導(dǎo)航欄的高度由于側(cè)邊欄是相對(duì)定位,默認(rèn)位置緊鄰頂部導(dǎo)航欄,那么如果要與右側(cè)的內(nèi)容區(qū)域頂端對(duì)齊,則側(cè)邊欄向下移動(dòng)的距離,就等于內(nèi)容區(qū)域與頁(yè)面最上方的距離,減去頁(yè)面頂部導(dǎo)航欄的高度。
var topNavBarHeight = $("#header").height();設(shè)置側(cè)邊欄定位
有了中間內(nèi)容區(qū)域頂部與頁(yè)面最上方的距離,以及頁(yè)面頂部導(dǎo)航欄的高度,側(cè)邊欄需要向下移動(dòng)的距離很容易就算出來(lái)了。
$("#menu").css("top", topOffsetToTop - topNavBarHeight + "px");
參考內(nèi)容:how to remove only one style property with jquery
更改側(cè)邊欄高度原理與上面更改側(cè)邊欄定位的思路相同,中間內(nèi)容區(qū)域頂部的位置已知,那么只要知道中間內(nèi)容區(qū)域底部的位置,就能夠得到該區(qū)域的高度,然后令側(cè)邊欄也為相同高度即可。
計(jì)算中間內(nèi)容區(qū)域底部距頁(yè)面頂部的距離var contentAreaBottomOffsetToTop = $("#thread_view").offset().top + $("#thread_view").height();令側(cè)欄高度為中間內(nèi)容區(qū)域高度
var contentAreaHeight = contentAreaBottomOffsetToTop - topOffsetToTop; $("#menu").css("height", contentAreaHeight + "px");最終代碼 JavaScript 執(zhí)行順序
上面這段代碼,最初是放在 標(biāo)簽內(nèi)的尾部的,但是運(yùn)行頁(yè)面發(fā)現(xiàn)這段代碼并未生效,在 Firebug 中逐句測(cè)試這段代碼時(shí)卻又生效了,經(jīng)提醒應(yīng)該是代碼未被執(zhí)行,思考之后認(rèn)為應(yīng)該是代碼在頁(yè)面中的位置有問題,以側(cè)邊欄插件 bigSlide 作為關(guān)鍵字搜索,發(fā)現(xiàn)側(cè)邊欄初始化的代碼位于頁(yè)面最下方,這樣的話,頁(yè)面執(zhí)行的順序其實(shí)是先用自己的代碼調(diào)整了側(cè)邊欄的定位和高度,之后又通過 bigSlide 初始化插件,這樣自定義的部分當(dāng)然不會(huì)生效了,將上面的代碼放在側(cè)邊欄插件初始化代碼之后,一切OK~~~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/79577.html
摘要:利用方法選擇到偽元素,然后利用方法獲取對(duì)應(yīng)的屬性的值。具體用法可以參考的這篇文章而偽元素的屬性值除了常規(guī)賦值外,還有一種特殊的方法來(lái)獲取。具體實(shí)現(xiàn)參照,不再做具體分析參考文獻(xiàn)獲取元素值之方法熟悉 雖然標(biāo)題里寫的是偽元素,不過這篇文章主要是說(shuō)::before和::after,其余幾個(gè)偽元素(::first-letter、::first-line、::selection等)由于沒有cont...
摘要:前言這是系列最后一篇,本文主要總結(jié)了的用法,以及最后對(duì)函數(shù)進(jìn)行抽象。一個(gè)多說(shuō)無(wú)益,還是上代碼來(lái)得實(shí)在還記得編程藝術(shù)中的總結(jié)一中那個(gè)無(wú)聊的根據(jù)元素在節(jié)點(diǎn)樹里的位置來(lái)設(shè)置樣式的吧現(xiàn)在可以用屬性直接更改樣式了。 前言:這是CSS-DOM系列最后一篇,本文主要總結(jié)了className的用法,以及最后對(duì)函數(shù)進(jìn)行抽象。 ------------------我是分割線----------------...
摘要:前言這是系列最后一篇,本文主要總結(jié)了的用法,以及最后對(duì)函數(shù)進(jìn)行抽象。一個(gè)多說(shuō)無(wú)益,還是上代碼來(lái)得實(shí)在還記得編程藝術(shù)中的總結(jié)一中那個(gè)無(wú)聊的根據(jù)元素在節(jié)點(diǎn)樹里的位置來(lái)設(shè)置樣式的吧現(xiàn)在可以用屬性直接更改樣式了。 前言:這是CSS-DOM系列最后一篇,本文主要總結(jié)了className的用法,以及最后對(duì)函數(shù)進(jìn)行抽象。 ------------------我是分割線----------------...
摘要:你曾想過在頁(yè)面加載過后去修改或的變量值么我曾經(jīng)嘗試過但并沒有成功因?yàn)楫?dāng)預(yù)處理的代碼編譯成了它的變量就不再是變量了然而自定義屬性就沒有這樣的限制在該系列的文章中我曾提及過自定義屬性它最牛扳的特性就是它的動(dòng)態(tài)性它的強(qiáng)大我們一眼就能對(duì)比出來(lái)預(yù)處理 你曾想過在頁(yè)面加載過后去修改 Sass 或 Less 的變量值么? 我曾經(jīng)嘗試過, 但并沒有成功, 因?yàn)楫?dāng)預(yù)處理的代碼編譯成了 CSS, 它的變...
摘要:如果我們作為一個(gè)后端開發(fā)者想掌握一個(gè)前端框架,是一個(gè)好選擇,因?yàn)樗銐虻囊讓W(xué)。是語(yǔ)言的下一代標(biāo)準(zhǔn)。數(shù)據(jù)方法生命周期鉤子函數(shù)其他有些內(nèi)容比較重要,留到后面講定義數(shù)據(jù)定義數(shù)據(jù)定義了數(shù)據(jù),那么就可以在管理的區(qū)域中使用的獲取數(shù)據(jù)的語(yǔ)法來(lái)獲取數(shù)據(jù)。目錄 前言: iview組件庫(kù)示例 element組件庫(kù)示例 ...
閱讀 1763·2021-09-22 15:25
閱讀 1319·2019-08-29 12:34
閱讀 1927·2019-08-26 13:57
閱讀 3205·2019-08-26 10:48
閱讀 1457·2019-08-26 10:45
閱讀 806·2019-08-23 18:23
閱讀 749·2019-08-23 18:01
閱讀 1961·2019-08-23 16:07