# display:none visibility:hidden

# 相同点

  • 控制元素显隐

  • 无法获取焦点

# 不同点

display none visibility:hidden
页面重绘 页面不会重绘
无法获取DOM 事件无响应 可以事件响应 子元素可见情况下 设置hidden的父元素可以响应事件
子元素同父元素 即使子元素设置非 none ,也不可见 子元素如果设置 visible , 依然可见
.box1 
  p none1
  p none2

.box2
  p visibility1
  p visibility2

.box3 
  p ceshi1111

1
2
3
4
5
6
7
8
9
10
11
.box1 {
  display: none;

  /* 即使设置 block 也不可见 */
  p {
    display: block;
  }
}

.box2 {
  visibility: hidden;
  background: #999;
  border: 1px solid #666;

  /* 子元素可见 */
  p {
    visibility: visible;
  }
}

/* hover 可响应 */
.box2:hover {
  visibility: visible;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24