联系:他们都能让元素不可见
区别:
- display:none;会让元素从渲染树中消失,渲染的时候不占据任何空间;
visibility:hidden;不会让元素从渲染树中消失,渲染时袁旭继续占据空间,知识内容不可见了;
- display:none;是非继承属性,子孙节点消失是由于元素从渲染树中消失造成的,通过修改子孙节点的属性也无法显示;visibility:hidden;是继承属性,子孙节点消失是由于继承了hidden,可以通过设置子孙节点visibility:visible;然子孙节点显示
- 修改常规流中的display通常会造成文档重排。修改visibility属性只会造成本元素的重绘。
- 读屏器不会读取display:~;元素内容;但是会读取visibility:~;元素的内容