미디어위키:Responsive-arrow.js: 두 판 사이의 차이
편집 요약 없음 태그: 수동 되돌리기 |
편집 요약 없음 |
||
| 1번째 줄: | 1번째 줄: | ||
console.time("arrow-test"); | |||
(function () { | (function () { | ||
var arrowArray = document.getElementsByClassName("arrow-dataset"); | var arrowArray = document.getElementsByClassName("arrow-dataset"); | ||
| 38번째 줄: | 40번째 줄: | ||
case "up": | case "up": | ||
arrow.style['justify-content'] = data.pointDirection === "right" ? "flex-start" : "flex-end" | arrow.style['justify-content'] = data.pointDirection === "right" ? "flex-start" : "flex-end" | ||
arrowPoint.style['transform-origin'] = data.pointDirection === "left" ? | arrowPoint.style['transform-origin'] = (data.pointDirection === "left" ? | ||
data.pointLength - data.thick : data.thick + "px 50%"; | data.pointLength - data.thick : data.thick) + "px 50%"; | ||
arrowPoint.style['top'] = 0 | arrowPoint.style['top'] = 0 | ||
break; | break; | ||
| 58번째 줄: | 60번째 줄: | ||
arrow.style['min-height'] = | arrow.style['min-height'] = | ||
(data.pointLength * Math.sin(data.pointDeg * Math.PI / 180) + data.thick) + "px" | (data.pointLength * Math.sin(data.pointDeg * Math.PI / 180) + data.thick) + "px" | ||
arrow.style['width'] = data.length ? data.length + "px" : null; | arrow.style['width'] = data.length ? data.length + "px" : null; | ||
arrowShaft.style['width'] = "100%"; | arrowShaft.style['width'] = "100%"; | ||
| 81번째 줄: | 82번째 줄: | ||
break; | break; | ||
} | } | ||
})() | })() | ||
} | } | ||
})(); | })(); | ||
console.timeEnd("arrow-test") | |||
2025년 3월 3일 (월) 18:55 판
console.time("arrow-test");
(function () {
var arrowArray = document.getElementsByClassName("arrow-dataset");
for (var i = 0; i < arrowArray.length; i++) {
(function () {
var arrowData = arrowArray[i];
var data = Object.create(arrowData.dataset)
data.thick = Number(data.thick)
data.deg = Number(data.deg)
var arrow = arrowData.parentElement;
var arrowPoint = arrowData.nextElementSibling
var arrowShaft = arrowPoint.nextElementSibling
arrowPoint.style['width'] = data.pointLength + "px"
arrowPoint.style['height'] = data.thick * 2 + "px";
arrowPoint.style['borderRadius'] = "100px"
arrowPoint.style['position'] = "absolute"
arrowPoint.style['background'] = data.color
arrowShaft.style['background'] = data.color
arrowShaft.style['position'] = "absolute"
arrowShaft.style['borderRadius'] = "100px"
switch (data.direction) {
case "left":
arrow.style['align-items'] = data.pointDirection === "right" ? "flex-end" : "flex-start"
arrowPoint.style['transform-origin'] = data.thick + "px 50%";
arrowPoint.style['left'] = 0
break;
case "right":
arrow.style['align-items'] = data.pointDirection === "right" ? "flex-start" : "flex-end"
arrowPoint.style['transform-origin'] = data.pointLength - data.thick + "px 50%";
arrowPoint.style['right'] = 0
break;
case "up":
arrow.style['justify-content'] = data.pointDirection === "right" ? "flex-start" : "flex-end"
arrowPoint.style['transform-origin'] = (data.pointDirection === "left" ?
data.pointLength - data.thick : data.thick) + "px 50%";
arrowPoint.style['top'] = 0
break;
case "down":
arrow.style['justify-content'] = data.pointDirection === "right" ? "flex-end" : "flex-start"
arrowPoint.style['transform-origin'] = (data.pointDirection === "right" ?
data.pointLength - data.thick : data.thick) + "px 50%";
arrowPoint.style['bottom'] = 0
break;
default:
break;
}
switch (data.direction) {
case "left":
case "right":
arrow.style['min-height'] =
(data.pointLength * Math.sin(data.pointDeg * Math.PI / 180) + data.thick) + "px"
arrow.style['width'] = data.length ? data.length + "px" : null;
arrowShaft.style['width'] = "100%";
arrowShaft.style['height'] = data.thick * 2 + "px"
arrowPoint.style['rotate'] = (data.pointDirection === "left" ?
data.deg : - data.deg) + "deg"
break;
case "up":
case "down":
arrow.style['min-width'] =
(data.pointLength * Math.sin(data.pointDeg * Math.PI / 180) + data.thick) + "px"
arrow.style['height'] = (data.length || 100) + "px";
arrowShaft.style['width'] = data.thick * 2 + "px";
arrowShaft.style['height'] = "100%";
arrowPoint.style['rotate'] = (data.pointDirection === "left" ?
- 90 + data.deg : 90 - data.deg) + "deg"
break;
default:
break;
}
})()
}
})();
console.timeEnd("arrow-test")