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

  • 华为p50pocket电池容量(华为p50pocket电池消耗太快,什么原因)

    华为p50pocket电池容量(华为p50pocket电池消耗太快,什么原因)

  • 微信备用金怎么开通(微信备用金怎么开通额度)

    微信备用金怎么开通(微信备用金怎么开通额度)

  • 京东小程序不支持购买商品(京东小程序不支持购买是什么原因)

    京东小程序不支持购买商品(京东小程序不支持购买是什么原因)

  • 手机不动了屏幕还亮着(手机不动了屏幕还亮着关不了机)

    手机不动了屏幕还亮着(手机不动了屏幕还亮着关不了机)

  • 饿了么新用户首单立减的条件(饿了么新用户首单红包为什么用不了)

    饿了么新用户首单立减的条件(饿了么新用户首单红包为什么用不了)

  • qq音乐乐币可以赠送给好友吗(qq音乐乐币可以退款吗)

    qq音乐乐币可以赠送给好友吗(qq音乐乐币可以退款吗)

  • mate30是什么马达(mate30epro什么马达)

    mate30是什么马达(mate30epro什么马达)

  • 谷歌浏览器双击无法启动(谷歌浏览器双击关闭标签页)

    谷歌浏览器双击无法启动(谷歌浏览器双击关闭标签页)

  • 网易云音乐vip可以几个人用(网易云音乐vip可以登录几个手机)

    网易云音乐vip可以几个人用(网易云音乐vip可以登录几个手机)

  • al30华为是什么型号(lld_al30华为什么型号)

    al30华为是什么型号(lld_al30华为什么型号)

  • 小米手机音量自动变小(小米手机音量自己跳最大)

    小米手机音量自动变小(小米手机音量自己跳最大)

  • 手机突然黑屏但是有声音(手机突然黑屏但是可以使用怎么办)

    手机突然黑屏但是有声音(手机突然黑屏但是可以使用怎么办)

  • 电脑风扇不转开不了机是什么原因(电脑风扇不转开机黑屏)

    电脑风扇不转开不了机是什么原因(电脑风扇不转开机黑屏)

  • 华为手机锁屏新闻怎么关闭(华为手机锁屏新闻怎么取消)

    华为手机锁屏新闻怎么关闭(华为手机锁屏新闻怎么取消)

  • word怎么画表格线(word怎么画表格图)

    word怎么画表格线(word怎么画表格图)

  • 饿了么订单怎么要发票(饿了么订单怎么部分退款)

    饿了么订单怎么要发票(饿了么订单怎么部分退款)

  • 小米手机怎么显示帧数(小米手机怎么显示电量百分比)

    小米手机怎么显示帧数(小米手机怎么显示电量百分比)

  • 手机膜怎么贴1和2(手机膜怎么贴1和2包)

    手机膜怎么贴1和2(手机膜怎么贴1和2包)

  • 如何将wps中的红色波浪线去除(wps怎么变红字)

    如何将wps中的红色波浪线去除(wps怎么变红字)

  • 支付宝安全控件MAC版安装教程(支付宝安全控件是什么)

    支付宝安全控件MAC版安装教程(支付宝安全控件是什么)

  • 3 分钟掌握 Node.js 版本的区别(node -v)

    3 分钟掌握 Node.js 版本的区别(node -v)

  • 前端面试常问的题目(持续更新中)(前端面试常问的项目问题)

    前端面试常问的题目(持续更新中)(前端面试常问的项目问题)

  • python如何读取不同格式文件(python读取不到文件怎么办)

    python如何读取不同格式文件(python读取不到文件怎么办)

  • 应纳税额减征额包括哪些内容
  • 国税地税合并是成功的还是失败的
  • 货物已到发票未开具
  • 有形动产租赁属于应税劳务还是应税货物
  • 残保基金怎么算
  • 计提坏账所得税费用分录
  • 网约车有电子发票吗
  • 利润表研发费用包括哪些内容
  • 企业取得该项资产时实际发生的支出
  • 交易性金融资产的入账价值
  • 代扣代缴的车船税现金流量怎样分配
  • 银行承兑汇票怎么填写
  • 商品买一送一是打五折吗
  • 哪些是非累计带薪缺勤?
  • 利润表中列报项目
  • 劳务票一般开几个点
  • 土方运输费会计分录
  • 出口免税进项税额转出会计分录
  • 2020年安装费的增值税税率是多少
  • 如何区分纳税人和小规模纳税人
  • 增值税税率变动情况
  • 企业重组的所得税怎么算
  • 建筑业劳务分包怎样算税
  • 辞退员工会计分录
  • 计提专项借款本月利息会计分录
  • 因税负低补缴上年度增值税分录怎么写?
  • 怎么查银行账户余额
  • 合同资产和工程存货的区别
  • 发票有几个
  • 个人股权转给公司要交个税吗
  • 固定资产作为投资入股为何体现在资本公积
  • 应交税费贷方余额负数表示什么
  • 小型微利企业的企业所得税优惠政策
  • 厂房租金计入什么费用部门
  • 开启开发人员模式的方法
  • 文件被占用无法删除
  • 房地产企业按揭款到账后增值税
  • 装修房子监理
  • 拱门国家公园景点
  • php如何上传1个g以上的文件
  • 核电站弃置费用怎么算
  • node js 安装
  • 收付控制状态不正常
  • [Vue warn]: Error in render: “TypeError: Cannot read properties of undefined(reading“category1Name“
  • JS初识
  • 礼品赠送纳税标准
  • 银行流水要去哪里打
  • 税控盘费和服务费都可以减免吗
  • 买手机手续费怎么算的
  • 运输费用增值税怎么算
  • 小规模开票多少成一般纳税人
  • 印花税实际缴纳时计入
  • 28栏分次预缴税额是手动填写吗?
  • 员工出差报销补贴政策
  • 做个公司网站一般需要多少钱
  • 直接私募如何纳税
  • 所税税汇算补交怎么算
  • 支付宝企业账户在哪里查看
  • 固定资产折旧度怎么计算
  • 小企业会计准则调整以前年度费用分录
  • mysql经典书
  • sql存储过程实例有哪些
  • mysql第五章上机
  • win10无法删除文件夹没有权限
  • Linux操作系统分为
  • win7怎么进行系统还原
  • mac查看下载
  • sdstat.exe - sdstat是什么进程 有什么用
  • win10更新需要重启怎么办
  • windows8 defender
  • unity创建射线
  • Node.js中的construct构造函数
  • python可变参数和不可变参数
  • MaterialCheckBox
  • linux shell if -e
  • 用js改变css样式
  • 细说java
  • jqueryw3c
  • 军工企业销售模式
  • 国地税发展历程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设