前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >聊聊 CSS 隐藏元素的 10 种实用方法

聊聊 CSS 隐藏元素的 10 种实用方法

原创
作者头像
茶无味的一天
发布2023-04-14 20:19:05
6850
发布2023-04-14 20:19:05
举报
文章被收录于专栏:品味前端品味前端

CSS 隐藏元素的方法你能说出来几种?

这是一个在初级 web 前端面试中可能常会提及的问题,聊这个话题不仅仅只是讨论“茴”字有几种写法,更是能从一个简单的问题中体现出你的 CSS 边界能力,本文提炼了十种最实用的方法,希望对你有所帮助。

常规方法

display: none;

结构消失,会触发回流重绘Reflow & Repaint)。

opacity: 0;

结构保留,占据空间,可以正常触发事件,因触发硬件加速所以不发生回流和重绘

visibility: hidden;

结构保留,占据空间,仅触发重绘,不会触发事件(无法选中)。

content-visibility: hidden;

设置元素内容可见性,设置的元素本身不受影响。hidden 隐藏效果与 display: none 类似,但实际浏览器只是跳过了内容的渲染,还保留着内容的渲染状态,性能上有优势。

注意:该属性目前还处于实验性阶段,使用时需要考虑浏览器兼容性问题。

逃逸视窗

position + left/top

利用绝对定位 position 设置 absolutefixed,同时 lefttop 设置 -9999px

超大负边距会将元素抛出视图,因为定位本身脱离了文档流所以不占据空间。

translate(-9999px)

利用偏移抛出视图,空间会占据,不过元素实际不在视窗内所以无法交互。

代码语言:css
复制
transform: translate(-9999px);

注意:此方法对行内元素无效

2023-03-14 16.29.42.gif
2023-03-14 16.29.42.gif

这两种方法并不使元素本身消失,只是看不见了而已。

移行变换

scale(0) / skew(90deg)

通过2D变换来达到隐藏,占据空间,不可交互。

代码语言:css
复制
transform: scale(0);

transform: skew(90deg);
2023-03-14 16.31.57.gif
2023-03-14 16.31.57.gif

注意:此方法对行内元素无效

circle(0px)

利用裁剪创建元素的可显示区域,区域外会隐藏,占据空间,不可交互(这里我用 circle 是因为它参数最少)

代码语言:css
复制
clip-path: circle(0px);
2023-03-14 16.33.37.gif
2023-03-14 16.33.37.gif

z-index

层叠上下文在合适的情况下可以遮挡住元素,也算是一种隐藏方式。

2023-03-14 16.36.24.gif
2023-03-14 16.36.24.gif

压缩空间

height: 0; width: 0;

宽高都为 0 时不占据空间,不可交互。需要处理边距等样式,还需设置 overflow: hidden; 否则子元素可能不会隐藏,注意还会被display影响,所以这个方法本身并不实用,但是可以充分体现对盒模型的理解。

代码语言:css
复制
width: 0;
height: 0;
padding: 0;
margin: 0;
border: none;
overflow: hidden;
2023-03-14 16.46.27.gif
2023-03-14 16.46.27.gif

总结

或许还有其它“障眼法”可以让元素不可见,以上整理的十种方法都独具代表性,且比较实用。

以上就是文章的全部内容,感谢看到这里!本人知识水平有限,如有错误望不吝指正,如果觉得写得不错,对你有所帮助或启发,可以点赞收藏支持一下,我会更新更多实用的前端知识与技巧。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常规方法
    • display: none;
      • opacity: 0;
        • visibility: hidden;
          • content-visibility: hidden;
          • 逃逸视窗
            • position + left/top
              • translate(-9999px)
              • 移行变换
                • scale(0) / skew(90deg)
                  • circle(0px)
                    • z-index
                    • 压缩空间
                      • height: 0; width: 0;
                      • 总结
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档