Bu şimdiye kadar aldığım en basit çözüm. Ve inan bana diğerlerini denedim ve bu en kolayı. Sistem kaydırma çubuğuna ve tarayıcılardaki kaydırma çubukları için yer gerektirmeyen IOS cihazlarına yer açmak için sayfayı sağdan iten Windows cihazlarında harika çalışır . Yani bunu kullanarak sağda dolgu eklemeniz gerekmeyecek, böylece css ile gövdenin veya html'nin taşmasını gizlediğinizde sayfa titremiyor .
Bunu düşünürseniz çözüm oldukça basittir. Fikir, bir açılır pencere açıldığı anda window.scrollTop () işlevine aynı konumu vermektir . Ayrıca pencere yeniden boyutlandırıldığında bu konumu değiştirin (kaydırma konumu gerçekleştikçe değişir).
İşte başlıyoruz ...
İlk olarak, açılır pencerenin açık olduğunu bildiren değişkeni oluşturmanıza ve onu stopWindowScroll olarak adlandırmanıza izin verir . Bunu yapmazsak, sayfanızda tanımlanmamış bir değişkente hata alırsınız ve bunu 0 - etkin değil olarak ayarlarsınız.
$(document).ready(function(){
stopWindowScroll = 0;
});
Şimdi açık açılır pencere işlevinin, kodunuzda eklenti veya özel olarak kullandığınız açılır pencereyi tetikleyen herhangi bir işlev olmasını sağlayalım. Bu durumda, tıklama işlevi ile ilgili basit bir belge ile basit bir özel açılır pencere olacaktır.
$(document).on('click','.open-popup', function(){
// Saving the scroll position once opening the popup.
stopWindowScrollPosition = $(window).scrollTop();
// Setting the stopWindowScroll to 1 to know the popup is open.
stopWindowScroll = 1;
// Displaying your popup.
$('.your-popup').fadeIn(300);
});
Böylece yaptığımız bir sonraki şey, tekrar tekrar yaptığım yakın pop-up işlevini oluşturmak, zaten oluşturduğunuz veya bir eklentide kullandığınız herhangi bir işlev olabilir. Önemli olan, stopWindowScroll değişkenini ne zaman açık veya kapalı olduğunu bilmek için bu 2 işleve ihtiyaç duymamızdır .
$(document).on('click','.open-popup', function(){
// Setting the stopWindowScroll to 0 to know the popup is closed.
stopWindowScroll = 0;
// Hiding your popup
$('.your-popup').fadeOut(300);
});
Daha sonra window.scroll işlevini oluşturalım, böylece yukarıda belirtilen stopWindowScroll öğesi 1 - etkin olarak ayarlandığında kaydırmayı önleyebiliriz .
$(window).scroll(function(){
if(stopWindowScroll == 1) {
// Giving the window scrollTop() function the position on which
// the popup was opened, this way it will stay in its place.
$(window).scrollTop(stopWindowScrollPosition);
}
});
Bu kadar. Bunun çalışması için sayfa için kendi stilleriniz dışında hiçbir CSS gerekmez. Bu benim için bir cazibe gibi çalıştı ve umarım size ve başkalarına yardımcı olur.
İşte JSFiddle'da çalışan bir örnek:
JS Fiddle Örneği
Bunun yardımcı olup olmadığını bana bildirin. Saygılarımızla.