茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    使用js實現(xiàn)的簡單拖拽效果
    來源:易賢網(wǎng) 閱讀:1405 次 日期:2015-03-19 14:50:32
    溫馨提示:易賢網(wǎng)小編為您整理了“使用js實現(xiàn)的簡單拖拽效果”,方便廣大網(wǎng)友查閱!

    本文給大家分享的是使用純JS實現(xiàn)的簡單的拖拽效果的插件,算是對自己javascript學(xué)習(xí)的一個小的檢驗,如果小伙伴們需要復(fù)雜的拖拽效果,還是考慮jQuery的draggable吧,更成熟一些。

    前端開發(fā)的時候,有好多地方用到拖拽效果,當(dāng)然 是個不錯的選擇,but 我是個打破砂鍋問到底的人,抽點時間用js小小的實現(xiàn)了類似的插件,話不多說。

     first: html和css

    代碼如下:

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title></title>

    <style>

    * {

    margin: 0;

    padding: 0;

    }

    #div1 {

    position: absolute;

    width: 100px;

    height: 100px;

    cursor: move;

    background-color: red;

    }

    </style>

    </head>

    <body>

    <div id="div1">

    </div>

    </body>

    </html>

    使用js實現(xiàn)的簡單拖拽效果 三聯(lián)

    now,先把主要算法實現(xiàn)一下:

    代碼如下:

    <script>

    window.onload = function () {

    //獲取需要拖拽的div

    var div1 = document.getElementById("div1");

    //添加鼠標按下事件

    div1.onmousedown = function (evt) {

    var oEvent = evt || event;

    //獲取按下鼠標到div left top的距離

    var distanceX = oEvent.clientX - div1.offsetLeft;

    var distanceY = oEvent.clientX - div1.offsetTop;

    //添加doc滑動時間

    document.onmousemove = function (evt) {

    var oEvent = evt || event;

    //重新計算div的left top值

    var left = oEvent.clientX - distanceX;

    var top = oEvent.clientY - distanceY;

    //left 當(dāng)小于等于零時,設(shè)置為零 防止div拖出document之外

    if (left <= 0) {

    left = 0;

    }

    //當(dāng)left 超過文檔右邊界 設(shè)置為右邊界

    else if (left >= document.documentElement.clientWidth - div1.offsetWidth) {

    left = document.documentElement.clientWidth - div1.offsetWidth;

    }

    if (top <= 0) {

    top = 0;

    }

    else if (top >= document.documentElement.clientHeight - div1.offsetHeight) {

    top = document.documentElement.clientHeight - div1.offsetHeight;

    }

    //重新給div賦值

    div1.style.top = top + "px";

    div1.style.left = left + "px";

    }

    //添加鼠標抬起事件

    div1.onmouseup = function () {

    //清空事件

    document.onmousemove = null;

    div1.onmouseup = null;

    }

    }

    }

    </script>

    yeah,使用面向?qū)ο髮崿F(xiàn)一下

    代碼如下:

    <style>

    * {

    margin:0;

    padding:0;

    }

    #div1 {

    width: 100px;

    height: 100px;

    background-color: red;

    }

    #div2 {

    background-color:yellow;

    width:100px;

    height:100px;

    }

    </style>

    <div id="div1"></div>

    <div id="div2"></div>

    js Draggle class:

    代碼如下:

    function Drag(id) {

    this.div = document.getElementById(id);

    if (this.div) {

    this.div.style.cursor = "move";

    this.div.style.position = "absolute";

    }

    this.disX = 0;

    this.disY = 0;

    var _this = this;

    this.div.onmousedown = function (evt) {

    _this.getDistance(evt);

    document.onmousemove = function (evt) {

    _this.setPosition(evt);

    }

    _this.div.onmouseup = function () {

    _this.clearEvent();

    }

    }

    }

    Drag.prototype.getDistance = function (evt) {

    var oEvent = evt || event;

    this.disX = oEvent.clientX - this.div.offsetLeft;

    this.disY = oEvent.clientY - this.div.offsetTop;

    }

    Drag.prototype.setPosition = function (evt) {

    var oEvent = evt || event;

    var l = oEvent.clientX - this.disX;

    var t = oEvent.clientY - this.disY;

    if (l <= 0) {

    l = 0;

    }

    else if (l >= document.documentElement.clientWidth - this.div.offsetWidth) {

    l = document.documentElement.clientWidth - this.div.offsetWidth;

    }

    if (t <= 0) {

    t = 0;

    }

    else if (t >= document.documentElement.clientHeight - this.div.offsetHeight) {

    t = document.documentElement.clientHeight - this.div.offsetHeight;

    }

    this.div.style.left = l + "px";

    this.div.style.top = t + "px";

    }

    Drag.prototype.clearEvent = function () {

    this.div.onmouseup = null;

    document.onmousemove = null;

    }

    at last:最終實現(xiàn):

    代碼如下:

    window.onload = function () {

    new Drag("div1");

    new Drag("div2");

    }

    效果如下:

    以上所述就是本文的全部內(nèi)容了,希望能對大家更加熟練的掌握javascript有所幫助。

    更多信息請查看IT技術(shù)專欄

    更多信息請查看腳本欄目
    易賢網(wǎng)手機網(wǎng)站地址:使用js實現(xiàn)的簡單拖拽效果
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇剩?/div>

    2026上岸·考公考編培訓(xùn)報班

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)