為啥會有這么個問題?
其實這是我在某次面試前端實習生時候遇到的一個問題,面試官說你有多少種讓DOM隱藏的方法,能說多少說多少,當時腦抽,因為是“能說多少說多少”就覺得那肯定有好多,總結一下當時想出來的“偏方”。
回答:
display: none;visibility: hidden;
兩者不同:如果設置 display:none,將隱藏整個元素,如果設置 visibility:hidden,元素的內(nèi)容將不可見,但元素仍保持原來的位置和大小。
思來想去既然是隱藏,我是不是還可以說 opacity:0;,問了一下這個答案行不行,他說行,還有嗎?
當然有:
設置position為position:absolute或fixed,可以通過z-index遮掩。
設置父元素為 overflow:hidden,將想要隱藏的元素移出父元素范圍。
通過css的clip屬性,將DOM裁剪。
通過css的transform屬性
a. transform: skew(90deg) 拉伸90度,當然不一定是90
b. transform: scale(0) 縮放到0
c. transform: rotateX(90deg) 當然角度不一定是90,也不一定是沿x軸
=。=面試完之后我就去群里邊問了一下,大部分人說的答案都是display: none;和 visibility: hidden;斗膽猜測一下這兩個應該是面試官想要的答案。
偏方的使用
雖然答案可能就這兩個,但是我還是有用到過我的“偏方”去做隱藏元素,
我遇到的情況是,我需要為DOM元素做一個fadeout+fadein的動畫,元素帶有click事件,fadeout之后只是opacity為0,然后就有了 元素隱藏了之后點擊事件還存在 這個bug。
當然解決方案有很多,可以通過js,也可以通過css,css可以通過延時+transform來做,也算是我的偏方吧,可能解決方案并不完美,望留言指教。
當然這只是一些自己瞎琢磨出來的方法,希望有和我一樣愛鬧騰的同學補充一下下,也希望大神見到后不吝指教,感激不盡。