Commit a59dbd3e0d3283e7f3bdabf99815b43f175091ec
Committed by
小小鲁班
1 parent
baab9cc2
[feat] 优化box-model选中逻辑
Showing
1 changed file
with
9 additions
and
40 deletions
front-end/h5/src/components/core/editor/right-panel/box-model/index.vue
| ... | ... | @@ -5,11 +5,11 @@ |
| 5 | 5 | <PositionCheckbox label="上" label-key="top" /> |
| 6 | 6 | <div class="middle"> |
| 7 | 7 | <PositionCheckbox label="左" label-key="left" /> |
| 8 | - <div ref="margin" class="margin" data-type="margin" @click="onBoxModelClick"> | |
| 8 | + <div ref="margin" class="margin" data-type="margin" :class="{'margin-select':boxModelPart === 'margin'}" @click="onBoxModelClick"> | |
| 9 | 9 | margin |
| 10 | - <div ref="border" class="border" data-type="border"> | |
| 10 | + <div ref="border" class="border" data-type="border" :class="{'border-select':boxModelPart === 'border'}"> | |
| 11 | 11 | border |
| 12 | - <div ref="padding" class="padding" data-type="padding"> | |
| 12 | + <div ref="padding" class="padding" data-type="padding" :class="{'padding-select':boxModelPart === 'padding'}"> | |
| 13 | 13 | padding |
| 14 | 14 | <div class="content" data-type="padding"> |
| 15 | 15 | {{ commonStyle.width | digit }} x {{ commonStyle.height | digit }} |
| ... | ... | @@ -37,7 +37,8 @@ |
| 37 | 37 | }, |
| 38 | 38 | data () { |
| 39 | 39 | return { |
| 40 | - lastSelect: '' | |
| 40 | + lastSelect: '', | |
| 41 | + select: '' | |
| 41 | 42 | } |
| 42 | 43 | }, |
| 43 | 44 | computed: { |
| ... | ... | @@ -68,49 +69,17 @@ |
| 68 | 69 | ]), |
| 69 | 70 | onBoxModelClick (e) { |
| 70 | 71 | const target = e.target |
| 71 | - const classList = target.classList | |
| 72 | 72 | const type = target.dataset.type |
| 73 | - const selectClass = type + '-select' | |
| 74 | - // 更新选中的 boxModelPart,用于判断当前设置的是 margin / border / padding | |
| 75 | 73 | this.setElementPosition({ |
| 76 | 74 | boxModelPart: type |
| 77 | 75 | }) |
| 78 | - if (this.lastSelect && type !== this.lastSelect) { | |
| 79 | - this.$refs[this.lastSelect].classList.remove(this.lastSelect + '-select') | |
| 80 | - } | |
| 81 | - // 选中的元素添加上选中的 className | |
| 82 | - if (!classList.contains(selectClass)) { | |
| 83 | - this.$refs[type].classList.add(selectClass) | |
| 84 | - this.lastSelect = type | |
| 85 | - } | |
| 86 | 76 | }, |
| 87 | 77 | onColorChange (color) { |
| 88 | - this.changeCommonStyle(color, 'color') | |
| 89 | - }, | |
| 90 | - changeCommonStyle (changeValue, labelKey, key = 'value') { | |
| 91 | - const boxModelPart = this.boxModelPart | |
| 92 | - // 例如 boxModelPart 为 margin 时候 | |
| 78 | + const boxModelPart = this.boxModelPart | |
| 79 | + // 取出 commonStyle.border,并更改 border.color.value 的值 | |
| 93 | 80 | const boxModelPartStyle = this.editingElement.commonStyle[boxModelPart] |
| 94 | - // 更新值例如: padding-top | |
| 95 | - Object.assign(boxModelPartStyle[labelKey], { [key]: changeValue }) | |
| 96 | - this.setElementPosition({ [boxModelPart]: boxModelPartStyle }) | |
| 97 | - } | |
| 98 | - }, | |
| 99 | - watch: { | |
| 100 | - /** | |
| 101 | - * 监听当前是否有选中的组件,如果有判断之前是否保存了 boxModelPart | |
| 102 | - * 如果保存了就将之前编辑状态重新复原。 | |
| 103 | - */ | |
| 104 | - editingElement: { | |
| 105 | - immediate: true, | |
| 106 | - handler (val) { | |
| 107 | - if (!this.boxModelPart) return | |
| 108 | - const selectClass = this.boxModelPart + '-select' | |
| 109 | - this.$nextTick(() => { | |
| 110 | - this.$refs[this.boxModelPart].classList.add(selectClass) | |
| 111 | - this.lastSelect = this.boxModelPart | |
| 112 | - }) | |
| 113 | - } | |
| 81 | + Object.assign(boxModelPartStyle.color, { value: color }) | |
| 82 | + this.setElementPosition({ [boxModelPart]: boxModelPartStyle }) | |
| 114 | 83 | } |
| 115 | 84 | } |
| 116 | 85 | } | ... | ... |