Наследование элемента управления CSS - Наследование других стилей управления - PullRequest
1 голос
/ 13 марта 2009

Две части к моему вопросу:

1) Есть ли способ наследовать атрибуты и стили другого элемента управления в CSS? Предположим, что элементы управления не имеют родительской / дочерней иерархии и могут иметь совершенно разные типы элементов управления:

IE:

#MyFirstControl
{
  width: 100px;
}

#MySecondControl
{
  width: MyFirstControl.styles.width; /* This doesn't work */
}

2) Предположим, что тег Label является дочерним по отношению к любому другому тегу. Атрибут ширины не будет работать ни с «наследовать», ни с «авто». Что не так?

IE:

<style>
  div
  {
    width: 100px;
  }
</style>

<div>
  <!-- This label does what it wants for width. It's not the width of the containing div -->
  <label style="width: inherit">Some Text</label>
<div>

Ответы [ 3 ]

2 голосов
/ 13 марта 2009

Часть 1: вы хотите использовать имена классов, а не идентификаторы, для управления стилями:

.control_a {
  width: 100px;
}

<blah id='MyFirstControl' class='control_a'/>
<blah id='MySecondControl' class='control_a'/>

Это позволяет вам делиться стилями с любым количеством тегов. Кроме того, имейте в виду, что вы можете использовать более одного имени класса для одного элемента:

.control_a {
  width: 100px;
}

.red { background: #f00; }    
.blue { background: #00f; }

<blah id='MyFirstControl' class='control_a red'/>
<blah id='MySecondControl' class='control_a blue'/>

Это позволяет вам выбирать множество различных источников стиля для одного элемента.

1 голос
/ 13 марта 2009

Нет способа наследовать CSS-объекты. Вы можете наследовать стили от тегов внутри других тегов, но это наследует тег, а не сам стиль. Если вы поместите тег внутри тега с другим стилем, он будет наследоваться от этого стиля.

Было бы интересно, если бы стили CSS рассматривались как объекты, поскольку вы могли бы избежать большого количества кодирования, но поскольку вы можете создать класс, который можно применять к разнородным типам объектов, и даже применять несколько классов к тегу, это интереснее, чем нужно.

Я не уверен насчет второго вопроса, но я думаю, это связано с тем, что вы применяете к имени тега, а не используете класс или идентификатор. Мне бы пришлось поиграть с этим еще, чтобы понять, смогу ли я что-нибудь выяснить.

0 голосов
/ 30 ноября 2009

1) Поскольку CSS не допускает самостоятельную ссылку, у вас могут быть общие аспекты двух отдельных элементов, указанных в одном стиле:

#MyFirstControl, #MySecondControl
{
  width: 100px;
}

2) Если верить моей IDE и браузеру, inherit не является допустимым значением для width в этом контексте, но я не уверен почему. Возможно, именно поэтому ваш пример не работает.

...