Правила приоритета CSS

Оператор var foo; объявляет переменную foo и устанавливает ее значение неопределенным , если оно уже не имеет значения . Ваш foo имеет значение, поскольку var foo; на самом деле ничего не делает.

Если вы удалите foo function и замените его простой переменной, вы увидите то же поведение.

5
задан Dónal 31 January 2009 в 02:20
поделиться

6 ответов

Браузер не определяет стиль для всех элементов, просто определенные. Упрощенная таблица стилей внутреннего браузера могла бы быть похожей на это:

a { color: blue; border-bottom: 1px solid blue }
p { margin-bottom: 1em; }
blockquote { margin: 0 5em 1em 5em; }

Возьмите следующий отрывок HTML как пример:

<ul>
  <li>
    <span>Blah blah blah.</span>
  </li>
  <li>
    <a href="about:">Foo</a>
  </li>
</ul>

Когда браузер переходит к рендерингу <span> элемент, это смотрит, просматривает все таблицы стилей (браузер, автор и пользователь) для правил, которые соответствуют, и выясняет, какой является самым важным. Для этого примера таблица стилей автора содержит единственное правило:

ul { color: Green; }

Внутренняя таблица стилей Вашего браузера не указывает a color значение для span, таким образом, это идет по дереву документов, пока это не находит что-то, что действительно имеет a color определенное правило, в этом случае ul.

С другой стороны, когда браузер представляет <a> элемент, это ничего не находит в таблицах стилей пользователя или автора, указывающих a color, таким образом, это использует правило, найденное в таблице стилей браузера.

Конечный результат: Зеленый текст, синяя ссылка.

Информация о премии: при использовании Firefox можно просмотреть (один из) его внутренние файлы CSS путем вставки resource://gre/res/html.css в строку поиска. (Кажется, что прямая гиперссылка путает механизм скидки с цены SO),

6
ответ дан 14 December 2019 в 01:19
поделиться

Вы правы. Существует три источника таблиц стилей. Сначала приезжайте стили браузера, затем пользователь (читатель) стили и наконец стили автора; стили автора обычно превосходят стили пользователя. Что-либо определенное в таблице стилей по умолчанию браузера будет переопределено, если стиль будет определен позже в расположении каскадом (в таблице стилей пользователя или автора), который влияет на него. Если существует что-то, чтобы быть наследованным из-за стиля, записанного автором затем, он переопределяет стили по умолчанию, так как он был определен позже в расположении каскадом.

Пойдите сюда для больше на расположении каскадом.

3
ответ дан 14 December 2019 в 01:19
поделиться

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

Вот лист в качестве примера:

    <style type="text/css">
        #content
        {
            width: auto;
        }

        #content DIV.special
        {
            width: 200px;
            background: #999999;
            border: 2px dotted #000000;
        }

        #content DIV
        {
             width: 300px;
             border: 1px solid #CCCCCC;
        }



    </style>

Учитывая следующий HTML:

        <div id="content">
            <div class="special">
                should render 200px wide with a gray background and a dotted border
            </div>
            <div>
               should render 300px wide with a 1pt border
            </div>
        </div>   

Затем если Вы добавляете этот стиль к нижней части листа:

    DIV
    {
        background: #CC9999;
    }

Вы повернете все светло-фиолетовый (так как это - последний DIV со значением цвета) за исключением отделения с .special классом (потому что это более конкретно).

Надежда, которая помогает.

0
ответ дан 14 December 2019 в 01:19
поделиться

Наследование стилей элементов от их родителей может появиться два пути. Во-первых, в то время как браузеры могут определить свойства стиля для каждого элемента, они обычно не делают так исчерпывающе. Так, например, "p" элемент обычно имеет верхнее поле по умолчанию (среди других), но не определяет стиль шрифта так, чтобы, в отсутствие правил автора или пользователя, был наследован от его родителя. Во-вторых, каждый может в некоторых местах в CSS использовать явное значение, "наследовались", чтобы дать рендереру команду принимать то свойство стиля от своего родителя. Это раньше было необходимо в местах в IE (ячейки таблицы, я думаю), и продолжает быть так при переопределении более ранних правил в каскаде.

0
ответ дан 14 December 2019 в 01:19
поделиться

Поскольку я понимаю вопрос, Вы задаетесь вопросом о том, когда нестилизованный элемент возьмет стиль, определенный в таблице стилей браузера по сравнению с тем, когда это возьмет стиль своего родителя. Это - на самом деле вопрос о специфике, не наследование. Возьмите этот чрезмерно очевидный и упрощенный пример:

Лист браузера
a { color: blue }

Лист автора страницы
div { color: green }

HTML
<div><a href="#">This is a link</a></div>

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

  1. Встроенный стиль; Вы не можете стать более конкретными, чем это, и это превосходит все (возможное исключение то, если! важный существует на соответствующем правиле),
  2. Самый определенный селектор (расположенный где угодно); селектор с самой высокой спецификой будет применен, неважно, где это расположено в структуре наследования, как описано Rob Allen в этом потоке
  3. Селектор, последний раз примененный, затем анализируя дерево наследования (теги style в документе => лист автора => пользовательский лист => лист браузера; обратите внимание, что пользовательский лист мог бы отвергнуть лист автора в некоторых случаях, но обычно автор является категоричным),
  4. Стиль родителя для свойства (или если родитель не имеет необходимого свойства на DOM); очевидно, не все свойства наследованы

Главная причина, что стили браузера не препятствуют тому, чтобы родительские стили были наследованы, состоит в том, что стили браузера обычно очень редки и определяют вещи как цвет, размер шрифта, и т.д. максимально высоко дерево DOM для создания их легкими переопределить. Если бы у Вас был браузер, который определил, скажем, цвет для элементов промежутка, то Вы могли бы хорошо столкнуться с проблемами, пытающимися заставить универсальный цвет отделения наследоваться.

0
ответ дан 14 December 2019 в 01:19
поделиться

Можно хотеть изучить "Специфику" также

http://htmldog.com/guides/cssadvanced/specificity/

0
ответ дан 14 December 2019 в 01:19
поделиться