[css] 第3天 在页面上隐藏元素的方法有哪些?并简述出第一种方法的应用场景和优劣势。
display: none;
opacity: 0;
z-index: -999;
利用位置属性
visibility: hidden;
margin-left: -100%;
opacity: 0;
transform: scale(0);
display: none;
width: 0; height: 0; overflow: hidden;
仅对块内文本元素:
text-indent: -9999px;
font-size: 0;
opacity:0; //视觉上的隐藏
display:none;//对页面布局起作用,不会响应任何用户交互
visibility:hidden; //被隐藏的元素不占据任何空间
//屏幕上不可见
position:absolute;
top:-9999px;
left:-9999px;
大家都没有说优缺点啊。从性能的角度来说,disaplay: none; 页面不会渲染,可以减少首屏渲染的时间,但是会引起回流和重绘。
visibility: hidden; 页面会渲染只是不限显示。opacity: 0; 看不见,但是会占据空间。只会引起重绘
这里学到的几个:
transform
是一个功能丰富的转换函数opacity:0
一致// div 不占任何位置
// div 还在占位
- display: none
- opacity: 0
- visibility: hidden
- z-index: -9999999999999
- transform: scale(0)
- margin-left: -100%
- position: relative; left: -100%
- width: 0; height: 0;
display: none;
visibility: hidden;
opacity: 0;
transform: rotateY(90deg);
/ transform: rotateX(90deg);
补充一个:
transform: skew(90deg, -90deg)
display: none
visibility: hidden
opacity: 0
width: 0; height: 0; overflow: hidden
overflow: hidden
,同时子元素 margin-left: -100%
,而且,这种情况有限制:text-indent: -9999px
使其超出屏幕范围,如果屏幕需要左右滑动,那么最好在父元素上加一个 overflow: hidden
暂时就想到这么多
background: transparent;
<div class="box"></div>
hidden
:布尔属性表示元素尚未或不再相关。例如,它可以用于隐藏在登录过程完成之前无法使用的页面元素。浏览器不会渲染此类元素。不得使用此属性隐藏可以合法显示的内容。
<div class="box" hidden></div>
display: none;
visible:hidden
z-index
position: absolute;
:让元素脱标,不占实际的位置
z-index: -1;
:使用层级隐藏在其他元素之下
.box {
position: absolute;
z-index: -1;
}
margin
left: -500%;
、margin-left: -500%;
:让元素的位置在当前可是区域之外
.box {
position: absolute;
left: -500%;
}
.box {
position: absolute;
margin-left: -500%;
}
transform
position
配合,让元素脱标,不然还会占据空间scale
:缩放
.box {
position: absolute;
/* 1.缩放 */
transform: scale(0);
/* 2.位移 */
transform: translateX(-200%);
/* 3.旋转 */
transform: rotateX(90deg);
}
.box {
position: absolute;
opacity: 0;
}
在满足 overflow: hidden
时: padding/margin/line-height/text-indent…
位移:position,margin,transform,text-indent,都设置-9999px;
宽高为0;
display:none;
visibility:hidden;
opacity:0;
用其他模块覆盖住;
1.display: none
2.visibility: hidden
3.opacity: 0
_其他大佬的:
4.全局属性 hidden (不会占据空间,与display:none一样)
5.position:absolute;
(1)z-index: -1
(2)transform:scale(0)
(3)left: -10000%__
display:none 页面不渲染
visibility:hidden 页面渲染不显示
opacity:0 元素隐藏,但是如果绑定了事件依旧可以触发
z-index:-9999 在其他元素之下
left/right/top/bottom::9999px/-9999px 让元素在视区外
function delLast(str, target){
var map = str.split(target);
var newstr = '';
console.log(map);
for(var i = 0;i < map.length;i++){
if(i === map.length - 1 || i === map.length - 2){
newstr = newstr + map[i];
}else{
newstr = newstr + map[i] + target;
}
}
return newstr;
}
delLast('abcc abcdabceabc','abc');
visibility: hidden;
display: none;
opacity: 0;
z-index: -99999999999;
margin-left: -100%;
transform: scale(0);
width: 0; height: 0; overflow: hidden
text-indent: -9999px;
font-size: 0;
1.display:none 隐藏元素,页面不会渲染
2.opacity: 0 透明度
3.z-index:0 层级
4.定位到看不到的地方,使用方法有很多
5.visibility: hidden; 页面会渲染,只是不显示
Most helpful comment
占位:
visibility: hidden;
margin-left: -100%;
opacity: 0;
transform: scale(0);
不占位:
display: none;
width: 0; height: 0; overflow: hidden;
仅对块内文本元素:
text-indent: -9999px;
font-size: 0;