位置: 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页面间传数据)

  • excel小数点取整(Excel小数点取整数公式)

    excel小数点取整(Excel小数点取整数公式)

  • 苹果xs照相偏黄如何调节(iphonex拍照偏黄)

    苹果xs照相偏黄如何调节(iphonex拍照偏黄)

  • 抖音测评是什么意思(抖音视频测评)

    抖音测评是什么意思(抖音视频测评)

  • 华为nova5pro息屏显示怎么设置(华为nova5pro灭屏显示)

    华为nova5pro息屏显示怎么设置(华为nova5pro灭屏显示)

  • bah3-w09是什么型号(bah3 w09是什么型号)

    bah3-w09是什么型号(bah3 w09是什么型号)

  • 微信多人视频最多几个人(微信多人视频最小化了怎么开出来)

    微信多人视频最多几个人(微信多人视频最小化了怎么开出来)

  • qq封几次就会被永久封(qq封多少次号会封永久)

    qq封几次就会被永久封(qq封多少次号会封永久)

  • 八代i5和十代i5的区别(八代i5和十代i5哪个好)

    八代i5和十代i5的区别(八代i5和十代i5哪个好)

  • 电脑屏幕反过来了怎么调整过来(电脑屏幕反过来了,按哪键正过来)

    电脑屏幕反过来了怎么调整过来(电脑屏幕反过来了,按哪键正过来)

  • 小米蓝牙耳机有一个没声音是怎么回事(小米蓝牙耳机有定位追踪吗)

    小米蓝牙耳机有一个没声音是怎么回事(小米蓝牙耳机有定位追踪吗)

  • ssusb电接口是什么(usb接口的ss什么意思)

    ssusb电接口是什么(usb接口的ss什么意思)

  • ps图片镜像翻转快捷键(ps图片镜像翻转文字不变)

    ps图片镜像翻转快捷键(ps图片镜像翻转文字不变)

  • 微信怎样设置拒绝进群(微信怎样设置拒接对方消息)

    微信怎样设置拒绝进群(微信怎样设置拒接对方消息)

  • 拼多多打款补偿怎样领(拼多多打款补偿预扣税20%)

    拼多多打款补偿怎样领(拼多多打款补偿预扣税20%)

  • 手机网易云音乐下载的歌曲在哪个文件夹(手机网易云音乐怎么在车上播放)

    手机网易云音乐下载的歌曲在哪个文件夹(手机网易云音乐怎么在车上播放)

  • 华为p20振动怎么调大小(华为p20pro震动)

    华为p20振动怎么调大小(华为p20pro震动)

  • 京东账号忘了怎么找回(京东账号忘了怎么还白条)

    京东账号忘了怎么找回(京东账号忘了怎么还白条)

  • 抖音刷不出来了怎么回事(抖音忽然刷不出来了)

    抖音刷不出来了怎么回事(抖音忽然刷不出来了)

  • 用于加密机制的协议是(用于加密机制的协议有哪些)

    用于加密机制的协议是(用于加密机制的协议有哪些)

  • 电话拉黑了打电话提示什么(电话拉黑了打电话会响吗)

    电话拉黑了打电话提示什么(电话拉黑了打电话会响吗)

  • 卡特迈国家公园里的棕熊,阿拉斯加州 (© imageBROKER/SuperStock)(卡特迈国家公园地图)

    卡特迈国家公园里的棕熊,阿拉斯加州 (© imageBROKER/SuperStock)(卡特迈国家公园地图)

  • jar启动指定JDK/JRE 安装路径教程(jar启动指定启动类)

    jar启动指定JDK/JRE 安装路径教程(jar启动指定启动类)

  • python用户如何自定义异常(python怎么自己写函数)

    python用户如何自定义异常(python怎么自己写函数)

  • 2023小规模纳税人所得税税收优惠政策
  • 企业税收收入怎么计算
  • 以前年度遗留的个税怎么处理
  • 业务招待费和广告费扣除标准
  • 政府预算年度
  • 退税发票误勾选确认
  • 季报现金流量表是必报表吗
  • 什么情况下做暂估
  • 银行结息收入怎么做分录
  • 哪些固定资产不需要计提折旧
  • 股权变更前账务怎么处理
  • 作废的发票还需要装订在凭证里吗
  • 劳务报酬代扣代缴个人所得税怎么做账
  • 销售废旧物资账务处理
  • 什么叫增值税还是所得税
  • 资询服务收入算服务还是劳务
  • 个税本期收入是应发还是实发
  • 应付票据发生与偿还怎么计算?
  • 单位预算支出包括哪些
  • w11怎么更新
  • 事业单位个税手续费返还需要上缴财政吗
  • 忘记excel工作表保护密码怎么办
  • 公司财务账目不符怎么办
  • php解析xml文件
  • eclipse 4.19
  • win7系统还原系统保护关闭
  • 固定资产核销是资产损失吗
  • 权益法投资收益在年末确认
  • 应对怯场的方法
  • flex布局子元素height100
  • 实现php框架系列功能
  • 暂估纳税调增了账务怎么处理
  • 政府会计制度下财务会计包含几要素
  • 发票章需要注销吗
  • 【机器学习】9种回归算法及实例总结,建议学习收藏
  • elasticsearch基本概念
  • jsp标签大全
  • 企业研发费用加计扣除比例
  • 年末结转利润分配各明细账户
  • 上个月未开票本月怎么算
  • 税控盘没有报税处理这个选项
  • java中public修饰什么
  • php中isset函数作用
  • vue 生产环境
  • LVS负载均衡群集的常用调度算法包含哪几种?
  • SQL Server 2016的数据库对象有那些?
  • echarts怎么引入
  • 资本公积和盈余公积都与利润有关
  • 预付款项为什么这么多
  • 报销发票啥意思
  • 企业不计提固定资产损失
  • 固定资产卡片账是什么
  • 新成立的小规模纳税人什么时候报税
  • 公司注销开户许可证是不是要上交
  • 旅游费计入什么会计科目
  • 销项税和进项税的借贷方向
  • 企业入库申报什么意思
  • 对公账户进出账常识
  • 公对私 预付款 税
  • win8怎么一键关机
  • windows xp 注册表故障恢复
  • 电脑开机时进入安全模式怎么退出
  • 如何禁用mac内置键盘
  • win7笔记本触摸板怎么开启
  • javascript的语法在哪一项中规定
  • 黑客需要学哪些
  • python 归并排序算法
  • 第一章初见第二章决定
  • 百度贴吧上传图片大小
  • vue router routes
  • shell中echo命令详解
  • linux中的shell命令
  • js 实现一个new
  • jquery旋转动画
  • 养老待遇核定表在哪办理
  • 单位税额怎么算出来的
  • 上海市浦东新区公租房
  • 税务局如何查询社保明细
  • 宁波个人税务查询网
  • 浙江省地方税务局通用定额发票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设