js 判断双手指滑动 应该说是:在vue中如何实现 对div 双手指的放大和缩小功能。

JavaScript012

js 判断双手指滑动 应该说是:在vue中如何实现 对div 双手指的放大和缩小功能。,第1张

绑定触摸事件 touchstart touchmove

监听触摸事件event.touches中触摸点的数量

在touchmove事件做判定,如果 event.touches.length==2 则记录此次两点之间的距离:Math.sqrt(Math.pow((x2-x1),2)+Math.pow((y2-y1),2))

在手指移动过程中针对每一次的两点距离进行比较。如果相对上次较大则放大,否则缩小。div的缩放通过transform:scale(x)进行控制

bootstrap是封装好的框架,需要某些功能只需调用相应的组件就可以,但有些还是没加入,比如幻灯轮播触屏左右滑动手势就不支持,大家用的设备基本是触屏的了,能用滑动交互在小屏幕上体验会更好,那么如何实现呢?一个比较简单的方法是增加一个滑动手势js插件:hammer.js,网上有很多cdn调用地址,像//cdn.bootcss.com/hammer.js/2.0.8/hammer.min.js,我们在head中加载一下然后再通过javascript把swipe功能调用出来就可以了。下面是幻灯片的原始html代码

<div data-ride="carousel" class="carousel slide" id="carousel-example-generic">

<ol class="carousel-indicators">

<li class="" data-slide-to="0" data-target="#carousel-example-generic"></li>

<li data-slide-to="1" data-target="#carousel-example-generic" class="active"></li>

<li data-slide-to="2" data-target="#carousel-example-generic" class=""></li>

</ol>

<div role="listbox" class="carousel-inner">

<div class="item">

<img alt="First slide" src="http://ibootstrap-file.b0.upaiyun.com/lorempixel.com/1600/500/sports/1/default.jpg" data-holder-rendered="true">

</div>

<div class="item active">

<img alt="Second slide [1140x500]" src="http://ibootstrap-file.b0.upaiyun.com/lorempixel.com/1600/500/sports/2/default.jpg" data-holder-rendered="true">

</div>

<div class="item">

<img alt="Third slide [1140x500]" src="http://ibootstrap-file.b0.upaiyun.com/lorempixel.com/1600/500/sports/3/default.jpg" data-holder-rendered="true">

</div>

</div>

<a data-slide="prev" role="button" href="#carousel-example-generic" class="left carousel-control">

<span aria-hidden="true" class="glyphicon glyphicon-chevron-left"></span>

<span class="sr-only">Previous</span>

</a>

<a data-slide="next" role="button" href="#carousel-example-generic" class="right carousel-control">

<span aria-hidden="true" class="glyphicon glyphicon-chevron-right"></span>

<span class="sr-only">Next</span>

</a>

</div>

关键的步骤来了,我们需要写一个javascript命令调用hammer.js中的swipe功能

<script>

$(function(){

var myElement= document.getElementById('carousel-example-generic')

var hm=new Hammer(myElement)

hm.on("swipeleft",function(){

$('#carousel-example-generic').carousel('next')

})

hm.on("swiperight",function(){

$('#carousel-example-generic').carousel('prev')

})

})

</script>

div的id一定要对应,上面是carousel-example-generic,javascript中也要这个,否则不能实现。

需要注意的是,jquery版本最好是1.9版本的jquery-1.9.1.min.js,否则可能在电脑上可以实现手势滑动,而在手机上无法触摸滑动

javascript命令这个是关键,不会写不会改就不好玩了。做个标记,方便日后查询