Skip to content

Commit 665c376

Browse files
author
hikki
committed
v5.2
1 parent 6feea62 commit 665c376

File tree

2 files changed

+42
-7
lines changed

2 files changed

+42
-7
lines changed

resources/assets/component.js

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ window._component = {
251251
dimension++;
252252
_component.dimensional(output, data.nodes, dimension, parentNodes);
253253
},
254-
imgDelay(name,time=200,zoom= false) {
254+
imgDelay(name,time=200,zoom= false,width=300,height = 0) {
255255
let list = document.getElementsByClassName(name);
256256
let i = 0;
257257
for(let dom of list){
@@ -264,12 +264,45 @@ window._component = {
264264
dom.addEventListener('mouseover', function(e) {
265265
document.body.append(img);
266266
img.style.position = 'absolute';
267-
img.style.top = `${e.pageY + 7}px`;
268-
img.style.left = `${e.pageX + 7}px`;
269267
img.style.zIndex = '1000000';
270-
img.style.width = '300px';
271268
img.style.borderRadius = '3px';
272269
img.setAttribute('src', src);
270+
271+
let scale;
272+
if(width === 0){
273+
scale = img.naturalWidth / img.naturalWidth;
274+
}else {
275+
scale = width / img.naturalWidth;
276+
}
277+
let offsetY = img.naturalHeight * scale / 2;
278+
if(height>0){
279+
offsetY = height / 2;
280+
img.style.height = `${height}px`;
281+
}else if (height<0) {
282+
if (img.naturalHeight > window.innerHeight){
283+
let h = (window.innerHeight - 10);
284+
img.style.height = `${h}px`;
285+
offsetY = (h) / 2;
286+
width = 0;
287+
}
288+
}
289+
if(width>0) {
290+
img.style.width = `${width}px`;
291+
}else {
292+
img.style.width = `auto`;
293+
}
294+
img.style.top = `${e.pageY - offsetY}px`;
295+
let distanceToBottom = window.innerHeight - e.clientY;
296+
if (window.innerHeight - e.clientY < offsetY + 5){
297+
img.style.top = `${e.pageY - (offsetY + (offsetY - distanceToBottom) + 5)}px`;
298+
}else if(e.clientY < offsetY - 5){
299+
img.style.top = `${e.pageY - (offsetY - (offsetY - e.clientY) - 5)}px`;
300+
}
301+
if(window.innerWidth - e.clientX < img.naturalWidth){
302+
img.style.left = `${e.pageX - img.naturalWidth - 30}px`;
303+
}else {
304+
img.style.left = `${e.pageX + 25}px`;
305+
}
273306
});
274307
dom.addEventListener('mouseout', function(e) {
275308
e.stopPropagation();
@@ -1006,8 +1039,10 @@ window.ComponentLine = class {
10061039
/*delay image loading*/
10071040
if(val.type === 'image'){
10081041
setTimeout(()=>{
1009-
let zoom = val.zoom === false ? false : true;
1010-
_component.imgDelay(`${this.NAME}-${column}-img`,200,zoom);
1042+
let zoom = val.zoom !== undefined ? val.zoom : true;
1043+
let width = val.w !== undefined ? parseInt(val.w) : 300;
1044+
let height = val.h !== undefined ? parseInt(val.h) : 0;
1045+
_component.imgDelay(`${this.NAME}-${column}-img`,200,zoom,width,height);
10111046
});
10121047
}
10131048
if(val.type === 'datetime' || val.insert_type === 'datetime'){

test/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@
231231
new ComponentLine("test2", {
232232
"name": {"name": "名称", "type": "input"},
233233
"meta": {"name": "番号", "type": "text","insert_type":"input"},
234-
"url": {"name": "图片", "type": "image"},
234+
"url": {"name": "图片", "type": "image","w":300,"h":0},
235235
"time": {"name": "更新时间", "type": "datetime","insert_type":"datetime","config":{
236236
enableTime: true,
237237
dateFormat: "Y-m-d H:i",

0 commit comments

Comments
 (0)