Chrome 63+, Firefox 59+ ve Opera 50+ sürümlerinde bunu CSS'de yapabilirsiniz:
body {
overscroll-behavior-y: none;
}
Bu, sorunun ekran görüntüsünde gösterilen iOS üzerindeki lastik bant etkisini devre dışı bırakır. Bununla birlikte, yenilemek için çekme, parlama efektleri ve kaydırma zincirini devre dışı bırakır.
Bununla birlikte, fazla kaydırma üzerine kendi efektinizi veya işlevselliğinizi uygulamayı seçebilirsiniz. Örneğin, sayfayı bulanıklaştırmak ve düzgün bir animasyon eklemek istiyorsanız:
<style>
body.refreshing #inbox {
filter: blur(1px);
touch-action: none; /* prevent scrolling */
}
body.refreshing .refresher {
transform: translate3d(0,150%,0) scale(1);
z-index: 1;
}
.refresher {
--refresh-width: 55px;
pointer-events: none;
width: var(--refresh-width);
height: var(--refresh-width);
border-radius: 50%;
position: absolute;
transition: all 300ms cubic-bezier(0,0,0.2,1);
will-change: transform, opacity;
...
}
</style>
<div class="refresher">
<div class="loading-bar"></div>
<div class="loading-bar"></div>
<div class="loading-bar"></div>
<div class="loading-bar"></div>
</div>
<section id="inbox"><!-- msgs --></section>
<script>
let _startY;
const inbox = document.querySelector('#inbox');
inbox.addEventListener('touchstart', e => {
_startY = e.touches[0].pageY;
}, {passive: true});
inbox.addEventListener('touchmove', e => {
const y = e.touches[0].pageY;
// Activate custom pull-to-refresh effects when at the top of the container
// and user is scrolling up.
if (document.scrollingElement.scrollTop === 0 && y > _startY &&
!document.body.classList.contains('refreshing')) {
// refresh inbox.
}
}, {passive: true});
</script>
Tarayıcı Desteği
Bu yazı itibariyle Chrome 63+, Firefox 59+ ve Opera 50+ desteklemektedir. Safari bir bilinmeyenken Edge bunu genel olarak destekledi. İlerlemenizi takip Burada en ve mevcut tarayıcı uyumluluğu MDN belgelerinde
Daha fazla bilgi