如果我在 javascript 中重写了类名,是否重新应用了现有的 CSS 属性
Are existing CSS properties reapplied if i overwritte a className in javascript?
假设我有以下CSS类。
.div{
background-color: #eee;
}
.show{
top: 50%;
left: 50%;
}
.hide{
top: -50%;
left: -50%;
}
现在我创建一个div并使用Javascript设置其类名。
var div = document.createElement("div");
div.className = "div"
稍后我再次将其更改为
div.className = "div show";
然后再次到
div.className = "div hide";
在我看来,如果我以这种方式工作,我会将这个div 的背景颜色设置为 3 次 #eee 不是吗?如果这是真的;只用JavaScript调整顶部和左侧坐标不是更经济吗?这样?
div.style.top = "50%";
div.style.left = "50%";
另外,如果这是真的,我不妨使用以下CSS类不?
.divShow{
background-color: #eee;
top:50%;
left:50%;
}
.divHide{
background-color: #eee;
top:-50%;
left:-50%;
}
还是我对 CSS 的理解都错了?
您可能需要
检查Element.prototype.classList
属性。它为您提供了诸如 .add()
,.remove()
甚至.toggle()
。您还可以使用这些方法应用多个类名。
div.classList.add( 'div' );
MDN 文档
在 JS HAS 中设置 className 会覆盖类名。
每次更改类名(例如从div show 更改为div 隐藏)时,您都会删除div 和 show 的类,然后重新添加div 的类,并添加到隐藏类。
这没有什么不经济的,因为你没有直接将css设置为元素。
此外,您不能多次设置参数,它只会覆盖以前的设置(因此它不是不经济的,别担心)。
您使用错误的方式来添加类。使用 div.className
时,将覆盖类,多次应用 background
属性。
您应该改用div.classList.add( 'div' );
它就像一个变量的变化值,如果
你写
var div = document.getElementById("div");
div.className = "classname";
然后我会给 将div 元素的类名替换为最后分配的值
但是如果你写
var div = document.getElementById("div");
div.className += " classname";
然后它会将类添加到div 元素
相关文章:
- 有条件地在选项标记中应用布尔属性
- 表单's的action属性-如何在javascript中指定完整的应用程序路径
- CSS根据属性的可用性有条件地应用样式
- 如何在不链接/jquery的情况下使用方法应用css属性数组
- vendors.js:未捕获类型错误:无法读取属性'应用'使用webpack时未定义的
- 使用 SharePoint 查询字符串值作为应用程序部件属性
- 我把“;类“;SVG中存在但未应用的节点的属性!为什么?
- jquery.mobile-1.4.5.js:26未捕获类型错误:无法设置属性'移动'react应用程序
- javascript对象属性应用于所有对象
- 找不到属性'link_to'on对象(生成的应用程序控制器)
- Webpacked Angular2应用程序类型错误:无法读取属性'getOptional'的未定义
- Angular赢得't将对象更改应用于它'的属性
- '无法设置未定义'的属性;应用绑定时出错
- 角度嵌套对象-TypeError:无法读取属性'应用程序'的未定义
- 在knocket js中应用绑定后,向视图模型添加新属性
- 我如何通过 id 找到复选框并使用 JQuery 在字符串上应用属性
- 有条件地应用属性(AngularJS)
- 如何通过调整图像大小和应用属性来减少页面加载时间
- Extjs6通过函数从配置中应用属性
- 应用属性'滚动=yes'到所有iFrames