2016-04-12 6 views
6

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

<div data-widget-type="MyWidgetType1" data-property1="20" data-property2="test"> 
... 
</div> 

Я хочу захватить их в классе, например.

.MyClass1 { 
data-widget-type:"MyWidgetType1"; 
data-property1:"20"; 
data-property2:"test"; 
} 

<div class="MyClass1"> 
... 
</div> 

Есть ли способ указать значения атрибутов данных в CSS?

+1

Нет, это невозможно. –

+0

@Stephan Muller Разве вы не думаете, что это будет хорошим расширением для CSS? – Nitesh

ответ

1

Нет, такой функции не существует даже для атрибутов по умолчанию (например, вы не можете установить атрибут имени через CSS). Но вы можете выбрать эти пользовательские атрибуты:

.MyClass1[data-widget-type="MyWidgetType1"] 
+0

Не знаете, как это установить атрибут в HTML. –

+0

@ Mr.Alien Он ничего не установит, это просто селектор CSS. Вы не можете манипулировать элементами DOM через CSS – Justinas

+0

Да, мы не можем, поэтому ответ должен быть прямым НЕТ. Я не думаю, что выбор в области вопросов. :) –

1

Можно выбрать класс в CSS, используя значение [атрибут], но я не верю, что CSS может обновить этот атрибут.

https://css-tricks.com/almanac/selectors/a/attribute/

Чтобы обновить атрибут вам нужно найти решение JQuery, или аналогичный.

Edit: В JQuery, вы можете обновить атрибут, как это:

$("#fieldId").attr("attribute-name","value you want to set"); 
5

CSS не HTML. Вы не можете установить или изменить значение атрибута HTML с помощью CSS.

Кроме того, зачем вы это делаете? HTML и CSS существуют из-за разделения проблем. HTML предназначен для контента, а CSS - для презентации. Указание атрибутов данных в CSS не отличается от указания атрибутов презентации в HTML.

Если вы пытаетесь назначить метаданные имени класса, которое затем применяется ко всем элементам с этим именем класса, это (снова) полностью вне сферы действия CSS и просто невозможно в HTML. Единственный способ присвоить метаданные элементу - указать его как атрибут для этого элемента. (Вы можете переместить объявления атрибутов в сценарий, если вы не хотите указывать атрибуты для каждого экземпляра этого класса в разметке, но в конце дня сценарий по-прежнему должен заполнять набор данных каждого элемента этими значениями. в зависимости от ваших потребностей, хотя, это может быть достаточно)

+0

Я хочу указать класс для div, но тогда у вас будет совсем другое определение класса на основе медиа-запроса для типа browser/ua , – Nitesh

+1

Тогда вам не нужен CSS, вам нужны атрибуты, управляемые медиа-запросами. Они также не существуют в HTML - вам все равно нужен скрипт. – BoltClock

+0

Просто натолкнулись на пользовательские свойства CSS: https://www.w3.org/TR/css-variables/. Посмотрю, могу ли я использовать для рассматриваемого дела – Nitesh

0

Существует способ, чтобы получить значение ваших атрибутов, но это не поддерживается всеми браузерами:.

https://developer.mozilla.org/en-US/docs/Web/CSS/attr

Я не» t знать, если это то, что вы ищете

+0

Он работает в IE8 +, что довольно хорошо помогает –