跟随光标与特定部分中的元素无法正常工作 - Javascript

Following cursor with element in specific section not working properly - Javascript

我试图在我的滑块部分创建一个自定义光标,“跟随光标与元素”,但它不能正常工作,我的意思是自定义光标比原始光标远。
我尝试了很多,搜索了很多,在 Whosebug 中找到了答案,但这些对我不起作用。所以,我在这里提出问题。 这是实时网站link:

http://green-light.infinitweb.co/landscape-lighting-projects/


// Init Slider
const landscapeProjectsSlider = () => {
    const elem = $('.landscapeProjects-slider');
    if (elem.length === 0) return false;

    elem.slick({
        centerMode: true,
        centerPadding: '20%',
        dots: false,
        arrows: false,
        slidesToShow: 1,
        responsive: [
            {
                breakpoint: 576,
                settings: {
                    centerPadding: '60px'
                }
            }
        ]
    })
}
landscapeProjectsSlider();

// Custom Cursor Positioning
const landscapeProjectsSliderCursor = () => {
    let $mouseX = 0, $mouseY = 0;
    let $xp = 0, $yp =0;

    $('.landscapeProjects').mousemove(function(e){
        $mouseX = e.clientX;
        $mouseY = e.clientY;
    });

    setInterval(() => {
        $xp += (($mouseX - $xp) / 5);
        $yp += (($mouseY - $yp) / 5);
        $('.landscapeProjects-cursor').css({
            left: $xp +'px',
            top: $yp +'px'
        });
    }, 60);
}
landscapeProjectsSliderCursor();
.landscapeProjects {
    margin-top: 52px;
    position: relative
}

.landscapeProjects-cursor {
    position: absolute;
    border: 2px solid #8dba52;
    border-radius: 50%;
    padding: 30px;
    width: -webkit-fit-content;
    width: -moz-fit-content;
    width: fit-content;
    width: 70px;
    height: 70px;
    display: grid;
    place-content: center;
    z-index: 2
}

@media (min-width: 576px) {
    .landscapeProjects-cursor {
        width:106px;
        height: 106px
    }
}

.landscapeProjects-indicators {
    display: flex;
    gap: 4px;
    justify-content: center;
    margin-bottom: 15px
}

@media (min-width: 576px) {
    .landscapeProjects-indicators {
        margin-bottom:0;
        justify-content: none;
        position: absolute;
        top: 50%;
        right: 18%;
        transform: translateY(-50%)
    }
}

@media (min-width: 768px) {
    .landscapeProjects-indicators {
        font-size:28px;
        line-height: 37px
    }
}

.landscapeProjects-slider .landscapeProjects-slider--item {
    padding: 0 6px
}

@media (min-width: 576px) {
    .landscapeProjects-slider .landscapeProjects-slider--item {
        padding:0 30px
    }
}

@media (min-width: 768px) {
    .landscapeProjects-slider .landscapeProjects-slider--item {
        padding:0 65px
    }
}

.landscapeProjects-slider .landscapeProjects-slider--item__content {
    margin-top: 18px
}

@media (min-width: 576px) {
    .landscapeProjects-slider .landscapeProjects-slider--item__content {
        margin-top:34px;
        display: flex;
        align-items: center;
        justify-content: space-between
    }
}

@media (min-width: 768px) {
    .landscapeProjects-slider .landscapeProjects-slider--item__date {
        font-size:28px;
        line-height: 37px
    }
}
<link rel='stylesheet'  href='https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.css' type='text/css' media='all' />

<p>
    Lorem ipsum dolor sit amet consectetur, adipisicing elit. Earum odio animi, minus dolore libero molestias dolores quia doloremque quod est dicta autem ut totam necessitatibus impedit? Ipsum cum itaque dicta.
    Odio quia laboriosam quam architecto porro non, sequi distinctio in vitae perferendis inventore voluptatibus veritatis, ullam recusandae possimus magni neque reiciendis pariatur accusantium exercitationem sapiente. Totam numquam quis voluptatem! Dicta!
    Nam fugiat eligendi sunt! Illo maxime a placeat minus provident adipisci rerum dicta ex consectetur corporis molestias, beatae tempora fugit laboriosam quae nesciunt? Quo, soluta nesciunt et asperiores nostrum itaque?
    Ullam architecto, eius perspiciatis quas labore rerum delectus necessitatibus, inventore voluptate odit quos! Dolor mollitia dolore earum autem iste veniam, libero eligendi veritatis facere tempore numquam sunt accusamus repellat quo!
    Ex asperiores numquam nihil, veritatis natus dolores blanditiis temporibus, sequi velit maxime eius reiciendis eos quidem. Cumque qui, blanditiis est temporibus inventore dolorum illo, aspernatur fuga omnis cupiditate dolor atque.
    Nostrum error eos cumque sapiente optio voluptatibus tenetur delectus. Aliquam neque voluptatum assumenda quod consectetur aliquid accusamus asperiores cum consequatur numquam maiores sapiente laboriosam ducimus, quam accusantium! Veritatis, voluptates modi.
    Itaque deserunt, eaque adipisci atque neque quibusdam harum minus facere corporis molestias pariatur quam exercitationem, nisi rerum similique, maxime veniam quo! Ipsum praesentium eligendi facere nam in expedita cum minima?
    Quia illo itaque voluptatibus placeat. Ut assumenda ipsam nemo, iste error nostrum deserunt! Delectus, placeat quae voluptatibus eaque consequuntur perferendis similique sapiente! Necessitatibus magnam similique quas quibusdam reiciendis, fugit unde?
    Quis placeat adipisci voluptas tenetur tempora voluptates impedit obcaecati, eum eos distinctio aliquam molestias debitis sint eligendi harum reprehenderit quia explicabo cupiditate, mollitia ratione! Recusandae sit ut tempore rem architecto!
    Eaque numquam nostrum cumque consectetur dignissimos, minima molestias excepturi, nihil ea magni provident quidem cum odio maiores aperiam quod ab qui dolore quis illo doloremque reiciendis? Amet vitae aperiam excepturi.
    Tempora error asperiores enim quaerat ipsa fuga, architecto labore omnis quos quidem eaque hic. Quisquam quia itaque, consectetur aperiam magnam qui dolores distinctio odio asperiores rerum numquam a eligendi explicabo!
    Maxime voluptate molestias minus porro nemo reiciendis sit voluptatum nam aut reprehenderit tempora ut officia, repellat consectetur magni veniam vel? Nostrum cumque beatae placeat repudiandae unde omnis consequuntur sint ex.
    Praesentium odit doloribus ex dolorem non eligendi velit et soluta ut, minus, ea eos odio saepe consectetur consequuntur dolores alias repudiandae molestias aperiam accusamus quo asperiores ipsum rerum omnis. Odit!
    Fuga sapiente harum laudantium ullam, perferendis provident cupiditate ea? Reiciendis deserunt aperiam, repellat natus harum, quia quasi, facere eaque numquam explicabo voluptas. Eum ipsum natus necessitatibus consectetur omnis quae recusandae?
    Eligendi perspiciatis, fugiat enim, molestias exercitationem, quae consequatur tempora nihil deleniti iure aut! Nesciunt ea iure ratione laudantium tenetur enim quam odit nam vitae illum! Voluptatem enim nisi possimus dicta.
    Molestias, rem praesentium ex consequuntur repellat corrupti, quam a consequatur provident rerum, error beatae maiores ad nostrum dolorum incidunt corporis nemo voluptatum architecto id sint similique. Asperiores facilis illum repellat.
    Exercitationem, modi voluptate! Mollitia ducimus hic corporis exercitationem obcaecati distinctio illum sed rerum accusamus ut nemo ipsam quo autem dignissimos quos nostrum, eveniet quisquam fuga alias omnis veniam adipisci praesentium.
    Aliquam laborum quasi tempore porro exercitationem dolores non dignissimos sequi voluptates, neque nobis, est ex aut soluta facilis doloribus. Exercitationem omnis, numquam esse excepturi expedita voluptatem quidem ducimus amet obcaecati!
    Fugiat hic earum provident aut harum sunt odit explicabo, repellendus, iste consectetur corporis aliquam debitis nulla molestias cum impedit aperiam eligendi aliquid. A maiores consectetur, architecto labore nulla id doloribus.
    Expedita amet sit officiis iusto ab corrupti, quisquam, incidunt nisi quae provident omnis! Earum, quasi ad veniam vero reiciendis consectetur doloribus odio ea excepturi ex quidem nam sit harum tempore?
</p>
<section class="landscapeProjects">
    <!-- Custom Cursor Start -->
    <div class="landscapeProjects-cursor">Drag</div>
    <!-- Custom Cursor End -->
    <div class="landscapeProjects-slider">
        <div class="landscapeProjects-slider--item">
            <div class="landscapeProjects-slider--item__img">
                <img src="https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=870&q=80">
            </div>
            <div class="landscapeProjects-slider--item__content">
                <h2 class="mb-0">Guest House</h2>
                <div class="landscapeProjects-slider--item__date">2019</div>
            </div>
        </div>
        <div class="landscapeProjects-slider--item">
            <div class="landscapeProjects-slider--item__img">
                <img src="https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=870&q=80">
            </div>
            <div class="landscapeProjects-slider--item__content">
                <h2 class="mb-0">Alpino Greto</h2>
                <div class="landscapeProjects-slider--item__date">2020</div>
            </div>
        </div>
        <div class="landscapeProjects-slider--item">
            <div class="landscapeProjects-slider--item__img">
                <img src="https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=870&q=80">
            </div>
            <div class="landscapeProjects-slider--item__content">
                <h2 class="mb-0">Cras Vel</h2>
                <div class="landscapeProjects-slider--item__date">2021</div>
            </div>
        </div>
        <div class="landscapeProjects-slider--item">
            <div class="landscapeProjects-slider--item__img">
                <img src="https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=870&q=80">
            </div>
            <div class="landscapeProjects-slider--item__content">
                <h2 class="mb-0">Guest House</h2>
                <div class="landscapeProjects-slider--item__date">2019</div>
            </div>
        </div>
        <div class="landscapeProjects-slider--item">
            <div class="landscapeProjects-slider--item__img">
                <img src="https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=870&q=80">
            </div>
            <div class="landscapeProjects-slider--item__content">
                <h2 class="mb-0">Alpino Greto</h2>
                <div class="landscapeProjects-slider--item__date">2020</div>
            </div>
        </div>
        <div class="landscapeProjects-slider--item">
            <div class="landscapeProjects-slider--item__img">
                <img src="https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=870&q=80">
            </div>
            <div class="landscapeProjects-slider--item__content">
                <h2 class="mb-0">Cras Vel</h2>
                <div class="landscapeProjects-slider--item__date">2021</div>
            </div>
        </div>
    </div>
</section>
<p>
    Lorem ipsum dolor sit amet consectetur, adipisicing elit. Earum odio animi, minus dolore libero molestias dolores quia doloremque quod est dicta autem ut totam necessitatibus impedit? Ipsum cum itaque dicta.
    Odio quia laboriosam quam architecto porro non, sequi distinctio in vitae perferendis inventore voluptatibus veritatis, ullam recusandae possimus magni neque reiciendis pariatur accusantium exercitationem sapiente. Totam numquam quis voluptatem! Dicta!
    Nam fugiat eligendi sunt! Illo maxime a placeat minus provident adipisci rerum dicta ex consectetur corporis molestias, beatae tempora fugit laboriosam quae nesciunt? Quo, soluta nesciunt et asperiores nostrum itaque?
    Ullam architecto, eius perspiciatis quas labore rerum delectus necessitatibus, inventore voluptate odit quos! Dolor mollitia dolore earum autem iste veniam, libero eligendi veritatis facere tempore numquam sunt accusamus repellat quo!
    Ex asperiores numquam nihil, veritatis natus dolores blanditiis temporibus, sequi velit maxime eius reiciendis eos quidem. Cumque qui, blanditiis est temporibus inventore dolorum illo, aspernatur fuga omnis cupiditate dolor atque.
    Nostrum error eos cumque sapiente optio voluptatibus tenetur delectus. Aliquam neque voluptatum assumenda quod consectetur aliquid accusamus asperiores cum consequatur numquam maiores sapiente laboriosam ducimus, quam accusantium! Veritatis, voluptates modi.
    Itaque deserunt, eaque adipisci atque neque quibusdam harum minus facere corporis molestias pariatur quam exercitationem, nisi rerum similique, maxime veniam quo! Ipsum praesentium eligendi facere nam in expedita cum minima?
    Quia illo itaque voluptatibus placeat. Ut assumenda ipsam nemo, iste error nostrum deserunt! Delectus, placeat quae voluptatibus eaque consequuntur perferendis similique sapiente! Necessitatibus magnam similique quas quibusdam reiciendis, fugit unde?
    Quis placeat adipisci voluptas tenetur tempora voluptates impedit obcaecati, eum eos distinctio aliquam molestias debitis sint eligendi harum reprehenderit quia explicabo cupiditate, mollitia ratione! Recusandae sit ut tempore rem architecto!
    Eaque numquam nostrum cumque consectetur dignissimos, minima molestias excepturi, nihil ea magni provident quidem cum odio maiores aperiam quod ab qui dolore quis illo doloremque reiciendis? Amet vitae aperiam excepturi.
    Tempora error asperiores enim quaerat ipsa fuga, architecto labore omnis quos quidem eaque hic. Quisquam quia itaque, consectetur aperiam magnam qui dolores distinctio odio asperiores rerum numquam a eligendi explicabo!
    Maxime voluptate molestias minus porro nemo reiciendis sit voluptatum nam aut reprehenderit tempora ut officia, repellat consectetur magni veniam vel? Nostrum cumque beatae placeat repudiandae unde omnis consequuntur sint ex.
    Praesentium odit doloribus ex dolorem non eligendi velit et soluta ut, minus, ea eos odio saepe consectetur consequuntur dolores alias repudiandae molestias aperiam accusamus quo asperiores ipsum rerum omnis. Odit!
    Fuga sapiente harum laudantium ullam, perferendis provident cupiditate ea? Reiciendis deserunt aperiam, repellat natus harum, quia quasi, facere eaque numquam explicabo voluptas. Eum ipsum natus necessitatibus consectetur omnis quae recusandae?
    Eligendi perspiciatis, fugiat enim, molestias exercitationem, quae consequatur tempora nihil deleniti iure aut! Nesciunt ea iure ratione laudantium tenetur enim quam odit nam vitae illum! Voluptatem enim nisi possimus dicta.
    Molestias, rem praesentium ex consequuntur repellat corrupti, quam a consequatur provident rerum, error beatae maiores ad nostrum dolorum incidunt corporis nemo voluptatum architecto id sint similique. Asperiores facilis illum repellat.
    Exercitationem, modi voluptate! Mollitia ducimus hic corporis exercitationem obcaecati distinctio illum sed rerum accusamus ut nemo ipsam quo autem dignissimos quos nostrum, eveniet quisquam fuga alias omnis veniam adipisci praesentium.
    Aliquam laborum quasi tempore porro exercitationem dolores non dignissimos sequi voluptates, neque nobis, est ex aut soluta facilis doloribus. Exercitationem omnis, numquam esse excepturi expedita voluptatem quidem ducimus amet obcaecati!
    Fugiat hic earum provident aut harum sunt odit explicabo, repellendus, iste consectetur corporis aliquam debitis nulla molestias cum impedit aperiam eligendi aliquid. A maiores consectetur, architecto labore nulla id doloribus.
    Expedita amet sit officiis iusto ab corrupti, quisquam, incidunt nisi quae provident omnis! Earum, quasi ad veniam vero reiciendis consectetur doloribus odio ea excepturi ex quidem nam sit harum tempore?
</p>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type='text/javascript' src='https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js'></script>

有人可以帮助我吗?我卡住了。

您必须考虑元素的 offsetTop 和圆圈大小 (width, height)。

在您的 mousemove 处理程序中使用以下代码:

$('.landscapeProjects').mousemove(function(e){
  // subtract half of circle width
  $mouseX = e.pageX - 106/2; 
  // subtract offset top (Y offset on page) and half of circle height
  // and limit the Y position with Max.min
  $mouseY = Math.min(e.pageY - e.currentTarget.offsetTop - 106/2, e.clientY); 
});

演示: