Явный способ задания двух или более значений атрибута в css-селекторе

У меня есть селектор CSS следующим образом:

#foo input[type=number].form-control, #foo input[type=text].form-control

Есть ли более сжатый синтаксис вроде:

#foo input[type=number,text].form-control

Это не работает, но что-то похожее?

Ответ 1

Нет, боюсь, что нет. Пока нет предложений для перечисленных значений в селекторах атрибутов, таких как один в вашем примере, Селекторы 4 :matches(), по крайней мере, позволят вам ИЛИ селектора атрибутов в одном составном селекторе:

#foo input:matches([type=number], [type=text]).form-control

Тем не менее, вам, вероятно, придется придерживаться текущего, подробного синтаксиса в обозримом будущем, пока браузеры не начнут внедрять :matches().

Ответ 2

Нет, не в CSS, но с предварительным процессором, например LESS или SASS, вы можете вставлять атрибуты.

#foo {
    input.form-control {
        &[type=number],
        &[type=text] {
            /* your css styles here */
        }
    }
}

Он не может быть "лаконичным", поскольку конечный результат длиннее желаемого результата, но его несколько легче читать и может сократить некоторые повторения в вашей таблице стилей.