#html #css
#HTML #css
Вопрос:
Я играл с псевдоселекторами и пытался разобраться.
Это общий вид элемента, над которым я пытаюсь работать:
<div class=simpleGallery>
<a href="...">
<img data-attachment-id="some_number" ........>
</a>
</div>
Я пытаюсь отобразить текст на изображении с определенным атрибутом (например, data-attachment-id). Мне удалось получить его, выполнив поиск по ссылке href, которая заканчивается уникальным способом. Вот так…
.simpleGallery a[href$="GP120094-1.jpg"]:before{
content:'Hokus Pokus';
position:absolute;
bottom:25%;
opacity:0;
width:100%;
text-align:center;
color:#fff;
box-sizing:border-box;
-moz-box-sizing:border-box;
-moz-transition: all 1.2s ease;
-webkit-transition: all 1.2s ease;
transition: all 1.2s ease;
}
И затем я получаю текст для отображения с:
.simpleGallery a:hover:before{
opacity:1;
z-index:1;
-moz-transform: scale(1.1);
-webkit-transform: scale(1.1);
transform: scale(1.1);
}
Все это работает, но мне было интересно, почему это не будет работать с чем-то вроде этого:
.simpleGallery a:before img[data-attachment-id="some_number"]
Как бы это было сделано с помощью идентификатора вложения данных изображения вместо href в <a>
теге?
И почему?
Это потому, что :before может идти только после последнего элемента, который я ищу?
Комментарии:
1. Пожалуйста, обратите внимание, что фактическая проблема с этой ситуацией здесь заключается в том, что невозможно добавить тексты в img, поскольку img является замененным элементом , и любой контент в нем не может быть показан. Итак … вы не можете использовать
::before
or::after
в самом img (это не сработает), и вам приходится довольствоваться отображением дополнительного контента с помощью::before
or::after
в окружающих его элементах.
Ответ №1:
.simpleGallery a:before img[data-attachment-id="some_number"]
Говорит:
1.) найдите элемент с классом «simpleGallery»
2.) найдите тег привязки потомка
3.) нацелитесь на :before
псевдоэлемент этого элемента
4.) найдите тег img-потомка этого псевдоэлемента, идентификатор вложения данных которого равен «some_number»
Проблема здесь в том, что псевдоэлементы не являются реальными элементами в dom (следовательно, псевдо), поэтому у них нет дочерних элементов, братьев и сестер, умерших и т.д. итак, ваш селектор недействителен.
Как бы это было сделано с помощью идентификатора вложения данных изображения вместо href в теге?
Именно так, как у вас это есть: img[data-attachment-id="some_number"]