У меня есть следующие переменные JavaScript:
var fontsize = "12px"
var left= "200px"
var top= "100px"
Я знаю, что могу установить их для своего элемента итеративно так:
document.getElementById("myElement").style.top=top
document.getElementById("myElement").style.left=left
Можно ли собрать их всех вместе сразу, как то так?
document.getElementById("myElement").style = allMyStyle
javascript
coding-style
Мирча
источник
источник
allMyStyle
в вашем примере? В начале у вас есть список отдельных переменных ...cssText
.Ответы:
Если у вас есть значения CSS в виде строки, и для элемента уже не задан другой CSS-код (или вы не заботитесь о перезаписи), используйте
cssText
свойство :Это хорошо в некотором смысле, поскольку позволяет избежать перекрашивания элемента каждый раз, когда вы изменяете свойство (вы как-то меняете их все «сразу»).
С другой стороны, вам придется сначала создать строку.
источник
display: block; position: absolute;
.Используя Object.assign :
Это также дает вам возможность объединять стили вместо переписывания стиля CSS.
Вы также можете сделать функцию быстрого доступа:
источник
document.querySelector('html').style = Object.assign({}, document.querySelector('html').style, { color: 'red'})
но ничего не происходит.Object.assign(document.querySelector('html').style, { color: 'red' });
... Просто убедитесь, что стиль не перезаписан в нижнем элементе. Это очень вероятно при использовании его наhtml
элементе.@Mircea: очень легко установить несколько стилей для элемента в одном выражении. Это не влияет на существующие свойства и устраняет сложность использования циклов или плагинов.
БУДЬТЕ ОСТОРОЖНЫ: если позже вы используете этот метод для добавления или изменения свойств стиля, предыдущие свойства, установленные с помощью setAttribute, будут удалены.
источник
removeAttribute
может пригодиться тем, кто может подумать об использованииsetAttribute
для сброса стиляСоздайте функцию, которая позаботится об этом, и передайте ей параметры со стилями, которые вы хотите изменить.
и называть это так
для значений свойств внутри propertyObject вы можете использовать переменные ..
источник
Библиотека JavaScript позволяет вам делать эти вещи очень легко
JQuery
Объект и для цикла
Или, гораздо более элегантный метод - это базовый объект и цикл
источник
установить несколько свойств стиля CSS в Javascript
или
Пример:
источник
Я просто наткнулся здесь и не понимаю, почему для этого требуется так много кода.
Добавьте свой код CSS в виде строки.
источник
Вы можете иметь отдельные классы в ваших файлах CSS, а затем назначить имя класса для вашего элемента
или вы можете просмотреть свойства стилей как -
источник
Не думайте, что это возможно как таковое.
Но вы можете создать объект из определений стилей и просто просмотреть их.
Чтобы развиваться дальше, сделайте для него функцию:
источник
Используя простой Javascript, вы не можете установить все стили одновременно; вам нужно использовать отдельные строки для каждой из них.
Однако вам не нужно повторять
document.getElementById(...).style.
код снова и снова; создайте переменную объекта для ссылки на нее, и вы сделаете свой код намного более читабельным:...и т.д. Гораздо проще читать, чем ваш пример (и, честно говоря, так же легко читать, как альтернативу jQuery).
(если бы Javascript был спроектирован правильно, вы могли бы также использовать
with
ключевое слово, но лучше его оставить в покое, так как это может вызвать некоторые неприятные проблемы с пространством имен)источник
cssText
.cssText
отлично подходит для установки значения встроенной таблицы стилей. Однако, если у вас также есть классы или вы хотите переопределить только некоторые значения, но не все, это может быть довольно сложно использоватьcssText
. Так ты прав; Вы можете сделать это, но я рекомендую против этого для большинства случаев использования.obj.top
илиobj.style.color
также просто устанавливает значение встроенной таблицы стилей. И да, в своем ответе я сказал, что можно перезаписать значения ... это зависит от контекста, полезно это или нет.Ваш лучший выбор может состоять в том, чтобы создать функцию, которая устанавливает стили самостоятельно:
Обратите внимание, что вам все равно придется использовать javascript-совместимые имена свойств (следовательно
backgroundColor
)источник
Смотрите для .. в
Пример:
источник
Это старый поток, поэтому я рассчитывал, что для всех, кто ищет современный ответ, я бы предложил использовать Object.keys ();
источник
Существуют сценарии, в которых использование CSS наряду с javascript может иметь больше смысла в такой проблеме. Посмотрите на следующий код:
Это просто переключает между классами CSS и решает так много проблем, связанных с переопределением стилей. Это даже делает ваш код более аккуратным.
источник
Вы можете написать функцию, которая будет устанавливать объявления индивидуально, чтобы не перезаписывать любые существующие объявления, которые вы не предоставили. Допустим, у вас есть этот список параметров объекта объявлений:
Вы можете написать функцию, которая выглядит следующим образом:
который принимает
element
иobject
список свойств объявлений стилей для применения к этому объекту. Вот пример использования:Показать фрагмент кода
источник
Я думаю, что это очень простой способ в отношении всех решений выше:
источник
Используйте
CSSStyleDeclaration.setProperty()
метод внутриObject.entries
объекта стилей.С помощью этого мы также можем установить приоритет («важный») для свойства CSS.
Мы будем использовать имена свойств CSS "hypen-case".
источник
Действителен ли ниже innerHtml
источник
С ES6 + вы также можете использовать обратные метки и даже копировать CSS прямо откуда-то:
источник
источник
Мы можем добавить функцию стилей в прототип Node:
Затем просто вызовите метод styles на любом узле:
Он сохранит любые другие существующие стили и перезапишет значения, присутствующие в параметре объекта.
источник