前端基本功:JS(九)offset家族拖拽案例和Html基本結(jié)構(gòu)訪問(wèn)方法

彈窗拖拽

拖拽樣式.gif
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{margin:0;padding:0;}
        .nav{
            height:30px;
            background: #036663;
            border-bottom:1px solid #369;
            line-height: 30px;
            padding-left:30px;
        }
        .nav a {
            color:#fff;
            text-align: center;
            font-size:14px;
            text-decoration: none;

        }
        .d-box{
            width:400px;
            height:300px;
            border:5px solid #eee;
            box-shadow:2px 2px 2px 2px #666;
            position: absolute;
            top:50%;
            left:50%;
            margin-top: -155px;
            margin-left:-205px;

        }
        .hd{
            width:100%;
            height:25px;
            background-color: #7c9299;
            border-bottom:1px solid #369;
            line-height: 25px;
            color:white;
            cursor: move;
        }
        #box_close{
            float: right;
            cursor: pointer;
        }
    </style>
</head>
<body>
<div class="nav">
    <a href="javascript:;" id="register">注冊(cè)信息</a>
</div>
<div class="d-box" id="d_box">
    <div class="hd" id="drop">注冊(cè)信息   (可以拖拽)
            <span id="box_close">【關(guān)閉】</span>
    </div>
    <div class="bd"></div>
</div>
</body>
</html>
<script>
    var box = document.getElementById("d_box");
    var drop = document.getElementById("drop");
    startDrop(drop,box);  // 鼠標(biāo)放到  drop    但是移動(dòng) 是 box
    function startDrop(current,move) {
        current.onmousedown = function(event) {
            var event = event || window.event;
            var x = event.clientX - move.offsetLeft - 205;   // 記錄當(dāng)前盒子的x 位置
            var y = event.clientY - move.offsetTop - 155;  //  // 記錄當(dāng)前盒子的y位置
            document.onmousemove = function(event) {
                var event = event || window.event;
                move.style.left = event.clientX - x + "px";
                move.style.top = event.clientY - y + "px";
                window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
            }

        }
        document.onmouseup = function() {  // 鼠標(biāo)彈起之后枯跑, 鼠標(biāo)繼續(xù)移動(dòng)不應(yīng)該操作
            document.onmousemove = null;
        }
    }

</script>

模擬垂直滾動(dòng)條

紅色盒子高度計(jì)算公式: 容器的高度 / 內(nèi)容的高度 * 容器的高度


紅色方塊移動(dòng)一像素 愧哟,我們的內(nèi)容盒子移動(dòng)多少呢须床?
(內(nèi)容盒子高度 - 大盒子高度) / (大盒子高度 - 紅色盒子的高度) 計(jì)算倍數(shù)
(內(nèi)容盒子高度 - 大盒子高度) / (大盒子高度 - 紅色盒子的高度) * 紅色盒子移動(dòng)的數(shù)值

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        .box {
            width: 300px;
            height: 500px;
            border: 1px solid red;
            margin:100px;
            position: relative;
        }
        .content {
            height: auto;
            padding: 5px 18px 5px 5px;
            position: absolute;
            top: 0;
            left: 0;
        }
        .scroll {
            width: 18px;
            height: 100%;
            position: absolute;
            top: 0;
            right: 0;
            background-color: #eee;
        }
        .bar {
            width: 100%;
            height: 100px;
            background-color: red;
            cursor: pointer;
            border-radius: 10px;
            position: absolute;
            top: 0;
            left: 0;
        }
    </style>
</head>
<body>
<div class="box" id="box">
    <div class="content">
     文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分
     文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分
     文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分
     文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分
     文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分
     文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)     文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分
     文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分
     文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分文字內(nèi)容部分

    </div>
    <div class="scroll">
        <div class="bar"></div>
    </div>
</div>
</body>
</html>
<script>
    var box = document.getElementById("box");  // 最大的盒子
    var content = box.children[0];  // 內(nèi)容盒子
    var scroll = box.children[1];  // 右邊盒子
    var bar = scroll.children[0];
   // 1. 首先先要計(jì)算紅色滾動(dòng)條的高度    內(nèi)容越多翘单,滾動(dòng)條越短    反之  反之
   // 滾動(dòng)條的長(zhǎng)度計(jì)算公式:  容器的高度 / 內(nèi)容的高度 * 容器的高度
   // box 是 內(nèi)容盒子一半  那么紅色盒子也要是box盒子的一半
    var barHeight = box.offsetHeight / content.offsetHeight * box.offsetHeight;
    bar.style.height = barHeight + "px";
   // 下面開(kāi)始 拖動(dòng) 紅色盒子
    startScroll(bar,content);  // 第一次參數(shù) 拖動(dòng)的   第二個(gè)參數(shù) 內(nèi)容的盒子
   function startScroll(obj,target) {
       obj.onmousedown = function(event) {
           // alert(11);
           var event = event || window.event;
           var t = event.clientY - this.offsetTop ; // 紅色盒子距離 父親 盒子頂部距離
           var that = this;  // 把 bar 對(duì)象給 that 對(duì)象
           document.onmousemove = function(event) {
               var event = event || window.event;
               var barTop = event.clientY - t ;  // 紅色移動(dòng)的距離
               //內(nèi)容盒子要移動(dòng)距離
               // (內(nèi)容盒子高度 -  大盒子高度) /  (大盒子高度 - 紅色盒子的高度)   * 紅色盒子移動(dòng)的數(shù)值
               var contentTop = (target.offsetHeight - target.parentNode.offsetHeight) / (target.parentNode.offsetHeight - that.offsetHeight) *  barTop;
               // 內(nèi)容盒子移動(dòng)的距離
               if(barTop < 0)
               {
                   barTop = 0;
               }
               else if(barTop > target.parentNode.offsetHeight - that.offsetHeight)
               // 大于  大盒子的高度  -  紅色盒子的高度
               {
                   barTop = target.parentNode.offsetHeight - that.offsetHeight ;
               }
               else
               {
                   target.style.top = -contentTop + "px";  // 往上走是負(fù)值
               }
               that.style.top = barTop + "px";
               window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();   // 防止拖動(dòng)滑塊的時(shí)候场晶, 選中文字
           }
       }
           document.onmouseup = function() {
             document.onmousemove = null;
       }
   }
</script>

Html基本結(jié)構(gòu)訪問(wèn)方法

文檔是 document
html body head
document.head
document.body
document.title
沒(méi)有 document.html 取而代之的是 document.documentElement;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拾并,一起剝皮案震驚了整個(gè)濱河市揍堰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嗅义,老刑警劉巖屏歹,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異之碗,居然都是意外死亡蝙眶,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)褪那,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)械馆,“玉大人胖眷,你說(shuō)我怎么就攤上這事∨椋” “怎么了珊搀?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)尾菇。 經(jīng)常有香客問(wèn)我境析,道長(zhǎng),這世上最難降的妖魔是什么派诬? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任劳淆,我火速辦了婚禮,結(jié)果婚禮上默赂,老公的妹妹穿的比我還像新娘沛鸵。我一直安慰自己,他們只是感情好缆八,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布曲掰。 她就那樣靜靜地躺著,像睡著了一般奈辰。 火紅的嫁衣襯著肌膚如雪栏妖。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,084評(píng)論 1 291
  • 那天奖恰,我揣著相機(jī)與錄音吊趾,去河邊找鬼。 笑死瑟啃,一個(gè)胖子當(dāng)著我的面吹牛论泛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蛹屿,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼屁奏,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蜡峰?” 一聲冷哼從身側(cè)響起了袁,我...
    開(kāi)封第一講書(shū)人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎湿颅,沒(méi)想到半個(gè)月后载绿,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡油航,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年崭庸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡怕享,死狀恐怖执赡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情函筋,我是刑警寧澤沙合,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站跌帐,受9級(jí)特大地震影響首懈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谨敛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一究履、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧脸狸,春花似錦最仑、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蜜葱,卻和暖如春全景,著一層夾襖步出監(jiān)牢的瞬間耀石,已是汗流浹背牵囤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留滞伟,地道東北人揭鳞。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像梆奈,于是被迫代替她去往敵國(guó)和親野崇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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

  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案亩钟? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,743評(píng)論 1 92
  • 一乓梨、JS前言 (1)認(rèn)識(shí)JS 也許你已經(jīng)了解HTML標(biāo)記(也稱為結(jié)構(gòu)),知道了CSS樣式(也稱為表示)清酥,會(huì)使用HT...
    凜0_0閱讀 2,755評(píng)論 0 8
  • offset家族三大家族和一個(gè)事件對(duì)象三大家族(offset/scroll/client)事件對(duì)象/event ...
    Yuann閱讀 953評(píng)論 0 5
  • 1. 介紹 瀏覽器可能是最廣泛使用的軟件扶镀。本書(shū)將介紹瀏覽器的工作原理。我們將看到焰轻,當(dāng)你在地址欄中輸入google....
    康斌閱讀 2,013評(píng)論 7 18
  • 這幅畫(huà)隔了一個(gè)五一假期臭觉。所以真正畫(huà)了多少時(shí)間,我也無(wú)法估計(jì)了。 其實(shí)現(xiàn)在畫(huà)畫(huà)壓力越來(lái)越大了蝠筑,壓力化作動(dòng)力狞膘,哈哈哈。...
    Anby群閱讀 468評(píng)論 0 8