123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- <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>
|