Tôi đang cố gắng triển khai chức năng cuộn nơi CSS của thay đổi div bên trong khi nó đạt đến một độ cao nhất định từ trên cùng.Thay đổi CSS của div bên trong khi cuộn đến div đó
var $container = $(".inner-div");
var containerTop = $container.offset().top;
var documentTop = $(document).scrollTop();
var wHeight = $(window).height();
var minMaskHeight = 0;
var descriptionMax = 200;
var logoMin = -200;
var maskDelta = descriptionMax - minMaskHeight;
var $jobOverview = $container.find(".right");
var $jobLogo = $container.find(".left");
var curPlacementPer = ((containerTop - documentTop)/wHeight) * 100;
var topMax = 85;
var center = 20;
var bottomMax = -15;
//console.log("Placement: " + curPlacementPer);
function applyChanges(perOpen) {
var maskHeightChange = maskDelta * (perOpen/100);
var opacityPer = perOpen/100;
var newDescriptionLeft = descriptionMax - maskHeightChange;
var newLogoLeft = logoMin + maskHeightChange;
if (newDescriptionLeft <= 0) newDescriptionLeft = 0;
if (newLogoLeft >= 0) newLogoLeft = 0;
if (opacityPer >= 1) opacityPer = 1;
$jobOverview.css({
transform: "translate(" + newDescriptionLeft + "%,-50%)",
opacity: opacityPer
});
$jobLogo.css({
transform: "translate(" + newLogoLeft + "%,-50%)",
opacity: opacityPer
});
}
if (window.innerWidth > 640) {
$container.removeClass("mobile");
// console.log("Placement: " + curPlacementPer);
if (curPlacementPer <= topMax /*&& curPlacementPer >= center*/) {
var perOpen = ((topMax - curPlacementPer)/25) * 100;
applyChanges(perOpen);
} else if (curPlacementPer < center /*&& curPlacementPer >= bottomMax*/) {
var perOpen = (((bottomMax - curPlacementPer) * -1)/25) * 100;
applyChanges(perOpen);
} else {
$jobOverview.css({
transform: "translate(200%,-50%)",
opacity: "0"
});
$jobLogo.css({
transform: "translate(-300%,-50%)",
opacity: "0"
});
}
<div class="outer-div">
<div class="inner-div first">
<div class="left"></div>
<div class="right"></div>
</div>
<div class="inner-div second">
<div class="left"></div>
<div class="right"></div>
</div>
<div class="inner-div third">
<div class="left"></div>
<div class="right"></div>
</div>
<div class="inner-div fourth">
<div class="left"></div>
<div class="right"></div>
</div>
</div>
Hiện nay, tất cả các nhân bên trong div được thay đổi cùng một lúc.
Tôi nhận thấy rằng khi tôi thay đổi lớp $container
thành bằng '.first'
và chỉ định nó nhiều hơn, nó hoạt động.
Có cách nào để thực hiện thay đổi div bên trong một cách riêng biệt, liên quan đến chiều cao của nó từ đầu? Bất kỳ cách nào tôi có thể lặp lại các chức năng di chuyển vì vậy tôi có thể thêm nhiều div bên trong trong tương lai và không phải lo lắng về việc thay đổi chức năng cuộn của tôi?
Thực sự là một câu trả lời hay. –