刘勇虎的官方网站
网站内容包含大前端、服务器开发、Python开发、iOS开发、Android开发、网站维护等技术文章。专注于分享技术经验,职业心得体会,IT优秀文章与教程创作。
Stay hungry,Stay foolish,Stay young
visibility 和 display 都能实现元素的显示和隐藏,但它们在具体的行为上有显著的不同。opacity 则主要用于控制元素的透明度。
**display: none;**:隐藏元素,元素不占用文档流中的空间。
**display: block;**:显示元素,元素作为块级元素显示。
**display: inline;**:显示元素,元素作为行内元素显示。
**display: inline-block;**:显示元素,元素作为行内块级元素显示。
**visibility: hidden;**:隐藏元素,元素仍然占用文档流中的空间。
**visibility: visible;**:显示元素。
**opacity: 0;**:元素视觉上消失,透明度为 0,但仍然占用文档流中的空间,浏览器会解析该元素。
display: none;**:切换显示时,页面会产生回流(回流:当页面中的一部分元素需要改变规模尺寸、布局、显示隐藏等,页面重新构建,此时就是回流)。回流会导致页面重新渲染,影响性能。visibility: hidden;**:切换显示时,不会引起回流,因为元素仍然存在于文档流中,只是不可见。opacity: 0;**:不会引起回流,因为元素仍然存在于文档流中,只是透明度为 0。display: none;**:元素彻底消失,不在文档流中占位,浏览器也不会解析该元素。visibility: hidden;**:元素视觉上消失,但仍然占据文档流中的空间,浏览器会解析该元素。opacity: 0;**:元素视觉上消失,但仍然占据文档流中的空间,浏览器会解析该元素。display: none;**:transition 对于 display 是无效的,无法实现平滑的显示/隐藏过渡效果。visibility: hidden;**:transition 对于 visibility 是无效的,无法实现平滑的显示/隐藏过渡效果。opacity: 0;**:transition 对于 opacity 是有效的,可以实现平滑的透明度过渡效果。display: none;**:元素在页面上已经不存在,所以在它上面绑定的事件无法触发。visibility: hidden;**:元素虽然占据一定空间,但在它上面绑定的事件是无法触发。opacity: 0;**:元素仍然存在并占据空间,所以在它上面绑定的事件可以触发。display: none;**:不会被子元素继承,给子元素设置 display: block; 子元素不会显示。visibility: hidden;**:会被子元素继承,可以通过设置子元素 visibility: visible; 让子元素显示出来。opacity: 0;**:会被子元素继承,给子元素设置 opacity: 1; 子元素不会显示。display: none;display: none;。display: none;,然后在需要时显示。visibility: hidden;visibility: hidden;。visibility: hidden;。opacity: 0;opacity 结合 transition。opacity。visibility: hidden; 或 opacity: 0;,以减少页面回流的影响。opacity: 0; 而不是 display: none; 或 visibility: hidden;。visibility 和 opacity 时,注意子元素的继承问题,必要时进行显式设置。visibility、display 和 opacity 在实现元素的显示和隐藏方面各有特点。display: none; 适用于需要完全移除元素的场景,visibility: hidden; 适用于需要保留元素位置的场景,opacity: 0; 适用于需要实现透明度过渡效果的场景。希望本文对您有所帮助!