Битва за курочку. Раунд второй [10/18]

Добрый день.
Объясните, пожалуйста, почему срабатывает
div.to-rudolf{
margin-left:120px;
}

ведь выше такое же объявление по специфичности
<style>
div.to-keksik{ /* Кексик закрепляет преимущество */
margin-left:-120px;
}
< /style>

а ранее говорилось

CSS-правила в тэге style самые приоритетные
1 лайк

Ниженаписанные в CSS правила переопределяют вышенаписанные. Весь код применяется сверху вниз.

Они не выше-ниже расположены, одно объявляется в файле CSS, второе в теле HTML…

Скажите, пожалуйста, точно, в каком задании так написано.

Главная / Курсы / «Знакомство с CSS» / «Каскадность и приоритеты»

В этом блоке теории неточность. Имелись в виду стили не внутри тега <style>, а локальные стили внутри атрибута style элементов. К примеру, <p style="text-align: right;"></p>.

Я поправил теорию в «Знакомстве». Правила внутри <style></style> имеют одинаковый приоритет с подключаемыми внешними стилями.

Спасибо))

а у меня наоборот не срабатывает:

div .to-rudolf {
margin-left: 120px;
}

говорит, система недовольна, нельзя ксс код менять(

извините за беспокойство, я идиот -_-
уже разобралась

Здравствуйте!
Почему,к огдя я пишу

.cat-rudolf + .to-rudolf {
margin-left: 120px;
}

Курица Рудольфу переходит, но при этом задание не засчитывается? При этом пишет, что я исправил css-код

Система рассчитывает, что прочитав теорию к заданию, вы напишите div.to-rudolf

1 лайк

Можно мне тогда как тугодуму объяснить… Нам нужно сделать наше правило более специфическим. А в предыдущем уроке нам говорили, что одинаковые селекторы обладают одинаковой специфичностью. И тут мы делаем такой же селектор, как у Кексика.
И вообще мое решения тоже правильное, или не корректное, или вообще не правильное?

Одинаковой. Но при этом из двух селекторов с одинаковой специфичностью срабатывает тот, который написан в коде ниже другого.
Ваш селектор в данном случае не корректный.
Посмотрите на код:

<div class="battle">
            <div class="cat cat-keksik">Кексик</div>
            <div class="cat cat-rudolf">Рудольф</div>
            <div class="chicken to-keksik to-rudolf"></div>
        </div>

Элемент с классом cat-rudolf - это блок с изображением кота. Кота двигать не просили.

2 лайка

Извините за занудство, но хочется понять. Как я понял из теории, то код .cat-rudolf + .to-rudolf {
margin-left: 120px;
}
означает, что стили будут применены к .to-rudolf только в том случае, если он стоит за .cat-rudolf. То есть тут не говориться о том, что нужно передвинуть самого кота. Или нет?

Ничего. Я всегда за истину. И все-таки вы правы. Может быть и такой селектор.
Но в данном задании демонстрируется один из способов увеличения специфичности: "элемент.класс"
Вы применили другой. Если проверку расширят и добавят ваш вариант, то будет работать.
А пока ваш вариант некорректный.

1 лайк

Понял, спасибо большое!

1 лайк

Доброго времени суток.
Добрался и я до курочки (Кексик, не сердись, я фигурально) :smile:
Заметил интересную особенность 1 раунда задания:
Почитав предварительно про специфичность и прикинув, что при одинаковой специфичности тапки у того, у кого заначка (в данном случае тег div ) обновил страницу и вторым вариантом просто сдублировал первый селектор со всем содержимым и поставил его последним. :smile:
Понятно, что засорять код не есть хорошо, тем не менее код сработал - условие не менять значение выполнено, что в теории разрешено менять порядок правил :slight_smile: , итого: сработал вариант “тапки у того, кто последний” :smile:
P.S. Зацепила меня эта курица :smile:
Нашел еще вариант, при котором срабатывает:

.to-keksik+.to-rudolf {...}

во втором правиле.

Ну, или добавить еще 1 правило:

.cat-rudolf+.chicken {
    margin-left: -120px;
}

Так же и со вторым раундом - есть еще варианты :slight_smile:
Для себя сделал вывод, что решений, которые примет система, может быть несколько, но оптимальное все-таки красивее :smile:
Вариант

div.to-keksik /* в первом
  или */
div.to-rudolf /* во втором*/

еще раз доказывает, что краткость - сестра таланта :smile:
Спасибо авторам за замечательный проект. Продолжу занятия с удовольствием.

2 лайка

Интересно узнать почему мне засчитали как правильный такой вариант:

.to-rudolf {
margin-left: 120px;
}
.battle .to-rudolf {
margin-left: 120px;
}

Вопрос снимается, поторопилась.

Добрый день! И всё же хочется подытожить: т.е. CSS всегда считается как бы “низом” кода по отношению к HTML и если div.to-rudolf написан в CSS, а div.to-keksik в HTML, то будет срабатывать div.to-rudolf, т.к. он расположен “ниже”, в CSS. Правильно я понимаю?