요소가 뷰포트에 있는지 또는 보이는지를 감지하는 간단한 함수가 있습니다. 해당 요소가 표시되면 스크롤 할 때마다 해당 요소를 .css()
으로 이동하고 일부 속성을 적용하여 일부 시차 효과를 얻습니다. 확인하는이 요소는 뷰포트에 있으며 이동하면 페이지에서 X 번 반복됩니다. 모든 것이 작동하지만 첫 번째 요소에서만이 문제가 발생하며 다른 모든 요소는 첫 번째 요소에서 최상위 위치를 상속받습니다.동일한 클래스의 모든 요소에 함수 적용
데모 : http://codepen.io/riogrande/pen/RRVVwq (효과를 보려면 아래로 스크롤).
편집 : 일부 사람들은 내가 원하는 것을 잘못 생각했기 때문에 제목 (요소)을 스크롤로 이동하고 싶지만 뷰포트 (보이는 부분)에서만 움직 이길 원합니다. 따라서 동일한 클래스를 가진 첫 번째 요소가 스크롤로 이동하는 경우 스크롤 할 때 더 이상 볼 수 없게 이동하면 안되지만 다른 하나는 움직이는 등 이동해야합니다.
Jquery :
여기(function($) {
'use strict';
$.prototype.isVisible = function() {
var rect = this[0].getBoundingClientRect();
return (
(rect.height > 0 || rect.width > 0) &&
rect.bottom >= 0 &&
rect.right >= 0 &&
rect.top <= (window.innerHeight || document.documentElement.clientHeight) &&
rect.left <= (window.innerWidth || document.documentElement.clientWidth)
);
};
function doCheck() {
var elementToDetect = $('.text');
var scrolled = $(window).scrollTop();
if (elementToDetect.isVisible()) {
elementToDetect.css('top', (-100 + (scrolled * 0.2)) + 'px');
}
}
$(document).ready(function() {
doCheck();
});
$(window).scroll(function() {
doCheck();
});
})(jQuery);
첫 번째 문제는 문제가 있고 두 번째는 문제입니다. 모든 스크롤에서 제목 이동,하지만 요소가 표시되는 경우에만 이동해야합니다. 두 번째 예제는 끝까지 스크롤 할 때 제목이 페이지의 어딘가에 표시됩니다. 그래서이 픽스 중 어느 것도 작동하지 않지만 시간 내 주셔서 감사합니다 !! – riogrande
초기 질문은 jQuery 명령이 모든 텍스트 요소에서 작동하는 방식에 관한 것입니다.나는 단지 텍스트 배치에 또 다른 문제가 있다고 지적했다. 이제 텍스트 배치에 대한 수정 사항을 포함하도록 답변을 편집했습니다. –
좋아, 이제 내가 원하는대로 두 번째 솔루션 (편집) 다른 시도와 그 지금 woking을 주었다 – riogrande