国产精品爱久久久久久久小说,女人扒开腿让男人桶到爽 ,亚洲欧美国产双大乳头,国产成人精品综合久久久久,国产精品制服丝袜无码,免费无码精品黄av电影,黑色丝袜无码中中文字幕,乱熟女高潮一区二区在线

            JavaScript拖拽效果

            2020-3-16    前端達(dá)人

            要實(shí)現(xiàn)JavaScript的拖拽效果,首先我們需要知道事件對象幾個有關(guān)于實(shí)現(xiàn)拖拽效果的坐標(biāo)

            獲取事件對象 var e = e || window.event;



            根據(jù)需求需要用到的拖拽效果的坐標(biāo)



            clientX:鼠標(biāo)點(diǎn)擊位置相對于瀏覽器可視區(qū)域的水平偏移量(不會計(jì)算水平滾動的距離)



            clientY:鼠標(biāo)點(diǎn)擊位置相對于瀏覽器可視區(qū)域的垂直偏移量(不會計(jì)算垂直滾動條的距離)



            offsetX:鼠標(biāo)點(diǎn)擊位置相對于觸發(fā)事件對象的水平距離



            offsetY:鼠標(biāo)點(diǎn)擊位置相對于觸發(fā)事件對象的垂直距離



            pageX:鼠標(biāo)點(diǎn)擊位置相對于網(wǎng)頁左上角的水平偏移量,也就是clientX加 上水平滾動條的距離



            pageY:鼠標(biāo)點(diǎn)擊位置相對于網(wǎng)頁左上角的垂直平偏移量,也就是clientY加上垂直滾動條的距離



            offsetLeft:如果父元素中有定位的元素,那么就返回距離當(dāng)前元素最近的定位元素邊緣的距離



            offsetTop:如果父元素中沒有定位元素,那么就返回相對于body左邊緣距離



            獲取元素自身大小:offsetWidth和offsetHeight / clientWidth和clientHeight



            offsetWidth和clientWidth的區(qū)別:就是offsetWidth包含邊框,clientWidth不包含邊框



            實(shí)現(xiàn)拖拽需要用到:clientWidth、clientHeight、clientX、clientY、offsetLeft、offsetTop


            首先搭建好html結(jié)構(gòu)和css樣式


             <div class="wrap">
                    <div class="cover">
            
                    </div>
                </div>

            * {
                        margin: 0;
                        padding: 0;
                    }
            
                    .wrap {
                        width: 500px;
                        height: 500px;
                        border: 1px solid deeppink;
                        position: relative;
                        margin: 50px auto;
                    }
            
                    .cover {
                        width: 150px;
                        height: 150px;
                        background: rgba(200, 7, 99, 0.5);
                        display: none;
                        position: absolute;
                        left: 0;
                        top: 0;
                        cursor: move;
                    }
            
            注意:需要給大盒子和小盒子進(jìn)行定位:子絕父相
            接下來就JavaScript代碼

            <script>
                var wrap = document.querySelector(".wrap");
                var cover = document.querySelector(".cover");
                wrap.onmouseover = function() {
                    cover.style.display = "block";
                    wrap.onmousemove = function(e) {
                        var e = e || window.event;
                        var x1 = e.clientX;
                        var y1 = e.clientY;
            //這里獲取到的e.clientX和e.clientY,可以看情況和需求改為e.pageX和e.pageY             
                        var halfWidth = cover.clientWidth / 2;
                        var halfHeight = cover.clientHeight / 2;
                        var wrapLeft = wrap.offsetLeft;
                        var wrapTop = wrap.offsetTop;
                        var l = x1 - wrapLeft - halfWidth;
                        var t = y1 - wrapTop - halfHeight;
            
                        if (l <= 0) {
                            l = 0
                        }
                        if (l >= wrap.clientWidth - cover.clientWidth) {
                            l = wrap.clientWidth - cover.clientWidth
                        }
                        if (t <= 0) {
                            t = 0
                        }
                        if (t >= wrap.clientHeight - cover.clientHeight) {
                            t = wrap.clientHeight - cover.clientHeight
                        }
                        cover.style.left = l + "px";
                        cover.style.top = t + "px"
                    }
                }
                wrap.onmouseout = function() {
                    cover.style.display = "none";
                }
            </script>
            

              var halfWidth = cover.clientWidth / 2;
                        var halfHeight = cover.clientHeight / 2;
                        var wrapLeft = wrap.offsetLeft;
                        var wrapTop = wrap.offsetTop;
                        var l = x1 - wrapLeft - halfWidth;
                        var t = y1 - wrapTop - halfHeight;
                        //限制范圍
                         if (l <= 0) {
                            l = 0
                        }
                        if (l >= wrap.clientWidth - cover.clientWidth) {
                            l = wrap.clientWidth - cover.clientWidth
                        }
                        if (t <= 0) {
                            t = 0
                        }
                        if (t >= wrap.clientHeight - cover.clientHeight) {
                            t = wrap.clientHeight - cover.clientHeight
                        }
            
            注意:這里要限制小盒子在大盒子之間移動的范圍,左上角的限制,當(dāng)小盒子超出范圍時,將0賦值給l和t。右下角小盒子移動的范圍在大盒子寬度減去小盒子的寬度。
            其中為了使鼠標(biāo)一直處于小盒子(cover)的最中間,需要減去小盒子寬度的一半。
            再減去大盒子距離頁面左邊的邊距和上邊的邊距就可以得到坐標(biāo)

            只要鼠標(biāo)移入大盒子中,就能直接拖拽小盒子,并且鼠標(biāo)一直處于小盒子的最中間。這樣便完成了簡單的拖拽效果。

            20200315200118747.png
            20200315200118747.png


            ————————————————
            版權(quán)聲明:本文為CSDN博主「_kaze」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
            原文鏈接:https://blog.csdn.net/luffy_999/article/details/104884538

            日歷

            鏈接

            個人資料

            存檔

            主站蜘蛛池模板: 午夜无码区在线观看亚洲| 亚洲成人aa| 欧美日本免费一区二区三区| 黄色片一级| 国产欧美一区二区精品性色| 欧美大浪妇猛交饥渴大叫| 欧美综合自拍亚洲图久青草| 天堂va欧美va亚洲va老司机| 神马视频| 国产精品亚洲а∨天堂123| 亚洲黄视频| 中文字幕精品无| 亚洲日本中文字幕乱码在线电影| 欧美人与动交视频在线观看| 国产一级做a爱免费视频| 波多野结衣绝顶大高潮| 久久精品成人亚洲另类欧美| 天堂网a| 超碰2021| 少妇性l交大片| 国产欧美日韩va另类影音先锋| 黄色精品在线| 亚洲高清日韩专区精品| 免费女女同性 av网站| 欧洲色综合| 911国产在线| 国产99久久久久久免费看| 国产高清在线观看| 日日操夜夜操狠狠操| 成人免费ā片在线观看| 无码成a∧人片在线播放| 欧美三级欧美一级| 欧美36p| 麻花传媒在线观看免费| 午夜亚洲理论片在线观看| 欧美精品一区二区成人| 日本熟妇色xxxxx欧美老妇| 成人无码男男gv在线观看网站| 黑人借宿巨大中文字幕| www.超碰在线.com| 性开放的女人aaa片|