#html #css
#HTML #css
Вопрос:
Я пытаюсь создать темный слой поверх яркого фонового изображения. Чтобы текст отображался правильно.
Ниже приведен фрагмент:
.link {
position: relative;
z-index: 1;
}
.link::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
}
<div id="contents" class="bg-light">
<a href="#" id="movies" class="link">
<div class="link-content">
<h3>My <strong class="text-primary">Movie</strong> Collection</h3>
<p><strong class="text-secondary">Click Here</strong> to discover the movie collections</p>
</div>
</a>
<a href="#" id="anime" class="link">
<div class="link-content">
<h3>My <span class="text-primary">Anime</span> Collection</h3>
<p>Check out our anime collections rated and recommended by other viewers. <span class="text-secondary">Click Here</span></p>
</div>
</a>
<a href="#" id="ws" class="link">
<div class="link-content">
<h3>My <strong class="text-supplementary">Web-Series</strong> Collection</h3>
<p><span class="text-secondary">Click Here</span> Check out our Web-Series collections rated and recommended by other viewers.</p>
</div>
</a>
</div>
но z-index
он не работает должным образом, и непрозрачность текста также уменьшается вместе с изображением.
Пожалуйста, помогите, как я могу увеличить видимость текста внутри класса «Link-content»
Ответ №1:
Во-первых, дайте классу link
какое-то отображение, например : display: block;
Затем перейдите к псевдоклассу ::before
и дайте ему z-index: -1
это заставит его работать и сделает фон сзади, а текст спереди.
.link {
position: relative;
display: block;
z-index: 1;
}
.link::before {
content: "";
position: absolute;
top: 0;
left: 0;
z-index: -1;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
}
<div id="contents" class="bg-light">
<a href="#" id="movies" class="link">
<div class="link-content">
<h3>My <strong class="text-primary">Movie</strong> Collection</h3>
<p><strong class="text-secondary">Click Here</strong> to discover the movie collections</p>
</div>
</a>
<a href="#" id="anime" class="link">
<div class="link-content">
<h3>My <span class="text-primary">Anime</span> Collection</h3>
<p>Check out our anime collections rated and recommended by other viewers. <span class="text-secondary">Click Here</span></p>
</div>
</a>
<a href="#" id="ws" class="link">
<div class="link-content">
<h3>My <strong class="text-supplementary">Web-Series</strong> Collection</h3>
<p><span class="text-secondary">Click Here</span> Check out our Web-Series collections rated and recommended by other viewers.</p>
</div>
</a>
</div>
Если это не то, что вы ищете, дайте мне знать.
Ответ №2:
Неправильное форматирование окружает блочный элемент встроенными элементами. Вот почему решение @Ahmad Dalao работает, добавляя display: block
к <a>
тегу.
Я не понимаю. Почему вы не можете просто указать .link-content
цвет фона? Вы указываете «… поверх яркого фонового изображения», но я не вижу для этого никакого кода.
.link-content {
background-color: rgba(0, 0, 0, 0.5);
}
<div id="contents" class="bg-light">
<a href="#" id="movies" class="link">
<div class="link-content">
<h3>My <strong class="text-primary">Movie</strong> Collection</h3>
<p><strong class="text-secondary">Click Here</strong> to discover the movie collections</p>
</div>
</a>
<a href="#" id="anime" class="link">
<div class="link-content">
<h3>My <span class="text-primary">Anime</span> Collection</h3>
<p>Check out our anime collections rated and recommended by other viewers. <span class="text-secondary">Click Here</span></p>
</div>
</a>
<a href="#" id="ws" class="link">
<div class="link-content">
<h3>My <strong class="text-supplementary">Web-Series</strong> Collection</h3>
<p><span class="text-secondary">Click Here</span> Check out our Web-Series collections rated and recommended by other viewers.</p>
</div>
</a>
</div>
Комментарии:
1. Я пытался создать 3 горизонтальных контейнерных блока с помощью Flexbox. Для каждого блока будет 3 разных изображения с текстом над ними. Все изображение будет находиться под тегом <a>, чтобы оно было интерактивным. Но изображение, которое я использовал, было настолько ярким, что текст на нем вообще не был виден, поэтому я попытался уменьшить яркость, добавив к нему темный прозрачный фон, это сработало, но яркость текста тоже уменьшилась. Похоже, мне нужно было упомянуть z-index = -1 и для позиции: absolute . Я пропустил эту часть