2009-06-25 3 views
69

Что точное значение термина „каскадный“ в CSS? Я получаю разные точки зрения, поэтому я прошу здесь. Пример может помочь.Что значит «каскадный» в CSS?

+0

Возможно, стоит сделать это в Wiki сообщества - отредактируйте сообщение и отметьте флажок CW. – ChrisF

+8

Если вы что-то вроде меня, то «Каскадирование» относится к каскадным количествам времени, которые вы потратите на настройку ширины div в два раза пиксельных приращений, чтобы заставить вещи выглядеть «правильно», вместо того, чтобы сосредоточиться на вашей основной бизнес-логике. (Вероятно, я получу несколько негативов для этого ответа, но это правда) – JohnMetta

ответ

95

„каскадный“ в этом контексте означает, что, поскольку более чем одно правило таблицы стилей может применяться к определенному фрагменту HTML, должен быть известный способ определения того, какое конкретное правило таблицы стилей применяется к какому фрагменту HTML.

Используемое правило выбирается каскадирование от более общих правил до требуемого конкретного правила. Выбирается наиболее конкретное правило.

+0

Когда класс/идентификатор и заказ входят в игру? –

+0

@AllDani ID более специфичны, чем классы. Поэтому, я думаю, вы можете сказать, что правило класса каскадируется по более конкретному правилу id. Если 2 правила имеют одинаковый приоритет (например, 2 класса с противоречивыми правилами для одного элемента), то последний, указанный в вашем файле css, имеет приоритет. – metatron

+0

Итак, если ID говорит «A», а класс говорит «B», то даже если класс будет позже на листе, победит ID (A)? И.Е. Заказ входит только в игру, если два стиля имеют одинаковую конкретную специфику? –

-2
CSS doc  
p{font-size: 12pt;} 
p{font-size: 14pt;} 

<p>My Headline<p> 

будет отображать p под шрифтом 14pt, потому что он «ближе» к фактическому элементу (внешние таблицы стилей загружаются из верхней части файла в конец файла). Если вы используете связанную таблицу стилей, а затем включите некоторый CSS в начало вашего документа после, ссылаясь на внешний документ CSS, объявление «в голове» выиграет, потому что оно еще ближе к определенному элементу. Это справедливо только для взвешенных селекторов. Проверьте http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html за хорошее описание веса данного селектора.

Все, что сказано, вы могли бы считать «наследование» частью каскада, а также для всех практических целей. Вещи «каскад» вниз от содержащих элементов.

+0

Это подразумевает, что стили помещаются между материей, даже если не направлены на данный элемент. Это неправильно, если я последую за ним. –

+0

Кажется, это было отредактировано. В любом случае, я не понимаю, как это отвечает на вопрос. –

35

Когда я преподаю CSS, я всегда говорю студентам, что «каскадные таблицы стилей» означают что-то вроде «боевых таблиц стилей».

Одно правило говорит, что ваш тег H3 является красным, другое правило говорит, что оно зеленое - правила противоречат друг другу, кто победит !? Таблица стилей смерти!

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

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

+3

Не знаете, почему это было пропущено. Похоже, простое объяснение для новых учеников. – Purus

+13

Наверное, потому что это не объясняет, что победит, и почему. – Andreas

+10

Вы, кажется, смущены вопросом. Это не «то, что специфика/наследование», или о каких правилах применяются и т. Д. «Что делает каскадное СРЕДСТВО?». – AmbroseChapel

0

Это процесс, который используется для разрешения конфликтов в спецификации таблицы стилей.

Это процесс разрешения конфликтов, выполненный в соответствии с упоминанием приоритета в CSS.

10

Håkon Wium Ли (CSS сотворец) определяет «каскад» в его PHD-тезис о CSS, как «Процесс объединения нескольких таблиц стилей и разрешения конфликтов между ними» (http://people.opera.com/howcome/2006/phd/#h-357)

+2

ссылка не работает, пожалуйста исправьте http://maxdesign.com.au/articles/css-cascade/. Вот почему в SO нам не нужно только вставлять ссылку. – Suresh

4

Вы должны думать об этом с внешней стороны. Если у вас есть правило, что на тело тега он будет «каскад» через каждый ребенок тег. Если вы поместите правило на любой тег внутри тела, оно примет это правило и т. Д. Таким образом, правило каскадирует все содержимое, если оно не прерывается правилом из встроенного тега.

+0

Это не означает, что имеет преимущество. Неоднозначность? –

1

Вы можете обрабатывать обработку CSS, поскольку водопад содержит несколько каскадов.Вот эти каскады сверху вниз по порядку: (. Чем ниже можно переопределить то же свойство в выше)

  1. декларация агента пользователя
  2. пользователя нормальных заявления
  3. автора нормальные заявления
  4. автора важных декларации
  5. пользователем важные заявления

Смотреть еще в spec

каскадирование - это правильное значение из нескольких источников. Но это отличается от сортировки. Только нам не нужно сортировать. Но в CSS эти корни имеют фиксированный приоритет. И, следовательно, псевдокод может выглядеть следующим образом:

  1. инициализировать массив значений;
  2. применяют значения от 1-го источника;
  3. применять значения из 2-го начала, переопределить, если это значение существует;
  4. ...
  5. применять значения из N-го начала, переопределить, если значения существуют;

Из псевдокода видно, что он выглядит как водопад из нескольких каскадов.

0

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

0

Каскадирование означает выливание ступеней или добавление шагов. Таблицы стилей содержат коды для стилизации элемента html. И способ, которым коды написаны в таблице стилей, находится в каскадном режиме. Или просто, обратные коды в слоях для каждого элемента html html-страницы в таблице стилей составляют каскадную таблицу стилей.

1

Одно пояснение, которое может помочь. Если вы включаете две таблицы стилей, и в каждой из них есть правило с той же специфичностью, то последняя включает в себя последние победы. И.Е. последнее в каскаде имеет наибольшее влияние.

(Это просто вариация на тему имея два правила в том же листе. - последний выигрывает, если все другие вещи равны)

Eg, учитывая

body { 
    background:blue; 
} 

body { 
    background:green; 
} 

тогда фон будет быть зеленого цвета.

0

Каскадирование - это алгоритм, который присваивает вес каждому правилу стиля. Когда применяется несколько правил, приоритет имеет тот, у кого наибольший вес.