Можно ли анимировать элементы flexbox при прокрутке? - PullRequest
0 голосов
/ 14 апреля 2019

Можно ли анимировать изгибаемые элементы на свитке?

Я пытаюсь добиться этого: https://codepen.io/Sergiop79/pen/bxjGEe

с элементами ниже (в стиле flexbox), либо весь «ряд», либо отдельный «столбец».

Я не смог ничего найти по этому поводу для Flexbox, поэтому я просто хотел бы знать, возможно ли это вообще. Спасибо!

<about id="about" class="row">
      <div class="col">
        <div class="about1">
          <img src="1-AB.svg">
        </div>
        <div class="about1a">
          <h3>About</h3>
          <p>Now that we know who you are, I know who I am. I'm not a mistake! It all makes sense! In a comic, you know how you can tell who the arch-villain's going to be? He's the exact opposite of the hero.</p>
        </div>
      </div>
      <div class="col">
        <div class="about2">
          <img src="2-AB.svg">
        </div>
        <div class="about2a">
            <h3>Aboot</h3>
            <p>Now that we know who you are, I know who I am. I'm not a mistake! It all makes sense! In a comic, you know how you can tell who the arch-villain's going to be? He's the exact opposite of the hero.</p>
          </div>
      </div>
      <div class="col">
        <div class="about3">
          <img src="3-AB.svg">
        </div>
        <div class="about3a">
            <h3>Abute</h3>
            <p>Now that we know who you are, I know who I am. I'm not a mistake! It all makes sense! In a comic, you know how you can tell who the arch-villain's going to be? He's the exact opposite of the hero.</p>
        </div>
      </div>
    </about>

1 Ответ

0 голосов
/ 14 апреля 2019

вы можете установить их opacity на 0 и transform:transationY(100%) и создать класс с именем show или что-то со свойствами opacity:1; и transform:translateY(0);

, тогда вам понадобится это JS код

    var columns = document.getElementsByClassName("col");
    document.addEventListener("scroll",function(){
        for(var i = 0; i < columns.length; i++){
           if(columns[i].getBoundingClientRect().top < window.innerHeight){
              columns[i].classList.add("show");
           }
        }
    });
.col{
width:100%;
height:300px;
background:#555;
border:1px solid #000;
margin-bottom:50px;
opacity:0;
transform:translateY(100%);
transition:opacity .5s, transform .5s;
}

.show{
opacity:1;
transform:translateY(0);
}
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>

где columns[i].getBoundingClientRect().top < window.innerHeight проверяет, отображается ли div в окне во время прокрутки или нет

...