1.类名操作
- class类名以字符串的形式存储到标签和Dom元素的属性中,标签属性为class,Dom元素属性为className,两个属性是均支持读取和修改,修改其中的一个会同步至另一个属性
- className属性:拿到Dom后,通过这个属性来读取和修改
<body>
<div id="app">
<div id="box" class="box text-align">测试样式类名</div>
</div>
</body>
<script>
var box = document.querySelector("#box")
console.log(box.className)
box.className = "box text-align text-success"
</script>
- 标签属性:通过getAtrribute()/setAtrribute()方法直接读取和修改
<script>
var box = document.querySelector("#box")
console.log(box.getAttribute("class"))
box.setAttribute("class","box text-align text-success")
</script>
- 缺点:样式类以字符串形式读取和设置,但是样式类生效时时彼此独立的,不方便操作
2.classList 属性
- 这个属性以数组形式返回元素css类名,且支持对数组元素的怎删改查
- 注意:这个是HTML5里面新增的属性,旧版本浏览器不支持
<body>
<div id="box" class="box text-align">测试样式类名</div>
</body>
<script>
var box = document.querySelector("#box")
console.log(box.classList)
</script>
- 属性方法add(class1, class2, ...):在元素中添加一个或多个类名(已经存在的类名不会重复添加,能自动去重)
<script>
var box = document.querySelector("#box")
box.classList.add('text-success')
console.log(box.classList)
</script>
- 属性方法remove(class1, class2, ...):移除元素中一个或多个类名
<script>
var box = document.querySelector("#box")
box.classList.remove('text-align')
console.log(box.classList)
</script>
- 属性方法toggle():切换某个类名,如果这个类名已经存在就把他移除,如果类名不存在则添加这个类名
<script>
var box = document.querySelector("#box")
box.classList.toggle('text-align')
console.log(box.classList)
box.classList.toggle('text-align')
console.log(box.classList)
</script>
- 属性方法contains():判断元素是否含有指定的css类名
<script>
var box = document.querySelector("#box")
console.log(box.classList.contains("box"))
console.log(box.classList.contains("text-success"))
</script>
<script>
var box = document.querySelector("#box")
box.classList.replace("text-align","left-align")
console.log(box.classList)
</script>
3.内联样式
<script>
var box = document.querySelector("#box")
box.style.color = "red"
</script>
- 如果css属性带有 "-" ,设置时使用驼峰法或者数组语法
<script>
var box = document.querySelector("#box")
box.style.backgroundColor = "red"
box.style["box-sizing"] = "border-box"
</script>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了