婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > html隨意拖動(dòng)內(nèi)容位置的兩種實(shí)現(xiàn)方式

html隨意拖動(dòng)內(nèi)容位置的兩種實(shí)現(xiàn)方式

熱門標(biāo)簽:昌邑外呼系統(tǒng) 商丘電話自動(dòng)外呼系統(tǒng)怎么收費(fèi) 周口導(dǎo)航地圖標(biāo)注 地圖標(biāo)注地點(diǎn)下載 400電話辦理尚景 默納克系統(tǒng)外呼顯示inns 東莞人工外呼系統(tǒng)多少錢 朝陽(yáng)自動(dòng)外呼系統(tǒng) 400電話是在哪里申請(qǐng)

測(cè)試:chrome v80.0.3987.122 正常

兩種方式為:拖拽普通標(biāo)簽位置或拖拽canvas中的文本框位置

1. 實(shí)現(xiàn)鼠標(biāo)拖動(dòng)標(biāo)簽元素到任意位置

演示地址

css 代碼

#range {
    position: relative;
    width: 600px;
    height: 400px;
    margin: 10px;
    background-color: rgb(133, 246, 250);
}

.icon {
    position: absolute;
    height: 100px;
    width: 100px;
    cursor: move;
    background-color: #ff9204;
    user-select: none;
}

html代碼

<div id="range">
    <div class="icon">100*100</div>
</div>

js代碼

const main = document.getElementById('range');
const icon = document.querySelector('.icon');
let move = false;
let deltaLeft = 0, deltaTop = 0;

// 拖動(dòng)開(kāi)始事件,要綁定在被移動(dòng)元素上
icon.addEventListener('mousedown', function (e) {
    /*
    * @des deltaLeft 即移動(dòng)過(guò)程中不變的值
    */
    deltaLeft = e.clientX-e.target.offsetLeft;
    deltaTop = e.clientY-e.target.offsetTop;
    move = true;
})

// 移動(dòng)觸發(fā)事件要放在,區(qū)域控制元素上
main.addEventListener('mousemove', function (e) {
    if (move) {
        const cx = e.clientX;
        const cy = e.clientY;
        /** 相減即可得到相對(duì)于父元素移動(dòng)的位置 */   
        let dx = cx - deltaLeft
        let dy = cy - deltaTop

        /** 防止超出父元素范圍 */
        if (dx < 0) dx = 0
        if (dy < 0) dy = 0
        if (dx > 500) dx = 500
        if (dy > 300) dy = 300
        icon.setAttribute('style', `left:${dx}px;top:${dy}px`)
    }
})

// 拖動(dòng)結(jié)束觸發(fā)要放在,區(qū)域控制元素上
main.addEventListener('mouseup', function (e) {
    move = false;
    console.log('mouseup');
})

2. canvas繪制文本框,并實(shí)現(xiàn)鼠標(biāo)將其拖拽移動(dòng)到任意位置

css 代碼

.cus-canvas{
    background: rgb(50, 204, 243);
}

.input-ele{
    display: none;
    position: fixed;
    width: 180px;
    border: 0;
    background-color: #fff;
}

html 代碼

<div>
    <canvas id="canvas" class="cus-canvas"  width="800" height="600"></canvas>
    <input id="inputEle" class="input-ele"/>
</div>

js代碼

實(shí)現(xiàn)原理為記錄鼠標(biāo)移動(dòng)的位置,不斷的重繪矩形框和文本內(nèi)容

let mouseDown = false;
let deltaX = 0;
let deltaY = 0;
let text = 'hello'
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
const cw = canvas.width, ch = canvas.height;
const rect = {
    x: 20,
    y: 20,
    width: 150,
    height: 50
}

/** 設(shè)置文字和邊框樣式 */
ctx.font="16px Arial";
ctx.fillStyle = "#fff"; 
/** 設(shè)置為 center 時(shí),文字段的中心會(huì)在 fillText的 x 點(diǎn) */
ctx.textAlign = 'center';
ctx.lineWidth = '2';
ctx.strokeStyle = '#fff';

strokeRect()

const inputEle = document.getElementById('inputEle');
inputEle.onkeyup =  function(e) {
    if(e.keyCode === 13) {
        text = inputEle.value
        strokeRect()
        inputEle.setAttribute('style', `display:none`)
    }
}

canvas.ondblclick = function(e){ 
    inputEle.setAttribute('style', `left:${e.clientX}px;top:${e.clientY}px;display:block`);
    inputEle.focus();
}

canvas.onmousedown = function(e){ 
    /** 獲取視口左邊界與canvas左邊界的距離 加上 鼠標(biāo)點(diǎn)擊位置與canvas左邊界的長(zhǎng)度,這個(gè)值是相對(duì)移動(dòng)過(guò)程中不變的值 */
    deltaX=e.clientX - rect.x;
    deltaY=e.clientY - rect.y;
    mouseDown = true
};  

const judgeW = cw-rect.width, judgeH = ch-rect.height;

canvas.onmousemove = function(e){ 
    if(mouseDown) {
        /** 相減即可獲得矩形左邊界與canvas左邊界之間的長(zhǎng)度 */
        let dx = e.clientX-deltaX; 
        let dy = e.clientY-deltaY; 
        if(dx < 0) {
            dx = 0;
        } else if (dx > judgeW) {
            dx = judgeW;
        }
        if(dy < 0) {
            dy = 0;
        } else if(dy > judgeH) {
            dy = judgeH;
        }
        rect.x = dx;
        rect.y = dy; 
        strokeRect()
    }
};  
canvas.onmouseup = function(e){ 
    mouseDown = false
};  

/** 清除指定區(qū)域 */
function clearRect() {
    ctx.clearRect(0, 0, cw, ch)
}

/** 畫矩形 */
function strokeRect() {
    clearRect()

    /** 這里如果不調(diào)用 beginPath 歷史的矩形會(huì)重新被繪制 */
    ctx.beginPath() 
    ctx.rect(rect.x, rect.y, rect.width, rect.height)
    ctx.stroke();
    // 設(shè)置字體內(nèi)容,以及在畫布上的位置
    ctx.fillText(text, rect.x + 70, rect.y + 30);
}

歡迎交流 Github

到此這篇關(guān)于html隨意拖動(dòng)內(nèi)容位置的兩種實(shí)現(xiàn)方式的文章就介紹到這了,更多相關(guān)html隨意拖動(dòng)內(nèi)容內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

標(biāo)簽:福建 那曲 湖南 銅陵 阿拉善盟 揭陽(yáng) 沈陽(yáng) 健身房

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《html隨意拖動(dòng)內(nèi)容位置的兩種實(shí)現(xiàn)方式》,本文關(guān)鍵詞  html,隨意,拖動(dòng),內(nèi)容,位置,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《html隨意拖動(dòng)內(nèi)容位置的兩種實(shí)現(xiàn)方式》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于html隨意拖動(dòng)內(nèi)容位置的兩種實(shí)現(xiàn)方式的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲人亚洲人成电影网站色| 国产精品色哟哟网站| 一区二区三区影院| 91精品国产综合久久久久久| 国产91色综合久久免费分享| 日韩国产欧美三级| 亚洲三级免费观看| 日韩一二三区视频| 在线日韩av片| 粉嫩13p一区二区三区| 久久精品99国产精品日本| 亚洲久草在线视频| 国产欧美日韩精品一区| 日韩欧美一二三四区| 欧美日韩国产小视频在线观看| 99国产麻豆精品| 粉嫩av一区二区三区粉嫩| 国内精品国产三级国产a久久 | 毛片一区二区三区| 强制捆绑调教一区二区| 日韩av一二三| 午夜激情综合网| 性久久久久久久| 综合电影一区二区三区| 欧美激情一区二区三区不卡| 制服丝袜在线91| 粉嫩久久99精品久久久久久夜 | 欧美成人艳星乳罩| 国产精品剧情在线亚洲| 国产精品美女久久久久久久| 欧美成人精品1314www| 欧美日韩精品一二三区| 色综合色狠狠综合色| 97se亚洲国产综合自在线不卡| 九色综合狠狠综合久久| 国产最新精品免费| 成人黄色软件下载| 91亚洲国产成人精品一区二区三| 成人高清视频在线观看| 色又黄又爽网站www久久| 成人免费观看视频| 亚洲午夜三级在线| 无码av免费一区二区三区试看| 亚洲午夜av在线| 亚洲成人福利片| 麻豆精品国产91久久久久久 | 欧美一级高清大全免费观看| 久久综合色8888| 中文字幕在线不卡一区二区三区| 亚洲国产日韩综合久久精品| 美女任你摸久久 | 亚洲国产成人va在线观看天堂| 日本不卡视频一二三区| 成人免费不卡视频| 欧美群妇大交群中文字幕| 26uuu国产日韩综合| 一区二区视频免费在线观看| 麻豆91精品视频| 91免费视频网址| 欧美一三区三区四区免费在线看| 久久久久综合网| 亚洲国产另类av| 国产一区二区三区国产| 91网站黄www| 久久日韩粉嫩一区二区三区 | 国产精品视频免费| 麻豆精品蜜桃视频网站| 国产欧美一区二区三区在线老狼| 亚洲美女免费视频| 韩国欧美一区二区| 欧美日韩成人在线一区| 久久久99久久| 日本最新不卡在线| 欧美羞羞免费网站| 久久精品日韩一区二区三区| 夜夜嗨av一区二区三区中文字幕| 国产一区二区三区在线观看免费| 国产日韩欧美一区二区三区综合| 日本不卡在线视频| 91麻豆产精品久久久久久| 欧美不卡在线视频| 日日夜夜一区二区| 日本乱人伦aⅴ精品| 中文字幕免费不卡在线| 国产中文字幕精品| 欧美午夜电影网| 中文字幕乱码久久午夜不卡| 乱一区二区av| 国产乱理伦片在线观看夜一区| 91福利视频在线| 国产精品污www在线观看| 激情图片小说一区| 欧美在线一二三四区| 一区二区三区在线观看动漫 | 国产精品日韩精品欧美在线| 国产精品88888| 亚洲精品一区在线观看| 国产麻豆精品theporn| 欧美不卡在线视频| 久久99深爱久久99精品| 欧美va亚洲va香蕉在线| 奇米色一区二区| 亚洲人成在线播放网站岛国| 成人app网站| 国产精品麻豆网站| 色婷婷av一区二区三区软件 | 欧美精品v日韩精品v韩国精品v| 亚洲国产综合91精品麻豆| 91理论电影在线观看| 亚洲午夜在线电影| 欧美一区二区啪啪| 日韩高清在线电影| 2021中文字幕一区亚洲| 国产精品白丝jk黑袜喷水| 亚洲精品一区二区三区在线观看| 国产一二精品视频| 国产喷白浆一区二区三区| 国产精品视频一二三区| 一本一道久久a久久精品综合蜜臀| 国产精品色噜噜| 99热精品国产| 亚洲丶国产丶欧美一区二区三区| 欧美精品一二三| 久久精品国产**网站演员| 国产肉丝袜一区二区| av电影在线观看不卡| 午夜在线电影亚洲一区| 精品理论电影在线| 成人午夜av在线| 亚洲国产综合91精品麻豆| 欧美成人性福生活免费看| av一区二区三区在线| 亚洲同性gay激情无套| 色哟哟国产精品| 免费在线视频一区| 欧美日韩在线不卡| 美女视频黄久久| 亚洲风情在线资源站| 欧美一区二视频| 久久99精品久久久久久久久久久久| 日韩限制级电影在线观看| 久久91精品久久久久久秒播| 国产精品乱码妇女bbbb| 一本大道久久a久久精品综合| 日韩和的一区二区| 亚洲人一二三区| 在线欧美日韩精品| 久久综合狠狠综合久久激情| 成人一区二区三区中文字幕| 日本中文在线一区| 欧美激情中文字幕| 91精品国产综合久久久久久久| 国产麻豆日韩欧美久久| 免费av成人在线| www精品美女久久久tv| av午夜一区麻豆| 国产成人精品aa毛片| 亚洲天堂免费在线观看视频| 国产精品美日韩| 欧美精品丝袜久久久中文字幕| 91亚洲精品久久久蜜桃| 三级成人在线视频| 亚洲欧美日韩成人高清在线一区| 一本色道综合亚洲| 97精品久久久久中文字幕| 欧美精品日韩综合在线| 国产一区二区在线免费观看| 青青草国产精品亚洲专区无| 国产欧美一区二区三区网站| 欧美一区二区三区在线观看| 福利电影一区二区| 无吗不卡中文字幕| 日本一区二区综合亚洲| 欧美日韩1区2区| 国产精品自在在线| 精品写真视频在线观看| 亚洲午夜影视影院在线观看| 综合亚洲深深色噜噜狠狠网站| 国产欧美一区二区精品性色| 欧美亚洲高清一区| 欧美三级乱人伦电影| www.亚洲免费av| 成人av动漫在线| 麻豆精品新av中文字幕| 香蕉久久夜色精品国产使用方法| 欧美岛国在线观看| 久久久美女艺术照精彩视频福利播放| 精品成人在线观看| 91超碰这里只有精品国产| 欧美高清dvd| 在线亚洲+欧美+日本专区| 欧美群妇大交群中文字幕| 三级影片在线观看欧美日韩一区二区| 青青草国产成人av片免费| 激情综合色综合久久| 久久精品国产一区二区三区免费看| 国产一区在线观看视频| 日韩一区二区三| 日韩一区二区免费在线电影| 精品久久久久香蕉网|