2015-06-10 6 views
0

From Chrome DevToolКак понять этот CSS наследования (или переопределить, выбор)

Я создаю веб-страницу Jekyll раздвоенной от Pixyll. Во-первых, я действительно новичок в CSS и все, что связано с HTML.

Пожалуйста, обратитесь к снимку экрана. Большее изображение - here, а части HTML/CSS - ниже. Все так же, как есть, за исключением красного содержимого.

enter image description here

Оригинальная тема имеет те же стили для заголовка «Высокий титул» и «О | Контакт». Я хочу изменить вес и шрифт только для плитки сайта.

Оригинальный HTML-код содержит site-title класс для «Awesome title», но CSS не имеет специализированного для класса site-title.

Я добавил .site-title, как показано в красной коробке. Я смог переопределить шрифты, размер шрифта и интервал, но цвет и вес были унаследованы от .site_header. Из моего фона программирования «Awesome title» имеет ближайший CSS-код site-title, а .site_header - внешний вид.

Вопросы:

  1. Почему внешние site-header тени внутренние определения из site-title?
  2. Что было бы самым элегантным способом определить свой собственный цвет шрифта и т. Д. Для названия сайта?
+0

Более конкретные селекторы перезаписать менее специфические.Чтобы узнать больше о специфичности селектора в официальной спецификации W3C, ** [Спецификация CSS Selectors: Specificity] (http://www.w3.org/TR/css3-selectors/#specificity) **. – anroesti

+0

Ответ пока не выбран. Ваша проблема решена или нет? – connexo

ответ

0
  1. Я считаю, что HTML-теги имеют приоритет над классами CSS. Таким образом, определение css вызовет определение класса CSS .site-title.

  2. Вы можете попробовать быть немного фантазер и комбинируя два ..

    header .site-title { 
        color: ; 
        font-weight: ; 
    } 
    

это только о том, что всякий раз, когда есть сайт-название в заголовке, сделайте это CSS.

+1

'header.site-title' не найдет никаких элементов в соответствии с структурой html OPs. Вы случайно имели в виду 'header .site-title'? – connexo

+0

@connexo Исправить. Между 'header' и' .site-title' должно быть пробел. 'header .site-title' тоже работает. – Nullptr

+1

Я исправил ваш ответ. – connexo

-1

Причина заключается в том, что в более конкретном определении .site-header a одновременно класса и и элемент участвуют, тогда как в .site-title участвует только класс.

Вместо этого следует использовать a.site-title, и он должен работать до тех пор, пока ваше определение появляется после того, которое вы хотите переопределить в исходном коде CSS.

Это иллюстрирует, как она рассчитывается браузером:

http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html

CSS Specificity Calculation

+0

Спасибо за этот ответ! Оно работает. – Nullptr

+0

Рад, что я мог помочь. Не забудьте отметить ответ (щелкните галочку слева от него). – connexo

+0

Если человек, который отклонил этот правильный ответ, был бы настолько добр, чтобы объяснить, что они должны критиковать? – connexo