Jump to content
  • 0

Множественные классы на одном элементе в IE6


clavin
 Share

Question

На странице http://msdn.microsoft.com/en-us/library/cc351024(VS.85).aspx про совместимость браузеров IE увидел такое выражение "Prior to Internet Explorer 7, there was a two-class selector limit per element". Что она значит?

Если имеется ввиду такая конструкция

<div class="name1 name2 name3">text</div>

то IE6, как я мог увидеть на тестах, справляется с такими селекторами. Объясните, кто знает о чём речь идёт.

Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0
Нет, имеется ввиду присвоение свойств нескольких описанных раздельно классов, а не .name1.name2. При пересечении свойств приоритет будет у левого класса.

Не совсем поняла, что ты имеешь ввиду

.name1 {color: red}
.name2 {color: green}

<div class="name1 name2">Text<div>

Эту конструкцию или что-то другое?

В этом случае применяемое свойство будет определятся исходя из правил специфичности и каскада и текст будет зеленый.

А если записать

.name1 {text-decoration: underline;}
.name2 {color: green}
.name1.name2 {font-weight: bold;}

<div class="name2">Text<div>

Текст в диве в ИЕ6 всё-равно будет жирным, вне зависимости от наличия или отсутствие класса name1, т.к. учитываться в правиле будет только последний селектор.

Link to comment
Share on other sites

  • 0

Так про ИЕ6 или про ИЕ7 вопрос?

Вобщем ИЕ6 в множественных селекторах берет последний класс. Если не хотите игнорировать ИЕ6 - пишите корректировку в условных комментариях.

Еще комбинировать можно не только классы, но и добавлять туда идентификатор.

А вот что касается ИЕ7 - видимо имеется ввиду ограничение не более 2-х классов для множественных селекторов такого типа

.name1.name2.name3 {font-weight: bold;}

Это видимо сработает не по спеке.

Как-то не приходилось использовать больше 2-х классов в таком варианте. И вобщем-то не очень это удобно, легко запутаться.

Link to comment
Share on other sites

  • 0
Так про ИЕ6 или про ИЕ7 вопрос?

Вопрос о

"Prior to Internet Explorer 7, there was a two-class selector limit per element". Что она значит?
.name1.name2.name3 {font-weight: bold;}

Это видимо сработает не по спеке.

Как-то не приходилось использовать больше 2-х классов в таком варианте. И вобщем-то не очень это удобно, легко запутаться.

Множественные селекторы? Не, они предусмотрены спецификацией.

А вопрос удобства весьма субъективный. Чем придумывать третий класс иногда удобней комбинировать селекторы.

Link to comment
Share on other sites

  • 0
Множественные селекторы? Не, они предусмотрены спецификацией.

Так я и говорю, что по спеке без разницы сколько там будет классов, а вот для ИЕ7 больше 2-х как будут работать - надо проверить, но явно не так как в спеке.

Я до ИЕ7 если и доберусь, то не сегодня, так что протестите кто-нить тройной селектор.

Link to comment
Share on other sites

  • 0

Ща в 7 проверю, отпишусь

Вроде нормально пашет

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>#id.class</title>
<style type="text/css">
.r.b { background: blue;}
.r.b.g { background: red;}
</style>
</head>
<body>
<div id="wrapper" class="r b g">
Content
</div>
</body>
</html>

Link to comment
Share on other sites

  • 0
Это multiple classes selector. Они могли бы так и написать, а не городить огород

Так с этим вроде понятно, проблема в том, что в описании для ИЕ7 ограничено количество классов, но на практике что-то никто этого не замечал...

а ИЕ6 в этой конструкции:

<div class="name1 name2 name3">text</div>

увидит только name3

Link to comment
Share on other sites

  • 0
Так с этим вроде понятно, проблема в том, что в описании для ИЕ7 ограничено количество классов, но на практике что-то никто этого не замечал...

а ИЕ6 в этой конструкции:

<div class="name1 name2 name3">text</div>

увидит только name3

В IE6 он видит все 3, т.е. присваивает свойства всех трёх классов переопределяя их по иерархической цепочке.

Link to comment
Share on other sites

  • 0
В IE6 он видит все 3, т.е. присваивает свойства всех трёх классов переопределяя их по иерархической цепочке.

Это понятно, я имею ввиду ситуацию при объявлении

.name1.name2.name3 {}
или
.name2.name3 {}
и коде
<div class="name1 name2 name3">содержимое тут</div>

В отличии от нормальных броузеров ИЕ6 применит как 1-ый так и 2-ой вариант объявления свойств.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy