javascript - 从 css、JavaScript 获取样式

标签 javascript html css

我使用实际样式制作 JavaScript 3D 动画。我创建了工作代码,但是,如果样式在扩展 CSS 文件中,我将无法运行代码,因此代码仅在样式以 HTML 代码编写时运行。有解决办法吗?

工作代码 (olso on fiddle) :

HTML

<div id="background">
   <div class="example" style="transform-origin: 50% 50% -200px">
      <p class="num">Example</p>
   </div>
<div>

CSS

body {
  display: inline-block;
  background-color: black;
  box-sizing: border-box;
}
* {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

.example {
  display: inline-block;
  position: absolute;
  color: orange;
  width: 100%;
  font-size: 30px;
  overflow: hidden;
  white-space: nowrap;
  font-size: 80px;
}

#background{
    width: 100%;
    height: 100%;
    overflow: hidden;
    position: absolute;    
}

.example:nth-child(1){
   transform: perspective(200px);
   transform-origin: 50% 50% -200px;
}


.background {
  display: inline-block;
  position: absolute;
  width: 100%;
  height: 100%;
  border-style: solid;

}

.num {
  display: inline-block;
  color: orange;
  width: 50px;
  height: 50px;
  text-align: center;


}

JavaScript

setInterval(function(){ move()}, 2000);

function move(){    
   var elem = document.getElementsByClassName("example");
   var str = elem[0].style.transformOrigin;
   var res = str.split(" ");
   var pos = res[2].replace(/px/g, " ");
   var id = setInterval(frame, 20);

   function frame(){
     if (pos==500){
     clearInterval(id);
   }
   else {
    pos++;
    elem[0].style.transformOrigin = "50% 50%"+pos+"px";
   }
 }                                                                      
}

如您所见,一切正常,但是,当我从 HTML 代码中删除样式时。我可以在控制台中看到错误:无法读取未定义的属性“替换”

最佳答案

您需要使用 getComputedStyles .这将允许您查看 CSS 计算值。 JS 无法直接从 DOM 元素中提取 CSS 样式,而是需要对应用到它的样式进行处理。

此外,您还需要使用 getPropertyValue('transform-origin') 才能访问所需的属性。

为了获得变换原点的第三个值而分配给 str 的值将如下所示:

    var str = getComputedStyle(elem[0]).getPropertyValue('transform-origin')

Fiddle here

关于javascript - 从 css、JavaScript 获取样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49522881/

相关文章:

php - mysql注入(inject)+强制用户使用列表进行数据输入

jquery - 如何使用砌体实现无限滚动?

html - CSS 显示内联属性对我不起作用

javascript - 访问 JS 函数的私有(private)方法

javascript - Javascript/Canvas 预加载动画的数学和缓动

html - 在 Canvas 中单击会关闭三个像素

javascript - 如何编写打印 css 以几乎与我们从 MS word 获得的方式相同的方式从网页获得打印?

javascript - 带有 img 和覆盖的 ng-mouseenter 和 ng-mouseleave 导致它闪烁

javascript - 我可以在网站上的所见即所得中使用哪些字体

html - Materialize css footer color white 问题