html怎么隐藏内容
用 `display: none` 藏东西,隐藏是内容前端开发里最常见的手法。但很多人不知道,隐藏这个属性一加上去,内容元素连占位空间都没了,隐藏就像从来没存在过一样。内容上周帮同事调一个表单,隐藏他死活找不到一个报错提示为什么消失,内容最后发现是隐藏父级容器被加上了 `display: none`,整块区域直接塌了。内容 如果你想让元素看不见但保留它占的隐藏那块地儿,得用 `visibility: hidden`。内容这俩区别挺关键的隐藏。举个例子,内容做轮播图的隐藏时候,非当前帧的图片如果用 `display: none`,整个布局会跳一下;换成 `visibility: hidden`,位置还在,只是内容透明了,过渡动画会顺滑很多。我自己的习惯是,只要涉及位置稳定的场景,优先考虑 `visibility`。 还有一种更隐蔽的藏法:`opacity: 0`。元素完全透明,但依然在那里,能点击、能触发事件。有人拿它做自定义复选框的原始 input,视觉上没了,功能还在。不过要小心,屏幕阅读器可能还会读到它,无障碍这块得额外处理。 说到无障碍,`aria-hidden="true"` 是专门给辅助技术看的。它不改变视觉呈现,只告诉读屏软件“忽略这块”。和 CSS 隐藏配合用,效果更好。比如一个纯装饰性的图标,用 `aria-hidden` 加上 `font-size: 0` 或者 `color: transparent`,既不影响布局,也不会被读出来。 HTML 里还有个老古董:`hidden` 属性。写 ` 再提一个场景:`` 标签。里面的内容默认不渲染,但也不是“隐藏”——它是惰性的,等着被 JavaScript 克隆出来用。跟 `display: none` 是两码事。有人拿它当隐藏容器存数据,结果发现取不到 `offsetHeight`,因为根本没进渲染树。 实际项目里,选哪种藏法取决于你要藏多久、藏了之后还要不要用。临时切换用 `display`,保留占位用 `visibility`,纯视觉透明用 `opacity`,给读屏软件屏蔽用 `aria-hidden`,初始不渲染用 ``。别小看这些细节,调布局的时候能省不少头发。
-
上一篇
-
下一篇
- 随机阅读
- 搜索
-
- 友情链接
-