Skip to content

Commit 4873b96

Browse files
committed
component.MagicMoveText: charsVdom class field #6479
1 parent 39d5f7d commit 4873b96

2 files changed

Lines changed: 34 additions & 12 deletions

File tree

resources/scss/src/component/MagicMoveText.scss

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
.neo-magic-move-text {
2-
--neo-height : 100px;
32
--neo-transition-time: 500ms;
4-
--neo-width : 450px;
53

64
background-color: #000;
75
color : #fff;
86
font-size : 30px;
97
font-weight : bold;
10-
height : var(--neo-height);
11-
width : var(--neo-width);
128

139
.neo-content {
1410
align-items : center;
@@ -31,12 +27,10 @@
3127
align-items : center;
3228
background-color: #000;
3329
display : flex;
34-
height : var(--neo-height);
3530
justify-content: center;
3631
left : -5000px;
3732
position : absolute;
3833
top : -5000px;
39-
width : var(--neo-width);
4034
}
4135

4236
.neo-measure-element {

src/component/MagicMoveText.mjs

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,14 @@ class MagicMoveText extends Component {
8080
* @member {Object[]} charsVdom=[]
8181
*/
8282
charsVdom = []
83+
/**
84+
* @member {Number} contentHeight=0
85+
*/
86+
contentHeight = 0
87+
/**
88+
* @member {Number} contentWidth=0
89+
*/
90+
contentWidth = 0
8391
/**
8492
* @member {Number} currentIndex=0
8593
*/
@@ -100,7 +108,13 @@ class MagicMoveText extends Component {
100108
* @member {Object} measureElement
101109
*/
102110
get measureElement() {
103-
return this.vdom.cn[1].cn[0]
111+
return this.measureWrapper.cn[0]
112+
}
113+
/**
114+
* @member {Object} measureElement
115+
*/
116+
get measureWrapper() {
117+
return this.vdom.cn[1]
104118
}
105119

106120
construct(config) {
@@ -176,8 +190,17 @@ class MagicMoveText extends Component {
176190

177191
let me = this;
178192

193+
if (value) {
194+
me.getDomRect().then(rect => {
195+
me.contentHeight = rect.height;
196+
me.contentWidth = rect.width;
197+
198+
me.autoCycle && me.startAutoCycle(value)
199+
})
200+
}
201+
179202
oldValue !== undefined && me.addResizeObserver(value);
180-
me.autoCycle && me.startAutoCycle(value)
203+
181204
}
182205

183206
/**
@@ -233,19 +256,24 @@ class MagicMoveText extends Component {
233256
*/
234257
async measureChars() {
235258
let me = this,
236-
{measureCache, measureElement, text} = me,
259+
{measureCache, measureElement, measureWrapper, text} = me,
237260
parentRect, rects;
238261

239262
if (measureCache[text]) {
240263
rects = [...measureCache[text]];
241264
parentRect = rects.shift()
242265
} else {
243-
delete me.vdom.cn[1].removeDom;
266+
measureWrapper.style = {
267+
height: me.contentHeight + 'px',
268+
width : me.contentWidth + 'px'
269+
};
270+
271+
delete measureWrapper.removeDom;
244272

245273
await me.promiseUpdate();
246274
await me.timeout(20);
247275

248-
rects = await me.getDomRect([me.vdom.cn[1].id, ...measureElement.cn.map(node => node.id)]);
276+
rects = await me.getDomRect([measureWrapper.id, ...measureElement.cn.map(node => node.id)]);
249277
parentRect = rects.shift();
250278

251279
measureCache[text] = [parentRect, ...rects]
@@ -256,7 +284,7 @@ class MagicMoveText extends Component {
256284
me.chars[index].top = `${rect.top - parentRect.top }px`;
257285
});
258286

259-
me.vdom.cn[1].removeDom = true;
287+
measureWrapper.removeDom = true;
260288
await me.promiseUpdate()
261289
}
262290

0 commit comments

Comments
 (0)