css中有哪些方式可以隐藏页面元素及区别


Posted in HTML / CSS onJune 16, 2022

前言

在平常的样式排版中,我们经常遇到将某个模块隐藏的场景

通过css隐藏元素的方法有很多种,它们看起来实现的效果是一致的

但实际上每一种方法都有一丝轻微的不同,这些不同决定了在一些特定场合下使用哪一种方法

实现方式

通过css实现隐藏元素方法有如下:

  • display:none
  • visibility:hidden
  • opacity:0
  • 设置height、width模型属性为0
  • position:absolute
  • clip-path

display:none

设置元素的displaynone是最常用的隐藏元素的方法

.hide {
        display:none;
    }

将元素设置为display:none后,元素在页面上将彻底消失

元素本身占有的空间就会被其他元素占有,也就是说它会导致浏览器的重排和重绘

消失后,自身绑定的事件不会触发,也不会有过渡效果

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

visibility:hidden

设置元素的visibilityhidden也是一种常用的隐藏元素的方法

从页面上仅仅是隐藏该元素,DOM结果均会存在,只是当时在一个不可见的状态,不会触发重排,但是会触发重绘

.hidden{
        visibility:hidden
     }

给人的效果是隐藏了,所以他自身的事件不会触发

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

opacity:0

opacity属性表示元素的透明度,将元素的透明度设置为0后,在我们用户眼中,元素也是隐藏的

不会引发重排,一般情况下也会引发重绘

如果利用 animation 动画,对 opacity 做变化(animation会默认触发GPU加速),则只会触发 GPU 层面的 composite,不会触发重绘

.transparent {
        opacity:0;
    }

由于其仍然是存在于页面上的,所以他自身的的事件仍然是可以触发的,但被他遮挡的元素是不能触发其事件的

需要注意的是:其子元素不能设置opacity来达到显示的效果

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

设置height、width属性为0

将元素的marginborderpaddingheightwidth等影响元素盒模型的属性设置成0,如果元素内有子元素或内容,还应该设置其overflow:hidden来隐藏其子元素

.hiddenBox {
        margin:0;     
        border:0;
        padding:0;
        height:0;
        width:0;
        overflow:hidden;
    }

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

position:absolute

将元素移出可视区域

.hide {
       position: absolute;
       top: -9999px;
       left: -9999px;
    }

特点:元素不可见,不影响页面布局

clip-path

通过裁剪的形式

.hide {
      clip-path: polygon(0px 0px,0px 0px,0px 0px,0px 0px);
    }

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

小结

最常用的还是display:nonevisibility:hidden,其他的方式只能认为是奇招,它们的真正用途并不是用于隐藏元素,所以并不推荐使用它们

区别

关于display: nonevisibility: hiddenopacity: 0的区别,如下表所示:

  display: none visibility: hidden opacity: 0
页面中 不存在 存在 存在
重排 不会 不会
重绘 不一定
自身绑定事件 不触发 不触发 可触发
transition 不支持 支持 支持
子元素可复原 不能 不能
被遮挡的元素可触发事件 不能

到此这篇关于css中有哪些方式可以隐藏页面元素及区别的文章就介绍到这了,更多相关css隐藏页面元素内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
纯CSS3实现滚动的齿轮动画效果
Jun 05 HTML / CSS
纯css3实现思维导图样式示例
Nov 01 HTML / CSS
css3进阶之less实现星空动画的示例代码
Sep 10 HTML / CSS
为你的html5网页添加音效示例
Apr 03 HTML / CSS
HTML5实现简单图片上传所遇到的问题及解决办法
Jan 20 HTML / CSS
浅谈基于HTML5的在线视频播放方案
Feb 18 HTML / CSS
如何避免常见的6种HTML5错误用法
Nov 06 HTML / CSS
html5实现多图片预览上传及点击可拖拽控件
Mar 15 HTML / CSS
5分钟实现Canvas鼠标跟随动画背景
Nov 18 HTML / CSS
浅析图片上传及canvas压缩的流程
Jun 10 HTML / CSS
CSS3 制作的图片滚动效果
Apr 14 HTML / CSS
css3中transform属性实现的4种功能
Aug 07 HTML / CSS
CSS控制继承中的height能变为可继承吗
Jun 10 #HTML / CSS
css样式important规则的正确使用方式
Jun 10 #HTML / CSS
分享几个实用的CSS代码块
Jun 10 #HTML / CSS
html中两种获取标签内的值的方法
Jun 10 #HTML / CSS
html5+实现plus.io进行拍照和图片等获取
Jun 01 #HTML / CSS
基于CSS制作创意端午节专属加载特效
聊聊CSS粘性定位sticky案例解析
Jun 01 #HTML / CSS
You might like
PHP写API输出的时用echo的原因详解
2019/04/28 PHP
网站上面有这种切换效果
2006/06/26 Javascript
关于图片验证码设计的思考
2007/01/29 Javascript
javascript 对象定义方法 简单易学
2009/03/22 Javascript
jquery的ajax简单结构示例代码
2014/02/17 Javascript
JQuery给元素绑定click事件多次执行的解决方法
2014/05/29 Javascript
js数组去重的方法汇总
2015/07/29 Javascript
基于AngularJS实现页面滚动到底自动加载数据的功能
2015/10/16 Javascript
jQuery点击其他地方时菜单消失的实现方法
2016/04/22 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
2016/08/12 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
layui 优化button按钮和弹出框的方法
2018/08/15 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
图解javascript作用域链
2019/05/27 Javascript
回顾Javascript React基础
2019/06/15 Javascript
JavaScript前端开发时数值运算的小技巧
2020/07/28 Javascript
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
python3+PyQt5实现自定义窗口部件Counters
2018/04/20 Python
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
Python构建图像分类识别器的方法
2019/01/12 Python
python从子线程中获得返回值的方法
2019/01/30 Python
Python OpenCV中的resize()函数的使用
2019/06/20 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
laravel使用redis队列实例讲解
2021/03/23 PHP
七年级生物教学反思
2014/01/30 职场文书
春节联欢会主持词
2014/03/24 职场文书
医学生自我鉴定范文
2014/03/26 职场文书
新品发布会策划方案
2014/06/08 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
2014酒店客房部工作总结
2014/12/16 职场文书
Spring实现内置监听器
2021/07/09 Java/Android
为什么RedisCluster设计成16384个槽
2021/09/25 Redis
Java死锁的排查
2022/05/11 Java/Android