Наведите курсор на поле

HTML выглядит следующим образом (я использую React BTW):

.iss {
  width: 100%;
  z-index: -1;
  position: absolute;
  left: 0;
  transition: all 0.5s ease-in-out;
}

.heading-section {
  margin-top: 250px;
  pointer-events: none;
}

.dgs-heading {
  color: white;
  font-family: Verdana, Geneva, Tahoma, sans-serif;
  margin: auto;
}

.dgs-para {
  color: white;
  font-family: Verdana, Geneva, Tahoma, sans-serif;
}

.iss:hover {
  -webkit-filter: blur(5px);
  filter: blur(5px);
}
<div class = "dragon-sim">
  <img class = "iss" src = "https://spacecraftearth.com/wp-content/uploads/2017/06/ISS-Earth-Mediterranean-2.jpg" alt = "iss-img" />
  <div class = "heading-section">
    <h1 class = "dgs-heading">SpaceX Dragon 2 Simulator</h1>
    <p class = "dgs-para">Dock the SpaceX Dragon 2 Satellite to the International Space Station in this realtime simulator with the controls our astronauts use on their missions.</p>
    <Button variant='outlined' class = "dgs-btn"><a
      href = "https://iss-sim.spacex.com/">Try Now</a></Button>
  </div>
</div>

Я хочу, чтобы раздел заголовка располагался по центру изображения. Изображение находится на z - index = -1.

Следующее, что изображение будет размыто при наведении курсора. Но проблема в том, что отступы или поля мешают и блокируют эффект наведения.

Если ваш z-индекс равен -1, как вы ожидаете, что изображение будет наведено? Я не думаю, что ваше поле или отступы являются проблемой здесь

Love2Code 19.12.2020 19:32
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
180
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Во-первых, сделайте отступ в HTML-коде, когда задаете вопрос.

попробуйте следующее, чтобы центрировать .heading-section

.heading-section {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

Если вы измените .heading-section на position: absolute и pointer-events: none, наведение переместится на основное изображение.

Посмотреть это в полностраничном режиме:

.iss {
    width: 100%;
    z-index: -1;
    position: absolute;
    left: 0;
    top: 50px;
    transition: all 0.5s ease-in-out;
}

/* heading overlay: use absolute positioning */
.heading-section {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    pointer-events: none; /* passes hover to img */
}

.dgs-heading {
    color: white;
    font-family: Verdana, Geneva, Tahoma, sans-serif;
    margin: auto;
}

.dgs-para {
    color: white;
    font-family: Verdana, Geneva, Tahoma, sans-serif;
}

/* override "pointer-events: none" to allow button click */
.dgs-btn {
    pointer-events: auto;
}

.iss:hover {
    -webkit-filter: blur(5px);
    filter: blur(5px);
}
<div class = "dragon-sim">
  <img class = "iss"
       src = "https://spacecraftearth.com/wp-content/uploads/2017/06/ISS-Earth-Mediterranean-2.jpg"
       alt = "iss-img"/>
  <div class = "heading-section">
    <h1 class = "dgs-heading">SpaceX Dragon 2 Simulator</h1>
    <p class = "dgs-para">Dock the SpaceX Dragon 2 Satellite to the
      International Space Station in this realtime simulator with the controls
      our astronauts use on their missions.</p>
    <button class = "dgs-btn" onclick = "alert('click')">Try Now</button>
  </div>
</div>

Хорошо, что ваше решение работает :), единственная проблема, о которой я хочу упомянуть, заключается в том, что с вашей реализацией кнопка внутри раздела заголовка не активна, я решил это по-другому в своем решении :)

Dario Piotrowicz 19.12.2020 20:04

Вам нужна оболочка, которая содержит как изображение, так и заголовок, и, когда эта оболочка наводится на вас, затем размывает изображение.

Естественно, вы можете центрировать раздел заголовка так, как упомянул Кевин.

Итак, исходя из того, что я сказал, моим решением будет тот же html и css, которые станут чем-то вроде:

.iss {
    width: 100%;
    z-index: -1;
    left: 0;
    transition: all 0.5s ease-in-out;
}

.heading-section {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

.dgs-heading {
    color: white;
    font-family: Verdana, Geneva, Tahoma, sans-serif;
    margin: auto;
}

.dgs-para {
    color: white;
    font-family: Verdana, Geneva, Tahoma, sans-serif;
}

.iss:hover {
    -webkit-filter: blur(5px);
    filter: blur(5px);
}

.dragon-sim {
    position: relative;
}

.dragon-sim:hover > .iss {
    -webkit-filter: blur(5px);
    filter: blur(5px);
}

Кажется, это делает то, что вы хотели, оно размывает изображение, но не текст, и вы все равно можете взаимодействовать с текстом и кнопкой без проблем.

Кроме того, текст не очень читабелен, я бы предложил сделать прозрачный фон для раздела заголовка.

Также обратите внимание, что я удалил pointer-events: none;, так как он больше не нужен, к тому же вы не сможете нажать кнопку, поэтому вы определенно не хотите использовать это свойство.

Также мой ответ решает различные проблемы, но вы все равно можете добавить некоторые другие стили, такие как выравнивание текста и тому подобное, но это уже должно решить основную проблему, которую вы задали в вопросе, который я считаю

Dario Piotrowicz 19.12.2020 20:01

Я отредактировал свое решение после того, как решение Джона заставило меня понять, что на самом деле изображение не должно иметь абсолютное позиционирование :)

Dario Piotrowicz 19.12.2020 20:38
Ответ принят как подходящий

Возможно, это то, что вы ищете. Удалите pointer-events: none; и замените position: absolute; на .heading-section вместо изображения. А также добавить этот код:

.dragon-sim {
  position: relative;
  text-align: center;
}

Вот рабочий пример (я изменил className на class только для запуска этого примера, просто измените его обратно для реакции)

Обновлено: добавьте это в свой CSS, чтобы получить размытие даже при наведении курсора на заголовок.

.dragon-sim:hover .iss {
    -webkit-filter: blur(5px);
    filter: blur(5px);
}

Пример здесь:

.iss {
    width: 100%;
    z-index: -1;
    transition: all 0.5s ease-in-out;
}


.dragon-sim {
  position: relative;
  text-align: center;
}

.heading-section {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}


.dgs-heading {
    color: white;
    font-family: Verdana, Geneva, Tahoma, sans-serif;
    margin: auto;
}

.dgs-para {
    color: white;
    font-family: Verdana, Geneva, Tahoma, sans-serif;
}


.dragon-sim:hover .iss {
    -webkit-filter: blur(5px);
    filter: blur(5px);
}
<div class = "dragon-sim">
  <img class = "iss"
       src = "https://spacecraftearth.com/wp-content/uploads/2017/06/ISS-Earth-Mediterranean-2.jpg"
       alt = "iss-img"/>
  <div class = "heading-section">
    <h1 class = "dgs-heading">SpaceX Dragon 2 Simulator</h1>
    <p class = "dgs-para">Dock the SpaceX Dragon 2 Satellite to the
      International Space Station in this realtime simulator with the controls
      our astronauts use on their missions.</p>
    <Button variant='outlined' class = "dgs-btn"><a
      href = "https://iss-sim.spacex.com/">Try Now</a></Button>
  </div>
</div>

Это центрирует заголовок, но как только вы наводите на него курсор, размытие фона исчезает, на самом деле это не указано в вопросе, но я думаю, что этого не должно происходить.

Dario Piotrowicz 19.12.2020 20:08

Это очень легко исправить. Просто добавьте это в код CSS: .dragon-sim:hover .iss { -webkit-filter: blur(5px); filter: blur(5px); } Я обновлю свой ответ, чтобы показать это.

John 19.12.2020 20:10

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