Прежде всего, не помещайте свои классы CSS, используя имена, предлагающие визуальное намерение, например «minheightstyle». Часть идеи CSS состоит в том, чтобы разделить контент и стиль, доказанное преимущество, которое вы пытаетесь сделать недействительным с именами классов, которые вы показываете. Итак, это ваше первое эмпирическое правило - если вы хотите пометить элемент, вы не помечаете его просто для стилизации, вы помещаете его в подсказку о том, как этот элемент отличается от других по отношению к его контенту. Например, с тремя div
с, если все так, то это должно быть возможным, чтобы выбрать их, как дети своих родителей, например:
#parent > div {
min-height: 300px;
}
Если один из них является выбранный пункт меню (например) , вы можете дать ему класс «выбран» и стиль его соответствующим образом:
#selected {
min-height: 300px; }
в общем, пытаются рассуждать о структуре при проектировании ваших селекторов, а не думать о стиле. Это, возможно, совет, который вы отбросите, прибегая к более простым мерам, но я заверяю вас, что это лучшая инвестиция, которую вы можете сделать, если серьезно относитесь к веб-дизайну сегодня. Разделение контента и стиля абсолютно необходимо, и не только с сегодняшними HTML и CSS, это актуально и в других областях.
И, во-вторых, вы должны помнить, что правила, которые вы пишете, применяются браузером рабски - то есть элементы, которые в конечном итоге переопределяются вами с вашими таблицами стилей, должны в соответствии с спецификацией CSS иметь свой стиль, пересчитанный из того, что он был. То есть, если вы (например) решить, чтобы переопределить стиль всех элементов со следующим селектором:
* {
margin: 0; padding: 0; }
..because вы решили, что вы устали от мелких несоответствий между браузерами применяя свои маленькие поля и paddings здесь и там, и вы хотите, чтобы стальной контроль полей и прокладок на ваших страницах, то вы должны знать, что браузер свяжет правило выше (либо сразу же отрисует стиль, либо там, или отложив его позже) до каждый элемент у вас есть. Зная это, вы должны понять, лучше ли применять правило выше к некоторым элементам. Те же рассуждения обычно применяются для фоновых изображений - лучше ли применять цвет фона для детей элемента или просто к самому элементу (результат часто неотличим визуально)?
<div id="menu">
<div>Apples</div>
<div>Oranges</div>
<div>Bananas</div>
</div>
#menu > div {
background-color: brown;
}
или
#menu {
background-color: brown;
}
Как к вашей насущной проблеме, хорошее эмпирическое правило заключается в минимизации коды, включая и разметку и стиль. Избавьтесь от одинаковых имен классов для детей, CSS вполне способна выбрать их без имен классов:
<div id="foo">
<div>my text in red bg</div>
<div>my text in blue bg</div>
<div>my text in grey bg</div>
</div>
#foo > div
{
min-height: 300px;
float: left;
}
#foo > div:nth-child(1)
{
color: red;
}
#foo > div:nth-child(2)
{
color: green;
}
#foo > div:nth-child(3)
{
color: blue;
}
Конечно, есть и другие способы, чтобы выбрать вещи выше, а просто попытаться применить знание того, как CSS действительно работает. Абстракция от деталей - это хорошо, но для оптимизации требуется знание указанных деталей. Старайтесь не рассуждать о стиле при разработке вашей разметки - наберите его так, как если бы автор (ваш) стиль всегда был отключен или набирал его элементы тегов с учетом содержания. Затем примените CSS, просмотрите (часто нужны «обертки», но в настоящее время это жизнь веб-разработчиков), и повторите. Но постарайтесь сохранить содержание и стиль отдельно - изменение должно иметь минимальное влияние на другое.
Я не уверен, почему вы получаете downvotes, на самом деле это очень хороший вопрос. –
Duplicate - http://stackoverflow.com/questions/5045448/what-is-the-best-way-to-use-css-not-learn-but-really-use – lifetimes
Пожалуйста, прочитайте мой ответ здесь для подробного ознакомления о том, почему '.red' - злой способ стиля - http://stackoverflow.com/a/16776592/1729885 –