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 相关文章推荐
css背景图片的背景裁切、背景透明度、背景变换等效果运用
Dec 24 HTML / CSS
分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
Dec 28 HTML / CSS
详解CSS3原生支持div铺满浏览器的方法
Aug 30 HTML / CSS
使用HTML5 Canvas API中的clip()方法裁剪区域图像
Mar 25 HTML / CSS
canvas实现图片马赛克的示例代码
Mar 26 HTML / CSS
html5读取本地文件示例代码
Apr 22 HTML / CSS
html5在移动端的屏幕适应问题示例探讨
Jun 15 HTML / CSS
详解HTML5 Canvas绘制不规则图形时的非零环绕原则
Mar 21 HTML / CSS
深入理解HTML的FormData对象
May 17 HTML / CSS
【HTML5】3D模型--百行代码实现旋转立体魔方实例
Dec 16 HTML / CSS
HTML5单页面手势滑屏切换原理分析
Jul 10 HTML / CSS
前端使用canvas生成盲水印的加密解密的实现
Dec 16 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适配器模式(Adapter)
2014/11/25 PHP
php查看当前Session的ID实例
2015/03/16 PHP
php生成固定长度纯数字编码的方法
2015/07/09 PHP
php读取XML的常见方法实例总结
2017/04/25 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
JQuery for与each性能比较分析
2013/05/14 Javascript
js获取对象为null的解决方法
2013/11/21 Javascript
jQuery添加/改变/移除CSS类及判断是否已经存在CSS
2014/08/20 Javascript
js结合正则实现国内手机号段校验
2015/06/19 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
2016/06/08 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
2016/09/23 Javascript
Gulp实现静态网页模块化的方法详解
2018/01/09 Javascript
JavaScript 中的12种循环遍历方法【总结】
2018/05/31 Javascript
微信小程序签到功能
2018/10/31 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
2018/11/15 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
python代理工具mitmproxy使用指南
2019/07/04 Python
关于python3中setup.py小概念解析
2019/08/22 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
简单了解Java Netty Reactor三种线程模型
2020/04/26 Python
python的Jenkins接口调用方式
2020/05/12 Python
python logging 重复写日志问题解决办法详解
2020/08/04 Python
西班牙在线宠物商店:zooplus.es
2017/02/24 全球购物
纯净、自信、100%的羊绒服装:360Cashmere
2021/02/20 全球购物
测试驱动开发的主要步骤是什么
2014/12/10 面试题
我未来的职业规划范文
2014/01/11 职场文书
七年级数学教学反思
2014/01/22 职场文书
假释思想汇报范文
2014/10/11 职场文书
2014年机关党建工作总结
2014/11/11 职场文书
演讲比赛主持词
2015/06/29 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
Python获取百度热搜的完整代码
2021/04/07 Python
python Django框架快速入门教程(后台管理)
2021/07/21 Python
关于k8s环境部署mysql主从的问题
2022/03/13 MySQL