Я хочу установить для элемента height значение window.innerheight, но я должен сделать это в CSS, потому что у меня почему-то нет доступа к этому элементу, чтобы использовать javascript для изменения его стиля.
Есть способ сделать это? как изменить класс CSS в javascript?
Я пробовал это:
document.getElementById('root').style.setProperty('--view-height', window.innerHeight +'px');
и в CSS:
.menu {
height: var(--view-height) !important;
}
и он работает, но Переменные CSS не поддерживается в старых браузерах, поэтому я не могу его использовать, но мне нужно что-то подобное.
Обновлено: Есть много ответов, но все они используют javascript, я сказал, что НЕ МОГУ ИСПОЛЬЗОВАТЬ js для установки стиля элемента! я хочу сделать это только в стиле класса css
С его помощью вы можете добавить имя класса и в своем CSS установить стили для этого нового имени класса. w3schools.com/howto/howto_js_add_class.asp
как установить стиль на window.innerheight в css? !!



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


Установите height в javascript вместо использования variables
document.getElementById('root').style.height=window.innerHeight +'px';
См. Пример:
document.getElementById('root').style.height=window.innerHeight +'px';#root{
background-color:red;
}<div id = "root"></div>Для вашего редактирования no use js используйте height:100vh;:
#root{
height:100vh;
background-color:red;
}<div id = "root"></div>эй .. это то, что ты ищешь?
см. мое редактирование, пожалуйста, используйте css, а не js
у 100 vh нет проблем с устройствами IOS:
Вы должны использовать js, возможно, использовать js только в том случае, если вы используете мобильный размер Sceen
В современных браузерах можно использовать:
document.getElementById("MyElement").classList.add('MyClass');
document.getElementById("MyElement").classList.remove('MyOtherClass');
Хотя для выполнения вашего конкретного случая я бы пошел с ответом לבני מלכה.
Для нормальных JS
function addClassById (_id,_class) {
document.getElementById(_id).classList.add(_class);
}
function removeClassById (_id,_class) {
document.getElementById(_id).classList.remove(_class);
}
addClassById("root","newClass")
Я советую вам использовать JQUERY, он очень прост в использовании. Поместите эту ссылку cdn в тег заголовка и используйте ее.
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
//This is for change css
$("#root").css({
"background-color": "yellow",
"font-size": "200%"
});
// This is how to add class
$("#root").addClass('newClass');
// This is how to remove class
$("#root").removeClass('newClass')
Надеюсь, это вам поможет.
Возможно, вместо этого используйте правильный CSS:
window.innerHeight +'px' дает ту же высоту, что и 100vh. Единица vh означает «высоту окна просмотра», а 100vh - полную высоту внутреннего окна.
См .: https://developer.mozilla.org/en-US/docs/Web/CSS/length#Viewport-percentage_lengths
100 vh имеет проблему в устройствах IOS
@MahboobehMohammadi О, хорошо. Я просто посмотрел на caniuse.com/#search=vh и остался доволен зеленым индикатором…
использование устройства vh - правильный способ сделать это .. (хотя Махбуб Мохаммади сказал, что он несовместим с ios)
height: 100vh; - это панорама во всю высоту ..
Может быть, полифилл поможет вам решить более старую проблему с браузером?