Использование селекторов с несколькими классами в IE7 и IE8

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

CSS

.column {
  float: left;
  display: block;
  margin-right: 20px;
  width: 60px;
}
.two.column {
  width: 140px;
}
.three.column {
  width: 220px;
}
.four.column {
  width: 300px;
}

HTML:

<div class='two column'>Two Columns</div>
<div class='three column'>Three Columns</div>
<div class='four column'>Four Columns</div>

В конечном итоге используется правило .four.column. Любые идеи о том, что я делаю неправильно?

Ответы

Ответ 1

Вы хотите убедиться и использовать тип документа, чтобы вы не отображали его в режиме quirks. Например:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Test Page</title>
<style type="text/css">
.column {
  float: left;
  display: block;
  margin-right: 20px;
  width: 60px;
  border: 1px solid;
}
.two.column {
  width: 140px;
}
.three.column {
  width: 220px;
}
.four.column {
  width: 300px;
}
</style>
</head>
<body>
<div class="two column">Two Columns</div>
<div class="three column">Three Columns</div>
<div class="four column">Four Columns</div>
</body>
</html>

Ответ 2

Не то, чтобы вы делали что-то неправильно, но если у вас есть только такие классы, как:

.column {
  float: left;
  display: block;
  margin-right: 20px;
  width: 60px;
}
.two {
  width: 140px;
}
.three {
  width: 220px;
}
.four {
  width: 300px;
}

Затем вы должны получить нужный рендеринг при применении этих классов в правильном порядке:

<div class='column two'>Two Columns</div>

Если вы считаете, что классы css похожи на классы программирования, класс .two расширяет базовый класс .column, перегружая его свойство width.

Таким образом, вы также можете применять классы .two, .three и .four к другим элементам страницы, ширина которых вы хотите исправить для этих размеров, без необходимости полагаться на их позицию или контейнер на странице.