jQuery實(shí)現(xiàn)移動(dòng)端懸浮拖動(dòng)效果
模擬手機(jī)端懸浮按鈕功能,自動(dòng)吸附兩邊,并且不能超過(guò)活動(dòng)區(qū)域,上下超過(guò)自動(dòng)吸附上或下


因?yàn)槭且苿?dòng)端端事件,需要調(diào)試到移動(dòng)端才可以看效果

以下是代碼
<!DOCTYPE html>
<html lang="en">
<head>
? ? <meta charset="UTF-8">
? ? <meta http-equiv="X-UA-Compatible" content="IE=edge">
? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">
? ? <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
? ? <title>Document</title>
? ? <style>
? ? ? ? .service_s {
? ? ? ? ? ? position: fixed;
? ? ? ? ? ? top: 0;
? ? ? ? ? ? left: 0;
? ? ? ? ? ? right: 0;
? ? ? ? ? ? bottom: 0;
? ? ? ? ? ? z-index: 1;
? ? ? ? ? ? display: none;
? ? ? ? }
? ? ? ? * {
? ? ? ? ? ? padding: 0;
? ? ? ? ? ? margin: 0;
? ? ? ? }
? ? ? ? .content {
? ? ? ? ? ? position: fixed;
? ? ? ? ? ? top: 10%;
? ? ? ? ? ? right: 3%;
? ? ? ? ? ? left: 3%;
? ? ? ? ? ? bottom: 10%;
? ? ? ? ? ? border: 1px solid #cccc77;
? ? ? ? ? ? background: #cccc77;
? ? ? ? ? ? display: flex;
? ? ? ? ? ? align-items: center;
? ? ? ? ? ? color: #fff;
? ? ? ? ? ? font-weight: 600;
? ? ? ? ? ? justify-content: center;
? ? ? ? }
? ? ? ? .service {
? ? ? ? ? ? position: fixed;
? ? ? ? ? ? top: 60%;
? ? ? ? ? ? right: 3%;
? ? ? ? ? ? height: 40px;
? ? ? ? ? ? width: 40px;
? ? ? ? ? ? background: #0baefd;
? ? ? ? ? ? z-index:9
? ? ? ? }
? ? </style>
</head>
<body>
?? ?<div class="content">活動(dòng)區(qū)域</div>
?? ?<div class="service">
? ? <!-- ? ?<div class="service_s"></div>--> ?<!-- ? ? ? ?遮罩層-->
</div>
<script>
? ? /**
? ? ?* ?nx ?ng 移動(dòng)坐標(biāo)
? ? ?* ? wxX wxY ?初始坐標(biāo)
? ? ?* ? ? ?isDown 阻止事件重復(fù)觸發(fā)
? ? ?* **/
? ? var nx, ny, wxX, wxY, isDown = false; ?//X Y坐標(biāo)
? ? // H5頁(yè)面
? ? $('.service').bind("touchstart", function (e) {
? ? //點(diǎn)擊觸發(fā)
? ? ? ? e.preventDefault();
? ? ? ? $(this).css("transform", 'translate(0)')
? ? ? ? var touch = event.targetTouches[0];
? ? ? ? wxX = touch.clientX;
? ? ? ? wxY = touch.clientY;
? ? ? ? // $('.service_s').show() ?//是否需要一個(gè)遮罩層
? ? ? ? isDown = true;
? ? ? ? $(document).bind("touchmove", function (ev) {
? ? ? ? //滑動(dòng)觸發(fā)
? ? ? ? ? ? e.preventDefault();
? ? ? ? ? ? if (!isDown) return
? ? ? ? ? ? var touch = event.targetTouches[0];
? ? ? ? ? ? ny = touch.clientY - $('.service').height() / 2
? ? ? ? ? ? nx = touch.clientX - $('.service').width() / 2
? ? ? ? ? ? $('.service').css('top', '' + ny / ($(window).height() / 100) + '%')
? ? ? ? ? ? $('.service').css('left', '' + nx / ($(window).width() / 100) + '%')
? ? ? ? })
? ? }).bind("touchend", function (e) {
? ? ?? ?//移開(kāi)觸發(fā)
? ? ? ? var touch = event.changedTouches[0];
? ? ? ? //判斷跟初始坐標(biāo)是否一致,一致則大概率為點(diǎn)擊事件
? ? ? ? if (wxX === touch.clientX && wxY === touch.clientY) {
? ? ? ? ? ? alert('點(diǎn)擊了')
? ? ? ? } else {
? ? ? ? //判斷所在位置,自動(dòng)吸附左右,如果超過(guò)上下活動(dòng)區(qū)域范圍則在左右的基礎(chǔ)上加上吸附上下
? ? ? ? ? ? if (nx < $(window).width() / 2) {
? ? ? ? ? ? ? ? if ($(window).height() * 0.9 - $('.service').height() < ny) {
? ? ? ? ? ? ? ? ? ? $('.service').css({"top": "90%", "transform": `translateY(${-($(this).height())}px)`})
? ? ? ? ? ? ? ? } else if ($(window).height() * 0.1 > ny) {
? ? ? ? ? ? ? ? ? ? $('.service').css({"top": "10%"})
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? $('.service').css({"left": "3%",})
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? if ($(window).height() * 0.9 - $('.service').height() < ny) {
? ? ? ? ? ? ? ? ? ? $('.service').css({
? ? ? ? ? ? ? ? ? ? ? ? "top": "90%",
? ? ? ? ? ? ? ? ? ? ? ? "left": "97%",
? ? ? ? ? ? ? ? ? ? ? ? "transform": `translate(${-($(this).height())}px,${-($(this).width())}px)`
? ? ? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? } else if ($(window).height() * 0.1 > ny) {
? ? ? ? ? ? ? ? ? ? $('.service').css({"top": "10%", "left": "97%", "transform": `translateX(${-($(this).width())}px)`})
? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? $('.service').css({"left": "97%", "transform": `translateX(${-($(this).width())}px)`})
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? isDown = false;
??? ??? ?//$('.service_s').hide()
? ? })
</script>
</body>
</html>以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- jquery實(shí)現(xiàn)表格行拖動(dòng)排序
- jQuery-ui插件sortable實(shí)現(xiàn)自由拖動(dòng)排序
- 針對(duì)后臺(tái)列表table拖拽比較實(shí)用的jquery拖動(dòng)排序
- jQuery拖動(dòng)元素并對(duì)元素進(jìn)行重新排序
- jQuery仿360導(dǎo)航頁(yè)圖標(biāo)拖動(dòng)排序效果代碼分享
- jquery實(shí)現(xiàn)的鼠標(biāo)拖動(dòng)排序Li或Table
- jquery對(duì)元素拖動(dòng)排序示例
- 基于JQuery的列表拖動(dòng)排序?qū)崿F(xiàn)代碼
- jQuery實(shí)現(xiàn)的簡(jiǎn)單對(duì)話框拖動(dòng)功能示例
- jquery+css實(shí)現(xiàn)移動(dòng)端元素拖動(dòng)排序
相關(guān)文章
js jquery獲取隨機(jī)生成id的服務(wù)器控件的三種方法
由于ASP.NET網(wǎng)頁(yè)運(yùn)行后,服務(wù)器控件會(huì)隨機(jī)生成客戶端id,jquery獲取時(shí)候不太好操作,下面為大家整理了三種方法,感興趣的朋友可以參考下哈,希望對(duì)大家有所幫助2013-07-07
全面解析jQuery中的$(window)與$(document)的用法區(qū)別
這篇文章主要介紹了jQuery中的$(window)與$(document)的用法區(qū)別,具體內(nèi)容大家可查看下文的詳細(xì)講解,感興趣的小伙伴們可以參考一下。2017-08-08
鋒利的jQuery 第三章章節(jié)總結(jié)的例子
改寫(xiě)《鋒利的jQuery》第三章章節(jié)總結(jié)的例子2010-03-03
jquery實(shí)現(xiàn)彈出層登錄和全屏層注冊(cè)特效
這篇文章主要為大家詳細(xì)介紹了jquery實(shí)現(xiàn)彈出層登錄和全屏層注冊(cè)特效,推薦給大家,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-08-08
JQuery跨Iframe選擇實(shí)現(xiàn)代碼
JQuery跨Iframe選擇實(shí)現(xiàn),下面也通過(guò)用DOM方法與jquery方法結(jié)合的方式實(shí)現(xiàn)了,需要的朋友可以參考下。2010-08-08
JQuery 獲取json數(shù)據(jù)$.getJSON方法的實(shí)例代碼
這篇文章介紹了JQuery 獲取json數(shù)據(jù)$.getJSON方法的實(shí)例代碼,有需要的朋友可以參考一下2013-08-08

