DOM元素隐藏或删除
操作DOM元素隐藏大体分为两种途径,一种是通过CSS的方式,一种是通过DOM元素操作。
CSS
1. display: none;
不占据空间,无法点击。
2. visibility: hidden;
占据空间,无法点击。
3. position: absoulte; clip: rect(1px 1px 1px 1px);
不占据空间,无法点击。
4. position: absolute; top: -999em;
不占据空间,无法点击。
5. position: relative; top: -999em
占据空间,无法点击。
6. position: absolute; visibility: hidden;
不占据空间,无法点击。
7. height: 0; overflow: hidden;
不占据空间,无法点击。
8. opacity: 0; filter:Alpha(opacity=0);
占据空间,可以点击。
10. position: absolute; opacity: 0; filter:Alpha(opacity=0);
不占据空间,可以点击。
11.
zoom: 0.001;
-moz-transform: scale(0);
-webkit-transform: scale(0);
-o-transform: scale(0);
transform: scale(0);
IE6/IE7/IE9不占据空间,IE8/FireFox/Chrome/Opera占据空间。都无法点击。
12.
position: absolute;
zoom: 0.001;
-moz-transform: scale(0);
-webkit-transform: scale(0);
-o-transform: scale(0);
transform: scale(0);
不占据空间,无法点击
以上就是通过操作CSS达到隐藏DOM元素效果的几种方式。
DOM操作
DOM操作也可以对CSS样式进行修改,这里主要说明移除或者隐藏节点的DOM操作。
具体更改CSS样式参照上面关于CSS的操作。
1. removeChild
选中当前元素的父节点,再通过removeChild方法移除当前节点。
2. remove
选中当前节点,调用remove方法,对当前节点进行移除。
3. replaceChild
用新节点替换子节点。
可以使用JS动态创建一个display属性为none的节点,选中当前子节点后,
使用此方法用隐藏的节点替换当前节点。
4. appendChild
appendChild不仅具有增加DOM元素的功能,还有剪切功能。
可以动态的增加和剪切节点。
可以动态创建一个隐藏的节点,然后使用隐藏节点添加当前节点,
那么当前DOM节点就从页面上被移除。
提一下vue的v-if和v-show指令
不得不说,网上有些文章真是误人子弟,看到一篇文章说v-if的隐藏是操作CSS的display属性来控制页面元素的显示或者隐藏。真是大错特错。
v-if
可以直接销毁和重建DOM元素达到让元素显示和隐藏的效果。
v-show
通过修改元素的display的css属性让其显示或者隐藏。