隐藏元素的方法
隐藏元素的方法可以总结为六类:直接隐藏、对溢出内容隐藏、对元素透明度进行调整、将元素移除当前屏幕、对元素的层级关系进行调整、对元素进行裁剪
只有对元素的透明度进行调整才可以点击,其余都不可点击
// 直接隐藏
visibility:hidden display:none
// 对溢出内容隐藏 overflow:hidden text-overflow:ellipsis
// 对元素透明度进行调整 opacity:0 background:transparent
// 将元素移除当前屏幕 position:absolute/relative margin:-1000px transform:translate(-9999px) text-indent:-9999px
// 对元素的层级关系进行调整 z-index:-1000
// 对元素进行裁剪 clip(clip-path):rect()/inset()/polygon()
第一类方法:直接隐藏
.hide{ display:none;/* 不占据空间,无法点击 */ } .hide{ visibility:hidden; /* 占据空间,无法点击 */ }
第二类方法:对溢出内容隐藏
.hide{ overflow:hidden; /* 占据空间,无法点击 */ } .hide{ text-overflow:ellipsis; /* 占据空间,无法点击 */ }
第三类方法:对元素透明度进行调整
.hide{ opacity:0;/* 占据空间,可以点击 */ } .hide_2{ -webkit-filter:opacity(0); filter:opacity(0);/* 占据空间,可以点击 */ } .hide_2{ background:transpant;/* 占据空间,可以点击 */ }
注:过滤元素filter也可使用opacity值设置透明度,不过filter现在的兼容性不好,只支持webkit内核,这里顺带一提。
第四类方法:将元素移除当前屏幕
.hide{ position:absolute; left:-99999px; top:-90999px;/* 不占据空间,无法点击 */ } .hide-2{ position:relative; left:-99999px; top:-90999px;/* 占据空间,无法点击 */ } div{ margin-left:-9999px; /* 占据空间,无法点击 */ } .hide{ transform: translate(0,0)/* 占据空间,无法点击 */ } .hide{ div{text-indent:-9999px;}/* 占据空间,无法点击 */
}
第五类方法:对元素的层级关系进行调整
.hide{ position:absolute; z-index:-1000;/* 不占据空间,无法点击 */ }
第六类方法:对元素进行裁剪
.hide{ position:absolute;/*fixed*/ clip:rect(top,right,bottom,left);/* 占据空间,无法点击 */ } .hide_2 { clip-path: polygon(0px 0px,0px 0px,0px 0px,0px 0px); }
注:在以前,这可以通过 clip 属性来实现,但是这个属性被废弃了(现在浏览器依然支持),换成一个更好的属性叫做 clip-path,但可惜的是依旧只能在chrome40+浏览器里使用。
参考: