使用Javascript创建CSS样式表

时间:2016-03-30 22:35:45

标签: javascript html css

我正在尝试使用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样式表的正确方法是什么。

谢谢,

3 个答案:

答案 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:

设置元素的样式

如果您的元素idhome,并且您想将其背景颜色设置为红色,则可以这样做:

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";