Добрый день!
Уважаемые специалисты!
Подскажите, пожалуйста, как изменение значения display ( с block на none) открывает картинку?
есть блок - div, в нем расположены рисунок и надпись.
Псевдоэлемент ::before с начало вставляет перед картинкой и надписью “display: block” - сразу вопрос: "Что он этим вставил? на кого это распространяется?
Затем псевдоэлемент ::before вставляет перед картинкой и надписью “display: none” - Вопрос: “Как это приводит к появлению рисунка с надписью?”
Спасибо.
Свойство display со значением НЕ none для псевдоэлемента писать обязательно, иначе он изначально не будет отображаться.
А когда вы скрываете псевдоэлемент (при наведении кажется), то видите картинку, которая находится под ним.
Укажите корректный раздел для своего вопроса, пожалуйста.
По умолчанию поведение у псевдоэлементов display: inline, если содержимого у псевдоэлемента не будет(свойство content: “”), то и видно его самого не будет. Поэтому для декоративных каких-то элементов, где только картинка фоном например или четко заданы размеры и задают display: block. Но не всегда это делают, если есть свойство position: absolute, то делать этого не нужно, т.к. абсолютное позиционирование меняет поведение по умолчанию у псевдоэлемента(и не только у них) на display: block; (подробнее описано тут https://www.w3.org/TR/CSS2/visuren.html#dis-pos-flo )
Коробка, которую вы видите на первом скрине - это и есть псевдоэлемент. Если задано display: block; то коробка отображается, display: none - коробка больше не отображается, вы видите изображение кота.
:before наследует стиль от элемента, к которому он добавляется. (взято из “справочника”).
А так как псевдоэлемент добавляется к элементу div, то он наследует его стиль, в том числе и размер div, т.е. псевдоэлемент занимает весь div. Правильно ?