3.10 針對於iscroll 使用y獲取滾動高度


今天在做實際手機端操作的時候,發現了這個

<ul class="wind-alert-ul" style="transform-origin: 0px 0px 0px; position: absolute; top: -200px; left: 0px;">
                        <li>&nbsp;</li>
                        <li>關閉</li>
                        <li>低速</li>
                        <li>中速</li>
                        <li>高速</li>
                        <li>關閉</li>
                        <li>低速</li>
                        <li>中速</li>
                        <li>高速</li>
                        <li>關閉</li>
                        <li>低速</li>
                        <li>中速</li>
                        <li>高速</li>
                        <li>關閉</li>
                        <li>&nbsp;</li>
                    </ul>

發現在滾動的時候,top的值是變化的,那么是不是可以通過這個top值來獲取滾動的高度,結果又了如下的寫法

onScrollEnd:function(){
                var top=$(".wind-alert-ul").css("top");
                alert(top);
                var number=parseInt(top.split('px')[0].substring(1));
                alert(number);
                $(".ok").click(function(){
                    var text=$(".wind-alert-ul li:eq("+number+")").get(0);
                    $(".wind-set-b").text(text.innerHTML);
                    
                    
                })
            }

測試發現在電腦是可以的,但是實際上再手機端由於瀏覽器的差別會有鎖不同,在uc上瀏覽器測試發現彈出的top值一直都是auto,如果是這樣的話,那么number也就無法進行計算

發現了這個問題之后,請教了同事,其實在iscroll.js中可以使用y來獲取滾動垂直初始位置,將位置轉化為正數,然后可以通過除以Li的高度去找到現在處於的li的位置,由於在布局的時候,多加了一個&nbsp所以需要在位置上加上1,將其中的內容進行替換就可以了

修改后的代碼如下:

    onScrollEnd:function(){
                console.log(this.y);
                var number=(Math.abs(this.y))/50+1;
                $(".ok").click(function(){
                    var text=$(".wind-alert-ul li:eq("+number+")").get(0);
                    $(".wind-set-b").text(text.innerHTML);
                    
                    
                })
            }

經測試,手機端顯示正常,可以彈出正常的滾動高度


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM