Установить свойство CSS в Javascript? - PullRequest
141 голосов
/ 04 марта 2011

Я создал следующее ...

var menu = document.createElement('select');

Как бы я теперь установил атрибуты CSS, например, width: 100px?

Ответы [ 11 ]

229 голосов
/ 04 марта 2011

Использование element.style:

var element = document.createElement('select');
element.style.width = "100px";
52 голосов
/ 04 марта 2011

Просто установите style:

var menu = document.createElement("select");
menu.style.width = "100px";

Или, если хотите, вы можете использовать jQuery :

$(menu).css("width", "100px");
31 голосов
/ 29 октября 2013

Для большинства стилей сделайте это:

var obj = document.createElement('select');
obj.style.width= "100px";

Для стилей, в имени которых есть дефисы, сделайте это вместо:

var obj = document.createElement('select');
obj.style["-webkit-background-size"] = "100px"
17 голосов
/ 04 марта 2011

Это довольно просто с ванильным JavaScript:

menu.style.width = "100px";
15 голосов
/ 04 марта 2011

Все ответы правильно сообщают вам, как делать то, что вы просили, но я бы посоветовал использовать JavaScript, чтобы установить класс для элемента и стилизовать его с помощью CSS.Таким образом вы сохраняете правильное разделение между поведением и стилем.

Представьте, что если вы пригласите дизайнера для изменения стиля сайта ... он должен иметь возможность работать исключительно в CSS без необходимости работать с вашим JavaScript.

В прототипе я бы сделал:

$(newElement).addClassName('blah')
5 голосов
/ 26 августа 2015

Если вы хотите добавить глобальное свойство, вы можете использовать:

    var styleEl = document.createElement('style'), styleSheet;
            document.head.appendChild(styleEl);
            styleSheet = styleEl.sheet;
            styleSheet.insertRule(".modal { position:absolute; bottom:auto; }", 0);
4 голосов
/ 15 августа 2018

Только для людей, которые хотят сделать то же самое в 2018 году

Вы можете назначить пользовательское свойство CSS для вашего элемента (через CSS или JS) и изменить его:

Назначение через CSS:

element {
  --element-width: 300px;

  width: var(--element-width, 100%);
}

Назначение через JS

ELEMENT.style.setProperty('--element-width', NEW_VALUE);

Получение значения свойства через JS

ELEMENT.style.getPropertyValue('--element-width');

Здесь полезные ссылки:

4 голосов
/ 14 ноября 2016

При отладке я хотел бы иметь возможность добавить несколько атрибутов css в одну строку:

menu.style.cssText = 'width: 100px';

Привыкнув к этому стилю, вы можете добавить группу css в одну строку, например так:

menu.style.cssText = 'width: 100px; height: 100px; background: #afafaf';
3 голосов
/ 29 июня 2013
<h1>Silence and Smile</h1>
<input  type="button"  value="Show Red"   onclick="document.getElementById('h1').style.color='Red'"/>
<input  type="button"  value="Show Green" onclick="document.getElementById('h1').style.color='Green'"/>
1 голос
/ 27 ноября 2018

Это хорошо работает с большинством свойств CSS, если в них нет дефисов.

var element = document.createElement('select');
element.style.width = "100px";

Для свойств с дефисами, такими как max-width, следует преобразовать sausage-case в camelCase

var element = document.createElement('select');
element.style.maxWidth = "100px";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...