Я делаю 3D-анимацию на JavaScript в актуальном стиле. Я создаю рабочий код, но я не могу запустить код, если стиль находится в расширенном файле CSS, поэтому код запускается только тогда, когда стиль написан в коде HTML. Есть выход?
Рабочий код(также на скрипке):
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-кода. Я вижу ошибку в консоли: не удается прочитать свойство «заменить» неопределенного
Почему голосование против? Я забыл ввести данные?
Да, конечно, я сделал это
Оберните JS в document.onload. Скорее всего, JS запускается до загрузки CSS, поэтому свойство CSS не существует.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам нужно использовать getComputedStyles. Это позволит вам увидеть вычисленные значения CSS. JS не может извлекать стили CSS непосредственно из элемента DOM, но ему необходимо обрабатывать стили, которые были применены к нему.
Также вам нужно будет использовать getPropertyValue ('transform-origin'), чтобы получить доступ к желаемому атрибуту.
Ваше присвоение str для получения третьего значения источника преобразования будет выглядеть так:
var str = getComputedStyle(elem[0]).getPropertyValue('transform-origin')
Да, это правильно. Стили, определенные в CSS, не отражаются в свойстве style.
Это правильно, но по скрипке это не отличить.
Скрипке просто нужна была эта настройка, получив вычисленные стили, остальное не показало большей проблемы. Так что это было больше похоже на то, почему это не работало раньше. @TricksfortheWeb
Вы пытались включить файл CSS в качестве заголовка во все файлы исходного кода?