화면구현/HTML

화면색상변경

psys 2020. 7. 2. 09:52
728x90

페이지 끝나면 함수 자동 실행

        window.onload = function(){
        
        }

 

바디태그에 접근

        document.body

body와 head는 문서에 하나밖에 없어야 하므로 id없이 접근 가능

 

바디에 색깔주기

            document.body.style.backgroundColor = "rgb(255,0,0)"

색깔줄때 rgb(red, green, blue) 함수 사용가능(실제 내부적으로 사용됨)

 

 

페이지 새로고침시마다 다른 색이 나오게끔 변경

    <script>
        function f_ranNum() {
            return Math.floor(Math.random() * 256); // 0~255 return
        }
        function f_ranColor() {
            return "rgb(" + f_ranNum() + "," + f_ranNum() + "," + f_ranNum() + ")"
        }
        window.onload = function () { // 페이지 끝나면 함수 자동 실행
            // 바디태그에 접근하기
            // body와 head는 문서에 하나밖에 없어야 하므로 id없이 접근 가능
            document.body.style.backgroundColor = f_ranColor();
        }
    </script>
더보기
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        function f_ranNum() {
            return Math.floor(Math.random() * 256); // 0~255 return
        }
        function f_ranColor() {
            return "rgb(" + f_ranNum() + "," + f_ranNum() + "," + f_ranNum() + ")"
        }
        window.onload = function () { // 페이지 끝나면 함수 자동 실행
            // 바디태그에 접근하기
            // body와 head는 문서에 하나밖에 없어야 하므로 id없이 접근 가능
            document.body.style.backgroundColor = f_ranColor();
        }
    </script>
</body>

</html>

 

rgb대신 #ff0000 이런식으로 표현 가능(16진수)

            document.body.style.backgroundColor = "#ff0000";

 

16진수를 사용하여 랜덤한 색 생성하기

1) 16진수를 담은 배열 생성

        var v_hexaNum = [];
        for (i = 0; i <= 9; i++) {
            v_hexaNum[v_hexaNum.length] = i;
        }
        v_hexaNum[v_hexaNum.length] = "a";
        v_hexaNum[v_hexaNum.length] = "b";
        v_hexaNum[v_hexaNum.length] = "c";
        v_hexaNum[v_hexaNum.length] = "d";
        v_hexaNum[v_hexaNum.length] = "e";
        v_hexaNum[v_hexaNum.length] = "f";

2) 랜덤으로 숫자 생성

        function f_hexaNum() {
            var v_ranIndex = Math.floor(Math.random() * v_hexaNum.length);
            return v_hexaNum[v_ranIndex];
        }

3) 랜덤 색상 생성

        function f_ranColor2() {
            var v_hexaColor = "#";
            for (var i = 1; i <= 6; i++) {
                v_hexaColor += f_hexaNum();
            }
            return v_hexaColor;
        }
더보기
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 페이지 새로고침 (곧 방문자가 방문할 때 마다 다른색이 나오게)
        function f_ranNum(){
            return  Math.floor(Math.random()*256);  // 0~255  return
        }
        function f_ranColor(){
           return  "rgb(" + f_ranNum() + "," + f_ranNum() + "," + f_ranNum() + ")";
        }

        var v_hexaNum=[]; // 16진수를 담을 배열, 0~9, a,b,c,d,e,f
        for(i=0; i<=9; i++){
            v_hexaNum[v_hexaNum.length] = i;
        }
        v_hexaNum[v_hexaNum.length] = "a";
        v_hexaNum[v_hexaNum.length] = "b";
        v_hexaNum[v_hexaNum.length] = "c";
        v_hexaNum[v_hexaNum.length] = "d";
        v_hexaNum[v_hexaNum.length] = "e";
        v_hexaNum[v_hexaNum.length] = "f";
        
        //배열에 잘 담겼는지 확인

        function f_hexaNum(){
            var v_ranIndex = Math.floor(Math.random()* v_hexaNum.length);
            return v_hexaNum[v_ranIndex];
        }

        function f_ranColor2(){
            var v_hexaColor = "#";
            for(var i=1; i<=6; i++){
                v_hexaColor += f_hexaNum();
            }
            return v_hexaColor;  // 완성된 16진수 문자열 리턴
        }
        window.onload = function(){
            // body와 head는 문서에 하나밖에 없어야 하므로 id없이 접근 가능
            // 색깔줄때 rgb 함수 사용가능(실제 내부적으로 사용됨)
            //document.body.style.backgroundColor = f_ranColor();
            document.body.style.backgroundColor = "#0000ff";
        }
    </script>
</body>
</html>

 

1초마다 페이지 색상변경

onload 함수 밖으로 빼기

        window.onload = function(){
            document.body.style.backgroundColor = "#0000ff";
        }

위의 함수를 아래와 같이 분리

        function f_myBack() {
            document.body.style.backgroundColor = f_ranColor2();
            setTimeout(f_myBack, 1000);
        }
        window.onload = f_myBack;
더보기
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 페이지 새로고침 (곧 방문자가 방문할 때 마다 다른색이 나오게)
        function f_ranNum(){
            return  Math.floor(Math.random()*256);  // 0~255  return
        }
        function f_ranColor(){
           return  "rgb(" + f_ranNum() + "," + f_ranNum() + "," + f_ranNum() + ")";
        }

        var v_hexaNum=[]; // 16진수를 담을 배열, 0~9, a,b,c,d,e,f
        for(i=0; i<=9; i++){
            v_hexaNum[v_hexaNum.length] = i;
        }
        v_hexaNum[v_hexaNum.length] = "a";
        v_hexaNum[v_hexaNum.length] = "b";
        v_hexaNum[v_hexaNum.length] = "c";
        v_hexaNum[v_hexaNum.length] = "d";
        v_hexaNum[v_hexaNum.length] = "e";
        v_hexaNum[v_hexaNum.length] = "f";
        
        //배열에 잘 담겼는지 확인

        function f_hexaNum(){
            var v_ranIndex = Math.floor(Math.random()* v_hexaNum.length);
            return v_hexaNum[v_ranIndex];
        }

        function f_ranColor2(){
            var v_hexaColor = "#";
            for(var i=1; i<=6; i++){
                v_hexaColor += f_hexaNum();
            }
            return v_hexaColor;  // 완성된 16진수 문자열 리턴
        }

        function f_myBack(){
            // body와 head는 문서에 하나밖에 없어야 하므로 id없이 접근 가능
            // 색깔줄때 rgb 함수 사용가능(실제 내부적으로 사용됨)
            //document.body.style.backgroundColor = f_ranColor();
            //alert(f_ranColor2());  // 형식확인
            document.body.style.backgroundColor = f_ranColor2();
            setTimeout(f_myBack,1000)
        }
        window.onload = f_myBack;
    </script>
</body>
</html>

'화면구현 > HTML' 카테고리의 다른 글

마우스로끌기 완성~  (0) 2020.07.08
다양한요소등록법  (0) 2020.07.02
함수리턴  (0) 2020.06.25
재귀호출  (0) 2020.06.25
중복체크  (0) 2020.06.25