当前位置: 首页 > news >正文

CSS中用display实现元素的显示/隐藏切换

** 通过display中的none和block **
在前端开发中,display: nonedisplay: block 是两种常用的 CSS 显示模式,核心区别在于:是否在页面中保留元素的占位空间

1. 核心区别

属性display: nonedisplay: block
占位空间元素完全从渲染树中移除,不占据空间元素作为块级元素显示,独占一行,占据空间
子元素所有子元素也会被隐藏,无法交互子元素正常显示,可交互
重排重绘触发重排(reflow)和重绘(repaint)仅在首次渲染或布局变化时触发
过渡动画不支持过渡效果(直接消失/显示)支持宽度、高度等属性的过渡动画
无障碍屏幕阅读器无法访问正常访问

2. 应用场景

(1)display: none
  • 临时隐藏元素:如模态框关闭、下拉菜单收起。
  • 条件渲染:根据用户交互或数据状态决定是否显示元素。
  • 性能优化:在不需要显示的元素上使用,减少渲染负担。
(2)display: block
  • 强制元素换行:如将 <span> 转为块级元素。
  • 创建独立容器:如 <div><p> 等默认块级元素。
  • display: none 配合:实现元素的显示/隐藏切换。

3. 示例代码

(1)显示/隐藏切换
<button onclick="toggleElement()">切换显示</button>
<div id="target" style="background: lightblue;">内容</div><script>
function toggleElement() {const element = document.getElementById('target');element.style.display = element.style.display === 'none' ? 'block' : 'none';
}
</script>
(2)转为块级元素
span {display: block; /* 将内联元素转为块级元素,独占一行 */margin-bottom: 10px;
}

4. 替代方案

(1)visibility: hidden
  • 区别:元素隐藏但仍占据空间,子元素同样隐藏但可通过 JavaScript 访问。
  • 应用:需要保留布局占位的场景(如表格中的某列临时隐藏)。
(2)opacity: 0
  • 区别:元素完全透明,但仍在页面中占据空间且可交互。
  • 应用:需要元素仍能接收点击事件的场景(如加载蒙层)。

5. 性能考虑

  • 频繁切换display: none/block 会触发重排,频繁操作可能影响性能,建议优先使用 opacityvisibility
  • 动画效果:若需要平滑过渡,可使用 opacity 配合 transition,而非直接切换 display

总结

场景推荐属性原因
完全移除元素且不保留空间display: none彻底从渲染树中移除
隐藏元素但保留占位visibility: hidden保留布局空间,无障碍问题
透明效果但仍可交互opacity: 0元素仍在页面中,可接收事件
http://www.dtcms.com/a/290813.html

相关文章:

  • 教育数字化革命:低代码破局与未来展望
  • `@Disabled` 注解未生效的原因分析与解决方案
  • 【PHP安全】免费解密支持:zend52、zend53、zend54好工具
  • 精密深孔偏心检具的制作及光学深孔检测探究 —— 激光频率梳 3D 轮廓检测
  • DevCon 6记录
  • GeoPandas 进行真正的地理空间可视化
  • ssh2-sftp-client 简化 sftp 文件传输的 node库
  • 轮状太空城的科学依据浅谈
  • 渗透测试视角:Web 应用常见漏洞的利用与防御策略
  • Unity-NavMesh详解-其二
  • 牛客周赛 Round 101
  • 职坐标:嵌入式AI项目指南
  • MySQL 核心知识点梳理(1)
  • JVM 类加载过程笔记
  • 二维DP深度解析
  • Linux(Centos 7.6)命令详解:jobs
  • 服务器后台崩溃的原因
  • openpnp - 贴片前,矫正板子位置时,使用多个mark点的位置并不一定精确(mark点可能板厂做的位置就不准)
  • 小智ai MCP学习笔记
  • 2021 RoboCom 世界机器人开发者大赛-本科组(复赛)解题报告 | 珂学家
  • SOLIDWORK教育版实时协作打破空间限制
  • 组合设计模式
  • 笔试——Day14
  • tcp的三次握手与四次挥手
  • 手机录制视频时,硬编码和软编码哪个质量高?(硬件编码、软件编码)
  • 跨端分栏布局:从手机到Pad的优雅切换
  • 删除 XML 格式中双引号内的空格
  • odoo-059 xml中字段上写 domain 和 filter_domain 什么区别
  • 对理性决策模型的剖析及应用路径
  • vue2使用v-viewer图片预览:打开页面自动预览,禁止关闭预览,解决在微信浏览器的页面点击事件老是触发预览初始化的问题