Эффект наведения, устанавливающий непрозрачность текста, а также

Я пытаюсь скрыть текст, и когда вы наводите курсор на элемент, непрозрачность становится равной 0,5, и появляется текст. Однако, похоже, происходит то, что для текста также устанавливается непрозрачность 0,5.

Я использую реакцию, если вам интересно узнать о синтаксисе.

<div
    className = "course_grid-item"
    style = {{ backgroundImage: `url(${bgImg4})` }}
>
    <div className = "grid_course-name">
        <h5>Title</h5>
    </div>
</div>
.course_grid-item {
    transition: all 0.3s ease;
    background: white;
    padding: 2rem;
    margin: 5px;
    border-radius: 5px;
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center;
}

.course_grid-item:hover {
    opacity: 0.5;
}

.grid_course-name {
    opacity: 0;
}

.course_grid-item:hover .grid_course-name {
    opacity: 1;
    transition: all 0.3s;
}
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
0
201
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это потому, что course_grid-item является родителем grid_course-name.

Любой фильтр, примененный к родителю, влияет на дочерний элемент:

.course_grid-item {
  transition: all 0.3s ease;
  background: url("https://cdn.static-economist.com/sites/default/files/images/print-edition/20170722_STP001_0.jpg");
  padding: 2rem;
  margin: 5px;
  border-radius: 5px;
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center;
}

.course_grid-item:hover {
  opacity: 0.5;
}

.grid_course-name {
  opacity: 0;
}

.course_grid-item:hover .grid_course-name {
  opacity: 1;
  transition: all 0.3s;
}
<div class = "course_grid-item">
  <div class = "grid_course-name">
    <h5>Title</h5>
  </div>
</div>

Вместо этого вы можете установить фоновое изображение на ::before:

.course_grid-item {
  position: relative;
  background: white;
  height: 200px;
  width: calc(100vw - 6rem);
  padding: 2rem;
  margin: 5px auto;
  border-radius: 5px;
  overflow: hidden;
}

.course_grid-item::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: url("https://cdn.static-economist.com/sites/default/files/images/print-edition/20170722_STP001_0.jpg");
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center;
  transition: all 0.3s ease;
}

.course_grid-item:hover::before {
  opacity: 0.5;
}

.grid_course-name {
  position: relative;
  opacity: 0;
}

.course_grid-item:hover .grid_course-name {
  opacity: 1;
  transition: all 0.3s;
}
<div class = "course_grid-item">
  <div class = "grid_course-name">
    <h5>Title</h5>
  </div>
</div>

Или сделайте изображение отдельным:

.course_grid-item {
  position: relative;
  width: calc(100vw - (4rem + 10px));
  margin: 4px auto;
}

.grid_course-background {
  position: absolute;
  width: 100%;
  height: 200px;
  transition: all 0.3s ease;
  background: url("https://cdn.static-economist.com/sites/default/files/images/print-edition/20170722_STP001_0.jpg");
  border-radius: 5px;
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center;
}

.course_grid-item:hover .grid_course-background {
  opacity: 0.5;
}

.grid_course-name {
  position: relative;
  opacity: 0;
}

.course_grid-item:hover .grid_course-name {
  opacity: 1;
  transition: all 0.3s;
}
<div class = "course_grid-item">
  <div class = "grid_course-background"></div>
  <div class = "grid_course-name">
    <h5>Title</h5>
  </div>
</div>

Как мне преодолеть это тогда, потому что мне нужен текст внутри элемента?

Waterfall 10.12.2020 16:38

@Waterfall заключает текст в общий тег <span> и применяет правила CSS к этому элементу тега span.

Martin 10.12.2020 16:44

Мне нравится ваш последний пример с отдельным изображением. Просто вопрос, можно ли использовать фоновое изображение или лучше использовать изображение в теге <img>?

Waterfall 10.12.2020 18:31

@Daniel_Knights, я только что понял, что в ваших примерах текст фактически меняет непрозрачность после того, как изображение

Waterfall 10.12.2020 18:58

Изображение тоже подойдет. Не уверен, почему он это делает, думаю, это просто причуда браузера.

Daniel_Knights 10.12.2020 19:05
position: relative вроде исправили
Daniel_Knights 10.12.2020 19:22

Хм, я хочу использовать ваш третий пример, но я не думаю, что он работает. Текст также, кажется, имеет непрозрачность менее 1

Waterfall 10.12.2020 19:30

Попробуйте установить его на position: relative, у меня работает в обоих примерах

Daniel_Knights 10.12.2020 19:33

@Daniel_Knights, ах да. Ты прав. Осталась только одна проблема, и это то, что если вы наведете курсор на сам текст, наложение изображения исчезнет.

Waterfall 10.12.2020 19:40

Я думаю, что исправил это, сделав это .course_grid-item:hover .grid_course-background { opacity: 0.5; }

Waterfall 10.12.2020 19:49

О да, добавил это в свой фрагмент

Daniel_Knights 10.12.2020 20:05

Другие вопросы по теме