Как установить универсальный селектор CSS с помощью JavaScript?

Я часто использую универсальный селектор CSS для reset размеров в моем документе HTML:

* {
    border: 0;
    margin: 0; 
    padding: 0; 
}

Можно ли это сделать и с JavaScript?

Для обычных HTML-элементов существует свойство style. Но как говорить с универсальным селектором?

Ответ 1

getElementsByTagName("*") вернет все элементы из DOM. Затем вы можете установить стили для каждого элемента в коллекции:

var allElements = document.getElementsByTagName("*");
for (var i = 0, len = allElements.length; i < len; i++) {
    var element = allElements[i];
    // element.style.border = ...
}

Ответ 2

Вам не нужно перебирать все элементы. Вы можете потребовать эту операцию для механизма CSS вашего браузера. Что-то вроде этого:

;(function(exports) {
    var style = document.querySelector("head").appendChild(document.createElement("style"));

    var styleSheet = document.styleSheets[document.styleSheets.length - 1];
    styleSheet.insertRule("* {}", 0);

    exports.universal = styleSheet.cssRules[0];
}(window));

Теперь у вас есть объект window.universal, который можно использовать для стилизации всех элементов. Например:

window.universal.style.border = "1px solid red";

Конечно, вам не нужно создавать во время выполнения тег <style>. Вы всегда можете иметь это в простом HTML.

Ответ 3

В необработанном javascript вы можете сделать это:

document.getElementsByTagName('*')

но я бы не рекомендовал добавлять css ко всем элементам с помощью js.

Ответ 4

Спасибо VisioN за решение! Я просто помнил, что вы можете сделать то же самое с новым API-интерфейсом JavaScript Query Selector:

var allElements = document.querySelectorAll('*');

for (var i = 0; i < allElements.length; i++) {
  var element = allElements[i];        
  element.style.border = '0px';
  element.style.margin = '0px';
  element.style.padding = '0px';
}