JavaScript динамически обнаруживает все значения CSS

#javascript #css

#javascript #css

Вопрос:

Этот скрипт динамически определяет все возможные свойства стиля, поддерживаемые элементом…

 for (i in document.getElementById('body').style)
{
 document.getElementById('q').value = document.getElementById('q').value ', ' i;
}
 

Мой вопрос в том, как мы динамически обнаруживаем все возможные value значения, которые property поддерживает данный параметр? Под динамическим я явно подразумеваю не создание массива с возможными значениями (статическими) и итерацию по массиву с использованием CSS.supports .

Комментарии:

1. Не то чтобы я мог помочь, но просто для пояснения, хотите ли вы также включить поддерживаемые свойства с префиксом браузера?

2. если вы имеете в виду, что заранее знаете какое-то имя свойства, просто хотите проверить, поддерживается ли оно, поэтому вы можете просто использовать in оператор like if("propetyName" in styleObject){...} styleObject wherefore — это объект, на который ссылается style свойство (объекта элемента DOM).

3. CSS.supports ( CSS.supports('position','absolute') ) сообщит вам, поддерживается ли значение, но вам придется добавить к нему несколько строк…

4. @NickDugger Да, включая значения с префиксами.

Ответ №1:

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

Когда значением свойства является число, подобное top принимаемому length , которое может быть in, cm, mm, pt, pc, px, ex, em, percentage, auto, or inherit

В случае content , если он принимает другой диапазон значений normal, none, string's, uri's, counter, attr(attrName), open-quote, close-quote, no-open-quote, no-close-quote, inherit (и, возможно, он ищет комбинацию этих вещей)

(src:w3.org )

Каждое свойство, описанное в документе w3, имеет различный набор типов, которые оно принимает.

Я не знаю, как заставить javascript выдавать такую схему / dtd, но вы могли бы составить исчерпывающий список потенциальных значений, представляющих классы значений, а затем протестировать каждое из них, используя что-то вроде CSS.supports(propertyName, value);