미디어위키:Responsive-arrow.js: 두 판 사이의 차이

큰숲백과, 나무를 보지 말고 큰 숲을 보라.
편집 요약 없음
(누락..)
82번째 줄: 82번째 줄:
                     arrowPoint.style['height'] = 0
                     arrowPoint.style['height'] = 0
                     arrowPoint.style['width'] = data.pointLength + "px"
                     arrowPoint.style['width'] = data.pointLength + "px"
                     arrowBox.style['min-height'] = (data.pointLength * Math.sin(data.pointDeg * Math.PI / 180) * (data.pointDirection === "both" ? 2 : 1) + data.thick + 1)
                     arrowBox.style['min-height'] = (data.pointLength * Math.sin(data.pointDeg * Math.PI / 180) * (data.pointDirection === "both" ? 2 : 1) + data.thick + 1) + "px"
                     arrowBox.style['width'] = data.length ? data.length + "px" : null;
                     arrowBox.style['width'] = data.length ? data.length + "px" : null;
                     arrowShaft.style['left'] = arrowShaft.style['right'] = 0;
                     arrowShaft.style['left'] = arrowShaft.style['right'] = 0;
91번째 줄: 91번째 줄:
                     arrowPoint.style['width'] = 0
                     arrowPoint.style['width'] = 0
                     arrowPoint.style['height'] = data.pointLength + "px"
                     arrowPoint.style['height'] = data.pointLength + "px"
                     arrowBox.style['min-width'] = (data.pointLength * Math.sin(data.pointDeg * Math.PI / 180) * (data.pointDirection === "both" ? 2 : 1)+ data.thick + 1)
                     arrowBox.style['min-width'] = (data.pointLength * Math.sin(data.pointDeg * Math.PI / 180) * (data.pointDirection === "both" ? 2 : 1) + data.thick + 1) + "px"
                     arrowBox.style['height'] = (data.length || 100) + "px";
                     arrowBox.style['height'] = (data.length || 100) + "px";
                     arrowShaft.style['top'] = arrowShaft.style['bottom'] = 0;
                     arrowShaft.style['top'] = arrowShaft.style['bottom'] = 0;

2025년 3월 4일 (화) 00:25 판

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.pointLength = Number(data.pointLength)
            data.deg = Number(data.deg)

            var arrowBox = arrowData.parentElement
            var arrowPoint = arrowData.nextElementSibling
            var arrowShaft = arrowPoint.nextElementSibling

            arrowPoint.style['border-width'] = arrowShaft.style['border-width'] = data.thick + "px";
            arrowPoint.style['position'] = arrowShaft.style['position'] = "absolute"
            arrowPoint.style['borderRadius'] = arrowShaft.style['borderRadius'] = "100px"
            arrowPoint.style['background'] = arrowPoint.style['border-color'] = arrowShaft.style['background'] = arrowShaft.style['border-color'] = data.color;
            arrowPoint.style['transform-box'] = "fill-box"

            switch (data.direction) {
                case "left":
                    if (data.pointDirection === "right") {
                        arrowBox.style['align-items'] = "flex-end";
                        arrowPoint.style['transform-origin'] = "left";
                    }
                    else {
                        arrowBox.style['align-items'] = "flex-start"
                        arrowPoint.style['transform-origin'] = "left";
                    }

                    arrowPoint.style['left'] = 0
                    break;


                case "right":
                    if (data.pointDirection === "right") {
                        arrowBox.style['align-items'] = "flex-start";
                        arrowPoint.style['transform-origin'] = "right";
                    }
                    else {
                        arrowBox.style['align-items'] = "flex-end"
                        arrowPoint.style['transform-origin'] = "right";
                    }
                    arrowPoint.style['right'] = 0

                    break;

                case "up":
                    if (data.pointDirection === "right") {
                        arrowBox.style['justify-content'] = "flex-start";
                    }
                    else {
                        arrowBox.style['justify-content'] = "flex-end"
                    }

                    arrowPoint.style['transform-origin'] = "top"
                    arrowPoint.style['top'] = 0
                    break;

                case "down":
                    if (data.pointDirection === "right") {
                        arrowBox.style['justify-content'] = "flex-end";
                    }
                    else {
                        arrowBox.style['justify-content'] = "flex-start"
                    }

                    arrowPoint.style['transform-origin'] = "bottom"
                    arrowPoint.style['bottom'] = 0
                    break;
                default:
                    break;
            }


            switch (data.direction) {
                case "left":
                case "right":
                    arrowPoint.style['height'] = 0
                    arrowPoint.style['width'] = data.pointLength + "px"
                    arrowBox.style['min-height'] = (data.pointLength * Math.sin(data.pointDeg * Math.PI / 180) * (data.pointDirection === "both" ? 2 : 1) + data.thick + 1) + "px"
                    arrowBox.style['width'] = data.length ? data.length + "px" : null;
                    arrowShaft.style['left'] = arrowShaft.style['right'] = 0;
                    break;

                case "up":
                case "down":
                    arrowPoint.style['width'] = 0
                    arrowPoint.style['height'] = data.pointLength + "px"
                    arrowBox.style['min-width'] = (data.pointLength * Math.sin(data.pointDeg * Math.PI / 180) * (data.pointDirection === "both" ? 2 : 1) + data.thick + 1) + "px"
                    arrowBox.style['height'] = (data.length || 100) + "px";
                    arrowShaft.style['top'] = arrowShaft.style['bottom'] = 0;
                    break;
            }

            switch (data.pointDirection) {
                case "left":
                    arrowPoint.style['rotate'] = (data.deg) + "deg";
                    break;


                case "right":
                    arrowPoint.style['rotate'] = - data.deg + "deg";
                    break;

                case "both":
                    arrowPoint.style['rotate'] = (data.deg) + "deg";

                    var arrowPoint2 = arrowPoint.cloneNode(true)
                    arrowPoint2.style['rotate'] = - (data.deg) + "deg";

                    arrowBox.style['align-items'] = "center"
                    arrowBox.style['justify-content'] = "center"

                    arrowBox.appendChild(arrowPoint2)

                    break;
            }


        })()
    }
})();

console.timeEnd("arrow-test")