Перекрытие изображения и текста в CSS с ссылкой только на изображение - PullRequest
1 голос
/ 12 марта 2019

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

Мой старый код:

header {
  display: block;
  position: relative;
}

header img {
  display: block;
  position: relative;
  height: 100%;
  width: 100%;
}

header a {
  display: block;
  position: relative;
  width: 100%;
}

h1 {
  font: normal 2.8em "verdana", sans-serif;
  color: #ddd;
  position: absolute;
  right: 2vw;
  bottom: 4vh;
}
<header>
  <a href="index"><img src="https://www.placebear.com/800/200" alt="Banner Image" /></a>
  <h1>website title</h1>
</header>

Новый код попытки (метод flexbox + background-image):

header {
  display: flex;
  height: 10vh;
  background-image: url("https://www.placebear.com/800/200");
  background-size: cover;
  padding: 2rem 0;
  color: #fff;
  text-shadow: 0px 1px 6px rgba(0, 0, 0, 0.6);
}

h1 {
  font-family: Arial, sans-serif;
  width: 80%;
  margin: 0 auto;
  line-height: 1.1em;
  font-size: 2rem;
}

@media (min-width: 500px) {
  h1 {
    font-size: 4rem;
  }
}
<a href="index">
  <header>
    <h1>
      example text
    </h1>
  </header>
</a>

Проблема, с которой я столкнулся, заключается в том, что тег ссылки не может применяться к просто изображению в методе flexbox + background-image.Текст также включен, но это не то, что мне нужно.

Новый код попытки (сетка + ссылка):

header {
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: repeat(3, 1fr);
}

header img {
  grid-column: 1;
  grid-row: 1 / 3;
  width: 100%;
  height: 100%;
  overflow: hidden;
}

header p {
  grid-column: 1;
  grid-row: 2;
  align-self: center;
  justify-self: center;
  z-index: 1;
}
<header>
  <a href="#"><img src="https://www.placebear.com/800/200"></a>
  <p>SOME TEXT OVER IMAGE</p>
</header>

Метод grid + link не работает, поскольку тег link разрывает сетку и заставляет себя создать еще один элемент сетки под изображением баннера.

Я действительно рисую здесь соломинки, чтобы понять, как правильно это реализовать.Если у кого-нибудь есть какой-нибудь совет, это было бы замечательно.Спасибо за тонну!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...