网站首页 > 知识剖析 正文
CSS 隐藏元素的方法你能说出来几种?
这是一个在 web 前端面试中常会提及的基础问题,聊这个话题不仅仅只是讨论“茴”字有几种写法,更是能从一个简单的问题中体现出你的 CSS 边界能力,本文提炼了十种最实用的方法,希望对你有所帮助。
常规方法
display: none;
结构消失,会触发回流重绘(Reflow & Repaint)。
opacity: 0;
结构保留,占据空间,可以正常触发事件,因触发硬件加速所以不发生回流和重绘。
visibility: hidden;
结构保留,占据空间,仅触发重绘,不会触发事件(无法选中)。
content-visibility: hidden;
设置元素内容可见性,设置的元素本身不受影响。hidden 隐藏效果与 display: none 类似,但实际浏览器只是跳过了内容的渲染,还保留着内容的渲染状态,性能上有优势。
注意:该属性目前还处于实验性阶段,使用时需要考虑浏览器兼容性问题。
逃逸视窗
position+left/top
利用绝对定位 position 设置 absolute 或 fixed,同时 left 或 top 设置 -9999px;
超大负边距会将元素抛出视图,因为定位本身脱离了文档流所以不占据空间。
translate(-9999px)
利用偏移抛出视图,空间会占据,不过元素实际不在视窗内所以无法交互。
transform: translate(-9999px);
注意:此方法对行内元素无效!
这两种方法并不使元素本身消失,只是看不见了而已。
移行变换
scale(0) / skew(90deg)
通过2D变换来达到隐藏,占据空间,不可交互。
transform: scale(0);
transform: skew(90deg);
注意:此方法对行内元素无效!
circle(0px)
利用裁剪创建元素的可显示区域,区域外会隐藏,占据空间,不可交互(这里我用 circle 是因为它参数最少)
clip-path: circle(0px);
z-index
层叠上下文在合适的情况下可以遮挡住元素,也算是一种隐藏方式。
压缩空间
height: 0; width: 0;
宽高都为 0 时不占据空间,不可交互。需要处理边距等样式,还需设置 overflow: hidden; 否则子元素可能不会隐藏,注意还会被display影响,所以这个方法本身并不实用,但是可以充分体现对盒模型的理解。
width: 0;
height: 0;
padding: 0;
margin: 0;
border: none;
overflow: hidden;
总结
或许还有其它“障眼法”可以让元素不可见,以上整理的十种方法都独具代表性,且比较实用。
以上就是文章的全部内容,感谢看到这里!本人知识水平有限,如有错误望不吝指正,如果觉得写得不错,对你有所帮助或启发,可以点赞收藏支持一下,也欢迎关注,我会更新更多实用的前端知识与技巧。我是茶无味de一天(公众号: 品味前端),希望与你共同成长~
猜你喜欢
- 2024-11-23 Python的selenium实现等待某个元素加载完成后返回结果
- 2024-11-23 DOM 操作之DOM概念和获取元素
- 2024-11-23 html 哪些是块级元素、哪些是行内元素?
- 2024-11-23 前端面试题-CSS-可替换元素和非替换元素
- 2024-11-23 小白总结:前端HTML基础知识点(1)——元素总结
- 2024-11-23 HTML Video 元素在 Vue 中消失的 muted 属性
- 2024-11-23 用CSS 实现元素垂直居中,有哪些好的方案?
- 2024-11-23 JavaScript知识点总结(7)
- 2024-11-23 Java 0基础入门 (Html表单、表单元素)
- 2024-11-23 《css大法》之使用伪元素实现超实用的图标库
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)