CSS-классы и подклассы

Вопрос:Возможно ли, кроме того, что я делаю, потому что это не работает, чтобы сделать это? Я хочу иметь подклассы, которые находятся под классом, чтобы использовать CSS специально для этого класса. Класс. CSS .area1 { border:1px solid black; } .area1.item { color:red; } .area2 { border:1px solid blue; } .area2.item { color:blue; } HTML

Вопрос:

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

CSS

.area1 { border:1px solid black; } .area1.item { color:red; } .area2 { border:1px solid blue; } .area2.item { color:blue; }

HTML

<div class=»area1″> <table> <tr> <td class=»item»>Text Text Text</td> <td class=»item»>Text Text Text</td> </tr> </table> </div> <div class=»area2″> <table> <tr> <td class=»item»>Text Text Text</td> <td class=»item»>Text Text Text</td> </tr> </table> </div>

Итак, я могу просто использовать class= “item” для элементов под родительским классом css “area1”, “area2”. Я знаю, что могу использовать элемент class= “area1 item”, чтобы заставить это работать, но я не понимаю, почему он должен быть таким подробным. Не следует ли подкласс css посмотреть, какой родительский класс он находится, чтобы определить его?

Примечание: это работает в IE (с использованием 7 прямо сейчас), но в FF это не так, поэтому я предполагаю, что это не стандартный способ CSS делать что-то.

Лучший ответ:

Просто нужно добавить пробел:

.area2 .item { … } Ответ №1

FYI, когда вы определяете правило, как вы делали выше, с двумя селекторами, соединенными вместе:

.area1.item { color:red; }

Это означает:

Примените этот стиль к любому элементу, который имеет как класс “area1”, так и “item”.

Например:

<div class=»area1 item»>

К сожалению, это не работает в IE6, но это то, что это значит.

Ответ №2

Ваша проблема, кажется, является недостающим пространством между вашими двумя классами в CSS:

.area1.item { color:red; }

Должно быть

.area1 .item { color:red; } Ответ №3

Вы хотите принудительно выбрать только детей? http://css.maxdesign.com.au/selectutorial/selectors_child.htm

.area1 { border:1px solid black; } .area1>.item { color:red; } .area2 { border:1px solid blue; } .area2>.item { color:blue; } Ответ №4

Просто поместите пробел между .area1 и .item, например:

.area1 .item { color:red; }

этот стиль применяется к элементам с элементом класса внутри элемента с областью класса.

Ответ №5

Просто вставьте пробел между вашими классами

.area1 .item { … }

Здесь очень хорошая справка для селекторов CSS.

Ответ №6

После ответа от kR105 ответьте выше:

Моя проблема была похожа на проблему с OP (Original Poster), которая произошла только за пределами таблицы, поэтому подклассы не вызывались из области родительского класса (таблицы), но за его пределами, поэтому я к селекторам ADD, как упомянуто kR105.

В этом была проблема: у меня было две коробки (divs), каждая с одинаковым радиусом границы (HTML5), отступом и разметкой, но для того, чтобы сделать их разными цветами. Вместо того, чтобы повторять эти 3 параметра для каждого класса цветов, я хотел, чтобы “суперкласс” содержал border-radius/padding/margin, а затем отдельные “подклассы”, чтобы выразить свои различия (двойные кавычки вокруг каждого, поскольку они не являются действительно подклассами) см. мой более поздний пост). Вот как это получилось:

HTML:

<body> <div class=»box box1″> Hello my color is RED </div> <div class=»box box2″> Hello my color is BLUE </div> </body>

CSS

div.box {border-radius:20px 20px 20px 20px; padding:10px; margin:10px} div.box1 {border:3px solid red; color:red} div.box2 {border:3px solid blue; color:blue}

Надеюсь, что кто-то найдет это полезным.

Ответ №7

Это основа CSS, “каскад” в каскадных таблицах стилей.

Если вы пишете свои правила CSS в одной строке, это упрощает просмотр структуры:

.area1 .item { color:red; } .area2 .item { color:blue; } .area2 .item span { font-weight:bold; }

Использование нескольких классов также является хорошим промежуточным/расширенным использованием CSS, к сожалению, есть известная ошибка IE6, которая ограничивает это использование при написании кросс-кода браузера:

<div class=»area1 larger»> …. </div> .area1 { width:200px; } .area1.larger { width:300px; }

IE6 IGNORES первый селектор в правиле многоклассов, поэтому IE6 фактически применяет правило .area1.larger как

/*.area1*/.larger { … }

Значение будет влиять на ВСЕ. большие элементы.

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

Тогда решение должно использовать префикс класса CSS, чтобы избежать столкновения с универсальными именами классов:

.area1 { … } .area1.area1Larger { … } .area2.area2Larger { … }

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

Ответ №8

вы также можете иметь два класса внутри такого элемента

<div class = «item1 item2 item3»></div>

каждый элемент класса является его собственным классом

.item1 { background-color:black; } .item2 { background-color:green; } .item3 { background-color:orange; } Ответ №9

Класс, который вы применяете в div, может использоваться, например, как ориентир для элементов стиля с этим div.

<div class=»area1″> <table> <tr> <td class=»item»>Text Text Text</td> <td class=»item»>Text Text Text</td> </tr> </table> </div> .area1 { border:1px solid black; } .area1 td { color:red; } /* This will effect any TD within .area1 */

Чтобы быть супер-семантичным, вы должны переместить класс в таблицу.

<table class=»area1″> <tr> <td>Text Text Text</td> <td>Text Text Text</td> </tr> </table> Ответ №10

kR105 писал (а):

вы также можете иметь два класса внутри такого элемента

<div class = «item1 item2 item3»></div

Я не вижу значения этого, поскольку по принципу каскадных стилей последний имеет приоритет. Например, если в моем предыдущем примере я изменил HTML для чтения

<div class=»box1 box2″> Hello what is my color? </div>

рамка рамки и текст будут синими, так как стиль .box2 присваивает эти значения.

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

Оцените статью
Добавить комментарий