位置: IT常识 - 正文

微信小程序解决view点击事件穿透地图map触发markertap(微信小程序解决跨域问题)

编辑:rootadmin
微信小程序解决view点击事件穿透地图map触发markertap

推荐整理分享微信小程序解决view点击事件穿透地图map触发markertap(微信小程序解决跨域问题),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:微信小程序解决全局数据共享的方案是?,微信小程序解决原生组件在最高层问题,微信小程序解决异步问题,微信小程序解决http请求,微信小程序解决全局数据共享的方案是?,微信小程序解决原生组件在最高层问题,微信小程序解决全局数据共享的方案是?,微信小程序解决跨域问题,内容如对您有帮助,希望把文章链接给更多的朋友!

微信小程序中使用map组件,ios手机中点击地图上的view,会触发底下的markertap,只要底下如果有marker点的话。

这就造成了用户体验不是很好。

然后无意间我发现点击能滑动的scroll-view反而不会触发底下的markertap,就等于是一个不穿透的容器。我就在想是不是view也可以换成scroll-view,然后防止穿透点击,答案是:可以。

但是体验还是不太好,因为scroll-view会滑动,所以按钮里面的内容也会滑动,不是最佳的解决方法。于是,我就想到可以用透明的可滑动的scroll-view放在上层作为隐形按钮,下层放普通的按钮样式,这回真正的解决了ios的bug。

一、地图上覆盖的子组件代码

wxml代码

<view class="box"> <swiper circular> <swiper-item wx:for="{{switchArr}}"> <view class="container" catchtap="switchItem" data-index="{{index}}" data-name="{{item.name}}"> <view class="card"> <view class="content"> <view class="icon"> <image src="{{item.imageUrl}}" mode="aspectFill"></image> </view> <view class="bt"> <view class="title">{{item.name}}</view> </view> </view> </view> </view> <scroll-view class="scroll-view" scroll-y="true" catchtap="switchItem" data-index="{{index}}" data-name="{{item.name}}"> <view style="height:100vh;"></view> </scroll-view> </swiper-item> </swiper> <view class="cancelSwitch" style="top:{{statusHeight+3}}px" catchtap="cancelSwitch"> <text>退出页面</text> </view></view>

less代码

/* pages/subPack/otherAnimation/index.wxss */page { box-sizing: border-box; font-family: sans-serif;}.cancelSwitch{ position: absolute; left: 40rpx; display: flex; align-items: center; justify-content: center; width: 210rpx; height: 60rpx; line-height: 60rpx; border-radius: 30rpx; color:#fff; background-color: #d94251; image{ width: 35rpx; height: 30rpx; margin-left: 3rpx; }}.box{ position: fixed; z-index: 10000; min-height: 100vh; background-color: #1a1c22; width: 100%; swiper { width: 100%; height: 100vh; swiper-item { width: 100%; height: 100vh; display: flex; flex-direction: column; justify-content: center; align-items: center; .container { position: relative; display: flex; justify-content: space-around; align-items: center; width: 710rpx; .card { width: 100%; margin: 20px; padding: 40px 30px; border-radius: 40px; background-color: #20252a; border: 4rpx solid #ffefa1; box-shadow: -0px -0px 10px #ffefa1; .imgBx { position: relative; text-align: center; } .content { text-align: center; display: flex; flex-wrap: wrap; justify-content: center; align-items: center; .icon { padding: 20px; margin-top: 15px; height: 100%; width: 120%; border-radius: 40px; color: #32a3b1; font-size: 16px; overflow: hidden; text-decoration: none; background: #20252a; box-shadow: 13px 13px 26px #181c20, -13px -13px 26px #282e35; image { width: 100%; border-radius: 10px; } } .bt { display: inline-block; padding: 10px 20px; margin-top: 45px; border-radius: 40px; color: #ffefa1; font-size: 16px; text-decoration: none; background: #20252a; box-shadow: 20px 20px 41px #161a1d, -20px -20px 41px #2a3037; &:hover { background: #20252a; box-shadow: inset 20px 20px 41px #161a1d, inset -20px -20px 41px #2a3037; } } } &:hover { background: #20252a; box-shadow: inset 20px 20px 41px #161a1d, inset -20px -20px 41px #2a3037; } } } .scroll-view{ width: 750rpx; background-color: #fff; position:absolute; height: 1000rpx; opacity: 0; } } }}

js代码

const app = getApp();Component({ data: { statusHeight: app.globalData.statusHeight, buttonCanUse:true }, properties: { switchArr:{ type:Array, value:[] } }, methods: { switchItem(e) { if(!this.data.buttonCanUse){ return } this.setData({ buttonCanUse:false }) this.triggerEvent('switchItem', { index:e.currentTarget.dataset.index, name:e.currentTarget.dataset.name }) this.setData({ buttonCanUse:true }) }, cancelSwitch() { this.triggerEvent('cancelSwitch') }, }})二、小程序效果

map效果:map上面有很多点位 这些点位都是可以点击进去其他页面的点

微信小程序解决view点击事件穿透地图map触发markertap(微信小程序解决跨域问题)

 切换旅游路线的子组件:是覆盖在map之上的一个容器 z-index:10000

点击就可以切换到路线

三、问题所在

点击这个全景路线的时候 如果点击的位置下方有一个marker点,则他触发两个点击事件,即同时切换路线 同时进入marker点链接的路径

四、解决思路

利用可滑动的scroll-view不会穿透的特性,在子组件上面插入隐形scroll-view,设置点击事件,(用户以为点击的是子组件,实际上点击的是scroll-view,这是一个通用的思路),然后将scroll-view大小覆盖子组件

五、代码分析

核心代码:

<view class="container" catchtap="switchItem" data-index="{{index}}" data-name="{{item.name}}"> <view class="card"> <view class="content"> <view class="icon"> <image src="{{item.imageUrl}}" mode="aspectFill"></image> </view> view class="bt"> <view class="title">{{item.name}}</view> </view> </view> </view></view> <scroll-view class="scroll-view" scroll-y="true" catchtap="switchItem" data-index="{{index}}" data-name="{{item.name}}"> <view style="height:100vh;"></view></scroll-view>.scroll-view{ width: 750rpx; background-color: #fff; position:absolute; height: 1000rpx; opacity: 0;}

 <view class="container" catchtap="switchItem" data-index="{{index}}" data-name="{{item.name}}">是子组件里面每个路线的容器,点击可以切换路线

我在同级写了一个scroll-view 设置宽度750rpx撑满屏幕 然后高度1000rpx盖住整个路线容器 并且将透明度改为零(即opacity:0)

然后在wxml中 设置scroll-y=“true” 在scroll-view里面放一个高度100vh的盒子,让整个scroll-view可滑动,因为scroll-y,所以是上下滑动。

这里为什么不设置scroll-x=“true” 然后在横向上滑动 是因为 我本身用了swiper组件 左右滑动切换,用scroll-x的话,两个滑动事件会冲突,会影响原有的滑动感受。然后在scroll-view上

然后在scroll-view上添加原本写在container上面的点击的点击事件,让用户点的实际上是scroll-view

这样就可以保证ios系统手机点击不会穿透了。

本文链接地址:https://www.jiuchutong.com/zhishi/288122.html 转载请保留说明!

上一篇:nvm 安装node失败问题记录(nvm安装及全局配置node)

下一篇:Web 页面之间传递参数的几种方法(html页面间传数据)

  • 建设手机银行怎么解绑原来的设备(建设手机银行怎么解绑原来的手机)

    建设手机银行怎么解绑原来的设备(建设手机银行怎么解绑原来的手机)

  • 小米10青春版是曲面屏手机吗(小米10青春版是屏幕指纹吗)

    小米10青春版是曲面屏手机吗(小米10青春版是屏幕指纹吗)

  • 11pro怎么开启wifi6(11pro怎么开启nfc)

    11pro怎么开启wifi6(11pro怎么开启nfc)

  • 手机能当鼠标用吗(手机可以当成鼠标用吗)

    手机能当鼠标用吗(手机可以当成鼠标用吗)

  • 快手上的玩转盘是什么意思(快手新出的转盘在哪)

    快手上的玩转盘是什么意思(快手新出的转盘在哪)

  • oppo定位手机丢失查找网址(oppo定位手机丢失)

    oppo定位手机丢失查找网址(oppo定位手机丢失)

  • 平板连接网络却用不了(为什么平板电脑连接上网络却无法上网)

    平板连接网络却用不了(为什么平板电脑连接上网络却无法上网)

  • 华为p40pro自带膜要不要撕掉(p40 pro 自带膜)

    华为p40pro自带膜要不要撕掉(p40 pro 自带膜)

  • 手机芯片内部是什么(手机芯片在手机的哪个部位?)

    手机芯片内部是什么(手机芯片在手机的哪个部位?)

  • 行程结束后滴滴还录音吗(行程结束后滴滴夸提示行程被应答)

    行程结束后滴滴还录音吗(行程结束后滴滴夸提示行程被应答)

  • 苹果se是不是5g手机(iphone se是不是5g)

    苹果se是不是5g手机(iphone se是不是5g)

  • mate30双系统怎么切换(mate30双系统怎么查看)

    mate30双系统怎么切换(mate30双系统怎么查看)

  • 电车欠压以后充不上电(电车子欠压以后充不进去电)

    电车欠压以后充不上电(电车子欠压以后充不进去电)

  • 怎么让ppt图片一个一个出来(怎么让ppt图片一部分变透明)

    怎么让ppt图片一个一个出来(怎么让ppt图片一部分变透明)

  • 手机4g网络提速方法(手机4g网络提速怎么设置)

    手机4g网络提速方法(手机4g网络提速怎么设置)

  • 华为nova3i支持5g网络吗(华为nova3i支持电信高清通话吗)

    华为nova3i支持5g网络吗(华为nova3i支持电信高清通话吗)

  • 京东退款后京豆返还吗(京东退款后京豆有效期)

    京东退款后京豆返还吗(京东退款后京豆有效期)

  • 宝马dcs是什么意思(宝马dcs是什么意思啊)

    宝马dcs是什么意思(宝马dcs是什么意思啊)

  • iqooneo855有nfc吗(iqooneo855nfc功能在哪里打开)

    iqooneo855有nfc吗(iqooneo855nfc功能在哪里打开)

  • 58同城怎么设置简历保密(58同城怎么设置已经找到工作了)

    58同城怎么设置简历保密(58同城怎么设置已经找到工作了)

  • 华为手机能定位苹果手机吗(华为手机能定位小米手机位置吗)

    华为手机能定位苹果手机吗(华为手机能定位小米手机位置吗)

  • 苹果手机录像4k和1080的区别(苹果手机录像4k24 30 60是什么意思)

    苹果手机录像4k和1080的区别(苹果手机录像4k24 30 60是什么意思)

  • 如何恢复qq的重要数据(如何恢复qq的重命名文件)

    如何恢复qq的重要数据(如何恢复qq的重命名文件)

  • rdd的特点(rdd的特点有哪些)

    rdd的特点(rdd的特点有哪些)

  • Joe是一款优雅功能强大的Typecho主题功能多上手快

    Joe是一款优雅功能强大的Typecho主题功能多上手快

  • 税控盘开票软件访问数据库错误
  • 高新技术企业享受15%税率优惠的条件
  • 一般纳税人企业所得税是多少
  • 外轮供应公司远洋运输供应公司的退税申报?
  • 个人工程款收入不纳税
  • 一般纳税人是什么型企业
  • 未开票收入次月如何申报增值税
  • 收到进项发票是什么凭证
  • 非本公司员工如何申报个税
  • 结转本期会计分录
  • 无名称发票可以抵扣吗
  • 建总账的注意事项
  • 收入费用类科目结转至本年利润
  • 土地证是商业用地
  • 目前建筑里面税金总共包括几部分
  • 支付的租金计入什么会计科目
  • 开具电费发票说明
  • 工程款发票备注栏项目名称
  • 房产交易会涉及哪些费用
  • 税务实名认证怎么认证
  • 附加税的计税依据是销项减进项吗
  • 接受捐赠收入要计入企业所得税应纳税所得额吗
  • 理财赎回利息怎么做账分录
  • 应征增值税不含税销售额和免税销售额
  • 呆账怎么写会计分录
  • 企业之间承兑汇票贴现违法吗知乎
  • 职工领取企业年金税收优惠
  • 固定资产净值如何清零
  • 营改增后还要交营业税吗
  • 公司控股的公司下子公司有哪些
  • 微信收入与支出是怎么算的
  • 冲暂估成本会计分录怎么做
  • kjournald是什么进程
  • 笔记本屏幕坏点几个算正常
  • Fort Rock Valley Historical Homestead博物馆,俄勒冈 (© Prisma by Dukas Presseagentur GmbH/Alamy)
  • php实现微信发红包的方法
  • 总分账与明细账关系
  • 大雾笼罩的早晨
  • 生产成本制造费用怎么算
  • 布莱顿小镇介绍
  • thinkphp怎么运行
  • 材料成本差异怎么结转
  • python 统计学包
  • 变量与数据
  • php image
  • 代扣代缴应付职工薪酬账务处理
  • 普通发票两联都盖章吗
  • 会计单据可以用什么代替
  • 商业汇票如何申请操作
  • 一般纳税人报税流程详细操作
  • 服务业暂估成本怎样做账?
  • 债权投资是什么会计科目
  • 加计扣除的会计要素
  • 上年度凭证录错会计凭证录错了怎么修改
  • 企业的期间费用包括制造费用吗
  • 人们对餐饮业的要求
  • 房屋租赁费交什么税
  • 生产企业下单就做收入没交货怎么做账
  • 房地产开发企业土地增值税怎么计算
  • 如何在境外银行开户
  • 配置windows server 2008
  • vmmem进程是什么
  • win8如何更改账户名
  • icg是什么文件
  • win7系统设置只让安装有证书的软件
  • win7系统出现问题怎么修复
  • window10添加虚拟网卡
  • javascript that
  • js 和html
  • javascript中cookie
  • 获取外网ip地址有什么用
  • node .js
  • node socket hang up
  • jQuery版AJAX简易封装代码
  • js基于什么
  • jquery跨域请求有哪些方式
  • 税务局领取发票后怎么操作
  • 纳税人对税务机关做出的征税行为不服的,必须
  • 上饶市税务局咨询电话
  • 如何取消个人所得税预约
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设