overseas/components/specs/index.vue

107 lines
2.2 KiB
Vue

<template>
<!-- 产品参数 -->
<view>
<view class="specs" :class="specsInfo.show === true ? 'on' : ''">
<view class="title">商品参数<text class="iconfont icon-guanbi5" @click="closeSpecs"></text></view>
<view class="list">
<view class="item acea-row" v-for="(item,index) in specsInfo.params" :key="index">
<view class="name">{{item.name}}</view>
<view class="val">{{item.value}}</view>
</view>
</view>
<view class="bnt" @click="closeSpecs">完成</view>
<slot name="bottom"></slot>
</view>
<view class="mask" @touchmove.prevent :hidden="specsInfo.show === false" @click="closeSpecs"></view>
</view>
</template>
<script>
export default {
props: {
specsInfo: {
type: Object,
default: () => {}
},
},
data() {
return {};
},
mounted() {},
methods: {
closeSpecs(){
this.$emit('myevent');
}
}
}
</script>
<style scoped lang="scss">
.specs{
position: fixed;
bottom: 0;
width: 100%;
left: 0;
background-color: #fff;
z-index: 280;
border-radius: 16rpx 16rpx 0 0;
transform: translate3d(0, 100%, 0);
transition: all .3s cubic-bezier(.25, .5, .5, .9);
padding-bottom: 22rpx;
padding-bottom: calc(22rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
padding-bottom: calc(22rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
.title{
font-size: 32rpx;
color: #282828;
text-align: center;
margin: 38rpx 0 36rpx 0;
position: relative;
font-weight: bold;
.iconfont{
position: absolute;
right: 30rpx;
top:0;
font-size: 36rpx;
font-weight: normal;
color: #999999;
}
}
.list{
height: 750rpx;
margin: 0 30rpx;
color: #999999;
overflow-x: hidden;
overflow-y: auto;
.item{
padding: 30rpx 0;
border-bottom: 1rpx solid #eee;
.name{
width: 160rpx;
margin-right: 10rpx;
word-break: break-all;
}
.val{
width: 510rpx;
word-break: break-all;
color: #282828;
}
}
}
.bnt{
width: 690rpx;
height: 86rpx;
text-align: center;
line-height: 86rpx;
border-radius: 43rpx;
background-color: var(--view-theme);
font-size: 30rpx;
color: #fff;
margin: 0 auto;
}
}
.specs.on{
transform: translate3d(0, 0, 0);
}
</style>