1
div와 (#element
) 요소가 있습니다. 요소는 원점에서 보이지 않습니다. my-div
이 화면에 표시되면 요소가 표시되고 위 또는 아래를 떠날 때 요소가 다시 보이지 않게됩니다.Jquery removeClass - 섹션 내 addClass
필자는 스크립트를 사용하고 처음으로 my-div까지 스크롤 할 때 작동하지만 아래쪽으로 스크롤하거나 위쪽을 스크롤하면 요소가 계속 표시되어 더 이상의 애니메이션이 발생하지 않습니다.
전이를 위해 CSS를 사용합니다.
html로 :
<section>
<div id="whatever">It is just a DIV</div>
<div id="my-div">My DIV
<div id="element" class="invisible">The element</div>
</div>
</section>
CSS의 :
section {
width:100%;
min-height: 4000px;
text-align: center;
background-color: #e0e0e0;
}
#whatever {
width: 80%;
height: 500px;
margin: 10%;
background-color: #d0d0d0;
}
#my-div {width: 80%;
height: 300px;
margin: 10%;
background-color: grey;
}
#element {
width: 80%;
height: 100px;
background-color: red;
-webkit-transition: all 1500ms cubic-bezier(0.680, 0, 0.265, 1); /* older webkit */
-webkit-transition: all 1500ms cubic-bezier(0.680, -0.550, 0.265, 1.550);
-moz-transition: all 1500ms cubic-bezier(0.680, -0.550, 0.265, 1.550);
-ms-transition: all 1500ms cubic-bezier(0.680, -0.550, 0.265, 1.550);
-o-transition: all 1500ms cubic-bezier(0.680, -0.550, 0.265, 1.550);
transition: all 1500ms cubic-bezier(0.680, -0.550, 0.265, 1.550); /* easeInOutBack */
}
.invisible {
opacity: 0;
}
.visible {
opacity: 1;
}
JQuery와 스크립트 :
$(window).scroll(function(){
if ($(window).scrollTop() <= $('#my-div').offset().top) {
$('#element').removeClass('invisible').addclass('visible');
}
if ($(window).scrollTop() > $('#my-div').offset().bottom) {
$('#element').removeClass('invisible').addclass('visible');
}
else {
$('#element').removeClass('visible').addclass('invisible');
}
});
바이올린 라이브를 볼 수 : http://jsfiddle.net/igorlaszlo/u0tzu02b/
고마워요! 나는이 기능을 알지 못했지만 더욱 흥미롭게 보입니다. 그러나, 귀하의 코드'function isScrolledIntoView (elem) {...'의 일부를 추가하면, 내 웹 사이트를로드 할 수 없습니다. 코드에서'(elem)'을 내 섹션 이름'('# my-section')'으로 변경했습니다. 맞습니까? –
환영합니다 :) 스크롤 이벤트의 익명 함수에서 "#element"를 "# my-section"으로 변경해야합니다 (모든 항목은 3 개입니다). 그런 다음 $ (window) .scroll (...)과 함께 isScrolledIntoView (elem) 함수를 그대로두고 (함수를 변경하지 않고 매개 변수이거나 함수 내부에서 아무 것도 변경하지 마십시오.) $ (document) .ready() 함수. 문제가 있으면 알려주세요 – acontell
당신의 일은 천사처럼 작동합니다, 많이 고마워요! 그동안 나는 코드에 실수를 했어. addClass 대신에 addclass라고했는데, 어쩌면 내 오래된 스크립트도 잘 작동했다. 그냥 타이핑 문제 일 뿐이었다.하지만 나는 당신의 솔루션을 선호한다. 해결책 ! –