Чи можливо вибрати елементи в CSS за їх атрибутами даних HTML5 (наприклад, data-role
)?
Чи можливо вибрати елементи в CSS за їх атрибутами даних HTML5 (наприклад, data-role
)?
Відповіді:
Якщо ви маєте на увазі використання селектора атрибутів , переконайтесь, чому б ні:
[data-role="page"] {
/* Styles */
}
Існує безліч селекторів атрибутів, які ви можете використовувати для різних сценаріїв, які містяться в документі, на який я посилаюся. Зауважте, що, незважаючи на те, що атрибути спеціальних даних є "новою функцією HTML5",
у веб-переглядачах зазвичай не виникає проблем із підтримкою нестандартних атрибутів, тому ви повинні мати можливість фільтрувати їх за допомогою селекторів атрибутів; і
Вам також не доведеться турбуватися про перевірку CSS, оскільки CSS не піклується про неіменні назви атрибутів, доки вони не порушують синтаксис селектора.
$("#element").data("field","value");
це не змінює значення атрибутів даних, воно лише змінює кешовану версію домену DQ jQuery. Для зміни фактичного атрибута DOM потрібно використовувати $("#element").attr("data-field","value");
. Недійсність мого оригінального коментаря.
Також можна вибрати атрибути незалежно від їх вмісту в сучасних браузерах
з:
[data-my-attribute] {
/* Styles */
}
[anything] {
/* Styles */
}
Наприклад: http://codepen.io/jasonm23/pen/fADnu
Працює над дуже значним відсотком браузерів.
Зверніть увагу, це також може бути використане у селекторі JQuery або у використанні document.querySelector
^=
, *=
і $=
) також підтримуються IE7 і IE8. Можливо, вони були введені в IE до стандартизації.
Варто відзначити селектори атрибутів підрядків CSS3
[attribute^=value] { /* starts with selector */
/* Styles */
}
[attribute$=value] { /* ends with selector */
/* Styles */
}
[attribute*=value] { /* contains selector */
/* Styles */
}
Ви можете комбінувати декілька селекторів, і це так здорово, знаючи, що ви можете вибрати кожен атрибут та атрибут на основі їх значення, як-от href
на основі їх значень лише з CSS.
Атрибути селектори дозволяє погратися з деякими додатковими id
і class
атрибути
Ось дивовижне читання на селекторах атрибутів
a[href="http://aamirshahzad.net"][title="Aamir"] {
color: green;
text-decoration: none;
}
a[id*="google"] {
color: red;
}
a[class*="stack"] {
color: yellow;
}
<a href="http://aamirshahzad.net" title="Aamir">Aamir</a>
<br>
<a href="http://google.com" id="google-link" title="Google">Google</a>
<br>
<a href="http://stackoverflow.com" class="stack-link" title="stack">stack</a>
Підтримка веб-переглядача:
IE6 +, Chrome, Firefox та Safari
Ви можете перевірити деталі тут .
[data-value] {
/* Attribute exists */
}
[data-value="foo"] {
/* Attribute has this exact value */
}
[data-value*="foo"] {
/* Attribute value contains this value somewhere in it */
}
[data-value~="foo"] {
/* Attribute has this value in a space-separated list somewhere */
}
[data-value^="foo"] {
/* Attribute value starts with this */
}
[data-value|="foo"] {
/* Attribute value starts with this in a dash-separated list */
}
[data-value$="foo"] {
/* Attribute value ends with this */
}