CSS-селектор для <input type = "?"


105

Чи можливо з CSS націлити всі входи залежно від їх типу? У мене клас інвалідів, який я використовую для різних відключених елементів форми, і я встановлюю колір фону для текстових полів, але я не хочу, щоб мої прапорці отримували цей колір.

Я знаю, що можу це зробити з окремими класами, але я скоріше використовую CSS, якщо це можливо. Я впевнений, я можу встановити це у javascript, але знову шукаю CSS.

Я націлюю на IE7 +. Тому я не думаю, що я можу використовувати CSS3.

Редагувати

З CSS3 я міг би зробити щось на кшталт?

INPUT[type='text']:disabled це ще краще взагалі позбудеться мого класу ...

Редагувати

Добре дякую за допомогу! Ось ось селектор, який змінює всі текстові поля та області, які були відключені, не вимагаючи жодних класів, коли я починав це питання, я ніколи не думав, що це можливо ...

INPUT[disabled][type='text'], TEXTAREA[disabled]
{   
    background-color: Silver;
}

Це працює в IE7


2
Я написав статтю з деякою детальною інформацією про вибір атрибутів CSS.
Сарфраз

Відповіді:


155

Так. IE7 + підтримує вибір атрибутів:

input[type=radio]
input[type^=ra]
input[type*=d]
input[type$=io]

Введення елемента з типом атрибута, який містить значення, яке дорівнює, починається з, містить або закінчується певним значенням.

Інші безпечні селектори (IE7 +):

  • Батько> дитина, яка має: p > span { font-weight: bold; }
  • Передує елемент ~, який: span ~ span { color: blue; }

Що для <p><span/><span/></p>вас ефективно дасть:

<p>
    <span style="font-weight: bold;">
    <span style="font-weight: bold; color: blue;">
</p>

Подальше читання: Сумісність браузера CSS на quirksmode.com

Я здивований, що всі інші думають, що цього зробити не можна. Вибірці атрибутів CSS вже певний час є тут. Я думаю, що прийшов час ми очистити наші .css файли.


Гаразд, я спробував це, але це не вийшло, зараз він працює, тому я повинен зіпсувати синтаксис.
JoshBerke

Ви щойно зробили мій день! Тепер, якщо ви хочете змусити мій тиждень сказати мені, що це можна зробити в IE6, не використовуючи вирази hehe :-) j / k там
JoshBerke

13
На жаль, це не може. Я перестав підтримувати IE6 з релігійних поглядів і пропоную всім теж робити. Сьогодні я використовую умовний коментар IE, щоб сказати користувачам, що їхній комп’ютер та конфіденційність ризикують використовувати IE6 і що вони повинні негайно оновити: P
Filip Dupanović

1
Я думаю, що я так звик підтримувати IE6, я просто припустив, що він не працюватиме і в IE7
TJ L

4
Я б хотів, щоб я міг перестати підтримувати IE6, але не можу і не можу зробити так, як ви запропонували ... Але я дуже дуже хочу, щоб міг ;-)
JoshBerke

3

До жаль , інші плакати правильно , що ви ... на насправді , як виправляється Крон, ви все в порядку з IE7 і суворого док, але більшість з нас з вимогами IE6 зводиться до JS або посилання класу для цього, але це властивість CSS2, лише одна без достатньої підтримки браузерів IE ^ h ^ h.

Селектор вибору не є повнотою, подібно до xpath - форми, [attribute=value]але існує багато цікавих варіантів. Він буде досить потужним, коли він буде доступний, добре тримати в голові IE8.


У вас є оновлена ​​посилання на підтримку браузера? Це базується на бета-версії IE7, я хотів би бачити IE8
JoshBerke

IE8 все ще знаходиться в бета-версії, але quirksmode говорить "так": quirksmode.org/css/contents.html
annakata

Я все ще підтримую IE6, тільки це не додало крихітних візуальних налаштувань.
JoshBerke

досить чесно, це було моєю помилкою відповідати на основі назви, я схильний відповідати на загальні випадки - я дійсно повинен читати питання більше :)
annakata

1

Це можна зробити за допомогою jQuery. Використовуючи їх селектори, ви можете вибрати за атрибутами, такими як тип. Однак це вимагає, щоб ваші користувачі увімкнули Javascript та додатковий файл для завантаження, але якщо він працює ...


0

Вибачте, коротка відповідь - ні. CSS (2.1) позначатиме лише елементи DOM, а не їх атрибути. Вам доведеться застосувати певний клас до кожного вводу.

Баммер я знаю, бо це було б неймовірно корисно.

Я знаю, ви сказали, що віддаєте перевагу CSS над JavaScript, але все ж слід розглянути можливість використання jQuery. Це забезпечує дуже чистий та елегантний спосіб додавання стилів до елементів DOM на основі атрибутів.


jquery - це спосіб це зробити, або просто JavaScript взагалі
TravisO

4
За фактом, ця відповідь невірна (частина CSS 2.1): w3.org/TR/CSS21/selector.html#attribute-selectors . Якщо ні, то, будь ласка, уточніть відповідь.
cic

1
Вибачте - ви абсолютно праві. Я найменше очікую від IE7, тому що так часто розробники все ж вимагають одночасно підтримувати IE6. Треба було б уважніше прочитати питання і виконати домашнє завдання.
Phil.Wheeler
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.