Commit a7875cbc73c0d18bc2459985ca3ce1d4dc44f141
1 parent
2e5cd151
fix(preview): preview elements in corrent position
Showing
4 changed files
with
22 additions
and
12 deletions
front-end/h5/src/components/core/editor/canvas/edit.js
| @@ -89,7 +89,9 @@ export default { | @@ -89,7 +89,9 @@ export default { | ||
| 89 | const style = element.getStyle() | 89 | const style = element.getStyle() |
| 90 | const data = { | 90 | const data = { |
| 91 | style, | 91 | style, |
| 92 | - class: 'element-on-edit-canvas', // TODO 添加为何添加 class 的原因:与 handleClickCanvas 配合 | 92 | + // 添加 class 的原因:与 handleClickCanvasProp 配合, |
| 93 | + // 当点击编辑画布上的其它区域(clickEvent.target.classList 不包含下面的 className)的时候,设置 editingElement=null | ||
| 94 | + class: 'element-on-edit-canvas', | ||
| 93 | props: element.pluginProps, // #6 #3 | 95 | props: element.pluginProps, // #6 #3 |
| 94 | on: { | 96 | on: { |
| 95 | // 高亮当前点击的元素 | 97 | // 高亮当前点击的元素 |
front-end/h5/src/components/core/editor/canvas/preview.js
| @@ -3,17 +3,23 @@ export default { | @@ -3,17 +3,23 @@ export default { | ||
| 3 | methods: { | 3 | methods: { |
| 4 | renderPreview (h, elements) { | 4 | renderPreview (h, elements) { |
| 5 | return ( | 5 | return ( |
| 6 | - <div style={{ height: '100%' }}> | ||
| 7 | - {elements.map((element, index) => { | ||
| 8 | - return (() => { | 6 | + <div style={{ height: '100%', position: 'relative' }}> |
| 7 | + { | ||
| 8 | + elements.map((element, index) => { | ||
| 9 | + /** | ||
| 10 | + * TODO 是否可以将 renderElement 进行抽象成 renderBaseElement? | ||
| 11 | + * renderBaseElement | ||
| 12 | + * -> renderBaseElementWithEvent() | ||
| 13 | + * -> renderBaseElementWithCustomStyle() | ||
| 14 | + */ | ||
| 15 | + const style = element.getStyle('absolute'/** position */) | ||
| 9 | const data = { | 16 | const data = { |
| 10 | - style: element.getStyle(), | ||
| 11 | - props: element.pluginProps, // #6 #3 | ||
| 12 | - nativeOn: {} | 17 | + style, |
| 18 | + props: element.pluginProps | ||
| 13 | } | 19 | } |
| 14 | return h(element.name, data) | 20 | return h(element.name, data) |
| 15 | - })() | ||
| 16 | - })} | 21 | + }) |
| 22 | + } | ||
| 17 | </div> | 23 | </div> |
| 18 | ) | 24 | ) |
| 19 | } | 25 | } |
front-end/h5/src/components/core/models/element.js
| @@ -40,7 +40,7 @@ class Element { | @@ -40,7 +40,7 @@ class Element { | ||
| 40 | }) | 40 | }) |
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | - getStyle () { | 43 | + getStyle (position = 'static') { |
| 44 | const pluginProps = this.pluginProps | 44 | const pluginProps = this.pluginProps |
| 45 | const commonStyle = this.commonStyle | 45 | const commonStyle = this.commonStyle |
| 46 | let style = { | 46 | let style = { |
| @@ -51,7 +51,8 @@ class Element { | @@ -51,7 +51,8 @@ class Element { | ||
| 51 | fontSize: `${pluginProps.fontSize || commonStyle.fontSize}px`, | 51 | fontSize: `${pluginProps.fontSize || commonStyle.fontSize}px`, |
| 52 | color: pluginProps.color || commonStyle.color, | 52 | color: pluginProps.color || commonStyle.color, |
| 53 | // backgroundColor: pluginProps.backgroundColor || commonStyle.backgroundColor, | 53 | // backgroundColor: pluginProps.backgroundColor || commonStyle.backgroundColor, |
| 54 | - textAlign: pluginProps.textAlign || commonStyle.textAlign | 54 | + textAlign: pluginProps.textAlign || commonStyle.textAlign, |
| 55 | + position | ||
| 55 | } | 56 | } |
| 56 | return style | 57 | return style |
| 57 | } | 58 | } |
front-end/h5/src/components/core/support/shape.js
| @@ -136,11 +136,12 @@ export default { | @@ -136,11 +136,12 @@ export default { | ||
| 136 | } | 136 | } |
| 137 | }, | 137 | }, |
| 138 | render (h) { | 138 | render (h) { |
| 139 | + const style = this.element.getStyle('absolute'/** position */) | ||
| 139 | return ( | 140 | return ( |
| 140 | <div | 141 | <div |
| 141 | onClick={this.handleWrapperClick} | 142 | onClick={this.handleWrapperClick} |
| 142 | onMousedown={this.handleMousedown} | 143 | onMousedown={this.handleMousedown} |
| 143 | - style={{ ...this.element.getStyle(), position: 'absolute' }} | 144 | + style={style} |
| 144 | > | 145 | > |
| 145 | { | 146 | { |
| 146 | this.active && | 147 | this.active && |