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

큰숲백과, 나무를 보지 말고 큰 숲을 보라.
편집 요약 없음
(테스트 (빌드 시스템))
1번째 줄: 1번째 줄:
console.time("arrow-test");
"use strict";
 
{
(function () {
     const arrowArray = document.getElementsByClassName('arrow-dataset');
     var arrowArray = document.getElementsByClassName("arrow-dataset");
     for (const arrowElement of arrowArray) {
     for (var i = 0; i < arrowArray.length; i++) {
         const data = Object.create(arrowElement.dataset);
         (function () {
        data.thick = Number(data.thick);
            var arrowData = arrowArray[i];
        data.pointLength = Number(data.pointLength);
            var data = Object.create(arrowData.dataset)
        data.pointDeg = Number(data.pointDeg);
            data.thick = Number(data.thick)
        const arrowBox = arrowElement.parentElement;
            data.pointLength = Number(data.pointLength)
        const arrowPoint = arrowElement.nextElementSibling;
            data.pointDeg = Number(data.pointDeg)
        const arrowShaft = arrowPoint.nextElementSibling;
 
        arrowPoint.style.borderWidth =
            var arrowBox = arrowData.parentElement
            arrowShaft.style.borderWidth = `${data.thick}px`;
            var arrowPoint = arrowData.nextElementSibling
        arrowPoint.style.position = arrowShaft.style.position = 'absolute';
            var arrowShaft = arrowPoint.nextElementSibling
        arrowPoint.style.borderRadius = arrowShaft.style.borderRadius = '100px';
 
        arrowPoint.style.background =
            arrowPoint.style['border-width'] = arrowShaft.style['border-width'] = data.thick + "px";
            arrowPoint.style.borderColor =
            arrowPoint.style['position'] = arrowShaft.style['position'] = "absolute"
                arrowShaft.style.background =
            arrowPoint.style['borderRadius'] = arrowShaft.style['borderRadius'] = "100px"
                    arrowShaft.style.borderColor =
            arrowPoint.style['background'] = arrowPoint.style['border-color'] = arrowShaft.style['background'] = arrowShaft.style['border-color'] = data.color;
                        data.color;
            arrowPoint.style['transform-box'] = "fill-box"
        arrowPoint.style.transformBox = 'fill-box';
 
        switch (data.direction) {
            switch (data.direction) {
            case 'left':
                case "left":
                if (data.pointDirection === 'right') {
                    if (data.pointDirection === "right") {
                    arrowBox.style.alignItems = 'flex-end';
                        arrowBox.style['align-items'] = "flex-end";
                }
                        arrowPoint.style['transform-origin'] = "left";
                else {
                    }
                    arrowBox.style.alignItems = 'flex-start';
                    else {
                }
                        arrowBox.style['align-items'] = "flex-start"
                arrowPoint.style.transformOrigin = 'left';
                        arrowPoint.style['transform-origin'] = "left";
                arrowPoint.style.left = "0px";
                    }
                break;
 
            case 'right':
                    arrowPoint.style['left'] = 0
                if (data.pointDirection === 'right') {
                    break;
                    arrowBox.style.alignItems = 'flex-start';
 
                }
 
                else {
                case "right":
                    arrowBox.style.alignItems = 'flex-end';
                    if (data.pointDirection === "right") {
                }
                        arrowBox.style['align-items'] = "flex-start";
                arrowPoint.style.transformOrigin = 'right';
                        arrowPoint.style['transform-origin'] = "right";
                arrowPoint.style.right = "0px";
                    }
                break;
                    else {
            case 'up':
                        arrowBox.style['align-items'] = "flex-end"
                if (data.pointDirection === 'right') {
                        arrowPoint.style['transform-origin'] = "right";
                    arrowBox.style.justifyContent = 'flex-start';
                    }
                }
                    arrowPoint.style['right'] = 0
                else {
 
                    arrowBox.style.justifyContent = 'flex-end';
                    break;
                }
 
                arrowPoint.style.transformOrigin = 'top';
                case "up":
                arrowPoint.style.top = "0px";
                    if (data.pointDirection === "right") {
                break;
                        arrowBox.style['justify-content'] = "flex-start";
            case 'down':
                    }
                if (data.pointDirection === 'right') {
                    else {
                    arrowBox.style.justifyContent = 'flex-end';
                        arrowBox.style['justify-content'] = "flex-end"
                }
                    }
                else {
 
                    arrowBox.style.justifyContent = 'flex-start';
                    arrowPoint.style['transform-origin'] = "top"
                }
                    arrowPoint.style['top'] = 0
                arrowPoint.style.transformOrigin = 'bottom';
                    break;
                arrowPoint.style.bottom = "0px";
 
                break;
                case "down":
            default:
                    if (data.pointDirection === "right") {
                break;
                        arrowBox.style['justify-content'] = "flex-end";
        }
                    }
        switch (data.direction) {
                    else {
            case 'left':
                        arrowBox.style['justify-content'] = "flex-start"
            case 'right':
                     }
                arrowPoint.style.height = "0px";
 
                arrowPoint.style.width = `${data.pointLength}px`;
                    arrowPoint.style['transform-origin'] = "bottom"
                arrowBox.style.minHeight = `${data.pointLength *
                    arrowPoint.style['bottom'] = 0
                     Math.sin((data.pointDeg * Math.PI) / 180) *
                    break;
                    (data.pointDirection === 'both' ? 2 : 1) +
                 default:
                    data.thick +
                    break;
                    1}px`;
                arrowBox.style.width = data.length ? `${data.length}px` : "";
                arrowShaft.style.left = arrowShaft.style.right = "0px";
                break;
            case 'up':
            case 'down':
                arrowPoint.style.width = "0px";
                arrowPoint.style.height = `${data.pointLength}px`;
                arrowBox.style.minWidth = `${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 = "0px";
                break;
        }
        switch (data.pointDirection) {
            case 'left':
                arrowPoint.style.rotate = `${data.pointDeg}deg`;
                break;
            case 'right':
                arrowPoint.style.rotate = `${-data.pointDeg}deg`;
                 break;
            case 'both': {
                arrowPoint.style.rotate = `${data.pointDeg}deg`;
                const arrowPoint2 = arrowPoint.cloneNode(true);
                arrowPoint2.style.rotate = `${-data.pointDeg}deg`;
                arrowBox.style.alignItems = 'center';
                arrowBox.style.justifyContent = 'center';
                arrowBox.appendChild(arrowPoint2);
                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.pointDeg) + "deg";
                    break;
 
 
                case "right":
                    arrowPoint.style['rotate'] = - data.pointDeg + "deg";
                    break;
 
                case "both":
                    arrowPoint.style['rotate'] = (data.pointDeg) + "deg";
 
                    var arrowPoint2 = arrowPoint.cloneNode(true)
                    arrowPoint2.style['rotate'] = - (data.pointDeg) + "deg";
 
                    arrowBox.style['align-items'] = "center"
                    arrowBox.style['justify-content'] = "center"
 
                    arrowBox.appendChild(arrowPoint2)
 
                    break;
            }
         })()
     }
     }
})();
}
 
console.timeEnd("arrow-test")

2025년 8월 7일 (목) 13:31 판

"use strict";
{
    const arrowArray = document.getElementsByClassName('arrow-dataset');
    for (const arrowElement of arrowArray) {
        const data = Object.create(arrowElement.dataset);
        data.thick = Number(data.thick);
        data.pointLength = Number(data.pointLength);
        data.pointDeg = Number(data.pointDeg);
        const arrowBox = arrowElement.parentElement;
        const arrowPoint = arrowElement.nextElementSibling;
        const arrowShaft = arrowPoint.nextElementSibling;
        arrowPoint.style.borderWidth =
            arrowShaft.style.borderWidth = `${data.thick}px`;
        arrowPoint.style.position = arrowShaft.style.position = 'absolute';
        arrowPoint.style.borderRadius = arrowShaft.style.borderRadius = '100px';
        arrowPoint.style.background =
            arrowPoint.style.borderColor =
                arrowShaft.style.background =
                    arrowShaft.style.borderColor =
                        data.color;
        arrowPoint.style.transformBox = 'fill-box';
        switch (data.direction) {
            case 'left':
                if (data.pointDirection === 'right') {
                    arrowBox.style.alignItems = 'flex-end';
                }
                else {
                    arrowBox.style.alignItems = 'flex-start';
                }
                arrowPoint.style.transformOrigin = 'left';
                arrowPoint.style.left = "0px";
                break;
            case 'right':
                if (data.pointDirection === 'right') {
                    arrowBox.style.alignItems = 'flex-start';
                }
                else {
                    arrowBox.style.alignItems = 'flex-end';
                }
                arrowPoint.style.transformOrigin = 'right';
                arrowPoint.style.right = "0px";
                break;
            case 'up':
                if (data.pointDirection === 'right') {
                    arrowBox.style.justifyContent = 'flex-start';
                }
                else {
                    arrowBox.style.justifyContent = 'flex-end';
                }
                arrowPoint.style.transformOrigin = 'top';
                arrowPoint.style.top = "0px";
                break;
            case 'down':
                if (data.pointDirection === 'right') {
                    arrowBox.style.justifyContent = 'flex-end';
                }
                else {
                    arrowBox.style.justifyContent = 'flex-start';
                }
                arrowPoint.style.transformOrigin = 'bottom';
                arrowPoint.style.bottom = "0px";
                break;
            default:
                break;
        }
        switch (data.direction) {
            case 'left':
            case 'right':
                arrowPoint.style.height = "0px";
                arrowPoint.style.width = `${data.pointLength}px`;
                arrowBox.style.minHeight = `${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` : "";
                arrowShaft.style.left = arrowShaft.style.right = "0px";
                break;
            case 'up':
            case 'down':
                arrowPoint.style.width = "0px";
                arrowPoint.style.height = `${data.pointLength}px`;
                arrowBox.style.minWidth = `${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 = "0px";
                break;
        }
        switch (data.pointDirection) {
            case 'left':
                arrowPoint.style.rotate = `${data.pointDeg}deg`;
                break;
            case 'right':
                arrowPoint.style.rotate = `${-data.pointDeg}deg`;
                break;
            case 'both': {
                arrowPoint.style.rotate = `${data.pointDeg}deg`;
                const arrowPoint2 = arrowPoint.cloneNode(true);
                arrowPoint2.style.rotate = `${-data.pointDeg}deg`;
                arrowBox.style.alignItems = 'center';
                arrowBox.style.justifyContent = 'center';
                arrowBox.appendChild(arrowPoint2);
                break;
            }
        }
    }
}