第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

fadeTo() 僅在一定延遲后生效

fadeTo() 僅在一定延遲后生效

一只斗牛犬 2023-03-24 14:11:29
我有一個(gè)簡單的 JS 代碼,在用戶從頂部滾動(dòng)一定數(shù)量(在本例中為 400)然后淡入所述元素后,我嘗試淡出某個(gè)元素(帶有 id“intro-section”的標(biāo)簽)當(dāng)用戶從頂部超過某些像素時(shí)。這是我正在使用的 JS、JQuery 代碼:問題是 fadeTo() 函數(shù)僅在愚蠢的長時(shí)間后才顯示動(dòng)畫效果(淡出在我越過 400px 標(biāo)記后 20 秒開始,而在我返回后淡入過程開始,一個(gè)又一個(gè)開始20 秒)。我希望它在我超過 400 像素或小于 400 像素后立即淡入淡出。(我不想使用 fadeIn() 和 fadeOut() 函數(shù),因?yàn)樗鼈儗@示設(shè)置為無)。這是整個(gè)過程的一分鐘長視頻: https ://imgur.com/a/lXQcgWB我不確定 fadeTo() 是否有某種自動(dòng)添加的延遲,或者我是否做錯(cuò)了什么。$(document).scroll(function() {  var y = $(this).scrollTop();  console.log(y);  if (y > 400) {    console.log('fading out');    $('#intro-section').fadeTo(400, 0.0);    console.log('done fading out');  } else {    console.log('fading in');    $('#intro-section').fadeTo(400, 1.0);    console.log('done fading in');  }});body {  height: 1000px;}#intro-section {  padding: 2rem;  height: 200px;  width: 200px;  background-color: red;}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>  <body><div style="height: 300px">  Scroll down!</div><div id="intro-section">  Intro</div><div style="height: 100vh"></div>  </body>
查看完整描述

2 回答

?
鴻蒙傳說

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

問題是你總是調(diào)用fadeTo(),即使你不需要。當(dāng)您滾動(dòng)通過y > 400時(shí),fadeTo(400, 0)將調(diào)用 (fade out)。但是,當(dāng)您進(jìn)一步向下滾動(dòng)時(shí),fadeTo(400, 0)即使該元素不再可見,您也會繼續(xù)調(diào)用。


我不完全確定為什么淡出需要這么長時(shí)間,但我想這與在短時(shí)間內(nèi)鏈接大量動(dòng)畫請求有關(guān)。


您可以通過跟蹤元素的可見性來解決問題。我添加了以下內(nèi)容:


if (y <= 400 == isVisible) return;


// or if you find the above confusing

if (y <= 400 && isVisible || y > 400 && !isVisible) return;

如果不必更改可見性,這會提前退出回調(diào)。這個(gè)保護(hù)子句確保fadeTo()只在實(shí)際需要時(shí)調(diào)用它。


另一件有助于提高性能的事情是確保您$("#intro-section")事先保存在變量中。你不應(yīng)該忘記這$()是一個(gè)函數(shù),每次調(diào)用它時(shí)都必須在 DOM 中搜索提供的查詢選擇器。把它想象成findSelectorInDOM("#intro-section"). 將結(jié)果緩存在變量中可能會大大加快速度,尤其是當(dāng)您$()經(jīng)常使用相同的參數(shù)調(diào)用時(shí)。


const $introSection = $("#intro-section");

let isVisible = $introSection.is(":visible");


$(document).scroll(function() {

  const y = $(this).scrollTop();

  console.log(y);

  

  if (y <= 400 == isVisible) return;  

  isVisible = !isVisible;

  const opacity = +isVisible;

  

  console.log(`start fading to ${opacity}`);

  $introSection.fadeTo(400, opacity, () => {

    console.log(`done fading to ${opacity}`);

  });

});

#intro-section {

  padding: 4rem;

}


#intro-section .row {

  padding: 4rem 8rem 7rem 8rem;

}

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<div style="height: 300px">

  Scroll down!

</div>


<div id="intro-section">

  Intro

</div>


<div style="height: 100vh">

</div>


查看完整回答
反對 回復(fù) 2023-03-24
?
慕勒3428872

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊

您在滾動(dòng)時(shí)多次調(diào)用 FadeTo,因此它在嘗試淡入時(shí)仍然淡出。此代碼已經(jīng)過測試并且可以正常工作。


let fading = false;


jQuery(document).scroll(function() {

    var y = jQuery(this).scrollTop();

    console.log(y);

    if(!fading) {

        fading = true;

        if (y > 400) {

            console.log('fading out');

            jQuery('#intro-section').fadeTo(400, 0.0, () => fading = false);

            console.log('done fading out');

        } else {

            console.log('fading in');

            jQuery('#intro-section').fadeTo(400, 1.0, () => fading = false);

            console.log('done fading in');

        }

    }



});


查看完整回答
反對 回復(fù) 2023-03-24
  • 2 回答
  • 0 關(guān)注
  • 87 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號