JS實(shí)現(xiàn)簡單自定義滾動(dòng)條

JS實(shí)現(xiàn)自定義滾動(dòng)條
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            #parent{
                width: 600px;
                height: 20px;
                background: #ccc;
                position: relative;
                margin: 10px auto;
            }
            #div1{
                width: 20px;
                height: 20px;
                background: red;
                position: absolute;
                left: 0;
                top: 0;
            }
            #div2{
                width: 300px;
                height: 400px;
                border: 1px solid black;
                overflow: hidden;
                position: relative; 
            }
            #div3 {
                position: absolute;
                left: 0;
                top: 0;
            }
            
        </style>
        <script>
            window.onload = function(){
                
                var oDiv = document.getElementById('div1');
                var oParent = document.getElementById('parent');
                var oDiv2 = document.getElementById('div2');
                var oDiv3 = document.getElementById('div3');
                var disX = 0;
                oDiv.onmousedown = function(ev) {
                    var oEvent = ev || event;
                    disX = oEvent.clientX - oDiv.offsetLeft;
                    function mouseMove(ev) {
                        var oEvent = ev || event;
                        var l = oEvent.clientX - disX;
                        if(l<0)
                        {
                            l=0;
                        }else if(l>oParent.offsetWidth-oDiv.offsetWidth)
                        {
                            l= oParent.offsetWidth-oDiv.offsetWidth;
                        }
                        oDiv.style.left = l + 'px';
                        //得到滾動(dòng)位置的比例
                        var scale = l/(oParent.offsetWidth-oDiv.offsetWidth);
                        //document.title = scale    ;
                        //需要減去div2的高度
                        oDiv3.style.top= -scale*(oDiv3.offsetHeight-oDiv2.offsetHeight)+'px';
                    };

                    function mouseUp() {
                        this.onmousemove = null;
                        this.onmouseup = null;
                        if(this.releaseCapture) {
                            this.releaseCapture();
                        }
                    }
                    //兼容性判定
                    if(oDiv.setCapture) {
                        //IE
                        oDiv.onmousemove = mouseMove;
                        oDiv.onmouseup = mouseUp;
                        oDiv.setCapture();
                    } else {
                        //Chrome/FF
                        document.onmousemove = mouseMove;
                        document.onmouseup = mouseUp;
                    }
                    return false; //chrome,ff,ie9
                }
            
            }
        </script>
    </head>
    <body>
        <div id="parent">
            <div id="div1"></div>
        </div>
        <div id="div2">
            <div id="div3">
                線程和進(jìn)程
因此,我們應(yīng)該要聽從蘋果的勸告熔脂,珍愛生命昙楚,遠(yuǎn)離線程。不過話又說回來,盡管隊(duì)列是執(zhí)行并發(fā)任務(wù)的首先方式残拐,但是畢竟它們也不是什么萬能的靈丹妙藥愧杯。所以,在以下三種場(chǎng)景下收擦,我們還是應(yīng)該直接使用線程的:
* 用線程以外的其他任何方式都不能實(shí)現(xiàn)我們的特定任務(wù)贮配;
* 必須實(shí)時(shí)執(zhí)行一個(gè)任務(wù)。因?yàn)殡m然隊(duì)列會(huì)盡可能快地執(zhí)行我們提交的任務(wù)炬守,但是并不能保證實(shí)時(shí)性牧嫉;
* 你需要對(duì)在后臺(tái)執(zhí)行的任務(wù)有更多的可預(yù)測(cè)行為.
* 
NSInvocationOperation :我們可以通過一個(gè) object 和 selector 非常方便地創(chuàng)建一個(gè) NSInvocationOperation ,這是一種非常動(dòng)態(tài)和靈活的方式减途。假設(shè)我們已經(jīng)有了一個(gè)現(xiàn)成的方法酣藻,這個(gè)方法中的代碼正好就是我們需要執(zhí)行的任務(wù),那么我們就可以在不修改任何現(xiàn)有代碼的情況下鳍置,通過方法所在的對(duì)象和這個(gè)現(xiàn)有方法直接創(chuàng)建一個(gè) NSInvocationOperation 辽剧。
NSBlockOperation :我們可以使用 NSBlockOperation 來并發(fā)執(zhí)行一個(gè)或多個(gè) block ,只有當(dāng)一個(gè) NSBlockOperation 所關(guān)聯(lián)的所有 block 都執(zhí)行完畢時(shí)税产,這個(gè) NSBlockOperation 才算執(zhí)行完成怕轿,有點(diǎn)類似于 dispatch_group 的概念。

另外辟拷,所有的 operation 都支持以下特性:
* 支持在 operation 之間建立依賴關(guān)系撞羽,只有當(dāng)一個(gè) operation 所依賴的所有 operation 都執(zhí)行完成時(shí),這個(gè) operation 才能開始執(zhí)行衫冻;
* 支持一個(gè)可選的 completion block 诀紊,這個(gè) block 將會(huì)在 operation 的主任務(wù)執(zhí)行完成時(shí)被調(diào)用;
* 支持通過 KVO 來觀察 operation 執(zhí)行狀態(tài)的變化隅俘;
* 支持設(shè)置執(zhí)行的優(yōu)先級(jí)邻奠,從而影響 operation 之間的相對(duì)執(zhí)行順序;
* 支持取消操作为居,可以允許我們停止正在執(zhí)行的 operation 碌宴。
在絕大多數(shù)情況下,我們都不需要去實(shí)現(xiàn)一個(gè)并發(fā)的 operation 蒙畴。如果我們一直是通過將 operation 添加到 operation queue 的方式來執(zhí)行 operation 的話贰镣,我們就完全沒有必要去實(shí)現(xiàn)一個(gè)并發(fā)的 operation 。因?yàn)椋?dāng)我們將一個(gè)非并發(fā)的 operation 添加到 operation queue 后碑隆,operation queue 會(huì)自動(dòng)為這個(gè) operation 創(chuàng)建一個(gè)線程董朝。因此,只有當(dāng)我們需要手動(dòng)地執(zhí)行一個(gè) operation 干跛,又想讓它異步執(zhí)行時(shí)子姜,我們才有必要去實(shí)現(xiàn)一個(gè)并發(fā)的 operation 。
            </div>
        </div>
    </body>
</html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末楼入,一起剝皮案震驚了整個(gè)濱河市哥捕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嘉熊,老刑警劉巖遥赚,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異阐肤,居然都是意外死亡凫佛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門孕惜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來愧薛,“玉大人,你說我怎么就攤上這事衫画『谅” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵削罩,是天一觀的道長瞄勾。 經(jīng)常有香客問我,道長弥激,這世上最難降的妖魔是什么进陡? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮微服,結(jié)果婚禮上趾疚,老公的妹妹穿的比我還像新娘。我一直安慰自己职辨,他們只是感情好盗蟆,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布戈二。 她就那樣靜靜地躺著舒裤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪觉吭。 梳的紋絲不亂的頭發(fā)上腾供,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼伴鳖。 笑死节值,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的榜聂。 我是一名探鬼主播搞疗,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼须肆!你這毒婦竟也來了匿乃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤豌汇,失蹤者是張志新(化名)和其女友劉穎幢炸,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拒贱,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宛徊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了逻澳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闸天。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖斜做,靈堂內(nèi)的尸體忽然破棺而出号枕,到底是詐尸還是另有隱情,我是刑警寧澤陨享,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布葱淳,位于F島的核電站,受9級(jí)特大地震影響抛姑,放射性物質(zhì)發(fā)生泄漏赞厕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一定硝、第九天 我趴在偏房一處隱蔽的房頂上張望皿桑。 院中可真熱鬧,春花似錦蔬啡、人聲如沸诲侮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沟绪。三九已至,卻和暖如春空猜,著一層夾襖步出監(jiān)牢的瞬間绽慈,已是汗流浹背恨旱。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坝疼,地道東北人搜贤。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像钝凶,于是被迫代替她去往敵國和親仪芒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,734評(píng)論 25 707
  • 內(nèi)容抽屜菜單ListViewWebViewSwitchButton按鈕點(diǎn)贊按鈕進(jìn)度條TabLayout圖標(biāo)下拉刷新...
    皇小弟閱讀 46,720評(píng)論 22 664
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫耕陷、插件桌硫、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,058評(píng)論 4 62
  • 上一章 7、抓賊女豪杰 今天早上的公交車?yán)镩_始人比較少啃炸,可一站一站地上來些乘客铆隘,就漸漸地有些擁擠了。老媽抓著個(gè)手環(huán)...
    舞風(fēng)眠雨閱讀 392評(píng)論 0 4
  • 離她最近的地方南用,路途最遠(yuǎn)
    莫忘丶閱讀 102評(píng)論 0 0