老师,我的有bug

我点击这两个按钮周围也会出现点击按钮的效果
order.vue
<template>
<div class="order">
<div class="order__price">
实付金额 <b>¥{{ caculations.price }}</b>
</div>
<div class="order__btn" @click="()=>handleSubmitClick(true)">提交订单</div>
</div>
<div class="mask" v-show="showMask" @click="()=>handleSubmitClick(false)">
<div class="mask__con" @click.stop>
<h3 class="mask__con__h3">确认要离开收银台?</h3>
<p class="mask__con__p">请尽快完成支付,否则将被取消</p>
<p class="mask__con__btns">
<span class="mask__con__btns--first" @click="()=>handleConfirmClick(true)"
>取消订单</span
>
<span class="mask__con__btns--last" @click="()=>handleConfirmClick(false)"
>确认支付</span
>
</p>
</div>
</div>
<Toast v-if="showToast" :message="showToastText" />
</template>
<script>
import {ref} from 'vue';
import { useCommonCartEffect } from "../../effects/cartEffects";
import { useRoute,useRouter } from "vue-router";
import {useStore} from 'vuex';
import { post } from "../../utils/request.js";
import Toast, { useToastEffect } from "../../components/Toast.vue";
export default {
name: "Order",
components:{Toast},
setup() {
const router=useRouter();
const route = useRoute();
const store=useStore();
const shopId = parseInt(route.params.id);
const showMask=ref(false);
const { caculations, shopName, list } = useCommonCartEffect(shopId);
const { showToast, showToastText,toastFn } = useToastEffect();
const handleSubmitClick=(boo)=>{
showMask.value=boo;
}
const handleConfirmClick = async (isCanceled) => {
const products = [];
for (let i in list.value) {
const product = list.value[i];
products.push({ id: parseInt(product._id), num: product.count });
}
try {
const result = await post("api/order", {
addressId: 1,
shopId,
shopName: shopName.value,
isCanceled,
products,
});
if (result?.errno == 0) {
store.commit('clearCartData',shopId)
router.push({ name: "Home" });
}
} catch (error) {
toastFn("下单失败");
}
};
return { showMask,handleSubmitClick,showToast, showToastText,caculations, handleConfirmClick };
},
};
</script>
<style lang="scss" scoped>
@import "../../style/variables.scss";
.order {
display: flex;
position: absolute;
bottom: 0;
right: 0;
left: 0;
height: 0.49rem;
line-height: 0.49rem;
&__price {
flex: 1;
background: $color-white;
font-size: 14px;
color: $content-fontcolor;
text-indent: 0.24rem;
}
&__btn {
width: 0.98rem;
background: $blue-bgcolor;
color: $color-white;
text-align: center;
}
}
.mask {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
&__con {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 3rem;
height: 1.57rem;
background: #fff;
border-radius: 0.04rem;
text-align: center;
&__h3 {
margin: 0.24rem 0 0.08rem 0;
font-size: 18px;
color: #333333;
}
&__p {
font-size: 14px;
color: #666666;
}
&__btns {
margin-top: 0.24rem;
span {
display: inline-block;
width: 0.8rem;
height: 0.32rem;
line-height: 0.32rem;
border-radius: 0.16rem;
border: 1px solid #4fb0f9;
}
&--first {
font-size: 14px;
color: #0091ff;
margin-right: 0.24rem;
}
&--last {
background: #4fb0f9;
font-size: 14px;
color: #ffffff;
}
}
}
}
</style>2
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小李
2023-08-01 17:04:50
同学你好,代码本身是没有问题的,出现这样的情况会涉及到以下几点情况:
1、浏览器的移动端模拟器并不是真机,我们往往在写完代码后需要使用真机进行测试。
2、因为我们使用的是rem它是被计算出来的值如0.8rem是显示的数字,但在浏览器中可能会出现0.800000001的情况这样就有可能会出现此类问题。
3、模拟器多机型测试可能会出现此类问题,这还是因为计算rem的原因,因为有一部分机型计算的基数是不同的。那么我们需要用一个标准来进行测试(按照开发的经验来说使用iphone进行测试最佳)
4、当前因为有圆角,js在获取元素时是获取的元素本身的宽高,并不是css最后呈现出来的宽高。所以当我们点击到圆角外面一点也有可能是点击到了元素上。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星