jinjian1.1/pages/index/pickerColor.vue

143 lines
2.8 KiB
Vue

<template>
<view v-show="isShow">
<view class="shade" @tap="hide">
<view class="pop">
<view class="list flex_col" v-for="(item,index) in colorArr" :key="index">
<view v-for="(v,i) in item" :key="i" :style="{'backgroundColor':v}" :data-color="v"
:data-index="index" :data-i="i" :class="{'active':(index==pickerArr[0] && i==pickerArr[1])}"
@tap.stop="picker"></view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
name: 'picker-color',
props: {
isShow: {
type: Boolean,
default: false,
},
bottom: {
type: Number,
default: 0,
}
},
data() {
return {
colorArr: [
['#000000', '#111111', '#222222', '#333333', '#444444', '#666666', '#999999', '#CCCCCC', '#EEEEEE',
'#FFFFFF'
],
['#ff0000', '#ff0033', '#ff3399', '#ff33cc', '#cc00ff', '#9900ff', '#cc00cc', '#cc0099', '#cc3399',
'#cc0066'
],
['#cc3300', '#cc6600', '#ff9933', '#ff9966', '#ff9999', '#ff99cc', '#ff99ff', '#cc66ff', '#9966ff',
'#cc33ff'
],
['#663300', '#996600', '#996633', '#cc9900', '#a58800', '#cccc00', '#ffff66', '#ffff99', '#ffffcc',
'#ffcccc'
],
['#336600', '#669900', '#009900', '#009933', '#00cc00', '#66ff66', '#339933', '#339966', '#009999',
'#33cccc'
],
['#003366', '#336699', '#3366cc', '#0099ff', '#000099', '#0000cc', '#660066', '#993366', '#993333',
'#800000'
]
],
pickerColor: '',
pickerArr: [-1, -1]
};
},
methods: {
picker(e) {
let data = e.currentTarget.dataset;
this.pickerColor = data.color;
this.pickerArr = [data.index, data.i];
this.$emit("callback", this.pickerColor);
},
hide() {
this.$emit("callback", '');
},
},
}
</script>
<style scoped>
.shade {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: rgba(0, 0, 0, 0.5);
z-index: 10080;
display: flex;
justify-content: center;
align-items: center
}
.pop {
border-radius: 8px;
background-color: #fff;
z-index: 100;
padding: 12upx;
font-size: 32upx;
transform: rotate(90deg);
}
.flex_col {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: flex-start;
align-items: center;
align-content: center;
}
.list {
justify-content: space-between;
}
.list>view {
width: 60upx;
height: 60upx;
margin: 5upx;
box-sizing: border-box;
border-radius: 3px;
box-shadow: 0 0 2px #ccc;
}
.list .active {
box-shadow: 0 0 2px #09f;
transform: scale(1.05, 1.05);
}
.preview {
width: 180upx;
height: 60upx;
}
.value {
margin: 0 40upx;
flex-grow: 1;
}
.ok {
width: 160upx;
height: 60upx;
line-height: 60upx;
text-align: center;
background-color: #ff9933;
color: #fff;
border-radius: 4px;
letter-spacing: 3px;
font-size: 32upx;
}
.ok:active {
background-color: rgb(255, 107, 34);
}
</style>