繁体   English   中英

使用Javascript创建CSS样式表

[英]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设置元素样式:

如果您有一个idhome的元素,并且想要将其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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM