Как я могу добавить ссылку на развернутые изображения в этой галерее, не «нарушая» анимацию/эффект?

#html #css #hover #image-gallery #portfolio

Вопрос:

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

Где я должен разместить тег, чтобы связать 4 раздела по отдельности?

https://codepen.io/knyttneve/pen/YgZbLO

   HTML:
    <div class="container">
  <div class="box">
    <img src="https://source.unsplash.com/1000x800">
    <span>CSS</span>
  </div>
  <div class="box">
    <img src="https://source.unsplash.com/1000x802">
    <span>Image</span>
  </div>
  <div class="box">
    <img src="https://source.unsplash.com/1000x804">
    <span>Hover</span>
  </div>
  <div class="box">
    <img src="https://source.unsplash.com/1000x806">
    <span>Effect</span>
  </div>
</div>

    CSS:
    .container {
  display: flex;
  width: 100%;
  padding: 4% 2%;
  box-sizing: border-box;
  height: 100vh;
}

.box {
  flex: 1;
  overflow: hidden;
  transition: .5s;
  margin: 0 2%;
  box-shadow: 0 20px 30px rgba(0,0,0,.1);
  line-height: 0;
}

.box > img {
  width: 200%;
  height: calc(100% - 10vh);
  object-fit: cover; 
  transition: .5s;
}

.box > span {
  font-size: 3.8vh;
  display: block;
  text-align: center;
  height: 10vh;
  line-height: 2.6;
}

.box:hover { flex: 1 1 50%; }
.box:hover > img {
  width: 100%;
  height: 100%;
}
 
 

Комментарии:

1. Если я правильно понял ваш вопрос, то я просто сделал коробки со ссылками с href, и в моем случае галерея работает хорошо.

Ответ №1:

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

Изменения HTML

Добавлены теги привязки к каждому .box div

 <a href="#"></a>
 

Изменения CSS

 .box {
  position: relative;
}

.box>a {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
}
 
 .container {
  display: flex;
  width: 100%;
  padding: 4% 2%;
  box-sizing: border-box;
  height: 100vh;
}

.box {
  position: relative;
  flex: 1;
  overflow: hidden;
  transition: 0.5s;
  margin: 0 2%;
  box-shadow: 0 20px 30px rgba(0, 0, 0, 0.1);
  line-height: 0;
}

.box>img {
  width: 200%;
  height: calc(100% - 10vh);
  -o-object-fit: cover;
  object-fit: cover;
  transition: 0.5s;
}

.box>a {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
}

.box>span {
  font-size: 3.8vh;
  display: block;
  text-align: center;
  height: 10vh;
  line-height: 2.6;
}

.box:hover {
  flex: 1 1 50%;
}

.box:hover>img {
  width: 100%;
  height: 100%;
} 
 <div class="container">
  <div class="box">
    <a href="#"></a>
    <img src="https://source.unsplash.com/1000x800">
    <span>CSS</span>
  </div>
  <div class="box">
    <a href="#"></a>
    <img src="https://source.unsplash.com/1000x802">
    <span>Image</span>
  </div>
  <div class="box">
    <a href="#"></a>
    <img src="https://source.unsplash.com/1000x804">
    <span>Hover</span>
  </div>
  <div class="box">
    <a href="#"></a>
    <img src="https://source.unsplash.com/1000x806">
    <span>Effect</span>
  </div>
</div> 

Комментарии:

1. Это сработало идеально! Извините, я явно новичок, когда дело доходит до кодирования. 🙂

2. Рад, что это помогло. 🙂