浅谈:{display:none & visibility:hidden}

据说今年前端面试中,出现了很多次关于display:none与visibility:hidden区别的题目。不仅仅是

display:none与visibility:hidden

在前端工作中也有很多的坑,例如:

1、{
    <ul>
        <li>有序列表</li>
    </ul>

}

2、      <ol>
			<li>无序列表</li>
			<li>无序列表</li>
		</ol>
3、{

      <dl>
		<dt>自定义列表</dt>
		<dd>自定义列表</dd>
	 </dl>
}

像这样很基础的问题也许就是考验一个程序员的基础能力和扩展能力,有时候别看是一道题,从中可以暴露出一个人的人多东西。HR是最懂得察言、观色、攻心,的角色。

 

display:none与visibility:hidden区别

虽然两者都是对,对象的隐藏,但是使用时会对其他元素产生影响。

display:none 隐藏对象,隐藏对象其物理空间。

visibility:hidden 隐藏对象,保留其占据的物理空间。

用一个案例说明

<style>
			#wrap{
				width: 100px;
				height: 100px;
				background: red;
				text-align: center;
				line-height: 50px;
				font-size: 16px;
				color: white;
			}
			#box1{
				width: 50px;
				height: 50px;
				background: blue;
				/*display: none;*/
				visibility:hidden;
			}
			#box2{
				width: 50px;
				height: 50px;
				background: yellow;
			}
		</style>
	</head>

	<body>
		<div id="wrap">
			<div id="box1">box1</div>
			<div id="box2">box2</div>
		</div>
</body>

 

1、对一个块级元素分别使用display:none & visibility:hidden产生的效果

(1)当对#box1添加声明display:none时

(2)当对#box1添加声明visibility:hidden时

2、display:none相当于在页面的物理世界中消失,因此,box2会浮动上去,但是visibility:hidden相当于隐身,说句不好听的就是占着茅坑不拉屎那种。

 

如果有一天你同样遭遇被问到这个问题:

以下答案仅供参考

  • 普通回答,一个隐藏,但占据位置,一个隐藏,不占据位置

  • 进一步, display由于隐藏后不占据位置,所以造成了dom树的改变,会引发回流,代价较大

  • 再进一步,当一个页面某个元素经常需要切换 display时如何优化,一般会用复合层优化,或者要求低一点用 absolute让其脱离普通文档流也行。然后可以将话题引到普通文档流, absolute文档流,复合图层的区别,

  • 再进一步可以描述下浏览器渲染原理以及复合图层和普通图层的绘制区别(复合图层单独分配资源,独立绘制,性能提升,但是不能过多,还有隐式合成等等)

上面这些大概就是知识系统化后的回答,会更全面,容易由浅入深,而且一有机会就可以往更底层挖掘。

 

转载于:https://my.oschina.net/chaojiaheng/blog/1648759

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值