O'tkazish panelini qanday o'chirish mumkin. O'tkazish chiziqlarini qanday olib tashlash mumkin

Uy / Mobil qurilmalar

Men scrollTo jQuery plaginidan foydalanmoqdaman va Javascript orqali oyna elementini aylantirishni vaqtincha o'chirib qo'yishning biron bir usuli bor yoki yo'qligini bilmoqchimisiz? Men aylantirishni o'chirib qo'yishni xohlayotganimning sababi shundaki, scrollTo animatsiyasi paytida aylantirilganda u juda xunuk bo'ladi;)

albatta $("tana").css("toshib ketish", "yashirin"); va keyin animatsiya to'xtaganda uni avtomatik holatga qaytaring, lekin aylantirish paneli hali ham ko'rinadigan, lekin faol bo'lmagan bo'lsa yaxshi bo'lardi.

30 javob /** * $.disablescroll * Muallif: Josh Xarrison - aloof.co * * Sichqoncha g'ildiraklari, teginish va tugmachalarni bosish orqali aylantirish hodisalarini o'chiradi.< this.opts.scrollEventKeys.length; i++) { if (event.keyCode === this.opts.scrollEventKeys[i]) { event.preventDefault(); return; } } }; // Plugin wrapper for object $.fn.disablescroll = function(method) { // If calling for the first time, instantiate the object and save // reference. The plugin can therefore only be instantiated once per // page. You can pass options object in through the method parameter. if(! instance && (typeof method === "object" || ! method)) { instance = new UserScrollDisabler(this, method); } // Instance already created, and a method is being explicitly called, // e.g. .disablescroll("undo"); else if(instance && instance) { instance.call(instance); } }; // Global access window.UserScrollDisabler = UserScrollDisabler; })(jQuery);

* Kafolatlangan super silliq haydash uchun jQuery aylantirish holatini jonlantirganda foydalaning!

//Sahifa tarkibini aylantirish funksiyasini muzlatish freeze() ( if($("html").css("pozitsiya") != "fiksatsiyalangan") ( var top = $("html").scrollTop() ? $(" html").scrollTop() : $("tana").scrollTop(); if(window.innerWidth > $("html").width()) ( $("html").css("overflow-y ", "scroll"); ) $("html").css(("kenglik": "100%", "balandlik": "100%", "pozitsiya": "fiksatsiyalangan", "yuqori": -yuqori )); ) ) //Sahifa tarkibini muzlatishdan chiqarish funksiyasi unfreeze() ( if($("html").css("pozitsiya") == "fiksatsiyalangan") ( $("html").css("pozitsiya" , "statik"); $("html, body").scrollTop(-parseInt($("html").css("top"))) $("html").css(("pozitsiya": "", "kenglik": "", "balandlik": "", "yuqori": "", "toshib-y": ""));

bu kod kenglik, balandlik, aylantirish paneli va sahifaga o'tish masalalarini hisobga oladi.

Yuqoridagi kod bilan hal qilinishi mumkin bo'lgan muammolar:

  • kenglik, sobit pozitsiyani o'rnatishda html elementining kengligi 100% dan kam bo'lishi mumkin
  • balandligi, yuqoridagi kabi
  • aylantirish paneli, joylashuvni sobit qilib qo‘yganda, sahifa mazmunida gorizontal sakrashga olib kelishidan oldin aylantirish paneli bo‘lsa ham, endi aylantirish paneli bo‘lmaydi.
  • pagejump, sobit joylashuvni o'rnatishda sahifaning scrollTop funksiyasi endi samarali bo'lmaydi, natijada vertikal sahifaga sakrash paydo bo'ladi.

Agar kimdir yuqoridagi sahifani muzlatish/eritish kodida yaxshilanishlarga ega bo'lsa, iltimos, loyihamga ushbu yaxshilanishlarni qo'shishim uchun menga xabar bering.

aylantirishni o'chirish:

$(".popup").live(( popupdan oldingi pozitsiya: funktsiya(voqea, ui) ( $("tana").on("touchmove", false; ) ));

Versiyani aylantiruvchi qalqib chiquvchi oynani yopgandan so'ng:

$(".popup").live(( popupafterclose: funksiya(voqea, ui) ( $("tana").unbind("touchmove"); ) ));

keyingi fragment (bilan jQuery yordamida) oynani aylantirishni o'chirib qo'yadi:

Var curScrollTop = $(window).scrollTop();

$("html").toggleClass("noscroll").css("top", "-" + curScrollTop + "px");

va CSS-da:

Html.noscroll( pozitsiyasi: qat'iy; eni: 100%; tepa: 0; chap: 0; balandlik: 100%; to'ldirish-y: aylantirish !muhim; z-indeks: 10; ) Endi modalni olib tashlaganingizda, noscroll sinfini olib tashlashni unutmang:

html teg

Document.onwheel = function(e) ( // maqsadli elementni oling target = e.target; // maqsadli element aylantiriladigan elementning bolalari boʻlishi mumkin // masalan, "ul", "p" ichidagi "li"lar "s" ichidagi "div" va hokazo. // biz asosiy elementni olishimiz va uning aylantirilishini tekshirishimiz kerak // agar ota-ona aylantirilmasa, keyingi ota-onaga o'tamiz (target.scrollHeight 0) ( e .preventDefault(); korpus (fon: gainsboro; ) #box (kenglik: 300px; balandlik: 600px; toʻldirish: 5px; chegara: 1px kumush; chekka: 50px; fon: oq; overflow: auto; )

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore and doore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco workis nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore and doore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco workis nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore and doore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco workis nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Bu men hozirgacha erishgan eng oddiy yechim. Va menga ishoning, men boshqalarni sinab ko'rdim va bu eng oson. uchun ajoyib ishlaydi Windows qurilmalari tizim o'tkazish paneli uchun joy ochish uchun sahifani o'ngga suradi va iOS qurilmalari brauzerlarda aylantirish paneli uchun joy talab qilmaydi. Buni ishlatganda, siz o'ngga to'ldirishni qo'shishingiz shart emas, shuning uchun siz CSS-da tanani yashirganingizda yoki HTML to'lib ketganingizda sahifa miltillamaydi.

Agar siz o'ylab ko'rsangiz, yechim juda oddiy. Fikr berishdir

Men sdleihssirhc g'oyasini birlashtirib, yaxshiroq, ammo buggy yo'lni topdim:

Window.onscroll = function() ( window.scrollTo(window.scrollX, window.scrollY); //Yoki //window.scroll(window.scrollX, window.scrollY); //Yoki Orqaga //window.scrollX=oyna .scrollX; //window.scrollY=window.scrollY);

Men buni sinab ko'rmadim, lekin keyinroq tahrir qilaman va sizga xabar qilaman. U asosiy brauzerlarda ishlashiga 85% ishonchim komil.

Ushbu maqolada siz Universal Apps (UWP) da avtomatik yashirishni o'chirish yoki yoqishni o'rganasiz. hisob Windows 10 da

1803 yildan boshlab operatsion tizimda ishlab chiquvchilar aylantirish panellarini avtomatik yashirishni o'chirib qo'yish imkonini beruvchi opsiyani qo'shdilar va birinchi navbatda aylantirish satrlari UWP ilovalarida (XAML) va har doim ko'rinib turishini afzal ko'rgan foydalanuvchilar uchun foydali bo'ladi.

Standart operatsion tizim Sichqoncha ko'rsatkichi ularning ustiga olib kelinmaganda aylantirish panellarini yashiradi. Bu sozlamani oʻchirib qoʻysangiz, UWP ilovalaridagi (XAML) va Boshlash menyusidagi aylantirish panellari, hatto ular bilan aloqada boʻlmasangiz ham, ularning toʻliq kengaytirilgan oʻlchamida aylantirish paneli sifatida koʻrinishiga olib keladi.


Ilovada aylantirish satrlarini avtomatik yashirishni qanday o'chirish mumkin? Windows sozlamalari»

Avtomatik yashirishni o'tkazish panelini o'chirish uchun vazifalar panelidagi Boshlash tugmasini bosing va keyin tanlang yoki + I ni bosing

Ochilgan Windows sozlamalari ilova oynasida Maxsus imkoniyatlar toifasini tanlang

Keyinchalik, "Display" yorlig'ini va oynaning o'ng tomonidagi "Soddalashtirish" bo'limida va Windows shaxsiylashtirish, kalitni O'chirish holatiga o'rnating.

Scrollbars endi har doim Universal Apps (UWP) va Start menyusida paydo bo'ladi, hatto siz ular bilan aloqada bo'lmasangiz ham.

O'zgarishlarni Windows tizimidagi o'tish panellarini avtomatik yashirish tugmachasini Yoqilgan holatiga o'rnatish orqali bekor qilishingiz mumkin.


Ro'yxatga olish kitobi muharririda o'tish panelini avtomatik yashirishni qanday o'chirish mumkin

Ro'yxatdan o'tish kitobi muharriri yordamida o'tish panellarini avtomatik yashirishni ham o'chirib qo'yishingiz mumkin. Biroq, ro'yxatga olish kitobiga biron bir o'zgartirish kiritishdan oldin, o'zgartirishlar kiritiladigan ro'yxatga olish bo'limini to'g'ridan-to'g'ri eksport qilish tavsiya etiladi.

+ R tugmalar birikmasini bosib ro'yxatga olish kitobi muharririni oching va ochilgan oynada regedit-ni kiriting va bosing. Kalitni kiriting↵ yoki Windows qidiruvidan foydalaning.


Ochilgan ro'yxatga olish kitobi muharriri oynasida quyidagi yo'lga o'ting:

HKEY_CURRENT_USER\Boshqarish paneli\Maxsus imkoniyatlar

Keyingi, bosing o'ng tugmasini bosing Maxsus imkoniyatlar bo'limida sichqonchani bosing yoki oynaning o'ng tomonidagi bo'sh joyni o'ng tugmasini bosing va kontekst menyusi Yangi > DWORD (32-bit) qiymatini tanlang. Yaratilgan parametrga DynamicScrollbars nom bering

Keyin yaratilgan DynamicScrollbars parametriga ikki marta bosing va uning qiymatini 0 ga o'rnating va OK tugmasini bosing.

O'zgarishlar darhol kuchga kiradi.

O'tkazish panellarini avtomatik yashirishni yoqish uchun DynamicScrollbars ni 1 ga o'rnating
  Bundan tashqari, o'tish panelini avtomatik yashirishni o'chirish uchun siz quyidagilarni qilishingiz mumkin:

"DynamicScrollbars"=dword:00000000

  Ushbu amallarni bekor qilish va shu bilan aylantirish satrlarini avtomatik yashirishni yoqish uchun quyidagi tarkibga ega registr faylini yarating va qo'llang:

Windows ro'yxatga olish kitobi muharriri 5.00 versiyasi

"DynamicScrollbars"=dword:00000001

Ro'yxatga olish kitobi fayllarini qo'llaganingizdan so'ng, o'zgarishlar kuchga kirishi uchun tizimdan chiqib, qayta kirishingiz kerak.


O'tkazishni qanday o'chirish mumkin?

Magistrning javobi:

Hujjat yoki veb-sayt atrofida harakat qilish kerak bo'lganda aylantirish kerak va ularning o'lchami ekran o'lchamini cheklamaydi. Vertikal va gorizontal aylantirish mavjud. Agar aylantirish o'chirilgan bo'lsa, resurslarni to'liq ko'rish imkonsiz bo'ladi.

O'tkazish sozlanishi mumkin bo'lgan sozlamadir. Asosiy sozlamalar "Sichqoncha" yordamida o'rnatilishi mumkin va ular barcha ilovalar uchun qo'llaniladi va aylantirish usuli brauzer yordamida o'rnatilishi va bekor qilinishi mumkin. Ushbu sozlamalar Internetda kezish paytida ishlaydi.

Internet-resurslarni ko'rib chiqishda silliq aylantirishni o'chirish uchun brauzerni ishga tushiring va "Asboblar" menyusidagi "Sozlamalar" bo'limini tanlang. uchun Internet Explorer bu Asboblar menyusi va Internet Options bo'limi bo'ladi. Agar menyu ko'rsatilmasa, brauzer oynasining yuqori yoki pastki panelini bosing va menyudagi "Menyu paneli" yoki "Menyu paneli" pastki bandini marker bilan belgilang.

"Sozlamalar" oynasini ochgandan so'ng, "Kengaytirilgan" yorlig'iga o'ting va "Umumiy" bo'limini faollashtiring. "Saytni ko'rish" guruhini toping va "Bir tekis aylantirishdan foydalanish" katagiga belgini olib tashlang, so'ng "OK" tugmasini bosing.

Avtomatik aylantirishni o'chirish uchun "Avtomatik aylantirishdan foydalanish" katagiga belgini olib tashlang. Internet Explorer uchun usul biroz boshqacha bo'ladi - kerakli elementlar topilmaguncha, aylantirish panelidan foydalanib, mavjud sozlamalar ro'yxati bo'ylab harakat qilishingiz kerak.

Umumiy aylantirish sozlamalarini sozlash uchun keling, "Boshqarish paneli" deb nomlanadigan "Sichqoncha" komponentiga murojaat qilaylik ("Ishga tushirish" menyusidan). Keling, "Printerlar va boshqa uskunalar" toifasiga o'tamiz va "Sichqoncha" belgisini bosing.

"Xususiyatlar: Sichqoncha" oynasi ochiladi, shundan so'ng siz "G'ildirak" yorlig'iga o'tishingiz va o'zingizning talablaringizga muvofiq aylantirishni sozlashingiz kerak. "Ekran" maydoniga o'rnatilgan marker tasvirni ekranning balandligiga teng masofada monitor bo'ylab harakatlantiradi.

Agar bu parametr biz uchun juda katta bo'lsa, biz "Ko'rsatilgan qatorlar soni uchun" maydoniga markerni o'rnatishimiz va klaviatura yoki o'q tugmalari yordamida kerakli qiymatni kiritishimiz mumkin. “0” qiymatini o‘rnatib bo‘lmaydi. O'zgarishlarni qo'llang va oynani yoping.

Men scrollTo jQuery plaginidan foydalanmoqdaman va Javascript orqali oyna elementini aylantirishni vaqtincha o‘chirib qo‘yish mumkinligini bilmoqchimisiz? O‘tkazishni o‘chirib qo‘ymoqchi bo‘lganimning sababi shundaki, siz aylantirganingizda, scrollTo funksiyasi jonlantirilganda, u juda xunuk bo‘lib qoladi;)

Albatta, men $("tana").css("toshib ketish", "yashirin"); va keyin animatsiya to'xtaganda uni avtomatik rejimga qaytaring, lekin aylantirish paneli hali ham ko'rinadigan, lekin faol bo'lmagan bo'lsa yaxshi bo'lardi.

27 javob

O‘tkazish hodisasini bekor qilib bo‘lmaydi. Ammo buni quyidagi shovqin hodisalarini bekor qilish orqali amalga oshirish mumkin:
Sichqoncha va Sensorli aylantirish va aylantirish bilan bog'liq tugmalar.

[Ishlovchi demo] // chap: 37, yuqoriga: 38, o'ng: 39, pastga: 40, // bo'sh joy: 32, sahifa yuqoriga: 33, pastga: 34, oxiri: 35, asosiy: 36 var tugmalari = (37: 1 , 38:1, 39:1, 40:1); funksiyasi preventDefault(e) ( e = e || window.event; if (e.preventDefault) e.preventDefault(); e.returnValue = false; ) function preventDefaultForScrollKeys(e) ( if (tugmalar) ( preventDefault(e); return false; ) ) disableScroll() ( if (window.addEventListener) // eski FF window.addEventListener("DOMMouseScroll", preventDefault, false); window.onwheel = preventDefault; // zamonaviy standart window.onmousewheel = document.onmousewheel = preventDefault; // eski brauzerlar, IE window.ontouchmove = preventDefault; // mobile document.onkeydown = preventDefaultForScrollKeys funksiyasi enableScroll() (if (window.removeEventListener) window.removeEventListener("DOMMouseScroll", preventDefault,); onmousewheel = document.onmousewheel = window.ontouchmove = null;

Buni tanaga oddiygina sinf qo'shish orqali bajaring:

O‘tkazishni to‘xtatish (balandlik: 100%; to‘lib ketish: yashirin; )

IE, FF, Safari va Chrome-da sinovdan o'tgan aylantirishni qayta yoqmoqchi bo'lsangiz, sinf qo'shing va uni olib tashlang.

$("tana").addClass("o'tishni to'xtatish")

uchun mobil qurilmalar touchmove hodisasini boshqarishingiz kerak:

$("tana").bind("touchmove", funksiya(e)(e.preventDefault()))

Va yana aylantirishni yoqish uchun bo'shating. iOS6 va Android 2.3.3 da sinovdan o'tgan

$("tana").unbind("teginish")

Keyingi yechim oddiy, ammo sof JavaScript (jQuery yo'q):

Function disableScrolling())( var x=window.scrollX; var y=window.scrollY; window.onscroll=function())(window.scrollTo(x, y ) function enableScrolling())( window.onscroll); =funksiya( )();

Eski postga javob berganim uchun uzr so'rayman, lekin men yechim izlayotgan edim va bu savolga duch keldim.

O'tkazish panelini ko'rsatish uchun bu muammoni hal qilishning ko'plab usullari mavjud, masalan, konteynerga 100% balandlik va to'ldirish-y: aylantirish uslubini berish.

Mening holimda, men shunchaki o'tish paneli bilan div yaratdim, uni korpusga yashirin qo'shish orqali ko'rsataman:

DisableScroll() funksiyasi ( document.getElementById("scrollbar").style.display = "blok"; document.body.style.overflow = "yashirin"; )

Elementning aylantirish paneli quyidagi uslublarga ega bo'lishi kerak:

Overflow-y: aylantirish; yuqori: 0; o'ng: 0; ko'rsatish: yo'q; balandligi: 100%; pozitsiyasi: qattiq;

Kulrang aylantirish paneli bu erda ko'rsatilgan, umid qilamanki, u kelajakdagi tashrif buyuruvchilarga yordam beradi.

Galambalazlarning postiga ko'ra, men teginishimizga imkon beradigan, lekin yuqoriga yoki pastga aylantirmaslik uchun sensorli qurilmalarni qo'llab-quvvatlagan bo'lardim:

disable_scroll() funksiyasi ( ... document.ontouchmove = function(e)( e.preventDefault(); ) ) function enable_scroll() ( ... document.ontouchmove = function(e)( true; ) )

Men bu muammoni hal qilish yo'lini qidirdim, lekin yuqoridagi echimlarning hech biri (bu javobni yozish vaqtida) qoniqtirmadim, shuning uchun men ushbu yechimni topdim.

ScrollDisabled (pozitsiya: sobit; margin-top: 0; // $(window).scrollTop() kengligi: 100%; ) acc dan foydalanish uchun JS tomonidan bekor qilinadi.

Var y_offsetWhenScrollDisabled=0; funksiya disableScrollOnBody())( y_offsetWhenScrollDisabled= $(window).scrollTop(); $("body").addClass("scrollDisabled").css("margin-top", -y_offsetWhenScrollDisabled); ) funksiyasi enableScrollOnBody $( "body").removeClass("scrollDisabled").css("margin-top", 0 $(window).scrollTop(y_offsetWhenScrollDisabled)

Boshqa yechim:

Shunday qilib, siz doimo vertikal aylantirish paneliga ega bo'lasiz, lekin mening kontentimning aksariyati ko'rish oynasidan uzunroq bo'lgani uchun, bu men uchun yaxshi. Kontent yordamida markazlashtirilgan individual element div, lekin tanadagi chegarani tiklamasdan, mening kontentim chap tomonda qoladi.

Men qalqib chiquvchi/modalni ko'rsatish uchun foydalanadigan ikkita funksiya:

Var popup_bodyTop = 0; var popup_bodyLeft = 0; popupShow(id) funksiyasi ( $("#"+ id).effect("fade"); $("#popup-overlay").effect("fade"); // joriy aylantirish pozitsiyasini eslab qoling // chunki qachon o'rnatish/o'rnatish: tanaga o'rnatildi // tana 0.0 popup_bodyLeft = $(document).scrollLeft(); = - popup_bodyTop; $("body").css("joy", "fiksatsiyalangan").css("top", y.toString() +"px"); .css("left", x.toString() +"px" ) funksiyasi popupHide(id) ( $("#"+ id).effect("fade"); $("#popup -overlay").effect ("fade"); $("position", ""); $("html, body").scrollTop(popup_bodyTop) $("html, body" ). ;

Natija: aylantirilmaydigan fon va chap aylantirish paneli tufayli kontentning o'rnini o'zgartirish. Joriy FF, Chrome va IE 10 bilan sinovdan o'tgan.

Bunga nima deysiz? (Agar siz jQuery dan foydalanayotgan bo'lsangiz)

Var $window = $(oyna); var $body = $(window.document.body); window.onscroll = function() ( var overlay = $body.children(".ui-widget-overlay").first(); // Qatlamning ko'rinib turishini tekshiring va agar (overlay.is() bo'lsa, oldingi aylantirish holatini tiklang. ":visible")) ( var scrollPos = $body.data("scroll-pos") || ( x: 0, y: 0 ); window.scrollTo(scrollPos.x, scrollPos.y); ) else ( / / Faqat aylantirish holatini saqlang $body.data("scroll-pos", ( x: $window.scrollLeft(), y: $window.scrollTop() ) );

Masofaviy aylantirish orqali nimaga erishmoqchi ekanligingizga qarab, aylantirishni olib tashlamoqchi bo'lgan elementni oddiygina tuzatishingiz mumkin (bosish yoki aylantirishni vaqtincha o'chirib qo'ymoqchi bo'lgan har qanday tetik)

Men "temp no scroll" yechimini qidirdim va mening ehtiyojlarim uchun bu uni hal qildi

sinf yarating

Ruxsat etilgan (pozitsiya: qat'iy; )

keyin jQuery bilan

Var someTrigger = $("#trigger"); //Trigger tugmasi var contentContainer = $("#content"); //element Container.addClass("tuzatilmagan"); //elementning "noto'g'rilanmagan" sinfiga ega ekanligiga ishonch hosil qiling // Ruxsat etilgan joylashuvni ishga tushirish uchun biror narsa. Bunday holda biz tugmachani tanladik. someTrigger.on("click", function())(if(contentContainer.hasClass("tuzalanmagan"))(contentContainer.removeClass("tuzatilmagan").addClass("tuzatilgan"); )else if(contentContainer.hasClass(" sobit "))( contentContainer.removeClass("tuzatilgan").addClass("tuzatilmagan"); ); ));

Men buni barcha brauzerlarda yaxshi ishlaydigan va shunga mos keladigan juda oddiy yechim deb topdim foydalanish oson portativ qurilmalarda (masalan, iPhone, planshetlar va boshqalar). Element vaqtinchalik o'rnatilganligi sababli, aylantirish yo'q :)

DIQQAT! "contentContainer" elementingizning joylashuviga qarab, uni chap tomonga moslashtirishingiz kerak bo'lishi mumkin. Buni chap qo'shish orqali osongina bajarish mumkin CSS qiymati Ruxsat etilgan sinf faol bo'lganda ushbu elementga

ContentContainer.css(( "chap": $(window).width() - contentContainer.width()/2 //Bu qiymat Windowsning butun kengligidan biz "markazlashtirmoqchi bo'lgan" elementga bo'linishiga olib keladi. ikkita (chunki u "faqat bir tomondan itariladi) ));

Mening jQuery qalqib chiquvchi loyihamdan https://github.com/seahorsepip/jPopup p>

//Sahifa tarkibini aylantirish funksiyasini muzlatish freeze() ( if($("html").css("pozitsiya") != "fiksatsiyalangan") ( var top = $("html").scrollTop() ? $(" html").scrollTop() : $("tana").scrollTop(); if(window.innerWidth > $("html").width()) ( $("html").css("overflow-y ", "scroll"); ) $("html").css(("kenglik": "100%", "balandlik": "100%", "pozitsiya": "fiksatsiyalangan", "yuqori": -yuqori )); ) ) //Sahifa tarkibini muzlatishdan chiqarish funksiyasi unfreeze() ( if($("html").css("pozitsiya") == "fiksatsiyalangan") ( $("html").css("pozitsiya" , "statik"); $("html, body").scrollTop(-parseInt($("html").css("top"))) $("html").css(("pozitsiya": "", "kenglik": "", "balandlik": "", "yuqori": "", "toshib-y": ""));

Ushbu kod kenglik, balandlik, aylantirish paneli va sahifaga o'tish masalalarini hisobga oladi.

Yuqoridagi kod bilan hal qilinishi mumkin bo'lgan muammolar:

  • kengligi, belgilangan o'rnatish pozitsiyasi bilan html elementining kengligi 100% dan kam bo'lishi mumkin
  • balandligi yuqoridagi kabi
  • o'tish paneli, agar sobit holatda, sahifa tarkibining o'rnida sahifa o'tishdan oldin o'tish paneli bo'lsa ham, endi aylantirish paneli bo'lmasa
  • pagejump, joylashuv sozlamalari o'rnatilganda, scrollTop endi ishlamaydi, bu esa sahifaning vertikal ravishda o'tishiga olib keladi

Agar kimdir yuqoridagi sahifaning muzlatish/eritish kodida biron bir yaxshilanishga ega bo'lsa, iltimos, loyihamga ushbu yaxshilanishlarni qo'shishim uchun menga xabar bering.

Chrome 56 va undan keyin zamonaviy brauzerlar, siz preventDefault ishlashi uchun addEventListener chaqiruviga passive:false qo'shishingiz kerak. Shuning uchun men buni mobil telefonda aylantirishni to'xtatish uchun ishlataman:

preventDefault(e)( e.preventDefault(); ) funktsiyasi disableScroll())( document.body.addEventListener("touchmove", preventDefault, ( passiv: false )); ) function enableScroll())( document.body.removeEventListener (" touchmove", preventDefault, ( passiv: false ) )

Cheyenne Forbesning javobiga asoslanib, men fcalderan orqali bu erda topdim: Yashirish emas, balki faqat varaqni o'chirib qo'yingmi? va Hallodomda aylantirish paneli yo'qolishi muammosini hal qiling

Preventscroll (pozitsiya: belgilangan; toshib ketish-y: aylantirish; )

Whatever.onclick = function())( $("tana").addClass("preventscroll"); ) whatevertoclose.onclick = function())( $("tana").removeClass("preventscroll"); )

Ushbu kod sizni sahifaning yuqori qismiga olib boradi, lekin menimcha, fcalderan kodida vaqtinchalik yechim bor.

Menda bir xil muammo bor, uni hal qilish yo'li quyida.

/* file.js */ var body = document.getElementsByTagName("tana"); //agar oyna aylantirilmasa body.classList.add("no-scroll"); //agar oyna aylantirilsa body.classList.remove("no-scroll"); /* file.css */ .no-scroll( pozitsiyasi: qattiq; tepa: 0; pastki: 0; chap: 0; o'ng: 0; )

bu yordam beradi deb umid qilaman.

Eng oson yo'li:

$("tana").css("toshib ketish", "yashirin"); // O'tkazish panelini vaqtincha olib tashlang

Buni bekor qilish uchun:

$("tana").css("toshib ketish", "avtomatik");

Amalga oshirish oson, ammo bitta kamchilik:

  • Sahifa markazlashtirilgan bo'lsa (gorizontal) biroz chapga siljiydi.

Buning sababi, aylantirish paneli olib tashlangan va ko'rish oynasi biroz kengaygan.

O'tkazishni to'xtatish uchun mening yechimim (jQuerysiz). Men uni yon menyu paydo bo'lganda aylantirishni o'chirish uchun foydalanaman.

O'chirish/yoqish aylantirish var noscroll_var; funktsiya noscroll())( if(noscroll_var)( document.getElementsByTagName("html").style.overflowY = ""; document.body.style.paddingRight = "0"; noscroll_var = false )else( document.getElementsByTagName(" html ").setAttribute("style", "overflow-y: yashirin !muhim"); document.body.style.paddingRight = "17px"; noscroll_var = true ) )/*noscroll()*/ for(var i=) 0 ;i

© 2024 ermake.ru -- Kompyuterni ta'mirlash haqida - Axborot portali