AMcoder - javascript, python, java, html, php, sql

scrollTop-ը վերադարձնում է շատ ավելի փոքր արժեք firefox-ում div-ի համար

Հղման հղում՝ https://crazyripples.com/?debug=1

Այսպիսով, ես օգտագործում եմ jQuery և jQuery fullPage հավելվածը: Այն օգնում է ինձ հասնել շրջանակ առ կադր ոլորման:

Այժմ, ներքին div-ների համար, որտեղ ուղղահայաց բարձրությունը մեծ է պատուհանի բարձրությունից, ես օգտագործել եմ որոշ գործառույթներ, որտեղ ես պարզապես ստուգում եմ ոլորման գծի դիրքը և stop Propagation դեպի plugin, որպեսզի ներքին ոլորման տողը ոլորվի առանց շրջանակը տեղափոխելու:

Ամեն ինչ լավ է աշխատում քրոմի հետ, և քանի որ ես կառուցել եմ քրոմով, ես օգտագործել եմ որոշ հաշվարկներ, որոնք ես դիտարկել եմ քրոմի վրա: Սակայն firefox-ը տարբեր արդյունքներ է ցույց տալիս, հատկապես scrollTop-ով:

Ես տեղյակ եմ այն ​​փաստի մասին, որ կարող է լինել բարձրության տարբերություն, բայց եթե դուք տեսնեք տեղեկամատյանները հղման հղումում, դուք կտեսնեք, բարձրությունը գրեթե նույնն է (նույնիսկ եթե դա ձեզ համար չէ, դա scrollTop արժեքն է. խնդիր).

Ահա այն կոդը, որը ես օգտագործում եմ՝ որոշելու՝ դադարեցնե՞լ տարածումը, թե՞ ոչ:

$(document).on("keydown",function(e){
    var story=$("#story"),
        story_con=story.find(".container"),
        story_top=story_con.scrollTop();

    if(story.hasClass("active")){
        // console.log(story_top,story_con.height(),story_con.innerHeight(),story_con.children("div").height(),story_con.children("div").innerHeight(),e.which);
        console.log("Div ScrollTop: "+story_top, "Container Height: "+story_con.height(), "Container InnerHeeight: "+story_con.innerHeight(),"Conatiner Div Height: "+story_con.children("div").height());

        //up arrow
        if(story_top==0 && e.which==38){
            console.log("prev frame")
        }

        //down arrow
        //chrome 280+432 >= 676 i.e. 712>=676 true
        //firefox 207+429 >= 676 i.e 636>=676 false
        else if(story_top + story_con.height() >=story_con.children("div").height() && e.which==40){
            console.log("next frame");
        }
        else{
            story_con.focus();
            console.log(story_con[0]);
            console.log("stopped propagation");
            e.stopImmediatePropagation();
        }
        return;
    }
});

Եվ այսպես եմ կոչում plugin-ը.

$('#main').fullpage({
    sectionSelector:'.frame',
    scrollingSpeed:800,
    responsiveWidth:1025,
    normalScrollElements: '#story, #startups, #services',
});

Կրկնօրինակում. Անցեք հղումի հղումին: Նավարկեք դեպի երկրորդ բաժին (Մեր պատմությունը) կամ ոլորելով, սլաքների ստեղներով կամ ընտրացանկով: Այժմ օգտագործեք միայն սլաքների ստեղները, շրջանակը պետք է նորմալ ոլորվի, բայց երբ ոլորումն ավարտվի, այն պետք է անցնի հաջորդ շրջանակին (դա անում է Chrome-ում): Լրացուցիչ մանրամասների համար տես js տեղեկամատյանները:

Ես կցանկանայի, եթե որևէ մեկը կարողանա օգնել ինձ ինչ-որ կերպ: Ես վաղուց փորձում էի սա վրիպազերծել: Միգուցե ես կենտրոնանում եմ սխալ հարցի վրա: Ցանկացած օգնություն կգնահատվի:

P.S. Ես գիտեմ, որ plugin-ն առաջարկում է scrollOverflow տարբերակ: Դա ավելի շատ խնդիրներ էր առաջացնում, քան այս մոտեցումը:

Թարմացում. Քանի որ ես չկարողացա այդքան կոնկրետ լուծում գտնել, ես փոխեցի իմ մոտեցումը՝ պարզելու, թե արդյոք շրջանակի ոլորման տողը հասել է իր ավարտին: Ես օգտագործել եմ սա.

//down arrow
else if(container[0].offsetHeight + container[0].scrollTop >= container[0].scrollHeight){
    console.log("next frame");
}

  • Հետաքրքրությունից դրդված ինչու չօգտագործեցիք fullPage.js-ի scrollOverflow հատկությունը՝ ոլորման գծերը ստեղծելու համար որպես այս օրինակում? 14.10.2016
  • ScrollOverflow տարբերակը պահանջում է արտաքին js ֆայլ: Նաև այդ տարբերակն ինձ մոտ կայուն չէր աշխատում։ Հնարավոր է, որ ես օգտագործել եմ flexbox-ը, դա կարող է լինել պատճառը: 14.10.2016
  • Ես կհամոզվեմ, որ ձեր մոտեցմամբ խնդիրներ չունենաք հպման սարքերում: 14.10.2016
  • @Alvaro դա խնդիր չէ սենսորային սարքերի վրա (հիմնականում փոքր չափս), քանի որ ամբողջ էջի հավելվածն ունի վեբկայքը սովորաբար ոլորելու տարբերակ, երբ բրաուզերի լայնությունը պակաս է իմ ուզած լայնությունից: 16.10.2016
  • Լավ, չհասկացա, դու հավանաբար սցենարի մշակողն ես :P Feel so lame! Բայց ես այնքան ուրախ եմ, որ դուք օգնում եք ինձ դրանում: 16.10.2016
  • Ես նոր հարց կբացեի առանց այդքան կոնկրետանալու. Պարզապես հարցրեք, թե ինչպես ստանալ նույն արժեքը Firefox-ի և Chrome-ի համար՝ պտտվող տարրի համար: Դուք շատ ավելի շատ պատասխաններ կստանաք՝ ունենալով կարճ և ընդհանուր հարց: 16.10.2016
  • Եթե ​​ոչինչ չի օգնում, ասեք օգտվողներին չօգտագործել Firefox-ը. 16.10.2016
  • Firefox-ը չօգտագործելու համար դուք պետք է կատակեք ինձ, թե՞ ինչ-որ բան բաց եմ թողնում: 16.10.2016
  • Դե, ես իսկապես չեմ կարող դա անել, դա իմ սեփական ընկերության կայքն է: 16.10.2016
  • Firefox-ի ո՞ր տարբերակն եք օգտագործում: Պարզապես օգնելու իմ վրիպազերծմանը: Ես աշխատում եմ 49.0.1 տարբերակով, և ձեր ստեղնաշարի գործառույթը ներկայումս աշխատում է 1024-ից մեծ լայնությամբ էկրանի ցանկացած չափի վրա: 17.10.2016
  • Նաև, պարզապես որպեսզի իմանաք, որ ձեր div#servicesը ներկայումս չափազանց բարձր է (նույնիսկ iMac էկրանի վրա)՝ անցնելու համար ստեղնաշարի 1 սլաքով ներքև սեղմելով: 17.10.2016
  • Եթե ​​դուք կարող եք տրամադրել կոդի հատված կամ jsfiddle, որը կարող է իրականացվել, դա կօգնի մեզ օգնել ձեզ: 23.10.2016

Պատասխանները:


1

*Սա իմ պատասխանի սկիզբն է, քանի որ ես շարունակում եմ վրիպազերծել՝ ձեզ ավելի լավ մանրամասներ հաղորդելու համար:

Ներկայումս Firefox-ի 49.0.1 տարբերակը 1280px-ից փոքր պատուհանների համար օգտագործվող ձեր բովանդակությունը ձեր container դասերի ներսում չափազանց բարձր է:

Ընթացիկ ապացույց. Ձեր divs-ներում #story, #partners և #services, եթե դուք որտեղ պետք է նշեք div-ին, որը div.container-ի անմիջական զավակն է յուրաքանչյուր հիմնական հատվածում, կաշխատի height: 200px ստեղնաշարի բոլոր սեղմումները:

Խմբագրել 1 Magic.js-ում 111 տողում սկսվում է ձեր խնդիրը:

else if(story_top + story_con.height() >=story_con.children("div").height() && e.which==40){

Ձեր յուրաքանչյուր կոնտեյների ներսում՝ story_con.children("div").height(), բովանդակությունը երբեմն ավելի մեծ է, քան story_top + story_con.height()-ը, ուստի այն չի անցնում ձեր ուզած հաջորդ էջի ճանապարհին:

Իհարկե, այս ամենը կախված է պատուհանի բարձրությունից:

Ձեր վրիպազերծման գրանցումն ապացուցում է իմ տեսակետը՝

17.10.2016
  • Լավ, նախ շատ շնորհակալ եմ օգնության համար: Հիմա ես չափափոխեցի իմ պատուհանը 1280-ի և այն լավ է աշխատում քրոմում: Իրականում այն ​​աշխատում է քրոմի վրա՝ անկախ չափերից։ Firefox-ում (նույն տարբերակում) ես div.container›div բարձրությունը դրեցի 200px և այն աշխատում է, բայց դրա համար ունի պարզ պատճառ: Պատուհանից փոքր բարձրության դեպքում ոլորման տող չի լինի, և 111 տողում վիճակը գնահատվում է ճշմարիտ, և հաջորդ շրջանակը բեռնվում է: 17.10.2016
  • Սա ճշմարիտ է պատուհանի բարձրությունից փոքր դիվի ցանկացած բարձրության համար: Այժմ 111 տողը պարզապես նշանակում է, որ եթե սլաքի ստեղնը ներքև է, և մենք հասել ենք ոլորման դիրքի ավարտին: Բոլոր հաշվարկները ճիշտ կաշխատեն, եթե story_top փոփոխականը (scrollTop) հանգեցնի նույն արժեքին, ինչ chrome-ը, ինչը չի ստացվում: 17.10.2016
  • Լավ :) Ես կնայեմ, թե ինչու է scrollTop-ը տարբերվում Chrome-ից Firefox-ում 17.10.2016
  • Կարծես .scrollTop()-ը լավ չի աշխատում Firefox-ում: Այսօր աշխատանքից հետո ես կփորձեմ գրել մի աշխատանք ձեզ համար 17.10.2016

  • 2

    Պարզ պատասխանը կլինի այն պատճառով, որ Chrome-ը և Firefox-ը տարբեր կերպ են ներկայացնում էջերը: Հասկանալու համար, թե ինչու եք տարբերություններ ունենում ցուցադրման մեջ, դիտեք այս Բացատրությունը

    Հուսով եմ, որ սա պարզում է այն:

    19.10.2016
  • Ես իրականում տեղյակ եմ այդ մասին։ Բայց այս համատեքստում ես չգիտեմ, թե արդյոք դա օգնում է: Նախ, ես գործ չունեմ լայնությունների հետ, դա բարձրության և scrollTop-ի խնդիրն է: Միգուցե, դա կարող է նման կերպ վարվել բարձրության հետ, բայց միակ բարձրությունը, որը ես տվել եմ, 100 վժ է, և կա ընդամենը 1 երեխա: Նույնիսկ եթե ես ինչ-որ կերպ հավատում եմ, որ դա է իրական խնդիրը, 5-10 px տարբերությունը իմաստ կունենա, բայց եթե տեսնեք տեղեկամատյանները, գրեթե 80px տարբերություն կա (ինձ համար) Chrome-ի և Firefox-ի արժեքներում: Այնպես որ, ես ենթադրում եմ, որ դա չէ պատճառը: 21.10.2016
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..