欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

如何讓scrollIntoView()在Chrome和iOS Safari中工作,以獲得具有本地存儲(chǔ)的可滾動(dòng)選項(xiàng)列表?

水平滾動(dòng)不起作用,尤其是在Chrome和iOS Safari中

我目前正在抽屜的設(shè)置屏幕中創(chuàng)建一個(gè)可滾動(dòng)的選項(xiàng)列表。當(dāng)列表再次打開時(shí),我希望先前選擇的選項(xiàng)自動(dòng)滾動(dòng)到中間。(我使用本地存儲(chǔ)來反映選擇。)

我實(shí)現(xiàn)了下面的代碼,它在Firefox中可以正常工作,但是在Chrome和iOS Safari中不能滾動(dòng)(盡管。主題-輸入:選中+。主題樣本選擇器工作正常,表明選擇本身已正確完成)。此外,在Firefox中,當(dāng)頁面重新加載時(shí),它可以正常工作,但當(dāng)HTML文件最初打開或在新標(biāo)簽中訪問服務(wù)器時(shí),它就不起作用了。

<aside class="settings" id="settings">
  <header class="settings__header"><label class="settings-close" for="settingsSwitch"></label></header>
  <div class="settings__container">
      <div class="settings__page">
          <ul class="theme-list">
              <li class="theme-list__item"><input class="theme-input" type="radio" name="theme" id="themeWhite" value="white"><label class="white theme-swatch" for="themeWhite" title="White"></label></li>
              <li class="theme-list__item"><input class="theme-input" type="radio" name="theme" id="themeBlack" value="black"><label class="black theme-swatch" for="themeBlack" title="Black"></label></li>
              <!-- 以下11個(gè) -->
          </ul>
      </div>
  </div>
</aside>
<main class="main">
</main>

.settings-input {
    display: none;
}
.settings {
    overflow: auto;
    position: fixed;
    top: 0;
    left: 0;
    z-index: 40;
    width: 100%;
    height: 100vh;
    transition: all .5s ease-in-out 0s;
    transform: translateX(100%);
}
.settings-input:checked + .settings {
    transform: translateX(0);
}
.theme-list {
    display: flex;
    overflow-x: scroll;
    gap: 1rem;
}
.theme-swatch {
    display: inline-block;
    width: 70px;
    height: 125px;
    background: var(--background-gradient);
    border-radius: 10px;
}

window.addEventListener('load', function() {
    if (window.matchMedia( '(max-width: 600px)' ).matches) {
        const themeModes = ['themeFirts', 'themeSecond', 'themethird'];
        const themeUls = document.getElementsByClassName('theme-list');
        themeModes.forEach((mode, index) => {
            const themes = document.getElementsByName(mode);
            const themeUl = themeUls[index];
            themes.forEach(theme => {
                if (theme.checked) {
                    const selectedSwatch = theme.nextElementSibling;
                    selectedSwatch.scrollIntoView({inline: 'center'});
                }
            });
        });
    }
});

因?yàn)閟crollIntoView()是一個(gè)相對(duì)較新的方法,所以我嘗試將include scrollIntoView替換為below,但是沒有效果。

const swatchRect = selectedSwatch.getBoundingClientRect();
const ulRect = themeUl.getBoundingClientRect();
const xpos = swatchRect.left - (ulRect.left + (ulRect.width / 2)) + themeUl.scrollLeft + (swatchRect.width / 2);
themeUl.scrollLeft = xpos;

在使用Chrome的調(diào)試器進(jìn)行檢查時(shí),swatchRect和ulRect的所有值都設(shè)置為DOMRect {x: 0,y: 0,width: 0,height: 0,top: 0,...}.但是,當(dāng)我檢索元素并在控制臺(tái)中使用getBoundingClientRect()時(shí),它返回一個(gè)具有正確整數(shù)值的DOMRect。

這是WebKit瀏覽器特有的問題嗎?或者這可能是一個(gè)根本性的問題,比如在加載過程中side元素不在可視區(qū)域內(nèi),從而阻止了滾動(dòng)? 我希望我不只是在做傻事…