商品详情的轮播图交互,弹出层组件,弹出层交互
轮播图变化-》更新下标
点击图片-》大图预览
轮播图:
纠正一下上面的图片
大图预览:
下面开始写弹出层
这里我们参考uniapp官网
https://uniapp.dcloud.net.cn/component/uniui/uni-popup.html
现在我们简单完成了弹窗,后面我们开始具体完善,也就是弹出层的交互
我们的服务说明和收获地址都需要这个弹窗
// ServicePanel.vue <script setup lang="ts"> // </script> <template> <view class="service-panel"> <!-- 关闭按钮 --> <text class="close icon-close"></text> <!-- 标题 --> <view class="title">服务说明</view> <!-- 内容 --> <view class="content"> <view class="item"> <view class="dt">无忧退货</view> <view class="dd"> 自收到商品之日起30天内,可在线申请无忧退货服务(食品等特殊商品除外) </view> </view> <view class="item"> <view class="dt">快速退款</view> <view class="dd"> 收到退货包裹并确认无误后,将在48小时内办理退款, 退款将原路返回,不同银行处理时间不同,预计1-5个工作日到账 </view> </view> <view class="item"> <view class="dt">满88元免邮费</view> <view class="dd"> 单笔订单金额(不含运费)满88元可免邮费,不满88元, 单笔订单收取10元邮费 </view> </view> </view> </view> </template> <style lang="scss"> .service-panel { padding: 0 30rpx; border-radius: 10rpx 10rpx 0 0; position: relative; background-color: #fff; } .title { line-height: 1; padding: 40rpx 0; text-align: center; font-size: 32rpx; font-weight: normal; border-bottom: 1rpx solid #ddd; color: #444; } .close { position: absolute; right: 24rpx; top: 24rpx; } .content { padding: 20rpx 20rpx 100rpx 20rpx; .item { margin-top: 20rpx; } .dt { margin-bottom: 10rpx; font-size: 28rpx; color: #333; font-weight: 500; position: relative; &::before { content: ''; width: 10rpx; height: 10rpx; border-radius: 50%; background-color: #eaeaea; transform: translateY(-50%); position: absolute; top: 50%; left: -20rpx; } } .dd { line-height: 1.6; font-size: 26rpx; color: #999; } } </style> ```
// AddressPanel.vue <script setup lang="ts"> // </script> <template> <view class="address-panel"> <!-- 关闭按钮 --> <text class="close icon-close"></text> <!-- 标题 --> <view class="title">配送至</view> <!-- 内容 --> <view class="content"> <view class="item"> <view class="user">李明 13824686868</view> <view class="address">北京市顺义区后沙峪地区安平北街6号院</view> <text class="icon icon-checked"></text> </view> <view class="item"> <view class="user">王东 13824686868</view> <view class="address">北京市顺义区后沙峪地区安平北街6号院</view> <text class="icon icon-ring"></text> </view> <view class="item"> <view class="user">张三 13824686868</view> <view class="address">北京市朝阳区孙河安平北街6号院</view> <text class="icon icon-ring"></text> </view> </view> <view class="footer"> <view class="button primary"> 新建地址 </view> <view v-if="false" class="button primary">确定</view> </view> </view> </template> <style lang="scss"> .address-panel { padding: 0 30rpx; border-radius: 10rpx 10rpx 0 0; position: relative; background-color: #fff; } .title { line-height: 1; padding: 40rpx 0; text-align: center; font-size: 32rpx; font-weight: normal; border-bottom: 1rpx solid #ddd; color: #444; } .close { position: absolute; right: 24rpx; top: 24rpx; } .content { min-height: 300rpx; max-height: 540rpx; overflow: auto; padding: 20rpx; .item { padding: 30rpx 50rpx 30rpx 60rpx; background-size: 40rpx; background-repeat: no-repeat; background-position: 0 center; background-image: url(https://pcapi-xiaotuxian-front-devtest.itheima.net/miniapp/images/locate.png); position: relative; } .icon { color: #999; font-size: 40rpx; transform: translateY(-50%); position: absolute; top: 50%; right: 0; } .icon-checked { color: #27ba9b; } .icon-ring { color: #444; } .user { font-size: 28rpx; color: #444; font-weight: 500; } .address { font-size: 26rpx; color: #666; } } .footer { display: flex; justify-content: space-between; padding: 20rpx 0 40rpx; font-size: 28rpx; color: #444; .button { flex: 1; height: 72rpx; text-align: center; line-height: 72rpx; margin: 0 20rpx; color: #fff; border-radius: 72rpx; } .primary { color: #fff; background-color: #27ba9b; } .secondary { background-color: #ffa868; } } </style>
绑定
现在我们看一下效果
现在我们还有一个小问题没实现,点击X的时候关闭