Как получить элемент по его частичному имени класса CSS
Я создаю несколько кнопок css и хотел бы стиль их как можно короче, поэтому я начал такой
[class*='mybuttons-button']{
margin-top:5px;
-webkit-border-radius:4px;
-khtml-border-radius:4px;
-moz-border-radius:4px;
border-radius:4px;
display:inline-block;
padding:6px 12px;
color:#fff;
vertical-align:middle;
cursor:pointer;
}
который повлияет на все элементы, содержащие class my-button
[class*='-large']{
padding: 10px 16px;
font-size:120%;
line-height: 1.33;
-webkit-border-radius:6px;
-khtml-border-radius:6px;
-moz-border-radius:6px;
border-radius:6px;
}
[class*='mybuttons-button-color']{
background:blue;
}
но так как класс -large
может возникнуть в каком-то стороннем CSS, добавленном пользователем, я хотел бы быть более конкретным и сказать что-то вроде этого вместо
[class*='mybuttons-button-*ANYTHING*-large']
так что мне не нужно делать это
mybuttons-button-color-large
mybuttons-button-red-large
mybuttons-button-green-large
mybuttons-button-color-medium
mybuttons-button-red-medium
mybuttons-button-green-medium
кто-нибудь знает способ сделать это? Возможно ли вообще, чтобы гвоздь среднее слово вместо содержит только?
Я знаю, что могу разместить имена классов и т. д., Но хотел бы попробовать, так как для меня это**
<span class="mybuttons-button-color-large"></span>
выглядит чище, чем этот:
<span class="mybuttons-button color large"></span>
2 ответов
таким же образом вы можете сделать это .class.class2.class3 { /*styles*/ }
только вещи, которые имеют всего 3 класса, вы можете комбинировать селекторы атрибутов, чтобы сделать то же самое:
[class*="mybuttons-button"][class*="-large"] { /*styles*/ }
конечно, он не будет работать в таком случае:
<span class="my-buttons-button-color-small something-else-large"></span>
так как он содержит оба mybuttons-button
и -large
.
если вы не думали, что это произойдет или будет проблемой, вы должны быть в порядке. Вот скрипка:http://jsfiddle.net/3wEJe/
определенно не рекомендовал бы хотя ...
Если вы разделяете имена классов, то вы можете использовать селекторы CSS только для захвата элемента с двумя классами, а не полагаться на подстановочные знаки, как это:
<span class="mybuttons-button color large"></span>
.mybuttons-button.large {
font-size: 120%
}
помните, что ".класс1.class2 " отличается от ".класс1 .class2 " (с пробелом): первый ищет элемент с обоими классами; второй ищет потомков class1, которые являются class2.