본문 바로가기
Computer Programming/web Program with PHP

배경 밝기에 따라 동적 텍스트 색상을 적용함을 통한 웹 디자인 향상

by 로봇과나무 2023. 9. 12.

웹 디자인의 세계에서는 미학과 사용자 경험이 가장 중요합니다. 웹 사이트의 시각적 매력에 크게 기여하는 한 가지 측면은 텍스트와 배경 색상 간의 상호 작용입니다. 이러한 요소 간의 조화로운 균형을 유지하면 사용자의 가독성과 참여가 보장됩니다. 이 블로그 게시물에서는 배경의 밝기에 따라 텍스트 색상을 동적으로 조정하여 시각적으로 즐겁고 사용자 친화적인 디자인을 만드는 JavaScript 기술을 살펴보겠습니다.

과제 이해하기

이 시나리오를 생각해 보세요. 다양한 섹션과 콘텐츠가 포함된 아름답게 디자인된 웹사이트가 있습니다. 일부 섹션의 배경은 밝은 반면 다른 섹션은 더 어둡습니다. 이제 사이트 전체에 단일 텍스트 색상을 사용한다고 상상해 보십시오. 텍스트와 배경 색상이 충돌할 때 가독성 문제가 발생할 수 있습니다.

이러한 문제를 극복하려면 배경의 밝기를 자동으로 감지하고 이에 따라 텍스트 색상을 조정하는 솔루션이 필요합니다. 배경이 밝으면 텍스트는 어두워야 하고, 그 반대의 경우도 마찬가지입니다.

자바스크립트의 마법

이 작업을 위해 우리가 선택한 도구는 JavaScript입니다. 우리는 JavaScript를 활용하여 다음을 수행합니다.

  1. 배경색 얻기: getCompulatedStyle()을 사용하여 요소의 배경색을 얻는 것부터 시작합니다.
  2. 밝기 계산: 다음으로 배경색의 밝기를 계산합니다. 이 단계에는 RGB(빨간색, 녹색, 파란색) 값을 분해하고 가중치 공식을 적용하는 작업이 포함됩니다. '(r * 299 + g * 587 + b * 114) / 1000' 공식은 밝기 점수를 제공하며 점수가 높을수록 밝은 색상을 나타냅니다.
  3. 텍스트 색상 설정: 마지막으로 계산된 밝기를 임계값과 비교합니다. 배경이 밝으면 텍스트 색상을 검은색으로 설정합니다. 어두우면 흰색으로 설정합니다.

코드를 보겠습니다.

<div class="text-container" style="background-color: #c2ca82;">
        <p id="text">Hello, World!</p>
</div>

이 부분의 #c2ca82를 다른 값으로 변경 해 보세요. 어두운 색상으로, 또는 밝은 색상으로 변경해 보세요. 그에 따라 "Hello, World!" 의 색상이 흰색 또는 검은색으로 변경되는 것을 확인할 수 있습니다.

<!DOCTYPE html>
<html>
<head>
    <style>
        .text-container {
            padding: 20px;
        }
    </style>
</head>
<body>
    <div class="text-container" style="background-color: #c2ca82;">
        <p id="text">Hello, World!</p>
    </div>

    <script>
        // Get the background-color of the container
        const container = document.querySelector('.text-container');
        const containerStyle = getComputedStyle(container);
        const backgroundColor = containerStyle.backgroundColor;

        // Function to calculate brightness based on RGB values
        function calculateBrightness(rgbValue) {
            const rgbNumbers = rgbValue.substring(4, rgbValue.length - 1);

            // Split the values using a comma as a delimiter
            const rgbArray = rgbNumbers.split(",");

            // Parse the substrings into integers
            const r = parseInt(rgbArray[0].trim(), 10);
            const g = parseInt(rgbArray[1].trim(), 10);
            const b = parseInt(rgbArray[2].trim(), 10);

            // Calculate brightness based on RGB values
            return (r * 299 + g * 587 + b * 114) / 1000;
        }

        // Set the text color based on background brightness
        const backgroundBrightness = calculateBrightness(backgroundColor);
        const textElement = document.getElementById('text');

        // Calculate a threshold for brightness
        const brightnessThreshold = 128;

        // Use a linearly corresponding color
        const textColor = backgroundBrightness > brightnessThreshold ? 'black' : 'white';
        textElement.style.color = textColor;
    </script>
</body>
</html>

Hello, World!

결론

배경 밝기에 따라 동적 텍스트 색상 조정을 통합하면 웹 사이트의 가독성과 시각적 매력을 크게 향상시킬 수 있습니다. 이 간단한 JavaScript 기술을 사용하면 다양한 디자인 요소에서 콘텐츠를 읽기 쉽고 매력적으로 유지할 수 있습니다.

사용자에게 미학적으로 즐겁고 사용자 친화적인 경험을 제공함으로써 참여도를 높이고 긍정적인 인상을 남길 수 있습니다. 그렇다면 한번 시도해 보고 웹 디자인을 한 단계 더 발전시켜 보는 것은 어떨까요?