jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jquery实现一些小动画二大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

jquery实现一些小动画二

jquery实现拖拽功能

jquery实现一些小动画二

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4   <title>Document</title>
  5   <Meta charset="UTF-8">
  6   <Meta name="viewport" content="width=device-width,initial-scale=1.0">
  7   <Meta http-equiv="X-UA-Compatible" content="ie=edge">
  8   <link rel="stylesheet" href="./reset.css">
  9   <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
 10   <style>
 11     html,body{
 12       width:100%;
 13       height:100%;
 14     }
 15     .dialogmark{
 16       position:fixed;
 17       top:0;
 18       left:0;
 19       z-index:1000;
 20       width:100%;
 21       height:100%;
 22       BACkground: rgba(0,0.3);
 23     }
 24     .dialogBox{
 25       position:fixed;
 26       width:300px;
 27       height:400px;
 28       z-index: 1001;
 29       BACkground:#fff;
 30       overflow:hidden;
 31     }
 32     .dialogBox h3.title{
 33       height:35px;
 34       line-height:35px;
 35       padding: 0 10px;
 36       BACkground: #DDD;
 37       cursor: move;
 38       position: relative;
 39       user-SELEct: none;
 40     }
 41     .dialogBox h3 i {
 42       position: absolute;
 43       top:50%;
 44       right: 10px;
 45       margin-top: -10px;
 46       width: 20px;
 47       height: 20px;
 48       font-size: 16px;
 49       line-height: 20px;
 50       text-align: center;
 51       font-style: normal;
 52       cursor: pointer;
 53     }
 54   </style>
 55 </head>
 56 <body>
 57     <div class="dialogmark"></div>
 58     <div class="dialogBox">
 59       <h3 class="title">
 60         标题
 61         <i>X</i>
 62       </h3>
 63       <div class="content">
 64       </div>
 65     </div>
 66     <script>
 67       $(function(){
 68 
 69         /*
 70           拖拽的js实现
 71         */
 72         var $dialogmark = $(".dialogmark"), 73             $dialogBox = $(".dialogBox"), 74             $h1 = $dialogBox.children(.title), 75             $i = $h1.children(i), 76             HW = $("body").innerWidth(), 77             HH = $("body").innerHeight(), 78             BoxW = $dialogBox.outerWidth(), 79             BoxH = $dialogBox.outerHeight();
 80 
 81         $i.click(function(){
 82           $dialogBox.hide(300)
 83         })
 84 
 85           //计算盒子位置
 86           var calPosition = function(){
 87             //获取当前窗口的大小
 88             $dialogBox.css({
 89               top:(HH - BoxH)/2,
 90               left:(HW - BoxW)/2
 91             })
 92           }
 93           calPosition()
 94           var dragstart = function(event){
 95             var mX = event.clientX,//获取原始鼠标位置X位置
 96                 mY = event.clientY,//获取原始鼠标位置Y位置
 97                 BoxSX = $dialogBox.position().left, 98                 BoxSY =$dialogBox.position().top;
 99               //这里可以利用传递参数,也可以给元素赋值自定义属性保存变量值
100             $(document).on("@H_521_151@mousemove",{mX,mY,BoxSX,BoxSY},dragmovE)
101           }
102           var dragmove = function(event){
103             var {mX,BoxSY}= event.data,104                 mMX = event.clientX,//移动鼠标的当前X位置
105                 mMY = event.clientY,//移动鼠标的当前Y位置
106                 mcX = mMX - mX,//鼠标改变X位置
107                 mcY = mMY - mY,//鼠标改变Y位置
108                 BoxcX = BoxSX + mcX,//盒子需要改变的X位置
109                 BoxcY = BoxSY + mcY,//盒子需要改变的Y位置
110                 minL = 0,//盒子最小移动X距离
111                 minT = 0,//盒子最小移动Y距离
112                 maxL = HW - BoxW,//盒子最大移动X距离
113                 maxT = HH - BoxH;//盒子最大移动Y距离
114 
115               BoxcX = BoxcX < minL?@H_521_151@minL:(BoxcX>@H_521_151@maxL?@H_521_151@maxL:BoxcX)  //X边界判断
116               BoxcY = BoxcY < minT?@H_521_151@minT:(BoxcY>@H_521_151@maxT?@H_521_151@maxT:BoxcY)  //Y边界判断
117               $dialogBox.css({
118                 left:BoxcX,119                 top:BoxcY
120               })
121           }
122           var dragend = function(){
123               //快速拖拽存在鼠标丢失焦点问题
124               $(document).off("@H_521_151@mousemove",dragmovE)
125           }
126           $h1.mousedown(dragstart)
127           $(document).mouseup(dragend)
128       })@H_769_1247@ 
 
View Code

 

效果图:

  

jquery实现一些小动画二

 

注意:

  拖拽中存在的问题:    

    在拖拽中存在一个问题,就是如果鼠标拖拽过快,盒子是需要计算罪行位置的,但是
    计算速度跟不上鼠标的移动速度,导致鼠标离开了盒子,那么此时鼠标的任何事件都与盒子
    无关了,即鼠标抬起不会触发接触绑定事件,鼠标移动也不会触发定义在盒子的鼠标移动事件

  解决思路:   

    1、使用setCapture与releaseCapture方法。注意google浏览器不支持这两个方法      将鼠标与当前元素绑在一起,无论你移动多快,我都绑定在一起        this.setCapture()     将鼠标与当前元素解绑。与setCapture相反       this.releaseCapture()     2、鼠标移动在快也脱离不了document即当前文档,因此,       我们可以给document绑定mousemove方法,那么鼠标在文档中移动都会触发mosemove绑定的事件        注意:重新绑定document时,存在this指向(如果原本用了this)问题(解决思路:使用bind方法

大佬总结

以上是大佬教程为你收集整理的jquery实现一些小动画二全部内容,希望文章能够帮你解决jquery实现一些小动画二所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。