JavaScript切换元素显示隐藏的方法

总结一下,页面中切换显示元素的方法

一、js原生方式

方法一:使用document.createElement

在显示的方法中,通过document.createElement创建元素,销毁的方法中,移除元素

js 复制代码
export const showDom = () => {
  const dom = document.createElement('div')
  dom.setAttribute('id', 'test')
  dom.innerHTML = 'test dom'
  document.body.appendChild(dom)
}

export const hideDom = () => {
  const dom = document.getElementById('test')
  if (dom) {
     document.body.removeChild(dom)
  }
  // dom?.remove()
}

hideDom方法中,既可使用父元素的removeChild()清除元素,也可使用自身的romove()方法

方法二:切换css的diaplay属性值

首先,要在页面需要的位置,先写好dom元素,

根据需要,添加默认隐藏的css值style="display: none"

html 复制代码
<div id="test" style="display: none">test dom</div>
js 复制代码
export const showDom = () => {
  const dom = document.getElementById('test')
  dom?.style.setProperty('display', 'flex')
}

export const hideDom = () => {
  const dom = document.getElementById('test')
  dom?.style.setProperty('display', 'none')
}

方法三:切换css的其他属性值

使用visibilityopacity,代码和方法二是一样的,但是也注意它们和diaplay属性的区别

diaplay:

js 复制代码
// 显示元素
element.style.display = 'block'; // 或 'flex', 'grid' 等
// 隐藏元素
element.style.display = 'none';

visibility:

js 复制代码
// 显示元素
element.style.visibility = 'visible';
// 隐藏元素(保留空间)
element.style.visibility = 'hidden';

opacity:

js 复制代码
// 显示元素
element.style.opacity = '1';
// 隐藏元素(保留空间,可交互)
element.style.opacity = '0';
// 完全隐藏并不可交互
element.style.opacity = '0';
element.style.pointerEvents = 'none';

区别对比:

特性 display: none visibility: hidden opacity: 0
是否占据空间
是否可交互
是否影响布局 是(重排) 否(重绘) 否(重绘)

*注:opacity: 0 的元素默认仍可交互,除非额外设置 pointer-events: none

相关推荐
柒@宝儿姐几秒前
若依 B 端从浏览器访问升级为 Windows 安装包交付流程
前端·javascript·vue.js·windows
程序员黑豆5 小时前
鸿蒙应用开发:V1与V2版本数据持久化实战教程
前端·harmonyos
小月土星8 小时前
React Router 前端路由深度解析:从传统后端路由到现代 SPA 的完整演进
前端
程序员黑豆8 小时前
鸿蒙开发 Navigation 路由教程:从入门到实战
前端·harmonyos
烬羽10 小时前
React Router v7 完全指南:一个 Demo 吃透前端路由
javascript·react.js·前端框架
烬羽10 小时前
从"整个页面刷新"到"丝滑切换":手写一个 HashRouter 彻底搞懂前端路由
javascript·前端框架·全栈
用户9385156350711 小时前
从零理解 React Router v6:每一个 API 都是怎么工作的
前端·javascript·全栈
用户0595401744613 小时前
Redis缓存回滚踩坑实录:一个配置失误,让我在凌晨3点丢了3000条数据
前端·css
kyriewen13 小时前
别再这样写条件渲染了——你的React组件里藏着这5种定时炸弹
前端·javascript·react.js
IT_陈寒14 小时前
Redis缓存击穿把我坑惨了,原来这样设过期时间才靠谱
前端·人工智能·后端