[英]Create CSS Style Sheet Using Javascript
我正在尝试使用javascript创建CSS样式表。 代码是:
<script type="text/javascript">
function colorSquare()
{
var elem = document.getElementById("body");
document.getElementById("body").innerHTML = "<style>";
document.getElementById("body").innerHTML += ".myAnimation";
document.getElementById("body").innerHTML += "{";
document.getElementById("body").innerHTML += "width: 50px";
document.getElementById("body").innerHTML += "height: 50px";
document.getElementById("body").innerHTML += "position: absolute;";
document.getElementById("body").innerHTML += "background: #0000FF;";
document.getElementById("body").innerHTML += "background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPHJhZGlhbEdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iNzUlIj4KICAgIDxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiIHN0b3Atb3BhY2l0eT0iMSIvPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2FmZTBmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMzNjQ1NGYiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvcmFkaWFsR3JhZGllbnQ+CiAgPHJlY3QgeD0iLTUwIiB5PSItNTAiIHdpZHRoPSIxMDEiIGhlaWdodD0iMTAxIiBmaWxsPSJ1cmwoI2dyYWQtdWNnZy1nZW5lcmF0ZWQpIiAvPgo8L3N2Zz4=)"
document.getElementById("body").innerHTML += "background: -moz-radial-gradient(center, ellipse cover, #0000FF 0%, #0000FF 0%, #ff0000 100%);";
document.getElementById("body").innerHTML += "background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,#0000FF), color-stop(0%,#ff0000), color-stop(100%,#ff0000));";
document.getElementById("body").innerHTML += "background: -webkit-radial-gradient(center, ellipse cover, #0000FF 0%,#0000FF 0%,#ff0000 100%);";
document.getElementById("body").innerHTML += "background: -o-radial-gradient(center, ellipse cover, #0000FF 0%,#0000FF 0%,#ff0000 100%);";
document.getElementById("body").innerHTML += "background: -ms-radial-gradient(center, ellipse cover, #0000FF 0%,#0000FF 0%,#ff0000 100%);";
document.getElementById("body").innerHTML += "background: radial-gradient(ellipse at center, #0000FF 0%,#0000FF 0%,#ff0000 100%)";
document.getElementById("body").innerHTML += "filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#0000FF', endColorstr='#ff0000',GradientType=1 );";
document.getElementById("body").innerHTML += "border-style: solid;";
document.getElementById("body").innerHTML += "border-width: 3px;";
document.getElementById("body").innerHTML += "border-color:#77dd77;";
document.getElementById("body").innerHTML += "border-radius: 5px;";
document.getElementById("body").innerHTML += "-webkit-box-shadow:0 0 10px black;";
document.getElementById("body").innerHTML += "-moz-box-shadow: 0 0 10px black;";
document.getElementById("body").innerHTML += "box-shadow:0 0 10px black;";
document.getElementById("body").innerHTML += "text-align: white;";
document.getElementById("body").innerHTML += "text-align: center;";
document.getElementById("body").innerHTML += "line-height: 45px;";
document.getElementById("body").innerHTML += "</style>}";
}
</script>
我这样做对吗? 如果不是,使用javascript创建CSS样式表的正确方法是什么。
谢谢,
以赛亚
即使您的代码可以正常工作(不确定是否需要测试),它看起来也很杂乱。您应该将CSS放在首位。
您可以执行以下操作..您可以在newCSS
变量中添加所需的样式,这意味着代码看起来更漂亮,但使用更少的代码行也可以更好地工作。
// add your styles here
var newCSS = '.myAnimation { width: 50px; }';
var head = document.head || document.getElementsByTagName('head')[0];
var style = document.createElement('style');
style.type = 'text/css';
if (style.styleSheet){
style.styleSheet.cssText = css;
} else {
style.appendChild(document.createTextNode(css));
}
head.appendChild(style);
可以使用阿芙罗狄蒂 。 这是为React创建的内联样式表库,但不需要React。
我会说你做错了。 您现在要做的是使用JavaScript在HTML中创建<style>
元素,然后向其添加文本以更改HTML元素的样式,而不是直接使用JavaScript设置样式。
元素具有一个称为style
的属性,您可以使用JavaScript来获取该属性。
根据ID设置元素样式:
如果您有一个id
为home
的元素,并且想要将其background-color设置为red,则可以这样做:
document.getElementById("home").style.backgroundColor = "red";
关于标签的样式元素:
代替使用getElementById
您将使用getElementsByTagName
返回一个元素数组。
如果您希望第五个<p>
具有蓝色,则可以这样操作:
document.getElementsByTagName("p")[4].style.color = "blue";
如果要对每个<p>
执行此操作,则可以将其放入循环中:
var a = document.getElementsByTagName("p");
for(var i = 0; i < a.length; i++) {
a[i].style.color = "blue";
}
关于类的样式元素:
与上述完全一样,但代替getElementsByTagName
您使用getElementsByClassName
。
示例: document.getElementsByClassName("slogan")[0].innerHTML = "hello";
旁注:
一遍又一遍地写document.getElementById
和其他的变得非常重复。 您可以为它们创建方法别名-类似于:
function tag(string) {
return document.getElementsByTagName(string);
}
function c(string) {
return document.getElementsByClassName(string);
}
function id(string) {
return document.getElementById(string);
}
然后这样写:
id("home").style.backgroundColor = "red";
tag("p")[4].style.color = "blue";
c("slogan")[0].innerHTML = "hello";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.