将Javascript变量解析为CSS变量

时间:2011-03-24 20:01:21

标签: javascript css

  

可能重复:
  Avoiding repeated constants in CSS

我有一个javascript文件,我用它来获取视口的宽度和高度来调整我的网站的分辨率。我可以用javascript获取这些值,但我真的不知道从哪里开始。我想将值发送到我的CSS变量,但我还没有找到快速完成此操作的方法。可能吗?这是我的JS代码:

<script type="text/javascript">
<!--

  var viewportwidth;
  var viewportheight;

 // the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight

  if (typeof window.innerWidth != 'undefined')
  {
      viewportwidth = window.innerWidth,
      viewportheight = window.innerHeight
  }


 else if (typeof document.documentElement != 'undefined'
 && typeof document.documentElement.clientWidth !=
 'undefined' && document.documentElement.clientWidth != 0)
 {
   viewportwidth = document.documentElement.clientWidth,
   viewportheight = document.documentElement.clientHeight
 }


 else
 {
   viewportwidth = document.getElementsByTagName('body')[0].clientWidth,
   viewportheight = document.getElementsByTagName('body')[0].clientHeight
 }
   document.write('<p>Your viewport width is '+viewportwidth+'x'+viewportheight+'</p>');
//-->
</script>

对于CSS,我希望能够快速简便地使用它,但它不起作用:

@variables{
ViewWidth:'+viewportwidth+';}

@variables{
ViewHeight:'+viewportheight+';}  

html{
max-width: var(ViewWidth);
max-height: var(ViewHeight);}

我假设我在变量声明中有不正确的语法。我这样编写它表明我试图从JS获取变量值并将其传递给CSS。

3 个答案:

答案 0 :(得分:3)

我认为你正在寻找类似的东西:

var parentElement = document.documentElement || document.body;
parentElement.style.maxWidth = parentElement.clientWidth + 'px';
parentElement.style.maxHeight = parentElement.clientHeight + 'px';

答案 1 :(得分:1)

你想用javascript动态添加css,每个元素都有自己的风格和与css相关的元素,用javascript来操作这些

myHtmlElement.style.backgroundColor='green';

这些方面应该没事。

答案 2 :(得分:1)

正如其他人提到的,您可以使用单个元素'style属性。如果你想要像.myClass { width: myVar }这样的通用规则,你将不得不在运行时生成整个CSS规则:

https://developer.mozilla.org/en/DOM/stylesheet.insertRule