摘要:移動(dòng)端導(dǎo)航欄有個(gè)很常見(jiàn)的折疊菜單,有插件實(shí)現(xiàn),有組件。最近用無(wú)插件實(shí)現(xiàn)一個(gè)這樣的效果。探究歷程直接采用,雖然實(shí)現(xiàn)了控制容器的顯示和隱藏,但是效果生硬。
移動(dòng)端導(dǎo)航欄有個(gè)很常見(jiàn)的折疊菜單,bootstrap有collapse插件實(shí)現(xiàn),jQuery UI有Accordion組件。最近用js無(wú)插件實(shí)現(xiàn)一個(gè)這樣的效果。 探究歷程
display:none;
直接采用display,雖然實(shí)現(xiàn)了控制容器的顯示和隱藏,但是效果生硬。
//jq或者zepeto的hide和show方法就是采用這個(gè)屬性 $("#el").hide(); $("#el").show(); /** show: function() { return this.each(function() { //清除元素的內(nèi)聯(lián)display="none"的樣式 this.style.display == "none" && (this.style.display = null) //當(dāng)樣式表里的該元素的display樣式為none時(shí),設(shè)置它的display為默認(rèn)值 if (getComputedStyle(this, "").getPropertyValue("display") == "none") this.style.display = defaultDisplay(this.nodeName) //defaultDisplay是獲取元素默認(rèn)display的方法 }) }, hide: function() { return this.css("display", "none") } **/
transition: height 600ms;
改變?nèi)萜鞯母叨?,配合overflow: hidden;實(shí)現(xiàn)平滑動(dòng)畫
//思路示例 //css //html...//js //這樣雖然實(shí)現(xiàn)了效果,但是需要提前知道容器的高度 //如果設(shè)置height為auto,然而transition并沒(méi)有效果
transition: max-height 600ms;
將transition的屬性換成max-height,max-height會(huì)限制元素的height小于這個(gè)值,所以我們將關(guān)閉狀態(tài)的值設(shè)成0,打開(kāi)狀態(tài)設(shè)置成足夠大
//思路示例 //css //html...//js //這樣過(guò)程中就會(huì)有個(gè)不盡人意的地方,關(guān)閉的時(shí)候總會(huì)有點(diǎn)延遲 //原因可能是maxHeight到height這個(gè)值得過(guò)渡過(guò)程耗費(fèi)了時(shí)間
獲取容器真實(shí)height
網(wǎng)上搜了一下,拜讀了內(nèi)容loading加載后高度變化CSS3 transition體驗(yàn)優(yōu)化,看到了這個(gè)方法
//思路:取消transition==》設(shè)置height:auto==》 //獲取容器真實(shí)height==》設(shè)置height:0==》 //設(shè)置transition==》觸發(fā)瀏覽器重排==》 //設(shè)置容器真實(shí)height function openAndClose(){ var el = document.getElementById("box"); if(window.getComputedStyle(el).height == "0px"){ // mac Safari下,貌似auto也會(huì)觸發(fā)transition, 故要none下~ el.style.transition = "none"; el.style.height = "auto"; var targetHeight = window.getComputedStyle(el).height; el.style.transition = "height 600ms" el.style.height = "0px"; el.offsetWidth;//觸發(fā)瀏覽器重排 el.style.height = targetHeight; }else{ el.style.height="0px"; } }其他
getComputedStyle() 方法獲取的是最終應(yīng)用在元素上的所有CSS屬性對(duì)象|MDN
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/89499.html
摘要:移動(dòng)端導(dǎo)航欄有個(gè)很常見(jiàn)的折疊菜單,有插件實(shí)現(xiàn),有組件。最近用無(wú)插件實(shí)現(xiàn)一個(gè)這樣的效果。探究歷程直接采用,雖然實(shí)現(xiàn)了控制容器的顯示和隱藏,但是效果生硬。 移動(dòng)端導(dǎo)航欄有個(gè)很常見(jiàn)的折疊菜單,bootstrap有collapse插件實(shí)現(xiàn),jQuery UI有Accordion組件。最近用js無(wú)插件實(shí)現(xiàn)一個(gè)這樣的效果。 探究歷程 display:none; 直接采用display,雖然實(shí)現(xiàn)...
摘要:最近在整理全棧開(kāi)發(fā)方面的技術(shù)細(xì)節(jié),寫成文檔方便工作中查找,在這里分享這個(gè)站點(diǎn)。 最近在整理全棧開(kāi)發(fā)方面的技術(shù)細(xì)節(jié),寫成文檔方便工作中查找,在這里分享這個(gè)站點(diǎn)。地址:前端開(kāi)發(fā)文檔 全棧開(kāi)發(fā) HTML5/CSS3 HTML元素 語(yǔ)義化標(biāo)簽 CSS3樣式 CSS選擇器 CSS繼承屬性 CSS3核心模塊 CSS盒子模型 CSS背景圖像 CSS清除浮動(dòng) CSS定位 SVG指南 彈性圖...
摘要:最近在整理全棧開(kāi)發(fā)方面的技術(shù)細(xì)節(jié),寫成文檔方便工作中查找,在這里分享這個(gè)站點(diǎn)。 最近在整理全棧開(kāi)發(fā)方面的技術(shù)細(xì)節(jié),寫成文檔方便工作中查找,在這里分享這個(gè)站點(diǎn)。地址:前端開(kāi)發(fā)文檔 全棧開(kāi)發(fā) HTML5/CSS3 HTML元素 語(yǔ)義化標(biāo)簽 CSS3樣式 CSS選擇器 CSS繼承屬性 CSS3核心模塊 CSS盒子模型 CSS背景圖像 CSS清除浮動(dòng) CSS定位 SVG指南 彈性圖...
摘要:最近在整理全棧開(kāi)發(fā)方面的技術(shù)細(xì)節(jié),寫成文檔方便工作中查找,在這里分享這個(gè)站點(diǎn)。 最近在整理全棧開(kāi)發(fā)方面的技術(shù)細(xì)節(jié),寫成文檔方便工作中查找,在這里分享這個(gè)站點(diǎn)。地址:前端開(kāi)發(fā)文檔 全棧開(kāi)發(fā) HTML5/CSS3 HTML元素 語(yǔ)義化標(biāo)簽 CSS3樣式 CSS選擇器 CSS繼承屬性 CSS3核心模塊 CSS盒子模型 CSS背景圖像 CSS清除浮動(dòng) CSS定位 SVG指南 彈性圖...
摘要:近兩年來(lái)一直在關(guān)注開(kāi)發(fā),最近也開(kāi)始全面應(yīng)用。首先,我們從無(wú)狀態(tài)組件開(kāi)始。渲染回調(diào)模式有一種重用組件邏輯的設(shè)計(jì)方式是把組件的寫成渲染回調(diào)函數(shù)或者暴露一個(gè)函數(shù)屬性出來(lái)。最后,我們將這個(gè)回調(diào)函數(shù)的參數(shù)聲明為一個(gè)獨(dú)立的類型。 近兩年來(lái)一直在關(guān)注 React 開(kāi)發(fā),最近也開(kāi)始全面應(yīng)用 TypeScript 。國(guó)內(nèi)有很多講解 React 和 TypeScript 的教程,但如何將 TypeScri...
閱讀 2983·2021-11-08 13:20
閱讀 1043·2021-09-22 15:20
閱讀 674·2019-08-30 15:53
閱讀 1976·2019-08-30 15:43
閱讀 1294·2019-08-29 17:21
閱讀 548·2019-08-29 12:15
閱讀 2391·2019-08-28 17:51
閱讀 3156·2019-08-26 13:26