Изменение класса css из javascript

Я хочу установить для элемента 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

Может быть, полифилл поможет вам решить более старую проблему с браузером?

Sirence 03.07.2018 13:18

С его помощью вы можете добавить имя класса и в своем CSS установить стили для этого нового имени класса. w3schools.com/howto/howto_js_add_class.asp

Jacob-Jan Mosselman 03.07.2018 13:20

как установить стиль на window.innerheight в css? !!

mahboub_mo 03.07.2018 13:51
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
3
86
5

Ответы 5

Установите 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>

эй .. это то, что ты ищешь?

לבני מלכה 03.07.2018 13:24

см. мое редактирование, пожалуйста, используйте css, а не js

לבני מלכה 03.07.2018 13:47

у 100 vh нет проблем с устройствами IOS:

mahboub_mo 03.07.2018 13:48

Вы должны использовать js, возможно, использовать js только в том случае, если вы используете мобильный размер Sceen

לבני מלכה 03.07.2018 13:50

В современных браузерах можно использовать:

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

nicolas-hoizey.com/2015/02/…
mahboub_mo 03.07.2018 13:42

100 vh имеет проблему в устройствах IOS

mahboub_mo 03.07.2018 13:50

@MahboobehMohammadi О, хорошо. Я просто посмотрел на caniuse.com/#search=vh и остался доволен зеленым индикатором…

feeela 03.07.2018 17:42

использование устройства vh - правильный способ сделать это .. (хотя Махбуб Мохаммади сказал, что он несовместим с ios) height: 100vh; - это панорама во всю высоту ..

Другие вопросы по теме