Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 精品久久国产,久久久久国产视频,xxx国产精品视频

          整合營(yíng)銷(xiāo)服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          HTML跳轉(zhuǎn)到頁(yè)面指定位置的幾種方法

          有時(shí)候,我們想閱讀頁(yè)面中某段精彩的內(nèi)容,但由于頁(yè)面太長(zhǎng),用戶需要自己滾動(dòng)頁(yè)面,查找起來(lái)非常麻煩 ,很容易讓人失去繼續(xù)往下閱讀的興趣。這樣體驗(yàn)非常不好,所以我們可以想辦法 實(shí)現(xiàn)點(diǎn)擊某段文字或者圖片跳轉(zhuǎn)到頁(yè)面指定位置,方便用戶的閱讀。

          一、 純 html 實(shí)現(xiàn)

          1. 利用 id 為標(biāo)記的錨點(diǎn)

          這里作為錨點(diǎn)的標(biāo)簽可以是任意元素。

            <a href="#aa">跳轉(zhuǎn)到 id 為 aa 標(biāo)記的錨點(diǎn)</a>
            <p>-------------分隔線-------------</p>
            <div id="aa">a</div>
          

          2. 利用 a 標(biāo)簽的 name 屬性作為錨點(diǎn)

          這里作為錨點(diǎn)的標(biāo)簽只能是 a 標(biāo)簽。

            <a href="#bb" >跳轉(zhuǎn)到 name 為 bb 的 a 標(biāo)簽錨點(diǎn)</a>
            <p>-------------分隔線-------------</p>
            <a name="bb">name 為 bb 的 a 標(biāo)簽的錨點(diǎn)</a>
            <div id="abb">bbb</div>
          

          注意:當(dāng)以 ' a 標(biāo)簽 name 屬性作為錨點(diǎn) ' 和 ' 利用 id 為標(biāo)記的錨點(diǎn) ' 同時(shí)出現(xiàn)(即以 name 為錨點(diǎn)和以 id 為錨點(diǎn)名字相同時(shí)),會(huì)將后者作為錨點(diǎn)。

          二、 js 實(shí)現(xiàn)

          1. 利用 scrollTo()

          window.scrollTo 滾動(dòng)到文檔中的某個(gè)坐標(biāo)。可提供滑動(dòng)效果,想具體了解 scrollTo() 可以看看 MDN 中的介紹。

          話不多說(shuō),看下面代碼

          「html 部分」:

            <a id="linkc">平滑滾動(dòng)到 c</a>
            <p>-------------分隔線-------------</p>
            <div id="cc">c</div>
          

          「js 部分」:

            var linkc = document.querySelector('#linkc')
            var cc = document.querySelector('#cc')
          
            function to(toEl) {
              // toEl 為指定跳轉(zhuǎn)到該位置的DOM節(jié)點(diǎn)
              let bridge = toEl;
              let body = document.body;
              let height = 0;
              
              // 計(jì)算該 DOM 節(jié)點(diǎn)到 body 頂部距離
              do {
                height += bridge.offsetTop;
                bridge = bridge.offsetParent;
              } while (bridge !== body)
              
              // 滾動(dòng)到指定位置
              window.scrollTo({
                top: height,
                behavior: 'smooth'
              })
            }
          
            linkc.addEventListener('click', function () {
              to(cc)
            });
          

          2. 利用 scrollIntoView()

          Element.scrollIntoView() 方法讓當(dāng)前的元素滾動(dòng)到瀏覽器窗口的可視區(qū)域內(nèi)。想具體了解 scrollIntoView() 可以看看 MDN 中的介紹。

          下面也直接上代碼

          「html 部分」:

            <a onclick="goTo()">利用 scrollIntoView 跳轉(zhuǎn)到 d</a>
            <p>-------------分隔線-------------</p>
            <div id="dd">ddd</div>
          

          「js 部分」:

            var dd = document.querySelector('#dd')
          
            function goTo(){
              dd.scrollIntoView()
            }
          

          注意:此功能某些瀏覽器尚在開(kāi)發(fā)中,請(qǐng)參考瀏覽器兼容性表格以得到在不同瀏覽器中適合使用的前綴。由于該功能對(duì)應(yīng)的標(biāo)準(zhǔn)文檔可能被重新修訂,所以在未來(lái)版本的瀏覽器中該功能的語(yǔ)法和行為可能隨之改變。

          下面為了方便看效果,把上面的代碼整理在一起。

          <!DOCTYPE html>
          <html lang="en">
          <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>Document</title>
            <style>
              div {
                width: 600px;
                height: 300px;
                background-color: pink;
              }
            </style>
          </head>
          <body>
            <a href="#aa">跳轉(zhuǎn)到以 id 為 aa 標(biāo)記的錨點(diǎn) a</a>
            <p>-------------分隔線-------------</p>
            <a name="aa">hhh</a>
            <div id="aa">aa</div>
            <a href="#bb" >跳轉(zhuǎn)到 name 為 bb 的 a 標(biāo)簽錨點(diǎn)</a>
            <p>-------------分隔線-------------</p>
            <a name="bb">name 為 bb 的 a 標(biāo)簽的錨點(diǎn)</a>
            <p>-------------分隔線-------------</p>
            <div>bb</div>
            <a id="linkc">平滑滾動(dòng)到 c</a>
            <p>-------------分隔線-------------</p>
            <div id="cc">cc</div>
            <a onclick="goTo()">利用 scrollIntoView 跳轉(zhuǎn)到 d</a>
            <p>-------------分隔線-------------</p>
            <div id="dd">dd</div>
            <p>-------------分隔線-------------</p>
            <div></div>
          </body>
          <script>
            var cc = document.querySelector('#cc')
            var linkc = document.querySelector('#linkc')
          
            function to(toEl) {
              //ele為指定跳轉(zhuǎn)到該位置的DOM節(jié)點(diǎn)
              let bridge = toEl;
              let body = document.body;
              let height = 0;
              do {
                height += bridge.offsetTop;
                bridge = bridge.offsetParent;
              } while (bridge !== body)
          
              console.log(height)
              window.scrollTo({
                top: height,
                behavior: 'smooth'
              })
            }
          
            linkc.addEventListener('click', function () {
              to(cc)
            });
          
          </script>
          <script>
            var dd = document.querySelector('#dd')
          
            function goTo(){
              dd.scrollIntoView()
            }
          </script>
          </html>
          

          效果圖:

          講大綱:

          1、HTML的基本概念

          2、HTML發(fā)展史

          3、HTML的基本結(jié)構(gòu)

          4、HTML的編寫(xiě)方法

          5、使用瀏覽器瀏覽HTML網(wǎng)頁(yè)


          1、HTML的基本概念

          HTML(Hyper Text Markup Language超文本標(biāo)識(shí)語(yǔ)言)

          • 是一種用來(lái)制作超文本文檔的簡(jiǎn)單標(biāo)記語(yǔ)言。
          • 用HTML編寫(xiě)的超文本文檔成為HTML文檔。

          2、HTML發(fā)展史

          HTML發(fā)展的5個(gè)階段

          1.HTML1.0版本是因?yàn)楫?dāng)時(shí)有很多不同版本,有些人認(rèn)為蒂姆·伯納斯·李的版本應(yīng)該最初版,這個(gè)版本沒(méi)有IMG元素。

          2.在IETF主持下,1995年11月在瑞士日內(nèi)瓦舉行的第一次www會(huì)議上成立了一個(gè)HTML工作小組,它的主要任務(wù)是把HTML形式化成為一中SGML DTD,稱(chēng)之為HTML Level2。

          3.HTML3.0規(guī)范是有當(dāng)時(shí)成立的W3C于1995年3月推出,提供了很多新的特性,例如表格,文字繞排,和復(fù)雜數(shù)學(xué)元素顯示,雖然它是設(shè)計(jì)用來(lái)兼容2.0版本的,但是實(shí)現(xiàn)這個(gè)標(biāo)準(zhǔn)的工作在當(dāng)時(shí)過(guò)于復(fù)雜,在草案于1995年過(guò)期時(shí),標(biāo)準(zhǔn)開(kāi)發(fā)業(yè)因?yàn)槿狈g覽器支持而終止了。3.1版本從未被正式提出,而下一個(gè)被提出的版本是HTML3.2,去掉了大部分3.0中的新特性,但是加入了很多特定瀏覽器。

          4.HTML4.0同樣也加入了很多特定瀏覽器的元素和屬性,但是同時(shí)也開(kāi)始“清理”這個(gè)標(biāo)準(zhǔn),把一些元素和屬性標(biāo)記為過(guò)時(shí)的,建議不再使用它們。HTML的未來(lái)和CSS結(jié)合會(huì)很好。

          5.HTML5目前仍為草案,并已經(jīng)被W3C認(rèn)可。


          3、HTML的基本結(jié)構(gòu)


          主體部分包含文本、圖像和鏈接。它包括在<BODY>...</BODY>標(biāo)簽內(nèi)

          頭部部分包含標(biāo)題和其他說(shuō)明信息。包括在<HEAD>...</HEAD>標(biāo)簽內(nèi)


          4.HTML文件的標(biāo)簽與元素介紹

          一個(gè)HTML文件是由一系列的元素標(biāo)簽組成的

          • 元素是HTML文件的重要主持部分,例如title(文件標(biāo)題)、img(圖像)、及table(表格)等。元素名不區(qū)分大小寫(xiě)。
          • HTML用標(biāo)簽來(lái)規(guī)定元素的屬性和它在文件中的位置

          HTML標(biāo)簽的介紹

          HTML的標(biāo)簽分為單獨(dú)出現(xiàn)的標(biāo)簽和成對(duì)出現(xiàn)的標(biāo)簽兩種

          • 成對(duì)標(biāo)簽僅對(duì)包含在其中的文件部分發(fā)生作用,例如<title>和</title>標(biāo)簽用于界定標(biāo)題元素的范圍,也就是說(shuō),<title>和</title>標(biāo)簽之間的部分是此HTML文件的標(biāo)題。
          • 單獨(dú)標(biāo)簽的格式未<元素名稱(chēng)>,其作用是在相應(yīng)的位置插入元素,例如<br>標(biāo)簽便是在該標(biāo)簽所在的位置插入一個(gè)換行符。

          說(shuō)明:在每個(gè)HTML標(biāo)簽,大、小寫(xiě)混寫(xiě)均可

          例如<HTML>、<html>和<Html>,其結(jié)果都是一樣的。

          HTML元素介紹

          • 概念

          當(dāng)用一組HTML標(biāo)簽將一段文字包含在中間時(shí),這段文字與包含文字的HTML標(biāo)簽被稱(chēng)之為一個(gè)元素

          • 應(yīng)用

          在所有HTML文件,最外層的元素是有<html>標(biāo)簽建立的。在<html>標(biāo)簽所建立的元素中,包含了練個(gè)主要的子元素,這兩個(gè)子元素是由<head>標(biāo)簽與<body>標(biāo)簽所建立的。<head>標(biāo)簽所建立的元素內(nèi)容為 文件標(biāo)題,而<body>標(biāo)簽所建立的元素內(nèi)容為文件主體。


          網(wǎng)頁(yè)文件命名

          1. *.htm或*.html
          2. 無(wú)空格
          3. 無(wú)特殊符號(hào)(例如 &符號(hào)),只可以有下劃線“_”,只可以為英文、數(shù)字
          4. 區(qū)分大小寫(xiě)
          5. 首頁(yè)文件名默認(rèn)為:index.htm或index.html

          4、HTML的編寫(xiě)方法

          1.手工直接編寫(xiě)

          記事本等,存成.htm或.html格式

          2.使用可視化HTML編輯器

          Frontpage、Dreamweaver等

          3.有web服務(wù)器(或稱(chēng)http服務(wù)器)一方實(shí)時(shí)動(dòng)態(tài)地生成。

          演示用記事本創(chuàng)建網(wǎng)頁(yè):

          5.保存為index.html文檔,用瀏覽器打開(kāi)如下

          標(biāo)位置

          當(dāng)我們給某一個(gè)盒子添加鼠標(biāo)事件監(jiān)聽(tīng)時(shí)(click、mouseover、mouseenter、mouseout等事件), 都一定會(huì)有以下四組值:

          event.pageX event.pageY

          event.screenX event.screenY

          event.clientX event.clientY

          event.offsetX event.offsetY

          event.pageY 表示鼠標(biāo)指針, 到頁(yè)面頂端的距離。IE6、7、8不兼容

          event.screenY 表示鼠標(biāo)指針, 到屏幕頂端的距離

          event.clientY 表示鼠標(biāo)指針, 到視口頂端的距離(視口就是當(dāng)前可視窗口)

          event.offsetY 表示鼠標(biāo)指針, 到盒子頂端的距離

          規(guī)律:

          1、當(dāng)頁(yè)面沒(méi)有卷動(dòng)的時(shí)候, pageY一定等價(jià)于clientY。或換句話說(shuō)pageY等價(jià)于clientY+頁(yè)面卷動(dòng)的值scrollTop。

          2、IE678不兼容pageX、pageY

          offsetX/Y指的不是距離你監(jiān)聽(tīng)的那個(gè)盒子左上角的距離, 而是指的你現(xiàn)在鼠標(biāo)指針?biāo)谖恢玫酱藭r(shí)最內(nèi)層盒子左上角的距離。

          getBoundingClientRect 用于獲取某個(gè)元素相對(duì)于視窗的位置集合。集合中有top, right, bottom, left等屬性。

          event.getBoundingClientRect().left;

          具體區(qū)別:

          event.pageX event.pageY

          event.screenX event.screenY

          event.clientX event.clientY

          event.offsetX event.offsetY

          圖解: https://www.cnblogs.com/Abner5/p/5855274.html?utm_source=itdadao&utm_medium=referral

          event.getBoundingClientRect()

          圖解: https://www.cnblogs.com/Songyc/p/4458570.html

          實(shí)例: 鼠標(biāo)點(diǎn)擊特效

          <!DOCTYPE html>
          <html>
          <head>
          <meta charset="UTF-8">
          <title></title>
          <style type="text/css">
          *{
          margin: 0;
          padding: 0;
          /*cursor: none;*/
          }
          img{
          width: 100px;
          position: absolute;
          left: 0;
          top: 0;
          
          }
          </style>
          
          </head>
          <body>
          <script type="text/javascript">
          var body = document.getElementsByTagName("body")[0];
          //如果想點(diǎn)擊body那么body必須設(shè)置寬高
          document.onclick = function(e){
          var ev = e || window.event;//事件對(duì)象的兼容
          
          var left = ev.clientX;
          var top = ev.clientY;
          
          var img = document.createElement("img");
          img.setAttribute("src","img/eagle.png");
          img.style.left = left + "px";
          img.style.top = top + "px";
          
          body.appendChild(img);
          
          //因?yàn)橥献D片圖片有一種神奇的魔力 也就是我們所有的默認(rèn)行為
          if(ev.preventDefault){
          ev.preventDefault();
          }else{
          ev.returnValue = false;
          }
          }
          </script>
          </body>
          </html>

          盒子位置

          任何一個(gè)元素都有offsetParent屬性和offsetLeft、offsetTop屬性

          對(duì)象.offsetParent獲得定位祖先元素, 一層一層往上找, 如果不存在就是body和絕對(duì)定位類(lèi)似

          對(duì)象.offsetLeft獲取到定位父元素距離左邊的值, 一層一層往上找, 如果不存在就是body

          對(duì)象.offsetTop獲取到定位父元素距離上邊的值, 一層一層往上找, 如果不存在就是body

          offsetWidth 盒子的寬度

          offsetHeight 盒子的高度

          document.documentElement.clientWidth 文檔的寬度

          document.documentElement.clientHeight 文檔的高度

          //可視區(qū)域?qū)捀?/p>

          //console.log(document.body.clientWidth);//個(gè)別瀏覽器

          //console.log(document.documentElement.clientWidth);//高版本

          var w = document.documentElement.clientWidth || document.body.clientWidth;

          var h = document.documentElement.clientHeight || document.body.clientHeight;

          實(shí)例1:獲取行內(nèi)樣式的寬度和高度

          <!DOCTYPE html>
          <html>
          <head>
          <meta charset="UTF-8">
          <title></title>
          <style type="text/css">
          *{
          margin: 0;
          padding: 0;
          }
          div{
          width: 600px;
          height: 300px;
          background-color: red;
          }
          </style>
          
          </head>
          <body>
          <div></div>
          <script type="text/javascript">
          var div = document.getElementsByTagName("div")[0];
          console.log(div.style.width);//操作的都是行內(nèi)
          
          //不兼容
          //高版本
          console.log(window.getComputedStyle(div).width)
          //低版本
          console.log(div.currentStyle.width)
          </script>
          </body>
          </html>
          實(shí)例2: 獲取盒子的寬度和高度
          <!DOCTYPE html>
          <html>
          <head>
          <meta charset="UTF-8">
          <title></title>
          <style type="text/css">
          *{
          margin: 0;
          padding: 0;
          }
          div{
          width: 600px;
          height: 300px;
          background-color: red;
          }
          </style>
          
          </head>
          <body>
          <div></div>
          <script type="text/javascript">
          var div = document.getElementsByTagName("div")[0];
          
          //盒子寬高 number類(lèi)型
          console.log(div.offsetWidth)
          console.log(div.offsetHeight)
          
          </script>
          </body>
          </html>

          實(shí)例3: 獲取盒子的位置

          <!DOCTYPE html>
          <html>
          <head>
          <meta charset="UTF-8">
          <title></title>
          <style type="text/css">
          *{
          margin: 0;
          padding: 0;
          }
          div{
          width: 600px;
          height: 300px;
          background-color: red;
          margin: 50px;
          padding: 50px;
          position: relative;
          }
          span{
          width: 100px;
          height: 100px;
          display: block;
          background-color: orange;
          }
          </style>
          
          </head>
          <body>
          <div>
          <span></span>
          </div>
          <script type="text/javascript">
          var div = document.getElementsByTagName("div")[0];
          var span = document.getElementsByTagName("span")[0];
          
          //盒子距離定位父元素(div)的位置
          console.log(span.offsetLeft)
          console.log(span.offsetTop)
          
          </script>
          </body>
          </html>

          實(shí)例4: 獲取盒子的凈位置

          <!DOCTYPE html>
          <html>
          <head>
          <meta charset="UTF-8">
          <title></title>
          <style type="text/css">
          *{
          margin: 0;
          padding: 0;
          }
          div{
          width: 600px;
          height: 300px;
          background-color: red;
          margin: 50px;
          padding: 50px;
          position: relative;
          }
          span{
          width: 500px;
          height: 88px;
          display: block;
          background-color: orange;
          }
          </style>
          
          </head>
          <body>
          <div>
          <span></span>
          </div>
          <script type="text/javascript">
          var div = document.getElementsByTagName("div")[0];
          var span = document.getElementsByTagName("span")[0];
          
          //我們?cè)趹屑虞d的時(shí)候就用到過(guò)凈位置
          //http://jquery.cuishifeng.cn/offset.html
          
          //凈位置就是盒子到body的位置
          //console.log(span.offsetTop)
          console.log(span.offsetParent);//定位復(fù)原素(div)
          
          //他返回一個(gè)信息集合
          console.log(span.getBoundingClientRect());//這個(gè)東西就可以得到span的所有位置關(guān)系
          
          //top和left值就是我們所需要的凈位置
          //我們知道我們無(wú)法直接獲取該盒子到body的位置 但是我們我們可以獲取該合資距離他有定位祖先元素的位置 那么這樣我們就可以一層一層網(wǎng)上找
          /*body
          div(定位)
          span
          
          span.offsetTop ->sapn.offsetParent
          div.offsetTop*/
          </script>
          </body>
          </html>

          實(shí)例5 編寫(xiě)凈位置函數(shù)

          <!DOCTYPE html>
          <html>
          <head>
          <meta charset="UTF-8">
          <title></title>
          <style type="text/css">
          *{
          margin: 0;
          padding: 0;
          }
          div{
          width: 600px;
          height: 300px;
          background-color: red;
          margin: 50px;
          padding: 50px;
          /*position: relative;*/
          }
          span{
          width: 500px;
          height: 88px;
          display: block;
          background-color: orange;
          }
          </style>
          </head>
          <body>
          <div>
          <span></span>
          </div>
          <script type="text/javascript">
          var div = document.getElementsByTagName("div")[0];
          var span = document.getElementsByTagName("span")[0];
          
          //方法一: 編寫(xiě)自定義函數(shù)
          console.log(pos(span)); //100
          
          function pos(obj){
          //用一個(gè)變量存儲(chǔ)盒子到頁(yè)面的初始值
          var left = obj.offsetLeft;
          //因?yàn)槎ㄎ桓负凶硬淮_定 所以用一個(gè)變量臨時(shí)存儲(chǔ) 后面替換
          var par = obj.offsetParent;
          while(par){
          left += par.offsetLeft;
          par = par.offsetParent;
          }
          return left;
          }
          
          //方法二: getBoundingClientRect里面包含了到頁(yè)面的left top值
          console.log(span.getBoundingClientRect().left) //100
          </script>
          </body>
          </html>

          拖拽三大事件

          鼠標(biāo)按下onmousedown

          鼠標(biāo)移動(dòng)onmousemove

          鼠標(biāo)抬起onmouseup

          實(shí)例: 鼠標(biāo)拖拽

          <!DOCTYPE html>
          <html lang="zh">
          <head>
          <meta charset="UTF-8" />
          <meta name="viewport" content="width=device-width, initial-scale=1.0" />
          <meta http-equiv="X-UA-Compatible" content="ie=edge" />
          <title>Document</title>
          <style type="text/css">
          *{
          margin: 0;
          padding: 0;
          }
          div{
          width: 200px;
          height: 200px;
          cursor: move;
          background-color: orange;
          /*元素如果可以拖拽他必定是定位元素*/
          position: absolute;
          left: 0;
          top: 0;
          }
          </style>
          </head>
          <body>
          <div>
          今天我們學(xué)習(xí)了拖拽 感覺(jué)老是講的就是一坨翔
          </div>
          
          <p>onmouseup</p>
          <script type="text/javascript">
          //拖拽三大事件
          //鼠標(biāo)按下onmousedown
          //鼠標(biāo)移動(dòng)onmousemove
          //鼠標(biāo)抬起onmouseup
          
          //獲取元素
          var div = document.getElementsByTagName("div")[0];
          
          div.onmousedown = function(e){
          var ev = e || window.event;
          //我按下時(shí)把鼠標(biāo)到盒子的位置求出來(lái)
          var startX = ev.offsetX;
          var startY = ev.offsetY;
          //div.onmousemove = function(e){//因?yàn)槲覀兿蜃笊辖且苿?dòng)那么盒子就不跟著我跑了
          document.onmousemove = function(e){
          var ev = e || window.event;
          //你移動(dòng)鼠標(biāo)那么盒子跟著你跑
          console.log(ev.clientX,ev.offsetX)
          
          console.log(ev.clientX - ev.offsetX)
          console.log(ev.clientY - ev.offsetY)
          
          
          //鼠標(biāo)移動(dòng)的位置就是鼠標(biāo)到可視區(qū)的位置-一開(kāi)始鼠標(biāo)按下的位置
          div.style.left = ev.clientX - startX + "px";
          div.style.top = ev.clientY - startY + "px";
          
          
          //div.style.left = ev.clientX + "px";
          //div.style.top = ev.clientY + "px";
          }
          //我們習(xí)慣把抬起也放入按下里面
          document.onmouseup = function(){
          document.onmousemove = null;//我抬起鼠標(biāo)之后不想讓他再跟著我跑了
          //所以就直接解除綁定
          document.onmouseup = null;
          }
          
          
          //如果拖拽圖片或者文字那么此時(shí)拖拽失效 所以我們需要清除默認(rèn)行為
          /*if(ev.preventDefault){
          ev.preventDefault()
          }else{
          ev.returnValue = false;
          }*/
          return false;//如果使用它必須放到最后
          }
          
          
          
          
          
          
          //基本上很完美了
          </script>
          </body>
          </html>
          實(shí)例: 鼠標(biāo)拖拽--防止拖出頁(yè)面
          <!DOCTYPE html>
          <html lang="zh">
          <head>
          <meta charset="UTF-8" />
          <meta name="viewport" content="width=device-width, initial-scale=1.0" />
          <meta http-equiv="X-UA-Compatible" content="ie=edge" />
          <title>Document</title>
          <style type="text/css">
          *{
          margin: 0;
          padding: 0;
          }
          div{
          width: 200px;
          height: 200px;
          cursor: move;
          background-color: orange;
          /*元素如果可以拖拽他必定是定位元素*/
          position: absolute;
          left: 0;
          top: 0;
          }
          </style>
          </head>
          <body>
          <div>
          今天我們學(xué)習(xí)了拖拽 感覺(jué)老是講的就是一坨翔
          </div>
          
          <p>onmouseup</p>
          <script type="text/javascript">
          //拖拽三大事件
          //鼠標(biāo)按下onmousedown
          //鼠標(biāo)移動(dòng)onmousemove
          //鼠標(biāo)抬起onmouseup
          
          //獲取元素
          var div = document.getElementsByTagName("div")[0];
          
          div.onmousedown = function(e){
          var ev = e || window.event;
          //我按下時(shí)把鼠標(biāo)到盒子(div)的位置求出來(lái)
          var startX = ev.offsetX;
          var startY = ev.offsetY;
          //div.onmousemove = function(e){//因?yàn)槲覀兿蜃笊辖且苿?dòng)那么盒子就不跟著我跑了
          document.onmousemove = function(e){
          var ev = e || window.event;
          //你移動(dòng)鼠標(biāo)那么盒子跟著你跑
          console.log(ev.clientX,ev.offsetX)
          
          console.log(ev.clientX - ev.offsetX)
          console.log(ev.clientY - ev.offsetY)
          
          var lDis = ev.clientX - startX;
          var rDis = ev.clientY - startY;
          
          if(rDis < 0){
          rDis = 0;
          }
          if(lDis < 0){
          lDis = 0;
          }
          
          if(lDis > document.documentElement.clientWidth-div.offsetWidth){
          lDis = document.documentElement.clientWidth-div.offsetWidth;
          }
          
          if(rDis > document.documentElement.clientHeight-div.offsetHeight){
          rDis = document.documentElement.clientHeight-div.offsetHeight;
          }
          
          //鼠標(biāo)移動(dòng)的位置就是鼠標(biāo)到可視區(qū)的位置-一開(kāi)始鼠標(biāo)按下的位置
          div.style.left = lDis + "px";
          div.style.top = rDis + "px";
          
          
          //div.style.left = ev.clientX + "px";
          //div.style.top = ev.clientY + "px";
          }
          //我們習(xí)慣把抬起也放入按下里面
          document.onmouseup = function(){
          document.onmousemove = null;//我抬起鼠標(biāo)之后不想讓他再跟著我跑了
          //所以就直接解除綁定
          document.onmouseup = null;
          }
          
          
          //如果拖拽圖片或者文字那么此時(shí)拖拽失效 所以我們需要清除默認(rèn)行為
          /*if(ev.preventDefault){
          ev.preventDefault()
          }else{
          ev.returnValue = false;
          }*/
          return false;//如果使用它必須放到最后
          }
          
          //基本上很完美了
          </script>
          </body>
          </html>

          特別注意:

          因?yàn)閳D片、文字選中是也會(huì)被拖拽, 這是一種默認(rèn)行為, 所以在鼠標(biāo)按下時(shí), 我們需要清除這種默認(rèn)行為。


          主站蜘蛛池模板: 日韩毛片基地一区二区三区| 亚洲国产国产综合一区首页| 加勒比精品久久一区二区三区| 久久99国产精一区二区三区| 国产精品一区二区久久乐下载| 日韩精品无码中文字幕一区二区| 精品伦精品一区二区三区视频 | 精品成人一区二区三区免费视频| 久久福利一区二区| 日韩精品人妻一区二区三区四区 | 在线观看精品一区| 亚洲熟妇av一区二区三区| 国产情侣一区二区三区| 亚洲欧美一区二区三区日产| 亚洲AV日韩AV天堂一区二区三区 | AA区一区二区三无码精片| 亚洲国产日韩一区高清在线 | 美女视频在线一区二区三区| 亚洲一区二区三区偷拍女厕| 国产福利一区二区在线视频| 波多野结衣中文一区| 国产拳头交一区二区| 亚洲av成人一区二区三区在线观看| 美女AV一区二区三区| 福利视频一区二区牛牛| 精品一区二区三区在线视频观看| 久久精品成人一区二区三区| 久久久久久人妻一区二区三区| 亚洲乱色熟女一区二区三区蜜臀| 麻豆精品人妻一区二区三区蜜桃| 国产对白精品刺激一区二区| 国产伦精品一区二区三区女| 国产精品一区二区久久精品涩爱| 国产手机精品一区二区| 国产视频一区二区| 一区二区三区免费高清视频| 国产AV一区二区三区无码野战| 一区二区三区精密机械| 日韩成人一区ftp在线播放| 国产在线精品一区二区| 国产丝袜美女一区二区三区|