我正在尝试使用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样式表的正确方法是什么。
谢谢,
赛
答案 0 :(得分:2)
即使你的代码可以工作(不确定没有测试)它看起来很乱......你应该把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);
答案 1 :(得分:0)
你可以使用aphrodite。它是为React创建的内联样式表库,但不需要React。
答案 2 :(得分:0)
我会说你做错了。您现在正在做的是使用JavaScript在HTML中创建<style>
元素,然后在其中附加文本以更改HTML元素的样式,而不是直接使用JavaScript设置样式。
元素有一个名为style
的属性,您可以使用JavaScript获取该属性。
根据id:
设置元素的样式如果您的元素id
为home
,并且您想将其背景颜色设置为红色,则可以这样做:
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";