Как можно реализовать подобную анимацию, как в этом макете Figma?

Пока что вообще не имею представления, как это можно реализовать с помощью JS и CSS. Можете дать какие-то наводки или предположения. Вот макет в Figma, где показан пример с функционалом (можно кликать на заголовки)


Ответы (1 шт):

Автор решения: MaximLensky

Конечно чуть чуть через Ж....но как умею

window.addEventListener("load", function() {
  document.querySelectorAll(".links p").forEach(function(item) {
    let img = document.querySelector(".block img");
    let links = document.querySelector(".links");
    item.addEventListener("click", function(e) {
      img.src = item.dataset.src;
      links.style.transform = `translateY(${item.dataset.pos})`;
    });
  });
});

document.querySelector(".links").addEventListener("click", function(e) {
  for (let i = 0; i < document.querySelector(".links").children.length; i++) {
    document.querySelector(".links").children[i].classList.remove("active");
  }
  e.target.classList.add("active");
})
.block {
  display: flex;
  position: relative;
  padding: 60px 0;
  width: 450px;
  margin: auto;
  overflow: hidden;
}

.block:after {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  background: #fff;
  width: 450px;
  height: 40px;
  z-index: 21;
  filter: blur(10px);
}

.block:before {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  background: #fff;
  width: 100%;
  height: 40px;
  z-index: 20;
  filter: blur(20px);
}

.hidden {
  width: 300px;
}

.links {
  width: 300px;
  display: flex;
  align-items: flex-start;
  flex-direction: column;
  position: absolute;
  left: 0;
  top: 5%;
  text-align: left;
  transition: 0.34s linear;
}

.links p {
  cursor: pointer;
  font-size: 14px;
  font-family: sans-serif;
  height: 30px;
  line-height: 30px;
  transition: 0.34s linear;
}

.links p.active {
  font-size: 22px;
  color: yellow;
  position: relative;
  left: 20px;
}

.block img {
  max-height: 200px;
}
<div class="block">
  <div class="hidden"></div>
  <div class="links">
    <p data-pos="120px" data-src="http://placehold.it/300x200/ccc">Какой то текст</p>
    <p data-pos="60px" data-src="http://placehold.it/300x200/cfc">Опять текст но другой</p>
    <p data-pos="0px" data-src="http://placehold.it/300x200/fcc">Не много другой текст</p>
    <p data-pos="-60px" data-src="http://placehold.it/300x200/c0c">Устал уже писать сюда что то</p>
    <p data-pos="-120px" data-src="http://placehold.it/300x200/00f">Вот опять придумал, пишу всякую шляпу</p>
  </div>
  <img src="http://placehold.it/300x200" alt="">
</div>

→ Ссылка