CSS中有哪些隐藏页面元素的方法?

简介: CSS中有哪些隐藏页面元素的方法?

一、前言

 在我们进行项目开发阶段,肯定会遇到很多需要隐藏元素的需求,并且每次遇到的需求都限制了我们需要特定的方法去隐藏元素。


   如消消乐游戏中,当我们消除成功后,我们就不能使用display:none去隐藏元素。这样会导致后面的元素重新计算元素的位置,使位置发生错乱,这时我们就应该使用 visibility:hidden 来实现该效果。


二、隐藏页面元素的实现方法

1.利用display:none实现

这是我们比较常见的隐藏元素的方法,通过销毁元素,使元素彻底消失,不在占据位置,后面的元素会占据该元素占据的位置,所以一定会触发重排(回流)


具体实现:


未给第一个元素div设置display

<div class="red" style="width: 100px; height: 100px; background: red"></div>
<div class="green" style="width: 100px; height: 100px; background: green"></div>

效果图如下

8ce4f96306f040b19d68da1b266b8847.png

当给第一个元素设置display时,通过给第一个盒子设置display,并且测试给第一个盒子绑定点击事件,是否会触发。

<div id="red" style="display: none; width: 100px; height: 100px; background: red"></div>
<div id="green" style="width: 100px; height: 100px; background: green"></div>
<script>
    let red = document.querySelector('#red');
    red.addEventListener('click', function () {
          console.log('1111');
    });
</script>

20d68a524c2b42dba9cfe6ab9d19492b.png

红色盒子彻底消失,后面的绿色盒子占据了红色盒子的位置,并且自定义事件不会触发


特点:元素不可见,不占据空间,无法响应点击事件


2.利用visibility:hidden隐藏元素

通过给元素设置为不可见达到隐藏元素的效果,元素还存在,只是设置为了不可见,所以只是触发了重绘,并不会触发重排。


当给第一个元素设置visibility:hidden时

<div id="red" style="visibility: hidden; width: 100px; height: 100px; background: red"></div>
<div id="green" style="width: 100px; height: 100px; background: green"></div>
<script>
    let red = document.querySelector('#red');
    red.addEventListener('click', function () {
        console.log('1111');
    });
</script>

效果如下,点击空白处第一个元素位置,不能响应点击事件.


730727267e494f9294246c398e31658d.png


特点:元素不可见,占据页面空间,无法响应点击事件


3.利用opacity:0来隐藏元素

opacity属性:用来设置元素的透明度,它不仅对颜色有效,对图像或者页面中其它的元素也有效。


语法:

opacity:value | inherit
描述
value 规定不透明度,从0.0(完全透明)到 1.0 (完全不透明)
inherit 应该从父元素继承opacity属性的值

通过将元素设置为完全透明(opacity:0)来达到隐藏元素的效果,会占据原有的位置,不一定会引起重绘


当给第一个元素设置opacity:0 时,达到的页面效果和visibility相同,但是通过点击第一个元素,会触发自定义事件。

e289bc7b23724e7a99a66ea7b93d6ff6.png

8450f5c911da41db865c6a5ce645dbff.png


特点:改变元素透明度,元素不可见,占据页面空间,可以响应点击事件


4.设置width,height属性为0隐藏元素

块级元素:块级元素会独占一行(即无法与其他元素显示在同一行内,同时块级元素必须设置宽高,才能正常显示。所以我们通过设置width,height为0可以达到隐藏元素的效果,页面上不显示元素且不占有位置,所以点击事件一定不会生效,且一定会触发重排(改变了元素怒的几何信息大小)


代码示例:

<div id="red" style="background: red; width: 0; height: 0"></div>
<div id="green" style="width: 100px; height: 100px; background: green"></div>

25ba349bce5243e393d197c4d4b8a21b.png

页面效果,只显示绿色盒子,第一个盒子不显示也没有占据位置,且不会出触发点击事件


特点:元素不可见,不占据页面空间,无法响应点击事件


5.利用绝对定位position:隐藏元素

实质上是将元素移除页面,达到隐藏元素的效果


#red {
    position: absolute;
    left: -99999px;
    top: -99999px;
}

三、display:none、visibility:hidden、opacity的区别

     display:none visibility:hidden opacity:0
页面中是否存在  不存在 存在 存在
重排 不会 不会
重绘 不确定
自身绑定事件 不触发 不触发 可触发
transition(动画) 不支持 支持 支持

重排一定会引起重绘,但重绘不一定会引起重排(后面我会对重绘和重排进行详解)


四、小结

    当我们遇到需要隐藏元素的场景时,可以考虑一下最终实现的效果,是否要显示元素,是否需要绑定自定义事件触发事件,是否需要增加动画效果(实现过渡效果),同时还要考虑性能方面的问题(即是否会触发重排或者重绘),都是我们需要考虑的问题。


     以上便是我总结的隐藏元素的方法及特点,欢迎大家讨论,一起学习。


目录
相关文章
|
1月前
|
前端开发 JavaScript
如何利用 CSS3 动画实现元素的淡入淡出效果?
在上述代码中,定义了一个名为 `fade-in` 的CSS类,其初始透明度为0,并设置了淡入的过渡效果。当通过JavaScript为元素添加 `active` 类时,元素的透明度变为1,实现淡入效果;当再次点击按钮移除 `active` 类时,元素又会逐渐淡出。通过这种方式,可以根据用户的操作灵活地控制元素的淡入淡出效果。
290 60
|
1月前
|
数据采集 前端开发 JavaScript
捕捉页面的关键元素:用CSS选择器与Puppeteer自动抓取
本文介绍了如何使用 Puppeteer 结合 CSS 选择器抓取动态网页中的关键元素,以亚航网站的特价机票信息为例,通过设置代理 IP、User-Agent 和 Cookie 等技术手段,有效提升爬虫策略,实现高效、稳定的爬取。
捕捉页面的关键元素:用CSS选择器与Puppeteer自动抓取
|
29天前
|
前端开发 JavaScript UED
CSS滚动效果和视差滚动的原理、应用及其对用户体验的影响。从平滑滚动到元素跟随,再到滚动触发动画
本文探讨了CSS滚动效果和视差滚动的原理、应用及其对用户体验的影响。从平滑滚动到元素跟随,再到滚动触发动画,这些效果增强了页面的吸引力和互动性。视差滚动通过不同层次元素的差异化移动,增加了页面的深度感和沉浸感。文章还讨论了实现方法、性能优化及案例分析,旨在为设计师和开发者提供实用指导。
58 7
|
29天前
|
前端开发 测试技术 定位技术
如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤
本文深入介绍了如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤。通过实例展示了主页、关于我们、产品展示、新闻动态及联系我们等页面的设计与实现,强调了合理布局、美观设计及用户体验的重要性。旨在为企业打造一个既专业又具吸引力的线上平台。
57 7
|
1月前
|
前端开发 UED 容器
在 CSS 中使用 Flex 布局实现页面自适应时需要注意什么?
【10月更文挑战第22天】在使用 Flex 布局实现页面自适应时,需要对其基本原理和特性有深入的理解,同时结合具体的布局需求和场景,进行细致的调整和优化。通过合理的设置和注意事项的把握,才能实现理想的自适应效果,提升用户体验。还可以根据实际情况进行更深入的探索和实践,以不断提升 Flex 布局的应用能力。
|
1月前
|
JavaScript
jQuery+css3制作精美的2024圣诞节倒计时页面
jQuery+css3制作精美的2024圣诞节倒计时页面动画
25 0
jQuery+css3制作精美的2024圣诞节倒计时页面
|
1月前
|
缓存 监控 前端开发
CSS 提高性能的方法
【10月更文挑战第24天】在实际应用中,还需要根据具体项目的特点和需求,灵活选择和组合这些方法,不断进行优化和改进。同时,随着技术的不断发展,也需要持续关注新的性能优化技巧和最佳实践,以保持在性能优化方面的领先地位。你对 CSS 性能优化还有哪些深入的思考和经验呢?欢迎进一步交流和分享。
|
1月前
|
前端开发
css页面顶部底部固定,中间自适应几种方法
【10月更文挑战第22天】css页面顶部底部固定,中间自适应几种方法
|
29天前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
36 6

热门文章

最新文章