Event

이벤트

모든 행위를 이벤트라 부른다

 

 

 

 

 

마우스 이벤트

마우스 이벤트

 

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      const clickEvent = () => {
        alert("클릭");
      };
    </script>

    <input type="button" onclick="clickEvent()" value="클릭" />
    <input type="button" ondblclick="clickEvent()" value="클릭" />
    <input type="button" onmouseover="clickEvent()" value="클릭" />
  </body>
</html>
코드 실행

 

 

 

 

 

 

 

키보드 이벤트

키보드 이벤트

 

 

 

 

 

 

 

 

 

 

아이디와 연동하여 이벤트 발생 시 함수 호출하기

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      #h3 {
        color: red;
      }
    </style>
  </head>
  <body>
    <script>
      const clickEvent = () => {
        // alert("클릭");
        const name = document.getElementById("name");
        console.log(name);
        // name.value = "안녕하세요";
        // name.style = "background : blue; border : 10px solid black";

        const name1 = document.querySelector("#name2");
        console.log(name1);
        name1.value = name.value;
        name.value = "";
      };

      // window.onload => 웹이 호출될때 자동으로 실행되는 함수
      window.onload = () => {
        // alert("onload");
        document.getElementsByClassName("btn");
        const btn = document.querySelector(".btn");
        console.log(btn);
        btn.addEventListener("dblclick", innerTest);
        // 버튼이 더블클릭되면 innerTest 함수를 실행시켜라
      };

      const innerTest = () => {
        // 아이디 값이 text 인 것을 불러옴
        const txt = document.getElementById("text");
        let msg = "<h3 id = 'h3'>내용 바꾸기</h3>";
        txt.innerHTML = msg;
        // innerHTML 은 html 코드까지 적용된다
        txt.innerText = msg;
        // innerText 는 html 코드를 모두 text 로 인식하여
        // 코드를 모두 텍스트로 표현한다
      };
    </script>

    <input type="text" id="name" placeholder="input name" /><br />
    <input type="text" id="name2" placeholder="input name" /><br />
    <input type="button" onclick="clickEvent()" value="클릭" />
    <input type="button" class="btn" value="클릭" />
    <br />
    <label id="text">텍스트 값</label>
  </body>
</html>
코드 실행

 

 

 

 

 

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script>
      const myMousedown = () => {
        document.getElementById("span").innerHTML = "마우스 DOWN";
      };

      const myMouseup = () => {
        document.getElementById("span").innerHTML = "마우스 UP";
      };

      let cnt = 0;
      const myMousemove = () => {
        cnt++;
        document.getElementById("count1").innerHTML = cnt;
      };

      const myMouseover = () => {
        document.getElementById("count2").innerHTML = cnt;
      };

      const myMouseout = () => {
        document.getElementById("count2").innerHTML = "마우스 나감";
      };
    </script>
  </head>
  <body>
    <div
      style="cursor: pointer"
      onmousedown="myMousedown()"
      onmouseup="myMouseup()"
    >
      <span id="span"> 이벤트 알아보기 </span>
    </div>

    <div
      onmousemove="myMousemove()"
      style="background: gray; width: 100px; height: 100px"
    >
      <span id="count1">0</span>
    </div>

    <div
      onmouseover="myMouseover()"
      onmouseout="myMouseout()"
      style="background: gray; width: 100px; height: 100px"
    >
      <span id="count2">0</span>
    </div>
  </body>
</html>
코드 실행

 

 

 

 

 

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      img {
        width: 100px;
        height: 200px;
      }
    </style>

    <script>
      // window.onload 에서 window. 은 생략 가능
      onload = () => {
        // alert("execute");
        let img = document.getElementById("myImg");
        img.addEventListener("mouseover", changeFunc01);
        // 마우스가 들어오면 changeFunc01 함수를 호출
        img.addEventListener("mouseout", () => {
          let myImg = document.getElementById("myImg");
          let myImg02 = document.getElementById("myImg02");
          myImg.src = "download.jpg";
          myImg02.src = "download.jpg";
        });
        // 마우스가 들어오면 바로 뒤에 선언된 함수를 호출
      };
      changeFunc01 = () => {
        let myImg = document.getElementById("myImg");
        let myImg02 = document.getElementById("myImg02");
        myImg.src = "image.png";
        myImg02.src = "image.png";
      };
      changeFunc02 = () => {
        let myImg = document.getElementById("myImg");
        let myImg02 = document.getElementById("myImg02");
        myImg.src = "download.jpg";
        myImg02.src = "download.jpg";
      };
    </script>
  </head>
  <body>
    <img id="myImg" src="download.jpg" />
    <img
      id="myImg02"
      src="download.jpg"
      onmousedown="changeFunc01()"
      onmouseup="changeFunc02()"
    /><br />
  </body>
</html>

download.jpg : 이상해씨

image.png : 파이리

좌측 이미지 : 마우스가 올라가고 나감에 따라 그림이 변경, 우측 이미지 : 마우스가 그림에서 클릭됨에 따라 그림이 변경

 

 

 

 

 

코드 간단히 변경

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      img {
        width: 100px;
        height: 200px;
      }
    </style>

    <script>
      // window.onload 에서 window. 은 생략 가능
      onload = () => {
        // alert("execute");
        let img = document.getElementById("myImg");
        img.addEventListener("mouseover", changeFunc01);
        // 마우스가 들어오면 changeFunc01 함수를 호출
        img.addEventListener("mouseout", changeFunc01);
        // 마우스가 들어오면 바로 뒤에 선언된 함수를 호출
      };
      let num = 0;
      changeFunc01 = () => {
        const arr = ["image.png", "download.jpg"];
        let myImg = document.getElementById("myImg");
        let myImg02 = document.getElementById("myImg02");
        myImg.src = arr[num];
        myImg02.src = arr[num];
        num = (num == 0) ? 1 : 0;

        // if (num == 0) {
        //   myImg.src = arr[num];
        //   myImg02.src = arr[num];
        //   num = 1;
        // } else {
        //   myImg.src = arr[num];
        //   myImg02.src = arr[num];
        //   num = 0;
        // }

        //myImg.src = "image.png";
        //myImg02.src = "image.png";
      };
    </script>
  </head>
  <body>
    <img id="myImg" src="download.jpg" />
    <img
      id="myImg02"
      src="download.jpg"
      onmousedown="changeFunc01()"
      onmouseup="changeFunc02()"
    /><br />
  </body>
</html>
코드 실행

 

 

 

 

 

 

 

 

 

 

실습 예제

실습 예제

 

예제 풀이

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      div {
        background: lightgray;
        height: 400px;
        width: 400px;
        text-align: center;
      }
      div > img {
        height: 300px;
        margin-top: 5%;
      }
      div > div {
        width: auto;
        height: 50px;
        display: flex;
        background: lightpink;
      }
      div > div > button {
        height: 25px;
        margin: auto;
      }
    </style>
    <script>
      imageNum = 1;
      onload = () => {
        let nextImgbtn = document.getElementById("nextImgbtn");
        let beforeImgbtn = document.getElementById("beforeImgbtn");
        nextImgbtn.addEventListener("click", nextImgFunc);
        beforeImgbtn.addEventListener("click", beforeImgFunc);
      };
      nextImgFunc = () => {
        let img = document.getElementById("img");
        imageNum == 8 ? (imageNum = 1) : imageNum++;
        img.src = `./사진/최근상품0${imageNum}.jpg`;
      };
      beforeImgFunc = () => {
        let img = document.getElementById("img");
        imageNum == 1 ? (imageNum = 8) : imageNum--;
        img.src = `./사진/최근상품0${imageNum}.jpg`;
      };
    </script>
  </head>
  <body>
    <div>
      <img src="./사진/최근상품01.jpg" id="img" />
      <div>
        <button id="beforeImgbtn">이전 사진</button>
        <button id="nextImgbtn">다음 사진</button>
      </div>
    </div>
  </body>
</html>
코드 실행

 

 

 

 

 

 

 

 

 

 

실습 예제2

실습 예제2

 

예제 풀이2

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      * {
        margin: 0;
      }
      img {
        width: 100px;
        height: 100px;
      }
      .flex {
        display: flex;
      }
      .div {
        border: 1px solid gray;
        width: 100px;
        height: 100px;
        position: relative; /* 자식 span요소를 absolute를 사용하기 위해 설정*/
      }
      span {
        /*absolute가 적용되면 inline태그의 사이즈도 조정 가능해 진다*/
        position: absolute;
        background: orange;
        top: 25px;
        left: 25px;
        width: 50px;
        height: 50px;
        /*line-height와 height의 크기를 같게 하면 글씨가 가운데 정렬된다*/
        text-align: center;
        line-height: 50px;
      }
    </style>

    <script>
      const images = [
        "./사진/최근상품01.jpg",
        "./사진/최근상품02.jpg",
        "./사진/최근상품03.jpg",
        "./사진/최근상품04.jpg",
        "./사진/최근상품05.jpg",
        "./사진/최근상품06.jpg",
        "./사진/최근상품07.jpg",
        "./사진/최근상품08.jpg",
      ];

      window.onload = function init() {
        console.log("init");
        let msg = "<div class='flex'>";
        for (let i = 0; i < images.length; i++) {
          msg += `<div class="div" id="${i}" onMousemove="imgOver(${i})" onMouseout="imgOut(${i})">`;
          msg += `<img src="${images[i]}" >`;
          msg += "</div>";
          if (i + 1 == Number(images.length / 2))
            msg += "</div><div class='flex'>";
        }
        const wrap = document.getElementById("wrap");
        wrap.innerHTML = msg;
      };
      const imgOver = (index) => {
        const div = document.getElementById(index);
        div.innerHTML = `<span onMousemove="imgOver(${index})">선택</span>`;
      };
      const imgOut = (index) => {
        const div = document.getElementById(index);
        div.innerHTML = `<img src="${images[index]}">`;
      };
    </script>
  </head>
  <body>
    <div id="wrap"></div>
  </body>
</html>

- 처음 시도(오류) -

테이블 안에 td 태그내부에 img 태그로 이미지를 불러옴 > 이후 img 태그에 각각 id 를 부여하여 innerHTML 을 사용하여 이미지를 display:none 으로 표현하고자 하였으나 실패 > innerHTML 은 해당 태그 안의 HTML 코드 자체를 변경하는 기능이므로 변경하고자 하면 img 태그에 id 를 부여해서 변경하는 것이 아닌 img 태그를 가지고 있는 부모 태그인 td 에 id 를 부여하여 변경하여야 했음.... > 태그 내에 있는 코드 자체를 변경하는 것이 innerHTML 이므로 만약 img 를 변경하고 싶다면 혹은 제거하고 싶다면 img 가 속해있는 부모 태그에서 사용해야 한다

코드 실행
728x90

 

 

 

 

 

함수 ( function )

- function 으로 정의한다.

funtion 함수명(){실행할 코드}

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      console.log("프로그램 시작!!!");
      function test() {
        console.log("test 함수 시작!!");
      }
      console.log("함수 지나옴");
      test();
      console.log("프로그램 종료!!!");
    </script>
  </body>
</html>

함수 부분은 호출이 이루어지기 전까지 실행되지 않음 ( 선언된다고 실행되지 않음, 반환타입을 java 처럼 따로 지정하진 않는다 )

( 자바의 변수와 동일하게 자바스크립트의 변수는 지역변수, 전역변수 등 어디서 선언되느냐에 따라 변수의 소멸 시점이 존재한다 )

 

 

 

 

 

 

 

 

 

 

함수에 매개변수를 넘겨주기

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      /*
      sumFunc();
      function sumFunc() {
        const n1 = prompt(`수 입력`);
        const n2 = prompt(`수 입력`);
        const sum = Number(n1) + Number(n2);
        document.write(`${n1} + ${n2} = ${sum}<br>`);
      }
      */

      /*
      const n1 = prompt(`수 입력`);
      const n2 = prompt(`수 입력`);
      sumFunc(n1, n2);
      function sumFunc(n1, n2) {
        const sum = Number(n1) + Number(n2);
        document.write(`${n1} + ${n2} = ${sum}<br>`);
      }
      */

      const n1 = prompt(`수 입력`);
      const n2 = prompt(`수 입력`);
      const sum = op(n1, n2);
      sumFunc(n1, n2, sum);
      // 계산부분
      function op(n1, n2) {
        const sum = Number(n1) + Number(n2);
        return sum;
      }
      // 출력부분
      function sumFunc(n1, n2, sum) {
        document.write(`${n1} + ${n2} = ${sum}<br>`);
      }
    </script>
  </body>
</html>
코드 실행

 

 

 

 

 

 

 

 

 

 

여러개의 값을 리턴하고자 할때

- 배열을 사용

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // return 값을 하나만 전달 가능
      function testFunc01() {
        let num = 95;
        let txt = "안녕하세요";
        return num, txt;
      }
      const result = testFunc01();
      document.write(result + "<hr>");

      // 배열로 담아서 return 값을 여러개 전달
      function testFunc02() {
        let num = 95;
        let txt = "안녕하세요";
        const arr = [num, txt];
        return arr;
      }
      const result2 = testFunc02();
      document.write(result2 + "<hr>");
      document.write(result2[0] + "<hr>");
      document.write(result2[1] + "<hr>");

      // Object 타입으로 return 값을 여러개 전달
      function testFunc03() {
        let num = 95;
        let txt = "안녕하세요";
        const arr = { num: num, txt: txt };
        return arr;
      }
      const result3 = testFunc03();
      // 콘솔에서 result3 이 가지고 있는 키와
      // 키에 담긴 값을 확인한 뒤 사용
      console.log(result3);
      document.write(result3 + "<hr>");
      document.write(result3["num"] + "<hr>");
      document.write(result3.txt + "<hr>");
    </script>
  </body>
</html>

코드 실행

 

 

 

 

 

 

 

 

 

 

매개변수의 갯수가 다르거나 가변적일 경우 함수에서 처리하는 방법

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      function test01(x, y) {
        console.log("첫번째 함수 실행!!!");
      }
      function test01(x) {
        return x;
      }
      document.write("함수 호출 인자 없음 : " + test01() + "<br>");
      document.write("함수 호출 인자 1 : " + test01(10) + "<br>");
      document.write("함수 호출 인자 2 : " + test01(10, 20) + "<br>");
      // 오버로딩 불가능....!!! 무조건 나중에 선언된 함수로 적용됨

      function test02(x, y, z) {
        document.write(`${x}, ${y}, ${z}<br>`);
        if (z == undefined) {
          // 매개변수가 갯수가 부족할 경우의 로직 생성
          sum = x + y;
        } else {
          sum = x + y + z;
        }
        return sum;
      }
      let r1 = test02(10, 20);
      let r2 = test02(10, 20, 30);
      document.write(`매개변수 2개 : ${r1}<br>`);
      document.write(`매개변수 3개 : ${r2}<br>`);

      // arguments 를 사용하여 여러개의 가변적인 매개변수 받기
      function test03() {
        console.log(arguments.length);
        let i,
          sum = 0;
        for (i = 0; i < arguments.length; i++) {
          sum = sum + arguments[i];
          document.write(arguments[i]);
        }
        return sum;
      }
      let r3 = test03(10, 20);
      let r4 = test03(10, 20, 30);
      document.write(`매개변수 2개 : ${r3}<br>`);
      document.write(`매개변수 3개 : ${r4}<br>`);
    </script>
  </body>
</html>

 

 

 

 

 

 

 

 

 

 

함수 표현식

함수 표현식 ( 익명함수, 즉시 실행 함수 )

익명함수 - 한번 사용되고 사라짐 ( 메모리공간에서 삭제 )

일반 함수 - 선언되면 메모리 공간을 미리 잡아먹고 사용할때 꺼내서 쓴다

 

 

 

 

 

즉시 실행 함수

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      (function test() {
        alert("즉시 실행 함수!!!!");
      })();

      let result = (function test1() {
        return "서버로부터 데이터를 받아와 화면에 보여줌";
      })();
      document.write(result + "<br>");

      // 초기화 해주는 함수
      let name = "홍길동";
      let result02 = (function test02(n) {
        let db = n + "님의 정보 입니다";
        return db;
      })(name);
      document.write(result02 + "<br>");
    </script>
  </body>
</html>
즉시 실행 함수 코드 실행

 

 

 

 

 

★ 익명 함수 ★

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      function test(x, y) {
        return x + y;
      }
      document.write(test(1, 2) + "<br>");

      // 함수를 변수로 설정하고 1회만 사용하고 버리는 익명함수
      let sumFunc = function (x, y) {
        return x + y;
      };
      document.write(sumFunc(10, 20) + "<br>");

      // 함수를 변수로 설정하고 1회만 사용하고 버리는 익명함수
      // 더 간단한 표현식
      let sumFunc1 = (x, y) => x + y;
      document.write(sumFunc1(100, 200) + "<br>");

      // 여러 줄을 표현해야 할 땐 중괄호로 묶어서 표현해야 한다
      // 중괄호로 여러 줄을 표현하는 경우 무조건 return 이 들어가야 한다
      // 어떤 값이 반환 값인지 명시해줘야 함!!!
      let sumFunc2 = (x, y) => {
        let num = 100;
        return x + y + num;
      };
      document.write(sumFunc2(1000, 2000) + "<br>");

      // 중괄호로 묶었을때 리턴값이 없으면 undefined 를 반환
      const result01 = () => {
        10 + 20;
      };
      const result02 = () => 10 + 20;
      const result03 = () => (10 + 20);

      document.write("<hr>");
      document.write(result01() + "<br>");
      document.write(result02() + "<br>");
      document.write(result03() + "<br>");
    </script>
  </body>
</html>

익명 함수 코드 실행

 

 

 

 

 

 

 

 

 

 

실습 예제

실습 예제

 

예제 풀이

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 입력 함수
      let inputNum1 = (x) => Number(prompt(x));

      // 출력 함수
      let print = (x) => document.write(x);

      // 두 수를 입력받아 큰 수를 출력하는 함수
      let moreBig = (x, y) => {
        if (x > y) {
          return x;
        } else {
          return y;
        }
      };
      print(moreBig(inputNum1("첫번째 수 입력"), inputNum1("두번째 수 입력")));

      document.write("<hr>");

      // 입력 받은 값이 짝수인지 홀수인지 판별하는 함수
      let evenNum = (x) => {
        if (x % 2 != 0) {
          return "홀수";
        } else {
          return "짝수";
        }
      };
      print(evenNum(inputNum1("홀, 짝 판별할 수 입력")));

      document.write("<hr>");

      // 입력 받은 값이 3의 배수인지 판별하는 함수
      let multipleThree = (x) => {
        if (x % 3 != 0) {
          return `${x}는 3의 배수가 아닙니다`;
        } else {
          return `${x}는 3의 배수입니다`;
        }
      };
      print(multipleThree(inputNum1("3의 배수인지 판별할 수 입력")));

      document.write("<hr>");

      // 수를 입력 받아 소수인지 판별하는 함수
      let decimal = (x) => {
        var arr = [];
        for (var i = 1; i <= x; i++) {
          if (x % i == 0) {
            arr.push(i);
          }
        }
        if (arr.length == 2) {
          return `${x}는 소수 입니다.`;
        } else {
          return `${x}는 소수가 아닙니다.`;
        }
      };
      print(decimal(inputNum1("소수인지 판별할 수를 입력하세요")));

      document.write("<hr>");

      // 절댓값을 구하는 함수를 정의하시오
      let absolute = (x) => {
        if (x >= 0) {
          return x;
        } else {
          return x - x * 2;
        }
      };
      print(absolute(inputNum1("절댓값을 구할 수를 입력하세요")));
    </script>
  </body>
</html>
코드 실행
728x90

 

 

 

 

 

JavaScript

 

 

 

 

 

if 문 사용 예시

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      const num = 10;
      let msg = "";
      if (num > 100) {
        msg = "100보다 크다";
      } else {
        msg = "100보다 작다";
      }
      document.write(msg);
      document.write("<hr>");

      if (num % 2 == 0) {
        msg = "num은 짝수이며<br>";
        msg += "2의 배수입니다";
      } else {
        msg = "num은 홀수이며<br>";
        msg += "2의 배수가 아닙니다";
      }
      document.write(msg);
      document.write("<hr>");

      const saveId = "aaa",
        savePwd = "aaa";
      const inputId = "aaa",
        inputPwd = "aaa";
      if (saveId === inputId) {
        if (savePwd === inputPwd) {
          msg = `${saveId}님 로그인 완료`;
        } else {
          msg = "비밀번호가 틀렸습니다";
        }
      } else {
        msg = "존재하지 않는 id 입니다";
      }
      alert(msg);
    </script>
  </body>
</html>
코드 실행

( else if 도 자바 문법과 동일하게 사용할 수 있다 )

 

 

 

 

 

 

 

 

 

 

switch-case 문

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      let msg = "";
      let num = 3;
      switch (num) {
        case 1:
          msg = "1과 같음";
          break;
        case 2:
          msg = "2와 같음";
          break;
        default:
          msg = "그 외의 값 입력";
      }
      document.write(msg + "<hr>");

      num = "안녕";
      switch (num) {
        case "안녕":
          msg = "하세요";
          break;
        case "그래":
          msg = "반갑다";
          break;
      }
      document.write(msg + "<hr>");
    </script>
  </body>
</html>

코드 실행

 

 

 

 

 

 

 

 

 

 

for 문

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      repeat = 5;
      msg = "";
      for (var i = 1; i < repeat; i++) {
        msg += `<h${i}>${i}. 번째 반복<h${i}>`;
      }
      document.write(msg + "<hr>");

      let sum = 0;
      num = 10;
      for (var i = 1; i <= num; i++) {
        sum += i;
      }
      document.write(sum + "<hr>");

      let evenSum = 0,
        oddSum = 0;
      sum = 0;
      num = 10;
      for (var i = 1; i <= num; i++) {
        sum += i;
        if (i % 2 == 0) {
          evenSum += i;
        } else {
          oddSum += i;
        }
      }
      document.write(`1부터 10까지의 총 합 : ${sum}<hr>`);
      document.write(`1부터 10까지의 짝 합 : ${evenSum}<hr>`);
      document.write(`1부터 10까지의 홀 합 : ${oddSum}<hr>`);
    </script>
  </body>
</html>

코드 실행

 

 

 

 

 

 

 

 

 

 

while 문

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      let i = 1,
        sum = 0;
      while (i <= 10) {
        sum += i;
        i++;
      }
      document.write(sum + "<hr>");

      i = 1;
      while (i <= 5) {
        if (i == 3) {
          console.log("333333333");
          break;
        }
        console.log(i);
        i++;
      }

      i = 1;
      let msg = "";
      let bool = true;
      while (bool) {
        if (i == 3) {
          bool = false;
        }
        msg += i + ", ";
        i++;
      }
      document.write(msg);
    </script>
  </body>
</html>

코드 실행

 

 

 

 

 

 

 

 

 

 

실습 예제1

실습 예제1

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 실습 예제 1-1
      let coffeeNum = prompt("구매할 커피 갯수 입력");
      let coffeSum = 0;
      for (var i = 1; i <= coffeeNum; i++) {
        if (i <= 10) {
          coffeSum += 2000;
        } else {
          coffeSum += 1500;
        }
      }
      document.write(`총 커피 가격 : ${coffeSum}<br>`);

      // 실습 예제 1-2
      let usbNum = prompt("구매할 usb 갯수 입력");
      let usbSum = 0;
      for (var i = 1; i <= usbNum; i++) {
        if (usbNum < 100) {
          usbSum += 5000;
        } else {
          usbSum += 5000 * 0.88;
        }
      }
      document.write(`총 usb 가격 : ${usbSum}`);
    </script>
  </body>
</html>

 

예제 풀이1

예제 풀이1

 

 

 

 

 

 

 

 

 

 

실습 예제2

실습 예제2

 

예제 풀이2

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      num = prompt("수 입력");
      msg = "";
      for (var i = 1; i <= 9; i++) {
        msg += `${num} * ${i} = ${num * i}<br>`;
      }
      document.write(msg);
    </script>
  </body>
</html>

예제 풀이2

 

 

 

 

 

 

 

 

 

 

실습 예제3

실습 예제3

 

예제 풀이3

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      msg = "";
      for (var i = 1; i <= 25; i++) {
        msg += i;
        if (i % 5 == 0) {
          msg += "<br>";
        } else {
          msg += " , ";
        }
      }
      document.write(msg);
    </script>
  </body>
</html>

예제 풀이3

 

 

 

 

 

 

 

 

 

 

실습 예제4

실습 예제4

 

예제 풀이4

<!DOCTYPE html>
<html lang="kor">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      let msg1 = "";
      for (var i = 1; i <= 5; i++) {
        for (var j = 1; j <= 5; j++) {
          msg1 += `${i * j} `;
        }
        msg1 += "<br>";
      }
      document.write(msg1);

      document.write(`<hr>`);

      let msg2 = "";
      for (var i = 1; i <= 21; i += 5) {
        for (var j = 0; j <= 4; j++) {
          msg2 += `${i + j} `;
        }
        msg2 += "<br>";
      }
      document.write(msg2);
    </script>
  </body>
</html>

예제 풀이4

 

 

 

 

 

 

 

 

 

 

실습 예제5

실습 예제5

 

예제 풀이5

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      table {
        border: 1px solid black;
      }
      table tr td {
        border: 1px solid black;
      }
    </style>
  </head>
  <body>
    <script>
      let num = prompt("아파트 층 수 입력");

      msg = "<table>";
      for (var i = num; i >= 1; i--) {
        msg += "<tr>";
        for (var j = 1; j <= 4; j++) {
          msg += `<td>${i + "0" + j + "호"}</td>`;
        }
        msg += "</tr>";
      }
      msg += "</table>";
      document.write(msg);
    </script>
  </body>
</html>
예제 풀이5

 

 

 

 

 

 

 

 

 

 

실습 예제6

실습 예제6

 

예제 풀이6

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      let num;
      let sum = 0;
      while (true) {
        num = prompt("수 입력(10~20사이의 수)");
        if (num < 10 || num > 20) {
          alert("범위를 벗어났습니다. 다시 시도하세요.");
          console.log("범위를 벗어났습니다. 다시 시도하세요.");
          continue;
        } else {
          for (var i = 1; i <= num; i++) {
            sum += i;
          }
          break;
        }
      }
      document.write(`입력받은 수까지의 합 : ${sum}`);
      console.log(`입력받은 수까지의 합 : ${sum}`);
    </script>
  </body>
</html>
콘솔창과 alert 창 둘 다 출력
728x90

 

 

 

 

 

JavaScript

JavaScript
변수

 

 

 

 

 

 

 

 

 

 

변수 선언, console.log 로 확인

스크립트 태그로 자바스크립트의 코드를 작성

- 작은 따옴표, 큰 따옴표 모두 사용 가능

- 줄바꿈을 사용하면 세미콜론을 생략 가능

- 스크립트 언어는 한 줄 한 줄 코드를 실행하기 때문에 코드에 오류가 있어도 오류코드 직전까지는 작동

( java 는 컴파일러가 코드를 모두 읽고 한번에 출력하기 때문에 오류코드가 있으면 아예 작동이 되지 않음 )

 

console.log() : 개발자 콘솔에 값을 출력

( F12 눌러서 console 탭에서 값을 확인 )

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      let num = 100;
      let str = "문자열";
      let fl = 1.123;
      let bool = true;
      let arr = [1, 2, 3];
      let obj = { num: "홍길동", age: 20 };
      let test;
      // 세미콜론은 줄을 바꿔서 코드를 적으면 생략 가능
      // 작은 따옴표, 큰 따옴표 모두 사용 가능
      console.log(num, typeof num);
      console.log(str, typeof str);
      console.log(fl, typeof fl);
      console.log(bool, typeof bool);
      console.log(arr, typeof arr);
      console.log(obj, typeof obj);
      console.log(test, typeof test);
      // console.log : 콘솔창으로 무언가를 출력하는 코드
      // 웹 실행하여 F12 눌러서 Console 탭에 들어가면 출력됨

      num = [1, 2, 3];
      console.log("-----");
      console.log("변경 후 : ", num, typeof num);
    </script>
  </body>
</html>

코드 실행

 

 

 

 

 

 

 

 

 

 

document.write() : 값을 웹에 출력

prompt() : 입력을 받음

` (backtick) 을 사용하면 ${변수명} 을 적어서 표현이 가능하다

( 자바의 printf 와 비슷 )

 

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script>
      let name = "홍길동";
      let age = prompt("나이 입력");
      document.write("학생 이름 : " + name + "<br>");
      document.write("학생 나이 : " + age + "<br>");

      document.write(`이름 : ${name}님의 나이는 ${age}살 입니다<br>`);

      console.log(`age : ${typeof age}`);
      // 입력 값은 string 으로 저장됨

      let num = Number(age);
      // Number 자료형으로 age 값을 형변환하여 num 이라는 변수로 저장
      console.log(`age : ${typeof num}`);

      console.log(`age : ${typeof num.toString()}`);
      // 문자형으로 형변환하는 toString
      console.log(`age : ${typeof (num + "")}`);
      // 자바에서 사용했듯이 문자열을 더해서 문자열로 변경
    </script>
  </head>
  <body></body>
</html>
코드 실행

 

 

 

 

 

 

 

 

 

 

let, var, const

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      let name = "홍길동";
      // let name = "김개똥";
      // let 은 중복된 변수명으로 선언 불가
      name = "김개똥";
      var age = 20;
      var age = 30;
      // var 는 중복된 변수명으로 다시 선언이 가능
      console.log(age);
      console.log(name);

      const key = "키키키키키";
      // key = "값 변경!!";
      // const 는 상수화 시킨 변수이기 때문에 값 변경이 불가
      document.write(key);

      const str01 =
        "안녕하세요\
      그래\
      반갑다";
      document.write("<br>" + str01);
      // backtick(``) 을 사용하지 않으면 \ 를 사용하여
      // 이어지는 문장임을 표현

      const str02 = `그래
      반가워
      만나서~~~!!`;
      document.write("<br><b>" + str02 + "<b>");
      // backtick(``) 은 그냥 표현 가능
    </script>
  </body>
</html>

코드 실행

 

 

 

 

 

 

 

 

 

 

실습 예제

실습 예제

 

예제 풀이

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      table {
        border: 1px solid black;
      }
      table tr th {
        border: 1px solid black;
        text-align: center;
      }
      table tr td {
        border: 1px solid black;
      }
    </style>
  </head>
  <body>
    <script>
      let name = prompt("당신의 이름은?");
      let age = prompt(`${name}님의 나이는?`);

      document.write(`
        <table>
            <tr>
                <th>이름</th>
                <th>나이</th>
                <th>주소</th>
            </tr>

            <tr>
                <td>${name}</td>
                <td>${age}</td>
                <td>산골짜기</td>
            </tr>

            <tr>
                <td>${name}</td>
                <td>${age}</td>
                <td>산골짜기</td>
            </tr>
        </table>
        `);
    </script>
  </body>
</html>

코드 실행

 

 

 

 

 

 

 

 

 

 

정수 자료형으로 형변환

Number 자료형 : 정수와 실수 모두 받을 수 있음

parseInt : 정수형 자료만 받을 수 있음

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      const num01 = prompt("첫번째 수 입력");
      const num02 = prompt("두번째 수 입력");
      console.log(typeof num01);
      console.log(num01 + num02);
      console.log(typeof Number(num01), " : " + Number(num01));
      // Number 자료형은 실수형도 담을 수 있음

      console.log(typeof parseInt(num01), " : " + parseInt(num01));
      // parseInt 로 형변환하면 실수형 자료를 담을 수 없음
      // 고로, 실수의 값은 버려짐

      const su01 = 10,
        su02 = 3;
      document.write("10 / 3 => " + su01 / su02 + "<br>");
      document.write("Number 10 / 3 => " + Number(su01 / su02) + "<br>");
      document.write("parseInt 10 / 3 => " + parseInt(su01 / su02) + "<br>");
    </script>
  </body>
</html>
코드 실행

 

 

 

 

 

 

 

 

 

 

연산자

연산자 ( 관계연산자에 === 와 !== 가 추가됐다 )

 

연산자 예시

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      const num1 = 10;
      const num2 = 4;
      document.write(`${num1} / ${num2} = ${num1 / num2}<br>`);
      document.write(`${num1} / ${num2} = ${parseInt(num1 / num2)}<br>`);
      document.write(`${num1} * ${num2} = ${num1 * num2}<br>`);
      document.write(`${num1} % ${num2} = ${num1 % num2}<br>`);
    </script>

    <script>
      let n1, n2;
      n1 = n2 = 5;
      n1 += 1;
      document.write(`${n1}<br>`);
      n1 -= 1;
      document.write(`${n1}<br>`);
      n1 *= n2;
      document.write(`${n1}<br>`);
      n1 /= n2;
      document.write(`${n1}<br>`);
      n1 %= n2;
      document.write(`${n1}<br>`);

      document.write(`<hr>`);
      n1 = "3";
      n2 = "3";
      document.write((n1 == n2) + "<br>");
      document.write((n1 != n2) + "<br>");
      document.write((n1 === n2) + "<br>");
      // 타입과 값까지 일치하는가?
      document.write((n1 !== n2) + "<br>");
      // 타입 또는 값이 다르면 true

      document.write(`<hr>`);
      document.write((true || false) + "<br>");
      document.write((true && false) + "<br>");
      document.write(!(true && false) + "<br>");

      document.write(`<hr>`);
      const x = 5;
      const y = 7;
      let result;
      result = x > y ? x : y;
      document.write(`큰 값 : ` + result + `<br>`);
      result = x > y ? x - y : y - x;
      document.write(`큰 값 - 작은 값 : ` + result + `<br>`);
    </script>
  </body>
</html>

코드 실행

 

 

 

 

 

 

 

 

 

 

실습 예제

실습 예제

 

실습 풀이

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      num1 = prompt("수(짝/홀) 입력");
      num2 = prompt("수(3의 배수) 입력");
      num3 = prompt("첫번째 수 입력");
      num4 = prompt("두번째 수 입력");

      result1 = num1 % 2 == 1 ? "홀수" : "짝수";
      result2 = num2 % 3 == 0 ? "맞음" : "아님";
      result3 =
        num3 > num4? `${num3}이 ${num4}보다 크다` : `${num4}이 ${num3}보다 크다`;
      document.write(`${num1}은 ${result1} 입니다<br>`);
      document.write(`${num2}는 3의 배수 ${result2} 입니다<br>`);
      document.write(result3);
    </script>
  </body>
</html>

 

실습 풀이
728x90

 

 

 

 

 

CSS

margin : 바깥 쪽으로 밀어냄

padding : 안쪽으로 밀어냄

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      div {
        background: yellow;
        width: 300px;
        border: 15px solid navy;
        /* min-height: 200px; */
        /* 최소 높이 설정 */

        padding: 25px 0 0 0;
        margin: 25px;
      }
    </style>
  </head>
  <body>
    <div>
      css3 박스 모델은 content, padding, border, margin으로 구성되어 있다
    </div>
    <footer style="background: maroon">footer 지역입니다</footer>
  </body>
</html>

노란색 안쪽 여백 : padding , 바깥쪽 위, 오른쪽, 아래, 왼쪽 여백 : margin

 

 

 

 

 

 

 

 

 

 

그림자 옵션

글씨 그림자 : text-shadow

이미지 그림자 : box-shadow

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .title {
        text-shadow: 10px 10px 15px black;
        font-size: 70pt;
      }
      img {
        padding: 20px;
        margin: 20px;
        width: 200px;
        height: 100px;
      }
      .shadow1 {
        box-shadow: 5px 5px 10px black;
      }
      .shadow2 {
        box-shadow: -5px -5px 10px black;
      }
    </style>
  </head>
  <body>
    <h1 class="title">내용이 들어옵니다~~~</h1>
    <img src="download.jpg" class="shadow1" />
    <img src="download.jpg" class="shadow2" />
  </body>
</html>

코드 실행

 

 

 

 

 

 

 

 

 

 

배치하기

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      #wrap {
        width: 50%;
        height: 200px;
        border: 4px solid black;
        margin: auto;
        text-align: center;
        display: flex;
        /* 가로 배치 */
      }
      #wrap div {
        width: 33.333%;
        /* 메인 div 하위의 div 태그들의 위치를 1/3 로 균일하게 */
        /* 적용한다 */
      }
      #wrap div:first-child {
        order: 3;
        /* display:flex 를 적용하면 order 태그로 순서를 적용할 수 있음 */
        /* 첫번째 자식 클래스이지만 순서를 세번째로 */
        background: red;
      }
      #wrap div:nth-child(2) {
        order: 2;
        /* display:flex 를 적용하면 order 태그로 순서를 적용할 수 있음 */
        /* 두번째 자식 클래스이며 순서를 두번째로 */
        background: green;
      }
      #wrap div:nth-child(3) {
        order: 1;
        /* display:flex 를 적용하면 order 태그로 순서를 적용할 수 있음 */
        /* 세번째 자식 클래스이지만 순서를 첫번째로 */
        background: aqua;
      }
    </style>
  </head>
  <body>
    <div id="wrap">
      <div><h1>1</h1></div>
      <div><h1>2</h1></div>
      <div><h1>3</h1></div>
    </div>
  </body>
</html>

코드 실행

 

 

 

 

 

 

 

 

 

 

배치하기

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      #wrap {
        width: 50%;
        height: 200px;
        border: 4px solid black;
        margin: auto;
        text-align: center;
        display: flex;
        /* 가로 배치 */
      }
      #wrap div {
        width: 33.333%;
        /* 메인 div 하위의 div 태그들의 위치를 1/3 로 균일하게 */
        /* 적용한다 */
      }
      .cl01 {
        order: 3;
        /* display:flex 를 적용하면 order 태그로 순서를 적용할 수 있음 */
        /* 첫번째 자식 클래스이지만 순서를 세번째로 */
        background: red;
      }
      .cl02 {
        order: 2;
        /* display:flex 를 적용하면 order 태그로 순서를 적용할 수 있음 */
        /* 두번째 자식 클래스이며 순서를 두번째로 */
        background: green;
        display: flex;
        /* cl02 의 자식 클래스들도 가로 배치로 변경 */
      }
      .cl03 {
        order: 1;
        /* display:flex 를 적용하면 order 태그로 순서를 적용할 수 있음 */
        /* 세번째 자식 클래스이지만 순서를 첫번째로 */
        background: aqua;
      }
      .h01 {
        background: lightblue;
        width: 100%;
      }
      .h02 {
        background: lightcoral;
        width: 100%;
      }
    </style>
  </head>
  <body>
    <div id="wrap">
      <div class="cl01"><h1>1</h1></div>
      <div class="cl02">
        <h1 class="h01">첫번째</h1>
        <h1 class="h02">두번째</h1>
      </div>
      <div class="cl03"><h1>3</h1></div>
    </div>
  </body>
</html>

첫번째, 두번째 내용을 가진 div 가 처음 생성 시에는 세로로 배치되어 있는데 부모 클래스인 cl02 클래스에 display:flex 를 설정하여 자식 클래스를 가로로 배치

 

 

 

 

 

 

 

 

 

 

 

position

- static : 고정, 변경 불가

- relative : static 상태에서 top, right, bottom, left 값으로 위치를 변경 가능

- absolute : 웹 페이지를 기준으로 top, right, bottom, left 값으로 절대 위치를 설정

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      body {
        font-weight: bold;
        font-size: 12pt;
        background: gray;
      }
      .span1 {
        background: yellow;
        position: absolute;
        top: 5px;
      }
      .span2 {
        background: red;
        position: absolute;
        bottom: 5px;
      }
      .span3 {
        background: pink;
        position: absolute;
        top: -5px;
      }
      div {
        background: skyblue;
      }
    </style>
  </head>
  <body>
    <div style="background: green">position</div>
    <span class="span1">span1</span>
    <span class="span2">span2</span>
    <span class="span3">span3</span>
    <div>기본 값은 static 입니다</div>
  </body>
</html>

style 태그의 각 span 클래스의 코드를 static, relative, absolute 로 설정했을 때 출력물 ↓

static, relative, absolute 순서

 

 

 

 

 

 

 

 

 

 

 

position : absolute, fixed

absolute 와 fixed 의 차이점 : fixed 는 스크롤을 내려도 창의 고정 위치에 따라 같이 따라옴

z-index 옵션을 사용하면 위치가 겹쳤을 경우 위에 표시될 것을 index 번호를 부여하여 설정 가능 

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .sp {
        position: static;
        left: 30px;
        background: cyan;
        width: 400px;
        height: 50px;
      }
      .rp1 {
        position: fixed;
        right: 30px;
        top: 10px;
        background: orange;
        width: 400px;
        height: 50px;
        z-index: 1;
        /* 겹쳤을때 위에 더 위에 표시될 것 순서 */
      }
      .rp2 {
        position: absolute;
        right: 60px;
        top: 30px;
        background: lightblue;
        width: 400px;
        height: 50px;
        z-index: 0;
        /* 겹쳤을때 위에 더 위에 표시될 것 순서 */
      }
    </style>
  </head>
  <body>
    <p class="sp">정적 위치 설정</p>

    <p class="rp1">고정 위치(fixed)</p>
    <p class="rp2">절대 위치 설정(absolute)</p>
    <p class="sp">정적 위치 설정</p>
    <p class="sp">정적 위치 설정</p>
  </body>
</html>

코드 실행

 

 

 

 

 

 

 

 

 

 

로그인 창 연습

( 통일성은 없음 ) 

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      #wrap {
        height: 200px;
        width: 200px;
        margin: auto;
        border: 1px solid lightgray;
        padding: 10px;
        border-radius: 5px;
      }
      .id {
        width: 200px;
        height: 20px;
        font-size: 20px;
        border: none;
        border-bottom: 2px solid darkgray;
        margin: 10px 0;
      }
      .id:focus {
        outline: none;
      }
      .id::-webkit-input-placeholder {
        text-align: center;
        letter-spacing: 5px;
      }
      .pwd {
        border-radius: 5px;
        height: 20px;
        margin-bottom: 10px;
      }
      .btn {
        border-radius: 5px;
        width: 200px;
        height: 30px;
        background: lemonchiffon;
      }
    </style>
  </head>
  <body>
    <div id="wrap">
      <h3 style="text-align: center; border-bottom: 1px solid">
        로그인 페이지
      </h3>
      <form><input class="id" type="text" placeholder="input id" /></form>
      <form>
        <input class="pwd" type="text" placeholder="input password" />
      </form>
      <form><input class="btn" type="submit" value="LOGIN" /></form>
    </div>
  </body>
</html>

통일성 없이 연습

 

 

 

 

 

 

 

 

 

 

실습 예제

왼쪽 위부터 1, 2, 3, 4

 

실습 풀이

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      header {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 70%;
        border: 2px solid;
        background: red;
        text-align: center;
        font-weight: bold;
        font-size: 30px;
        padding: 40px 0;
      }
      div {
        position: absolute;
        left: 0;
        right: 0;

        bottom: 15%;
        top: 30%;
        display: flex;
      }
      nav {
        border: 1px solid;
        width: 15%;
        text-align: center;
        padding: 20px 0;
        font-weight: bold;
        background: yellow;
      }
      section {
        border: 1px solid;
        width: 85%;
        text-align: center;
        padding: 20px 0;
        font-weight: bold;
        background: green;
      }
      footer {
        position: absolute;
        bottom: 0px;
        left: 0px;
        right: 0px;
        top: 85%;
        border: 1px solid;
        text-align: center;
        font-size: 20px;
        font-weight: bold;
        background: pink;
        padding: 20px 0;
      }
    </style>
  </head>
  <body>
    <header>&lt;header&gt;</header>
    <div>
      <nav>&lt;nav&gt;</nav>
      <section>&lt;section&gt;</section>
    </div>
    <footer>&lt;footer&gt;</footer>
  </body>
</html>

1번 풀이

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      header {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 70%;
        border: 2px solid;
        background: red;
        text-align: center;
        font-weight: bold;
        font-size: 30px;
        padding: 40px 0;
      }
      div {
        position: absolute;
        left: 0;
        right: 0;

        bottom: 15%;
        top: 30%;
        display: flex;
      }
      nav {
        border: 1px solid;
        width: 15%;
        text-align: center;
        padding: 20px 0;
        font-weight: bold;
        background: yellow;
      }
      section {
        border: 1px solid;
        width: 60%;
        text-align: center;
        padding: 20px 0;
        font-weight: bold;
        background: green;
      }
      aside {
        width: 25%;
        border: 1px solid;
        text-align: center;
        padding: 20px 0;
        font-weight: bold;
        background-color: yellow;
      }
      footer {
        position: absolute;
        bottom: 0px;
        left: 0px;
        right: 0px;
        top: 85%;
        border: 1px solid;
        text-align: center;
        font-size: 20px;
        font-weight: bold;
        background: pink;
        padding: 20px 0;
      }
    </style>
  </head>
  <body>
    <header>&lt;header&gt;</header>
    <div>
      <nav>&lt;nav&gt;</nav>
      <section>&lt;section&gt;</section>
      <aside>aside</aside>
    </div>
    <footer>&lt;footer&gt;</footer>
  </body>
</html>

2번 풀이

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      header {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 70%;
        border: 2px solid;
        background: red;
        text-align: center;
        font-weight: bold;
        font-size: 30px;
        padding: 40px 0;
      }
      div {
        position: absolute;
        left: 0;
        right: 0;

        bottom: 15%;
        top: 30%;
        display: flex;
      }
      nav {
        border: 1px solid;
        width: 15%;
        text-align: center;
        padding: 20px 0;
        font-weight: bold;
        background: yellow;
      }
      section {
        border: 1px solid;
        width: 60%;
        text-align: center;
        padding: 20px 0;
        font-weight: bold;
        background: green;
      }
      aside {
        width: 25%;
        border: 1px solid;
        text-align: center;
        padding: 20px 0;
        font-weight: bold;
        background-color: yellow;
      }
      footer {
        position: absolute;
        bottom: 0px;
        left: 0px;
        right: 0px;
        top: 85%;
        border: 1px solid;
        text-align: center;
        font-size: 20px;
        font-weight: bold;
        background: pink;
        padding: 20px 0;
      }
      section div {
        position: static;
        display: block;
      }
      section > div > header {
        position: relative;
        margin: 5% 10px;
        padding: 0;
        height: 30px;
        font-weight: 100;
        font-size: large;
        background-color: skyblue;
      }
      section > div > article {
        border: 2px solid;
        position: relative;
        margin: 5% 10px;
        padding: 0;
        height: 30px;
        font-weight: 100;
        font-size: large;
        background-color: yellow;
      }
      section > div > footer {
        border: 2px solid;
        position: relative;
        margin: 5% 10px;
        padding: 0;
        height: 30px;
        font-weight: 100;
        font-size: large;
        background-color: pink;
      }
    </style>
  </head>
  <body>
    <header>&lt;header&gt;</header>
    <div>
      <nav>&lt;nav&gt;</nav>
      <section>
        &lt;section&gt;
        <div>
          <header>header</header>
          <article>article</article>
          <footer>footer</footer>
        </div>
      </section>
      <aside>aside</aside>
    </div>
    <footer>&lt;footer&gt;</footer>
  </body>
</html>

3번 풀이

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .mainheader {
        position: relative;
        border-top: 2px solid;
        border-left: 2px solid;
        border-right: 2px solid;
        background: red;
        text-align: center;
        font-size: 30px;
        font-weight: bold;
        height: 70px;
        padding-top: 23px;
      }
      .mainnav {
        position: relative;
        background: yellow;
        border-left: 2px solid;
        border-right: 2px solid;
        text-align: center;
        font-size: 20px;
        height: 50px;
        padding-top: 17px;
        font-weight: bold;
      }
      .maindiv {
        display: flex;
      }
      .section1 {
        position: relative;
        width: 80%;
        text-align: center;
        font-weight: bold;
        background: green;
        height: 250px;
        border-left: 2px solid;
      }
      aside {
        position: relative;
        background: skyblue;
        width: 20%;
        text-align: center;
        border-right: 2px solid;
      }
      .section1 header {
        background: pink;
        padding: 5px 0;
        width: 90%;
        margin: auto;
        margin-bottom: 10px;
        border: 3px solid;
      }
      .section1 article {
        background: pink;
        padding: 5px 0;
        width: 90%;
        margin: auto;
        margin-bottom: 10px;
        border: 3px solid;
      }
      .section1 footer {
        background: pink;
        padding: 5px 0;
        width: 90%;
        margin: auto;
        margin-bottom: 10px;
        border: 3px solid;
      }
      .mainfooter {
        text-align: center;
        width: 100%;
        height: 50px;
        padding-top: 17px;
        background: pink;
        font-weight: bold;
        border-right: 2px solid;
        border-left: 2px solid;
        border-bottom: 2px solid;
      }
    </style>
  </head>
  <body>
    <header class="mainheader">&lt; header &gt;</header>
    <nav class="mainnav">&lt; nav &gt;</nav>
    <div class="maindiv">
      <section class="section1">
        <h3>&lt; section1 &gt;</h3>
        <header>&lt; header &gt;</header>
        <article>&lt; article &gt;</article>
        <footer>&lt; footer &gt;</footer>
      </section>
      <aside><h3>&lt; aside &gt;</h3></aside>
    </div>
    <footer class="mainfooter">&lt; footer &gt;</footer>
  </body>
</html>

4번 풀이

왼쪽 위 부터 1, 2, 3, 4 코드 실행

728x90

'FE > CSS' 카테고리의 다른 글

[CSS] CSS 기초  (0) 2024.03.20

 

 

 

 

 

CSS

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

    <style>
      /* 전체 선택자 */
      * {
        color: red;
        background: yellow;
      }

      /* 태그 선택자 */
      b {
        font-size: 30px;
      }

      /* id 선택자 */
      #id_txt {
        background: gray;
      }

      /* class 선택자 */
      .class_txt {
        color: black;
      }
    </style>
  </head>
  <body>
    <dl>
      <dt><b>css</b></dt>
      <dd id="id_txt">스타일 시트 표준안</dd>
      <dd class="class_txt">
        웹 문서에 글꼴, 색상, 정렬과 각 태그의 배치 방법 등 디자인 적용
      </dd>

      <dt><b>css구성</b></dt>
      <dd>선택자(selector) : 디자인을 적용할 대상 지정</dd>
      <dd>속성 : 어떤 디자인을 설정할지</dd>
      <dd>속성 값 : 속성에서 선택한 디자인을 어떻게 반영할지</dd>
    </dl>
  </body>
</html>

선택자

코드 실행

 

 

 

 

 

 

 

 

 

 

id 선택자와 class 선택자의 차이

- id 선택자는 id 선택자를 여러개 중첩하여 사용할 수 없다.

- class 선택자는 여러 class 를 중첩하여 사용할 수 있다.

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

    <style>
      #id01 {
        color: red;
      }
      #id02 {
        background: aqua;
      }
      .class01 {
        color: blue;
      }
      .class02 {
        background: aqua;
      }
    </style>
  </head>
  <body>
    <div id="id01" class="class02">
      <!-- id 선택자는 동시에 여러개 적용 불가 -->
      <!-- id 선택자와 class 선택자는 동시에 적용 가능 -->
      id를 부여할 경우 문서 내의 유일한 값으로 사용<br />
      문서내에서 동일한 id를 부여하면 안된다
    </div>
    <div class="class01 class02">
      <!-- class 선택자는 동시에 여러 클래스를 적용할 수 있음 -->
      class는 다른 태그에서 사용해도 된다<br />
      여러개를 동시에 부여할 수 있다
    </div>
  </body>
</html>

id 선택자와 class 선택자의 차이

코드 실행

 

 

 

 

 

 

 

 

 

 

하위 선택자, 자식 선택자, 인접 선택자, 형제 선택자

- 하위 선택자 : 특정 선택자 하위의 모든 요소를 말한다

- 자식 선택자 : 직속 자식 요소를 말한다

- 인접 선택자 : 바로 뒤에 나오는 하나의 요소

- 형제 선택자 : 같은 계층에 있는 요소에 적용

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

    <style>
      .box p {
        color: lime;
      } /* 하위 선택자 */
      .box > p {
        color: orange;
      } /* 자식 선택자 */
      .box + div {
        background: gray;
      } /* 인접 선택자 */
      .box ~ p {
        background: green;
      } /* 형제 선택자 */
    </style>
  </head>
  <body>
    <div class="box">
      <p>1. 하위 선택자는 특정 선택자 하위의 모든 요소를 말한다</p>
      <div>
        <p>2. 자식 선택자는 직속 자식 요소를 말한다</p>
      </div>
      <p>3. 다음 내용</p>
    </div>
    <div>1. 인접 선택자는 바로 뒤에 나오는 하나의 요소</div>
    <div>2. 인접 선택자는 바로 뒤에 나오는 하나의 요소</div>
    <p>형제 선택자는 같은 계층에 있는 요소에 적용 된다</p>
  </body>
</html>

하위 선택자, 자식 선택자, 인접 선택자, 형제 선택자

코드 실행

 

 

 

 

 

 

 

 

 

가상 선택자

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

    <style>
      div {
        width: 200px;
        height: 100px;
        color: blue;
        background: green;
        opacity: 0.9;
      }
      div:hover {
        width: 400px;
        height: 50px;
        color: red;
        background: yellow;
        opacity: 0.3;
        transition: all 1.5s linear 0.5s;
        /*  all : 모든 내용을
            1.5s : 1.5초 동안 구현하세요
            
            linear : 선형 그라데이션 효과
            0.5s : 0.5초 동안 마우스가 위에 있으면
        */
      }
    </style>
  </head>
  <body>
    <h2>가상 선택자</h2>
    <div>가상 클래스를 이용한 애니메이션 효과</div>
  </body>
</html>

가상 선택자

마우스가 올라가면 0.5초 간 대기 후에 1.5초 동안에 div:hover 가 구현됨

 

 

 

 

 

 

 

 

 

 

실습 예제

실습 예제

 

실습 풀이

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

    <style>
      .main_back {
        background: lightgray;
        height: 300px;
        width: 190px;
      }
      .hover:hover ~ div > h2 {
        color: aqua;
      }
      .main_back > ul > li > h3:hover {
        background-color: white;
      }
    </style>
  </head>
  <body>
    <h1 class="hover">오늘의 할 일</h1>
    <div class="main_back">
      <h2>12월 31일 할 일</h2>
      <ul>
        <li>
          <h3>오전 10시</h3>
          <p>아침밥 먹기</p>
        </li>

        <li>
          <h3>낮 12시</h3>
          <p>광합성</p>
        </li>

        <li>
          <h3>오후 4시</h3>
          <p>집 나가기</p>
        </li>
      </ul>
    </div>
  </body>
</html>

 

코드 실행

 

 

 

 

 

 

 

 

 

 

a 태그 가상 선택자

1. link : 방문한적 없는 링크

2. visited : 방문한 적 있는 링크

3. hover : 마우스가 올라갔을 경우

4. active : 클릭이 되는 순간

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      a:link {
        color: pink;
        text-decoration: none;
      }
      a:visited {
        color: red;
      }
      a:hover {
        text-decoration: overline;
        color: black;
      }
      a:active {
        background: yellow;
      }
    </style>
  </head>
  <body>
    <a href="#">test</a> &nbsp;
    <a href="https://www.naver.com">naver</a>
    <hr />
    link : 웹 문서에서 사용자가 방문하지 않았던 곳<br />
    visited : 웹 문서에서 사용자가 방문한 곳<br />
    hover : 포인터가 올라갔을 경우<br />
    active : 클릭이 되는 순간
  </body>
</html>
시크릿 모드로 창을 열어놓은 상태라 방문한 사이트로 인식하지 않음

 

 

 

 

 

 

 

 

 

 

overflow: hidden

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .div01 {
        overflow: hidden;
        background: blue;
        height: 100px;
      }
      .div01 div {
        background: red;
        width: 200px;
        height: 200px;
      }
    </style>
  </head>
  <body>
    <div class="div01">
      hello
      <div>css</div>
    </div>
    <h1>다음 내용</h1>
  </body>
</html>

overflow: hidden 적용 후 코드 결과

 

overflow: auto

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .div01 {
        overflow: hidden;
        background: blue;
        height: 100px;
      }
      .div01 div {
        background: red;
        width: 200px;
        height: 200px;
      }
      .txt {
        overflow: auto;
        height: 100px;
        width: 100px;
        background: aqua;
      }
    </style>
  </head>
  <body>
    <div class="div01">
      hello
      <div>css</div>
    </div>
    <h1>다음 내용</h1>
    <div class="txt">
      제230조<br />
      회원이 지켜야할 내용이 있다면 지켜주세요<br />
      더 이상 내용은 없음<br />
      그래 반갑다<br />
      즐거운 하루 되세요~^^
    </div>
  </body>
</html>

overflow 적용 안되었을 때 > overflow:hidden 적용 되었을 때 > overflow:auto 적용 되었을 때

일반적인 글은 overflow 가 발생했을때 hidden 을 사용하게 되면 글자가 사라져 버린다, 이때 auto 옵션을 사용하면 스크롤 바 형식으로 텍스트가 형식에 맞춰서 보존된다

 

 

 

 

 

 

 

 

 

 

Hover Effect

1. transform: scale(배수); : 마우스가 올라가면 크기가 배수만큼 커짐

2. transition: all 시간초s; : 마우스가 올라가면 작동할 모든 기능을 설정한 시간초동안 실행

 

 

 

 

 

 

 

 

 

 

실습 예제

실습 예제

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      div {
        background: red;
        text-align: center;
        height: 40px;
        width: 180px;
        color: white;
        padding-top: 20px;
        font-weight: bold;
      }
      div:hover {
        background: gray;
      }
    </style>
  </head>
  <body>
    <div
      style="
        background: pink;
        height: 400px;
        width: 900px;
        padding-top: 10px;
        padding-left: 10px;
      "
    >
      <div>Home</div>
      <div>Profile</div>
      <div>Board</div>
      <div>Contact</div>
    </div>
  </body>
</html>
코드 실행

 

 

 

 

 

 

 

 

 

 

link

외부 파일로 생성한 css 파일을 불러오는 태그인 link 태그

css 파일 따로 생성

.px {font-size: 24px;}
.pt {font-size: 24pt;}
.per {font-size: 150%;}
.em {font-size: 1.5em;}

css 파일 내부 코드

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <link rel="stylesheet" href="test09.css" />
  </head>
  <body>
    기본 글자 크기는 16px <br />
    글자 크기 단위<br />
    - px : 해상도에 따라 상대적으로 달라지는 단위<br />
    - pt : 무조건 고정 크기<br />
    - % : 부모 요소의 크기를 100% 기준으로 계산<br />
    - em : 부모 크기를 100% 기준으로 100분의 1단위

    <hr />

    <a href="https://pxtoem.au" target="_blank">단위 변환 사이트</a>
    <div class="px">내용</div>
    <div class="pt">내용</div>
    <hr />
    <div>기본 크기 16px 크기</div>
    <div class="per">부모가 없는 기본 16px 의 150% 크기</div>
    <div class="em">부모가 없는 기본 16px 의 1.5em 크기</div>
    <div class="px">
      부모 크기 24px
      <div class="px">자식 24px</div>
      <div class="per">자식 150%</div>
      <div class="em">자식 1.5em</div>
    </div>
  </body>
</html>

html 코드에 link 태그를 사용하여 css 파일을 불러와서 사용

코드 실행 내용

 

 

 

 

 

 

 

 

 

 

inline, block

display 태그에서 inline 태그를 block 으로 변경할 수도 있고 block 태그를 inline 으로 변경할 수도 있다

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      div {
        background: skyblue;
        display: inline-block;
        width: 200px;
        text-align: center;
      }
      span {
        background: olive;
        display: block;
      }
      .visible:hover ~ .none {
        display: inline;
      }
      .none {
        display: none;
        background: yellowgreen;
      }
    </style>
  </head>
  <body>
    <div>div-01</div>
    <div>div-02</div>
    <span>span-01</span>
    <span>span-02</span>
    <h1 class="visible">마우스를 올려주세요</h1>
    <h1 class="none">내용</h1>
    즐거운 날~~~~
  </body>
</html>
코드 실행

 

 

 

 

 

 

 

 

 

 

텍스트 가운데 정렬

한 줄 가운데 정렬 : height 의 값과 line-height 값을 일치시키면 줄의 가운데로 이동한 뒤 text-align: center 를 사용하여 중앙에 위치

여러줄 가운데 정렬 : display: table-cell 지정 후 vertical-align: middle 설정

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .in-block {
        display: inline-block;
        background: orange;
        width: 200px;
        height: 50px;
        line-height: 50px;
        text-align: center;
        text-decoration: none;
      }
      div {
        background: aqua;
        width: 300px;
        height: 300px;
        display: table-cell;
        vertical-align: middle;
      }
      label {
        width: 100px;
        height: 30px;
        background: red;
        display: inline-block;
        line-height: 30px;
        text-align: center;
      }
      input {
        width: 300px;
        height: 30px;
        border-radius: 10px;
      }
    </style>
  </head>
  <body>
    <a href="#" class="in-block">홈으로 이동1</a>
    <a href="#" class="in-block">홈으로 이동2</a>
    <a href="#" class="in-block">홈으로 이동3</a>
    <div>
      여러줄<br />
      가운데<br />
      정렬<br />
      되나요
    </div>
    <label>아이디 입력</label><input />
  </body>
</html>

코드 실행

728x90

'FE > CSS' 카테고리의 다른 글

[CSS] CSS 기초2  (0) 2024.03.21

 

 

 

 

 

HTML

 

<html>
<head>
	<title>제목 설정</title>
</head>
<body>
	내용이 들어옵니다!!!<br> <!-- 줄바꿈 <br> -->
	다른 내용 추가
	<br>안녕<br>
	하세요
	<p>단락을 나누는 p 태그</p>
</body>
</html>

HTML 기본 코드 구조

 

 

 

 

 

<!DOCTYPE html>
<html lang="ko"> <!-- 웹페이지 소스코드 언어 설정 -->
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    .back{background-color: gray;}

</style>
<body text="white" bgcolor="black">
    <a href="https://validator.w3.org">https://validator.w3.org</a>
    <!-- 내가 작성한 코드의 문법 오류를 확인할 수 있는 사이트 -->
    <h3><span>블럭 태그 안에 인라인 태그 사용</span></h3>
    <span><h3>인라인 태그 안에 블럭 태그 사용</h3></span> <!--  -->
    <hr>

    <h1 style="background-color: red;">블럭 요소</h1> <!-- 블럭 : 전체 영역 차지 -->
    <p style="background-color: beige;">블럭 요소</p>
    <div style="background-color: skyblue;">블럭 요소</div>

    <span style="background-color: silver;">인라인</span> <!-- 인라인 : 내용까지 영역 차지 -->
    <label style="background-color: aqua;">인라인</label>
</body>
</html>

코드 실행

 

 

 

 

 

<!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>
    <h1>문서의 제목(큰수부터 작은수로 작성) h1</h1>
    <h2>문서 내의 작은 숫자를 사용 후 큰 수를 사용하지 않음 h2</h2>
    <h3>문서의 제목 h3</h3>
    <h4>문서의 제목 h4</h4>
    <h5>문서의 제목 h5</h5>
    <h6>문서의 제목 h6</h6>

    <hr>

    <font>기본 글자 크기는 size=3</font><br>
    <font size="7">size = 7</font><br>
    <font size="6">size = 6</font><br>
    <font size="5">size = 5</font><br>
    <font size="4">size = 4</font><br>
    <font size="3">size = 3</font><br>
    <font size="2">size = 2</font><br>
    <font size="1">size = 1</font><br>
    <font face="궁서체" color="blue">궁서체</font>

    <hr>

    <em>강조하고 싶은 텍스트, 기울임체</em>
    <strong>중요한 텍스트, 굵은 글씨</strong>
    <mark>주의 깊게 볼 텍스트, 노란색 표시</mark>
    <b>단순 굵은 글씨</b>
    <small>주의 사항, 법적 제한, 저작권 등을 정의하는 태그</small>
    <sup>위첨자</sup>
    <sub>아래첨자</sub>
</body>
</html>

코드 실행

 

 

 

 

 

- 테이블 태그 -

<!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>
    <h1>테이블 - 표를 정의할 때 사용하는 태그</h1>
    <mark>테이블 태그</mark>
    <br>
    <p>thead : 테이블의 제목 부분</p>
    <p>tbody : 테이블의 내용 부분</p>
    <p>tr : 하나의 행을 나누기 위한 태그</p>
    <p>th : 제목 부분을 넣을 때 사용하는 태그(thead와 함께 사용)</p>
    <p>td : 내용 부분을 넣을 때 사용 (tbody 와 함께 사용)</p>
    <hr>

    <table border="1" align="center" height="200" width="300" bgcolor="khaki">
        <thead>
            <tr bgcolor="yellow">
                <th>월</th><th>화</th><th>수</th>
            </tr>
        </thead>
        <tbody>
            <tr height="100" align="right">
                <td width="150">영어</td><td>수학</td><td>국어</td>
            </tr>
            <tr>
                <td>영어</td><td>수학</td><td>국어</td>
            </tr>
        </tbody>
    </table>

    <hr>

    <table border="1">
        <tr>
            <td colspan="2">111</td><td>333</td>
        </tr>
        <tr>
            <td rowspan="2">111</td> <td>222</td> <td>333</td>
        </tr>
        <tr>
            <td>111</td> <td>333</td>
        </tr>
    </table>

</body>
</html>

 

 

 

 

 

 

 

 

 

실습 예제

예제

 

실습 풀이

<!DOCTYPE html>
<style>
  .font_bold {
    font-weight: bold;
    text-align: center;
  }
</style>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <table border="1">
      <thead>
        <tr>
          <th colspan="5">IT 시간표</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td></td>
          <td class="font_bold">401호</td>
          <td class="font_bold">402호</td>
          <td class="font_bold">403호</td>
          <td class="font_bold">404호</td>
        </tr>

        <tr>
          <td class="font_bold">09:00-12:00</td>
          <td rowspan="4" align="center" class="font_bold">
            공<br /><br />사<br /><br />중
          </td>
          <td>PYTHON 기 초</td>
          <td rowspan="2">네트워크보안<br />실무자 양성</td>
          <td>보충훈련 과정<br />(OS/네트워크)</td>
        </tr>

        <tr>
          <td class="font_bold">12:30-15:30</td>
          <td>JAVA</td>
          <td>보충훈련 과정<br />(언어계열)</td>
        </tr>

        <tr>
          <td class="font_bold">15:30-18:30</td>
          <td>C언어</td>
          <td rowspan="2">가상화 시스템<br />엔지니어 실무자 양성</td>
          <td>리눅스</td>
        </tr>

        <tr>
          <td class="font_bold">19:00-22:00</td>
          <td>PYTHON_WEB</td>
          <td>서버</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

코드 실행

 

 

 

 

 

 

 

 

 

 

<!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>
    <pre>
    공백을 넣으세요 아무 거 나 숑
    내부의 공백, 줄바꿈을 모두 인식하는
    pre 태그
    </pre>
    <hr />
    두께
    <hr size="10" />
    음영효과
    <hr size="10" noshade />
    길이, 색, 위치
    <hr width="50%" align="center" color="red" />
    <hr width="300px" align="center" />
    <p align="center" style="background: blue">내용</p>
    <div align="right" style="background: red">내용</div>
    <label style="background: green">내용</label>

    <h3>a 태그</h3>
    - 다른 문서로 이동하거나 이메일 주소에 링크를 저장<br />
    - 블록, 인라인 요소를 포함할 수 있다<br />
    - 단, 다른 링크로 연결되는 태그를 포함할 수 없다 (&lt;a&gt;태그,
    &lt;button&gt;태그 등)<br />
    - 속성<br />
    &nbsp;&nbsp;- href : 이동하고자 하는 경로<br />
    &nbsp;&nbsp;- target : _blank를 사용하여 새탭으로 페이지를 열어준다<br />
    &nbsp;&nbsp;- title : 마우스를 올렸을 경우의 내용 표현<br />

    <a href="ex02.html" target="_blank">ex02</a><br />
    <a href="https://www.naver.com" title="네이버로 이동">네이버</a><br />
    <a href="mailto:youngho3358@gmail.com">youngho3358 에게 메일 쓰기</a><br />

    <br />
    <hr />
    <br />

    <h3>img</h3>
    - src 속성에 이미지의 경로<br />
    - alt 속성은 이미지를 찾지 못하는 경우 설명으로 대체<br />
    - <strong>alt 속성은 필수 항목이다</strong><br />
    <hr />
    <img
      src="download.jpg"
      width="150px"
      height="150px"
      border="10"
      alt="이상해씨"
    />
    <img
      src="없는파일명.jpg"
      width="150px"
      height="150px"
      border="10"
      alt="이미지를 불러올 수 없음"
    />

    <hr />
    a 태그 내부에 이미지 태그 사용 가능 >>>
    <a
      href="https://www.naver.com"
      title="네이버 홈페이지 이동"
      target="_blank"
    >
      <img src="download.jpg" width="150px" height="150px" border="1" alt="" />
    </a>

    <hr />

    <h5>순서가 있는 리스트</h5>
    <ol type="i">
      <li>aaaa</li>
      <li>aaaa</li>
      <li>aaaa</li>
      <li>aaaa</li>
    </ol>

    <h5>순서가 없는 리스트</h5>
    <ul>
      <li>aaaa</li>
      <li>aaaa</li>
      <li>aaaa</li>
      <li>aaaa</li>
    </ul>

    <hr />

    <ul>
      <li>
        <b>교육과정</b>
        <ul>
          <li><a href="">HTML</a></li>
          <li><a href="">CSS</a></li>
          <li><a href="">JAVASCRIPT</a></li>
        </ul>
      </li>
    </ul>

    <dl>
      <dt><b>HTTP</b></dt>
      <dd>HTML을 전달하는 프로토콜.<br />URL은 "http://도메인 주소"로 사용</dd>
    </dl>

    <hr />
  </body>
</html>

코드 실행

 

 

 

 

 

<!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>
    <h3>input</h3>
    <input type="button" value="버어튼" /><br />
    <input type="submit" value="서어브밋" /><br />
    <input type="reset" value="reset" /><br />
    <input type="image" src="download.jpg" width="50" alt="???" /><br />
    <input type="file" value="" /><br />

    <hr />

    <input type="text" value="내용 입력" size="10" maxlength="7" /><br />
    <input type="password" placeholder="input password" /><br />
    <input type="email" placeholder="ex@co.kr" /><br />
    <input type="search" value="값 입력 시 x버튼 활성화" /><br />
    <input type="tel" value="010-1234-1234" /><br />
    <input type="number" min="1" max="10" /><br />

    <hr />

    <input type="color" /><br />
    <input type="range" /><br />
    <input type="radio" /><br />
    <input type="checkbox" /><br />
    <input type="hidden" value="내용을 숨김!!!!" /><br />

    <hr />

    10대<input type="radio" name="age" /> 20대<input
      type="radio"
      name="age"
      checked
    />
    30대<input type="radio" name="age" /> 40대<input type="radio" name="age" />

    <hr />

    첵<input type="checkbox" checked /> 첵1<input type="checkbox" checked />
    첵2<input type="checkbox" checked />

    <hr />

    <form>
      <!-- form 태그로 묶어야 초기화, 전송, btn 등 각각의 텍스트 필드와 연동됨 -->
      <input type="text" placeholder="input name" /><br />
      <input type="text" placeholder="input address" /><br />
      <textarea cols="50" rows="6"></textarea>

      <fieldset style="width: 200px">
        <legend>취미 조사</legend>
        <!-- 레전드 태그 : 제목 -->
        <input id="id" />

        <label for="id">책 읽기</label>
        <input type="checkbox" id="h1" />
        <label>멍타기</label>
        <input type="checkbox" />

        <label for="id">아이디 입력</label>
        <!-- 라벨의 for 옵션을 사용하면 해당 라벨 클릭 시 for 옵션 안에 적힌 id 값으로 이동 -->
      </fieldset>

      <select size="1" name="test_5">
        <!-- 사이즈에 들어가는 내용은 클릭하지 않았을때 보여줄 선택지의 갯수 -->
        <option>사과</option>
        <option>배</option>
        <option selected>복숭아</option>
      </select>

      <input type="reset" value="초기화" />
      <input type="submit" value="전송" />
      <input type="button" value="btn" />
    </form>
  </body>
</html>

코드 실행

 

 

 

 

 

 

 

 

 

 

GET / POST

전송 방식

 

 

 

 

 

<!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>
    <form action="ex06.html">
      <!-- ex06.html 로 전송 -->
      <!-- default 는 GET 방식 -->
      <input
        type="text"
        name="test_id"
        placeholder="아이디 입력"
        required
      /><br />
      <input
        type="tel"
        pattern="\d{3}-\d{4}-\d{4}"
        name="test_num"
        placeholder="예) 000-0000-0000"
        required
      /><br />
      <input type="text" readonly value="쓸 수 없음!!!" /><br />
      <input type="submit" value="전송" /><br />
      <input type="button" value="button" disabled /><br />
      <button type="button">버튼</button>
    </form>

    <hr />

    <div style="background-color: pink">웹 브라우저 전체 공간에 대해 분할</div>
    <div style="background-color: skyblue">블록(block)형식으로 분할</div>

    <span style="background-color: peru">웹 브라우저의 일부 영역만 분할</span>
    <span style="background-color: tan">인라인(inline) 형식으로 분할</span>

    <div style="background-color: hotpink">
      div영역
      <span style="background-color: peru">span 첫 번째 영역</span> div영역
      <span style="background-color: red">span 두 번째 영역</span>
    </div>
  </body>
</html>

코드 실행

 

 

 

 

 

 

 

 

 

 

태그 영역

 

 

 

 

 

<!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>
    <header>
      <h1>주 제목이 들어온다</h1>
      <nav style="background-color: orange">
        <a href="#">공지사항</a>
        <a href="#">회사소개</a>
        <a href="#">이벤트</a>
      </nav>
    </header>

    <div>
      <section>
        특정 컨텐츠 영역 : 웹 페이지로 보여줄 하나의 정보 덩어리
      </section>
      <section>
        특정 컨텐츠 영역 : 웹 페이지로 보여줄 하나의 정보 덩어리
      </section>
      <article>주요 기사 : 오른쪽 또는 왼쪽 영역에 배치</article>
      <aside>광고 : 오른쪽 또는 왼쪽에 배치</aside>
    </div>

    <footer>
      <address>서울 특별시 / 010-1234-1234</address>
      <b><i>&copy;</i></b
      >test.com
    </footer>

    <hr />

    <h3>오디오 재생</h3>
    <audio src="" controls loop autoplay></audio>
    <h3>비디오 재생</h3>
    <video src="" muted="muted" loop autoplay width="300" height="300"></video>
  </body>
</html>

코드 실행

 

 

 

 

 

<!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>
    <header>
      <h2>&lt; 책갈피 기능 &gt;</h2>
      <nav>
        <a href="#user">[이름]</a> &nbsp; &nbsp;
        <a href="#user1">[이름111]</a> &nbsp; &nbsp;
        <a href="#user2">[이름222]</a> &nbsp; &nbsp;
      </nav>
    </header>

    <section>
      <p>이름</p>
      <a name="user">이름 이동</a>
      <a href="#top">top 이동</a>
      <hr />
      <br /><br /><br /><br /><br /><br /><br />
      <p>이름</p>
      <a name="user1">이름111 이동</a>
      <a href="#top">top 이동</a>
      <hr />
      <br /><br /><br /><br /><br /><br /><br />
      <p>이름</p>
      <a name="user2">이름222 이동</a>
      <a href="#top">top 이동</a>
    </section>
  </body>
</html>

코드 실행

 

 

 

 

 

 

 

 

 

 

실습 예제

실습 예제

<!DOCTYPE html>
<style>
  .font_bold {
    font-weight: bold;
    text-align: center;
  }
</style>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <table border="1">
      <thead>
        <tr>
          <th colspan="5">IT 시간표</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td></td>
          <td class="font_bold">401호</td>
          <td class="font_bold">402호</td>
          <td class="font_bold">403호</td>
          <td class="font_bold">404호</td>
        </tr>

        <tr>
          <td class="font_bold">09:00-12:00</td>
          <td rowspan="4" align="center" class="font_bold">
            공<br /><br />사<br /><br />중
          </td>
          <td>PYTHON 기 초</td>
          <td rowspan="2">네트워크보안<br />실무자 양성</td>
          <td>보충훈련 과정<br />(OS/네트워크)</td>
        </tr>

        <tr>
          <td class="font_bold">12:30-15:30</td>
          <td>JAVA</td>
          <td>보충훈련 과정<br />(언어계열)</td>
        </tr>

        <tr>
          <td class="font_bold">15:30-18:30</td>
          <td>C언어</td>
          <td rowspan="2">가상화 시스템<br />엔지니어 실무자 양성</td>
          <td>리눅스</td>
        </tr>

        <tr>
          <td class="font_bold">19:00-22:00</td>
          <td>PYTHON_WEB</td>
          <td>서버</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

표 이미지

<!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>
    <div style="border: 1px solid; width: 450px">
      <form>
        <table>
          <tr>
            <td colspan="3">다음 <mark>내용에 맞게 입력</mark> 하시오.</td>
            <td rowspan="5">
              <img
                src="download.jpg"
                width="130px"
                height="100px"
                alt="이상해씨"
              />
            </td>
          </tr>

          <tr>
            <td colspan="2">전공 분야를 입력하세요.</td>
            <td>
              <select>
                <option value="소프트웨어">소프트웨어</option>
                <option value="하드">하드웨어</option>
              </select>
            </td>
          </tr>

          <tr>
            <td width="70">이름</td>
            <td colspan="2">
              <input type="text" required placeholder="이름을 입력하세요." />
            </td>
          </tr>

          <tr>
            <td width="70">아이디</td>
            <td colspan="2">
              <input type="text" required placeholder="아이디를 입력하세요" />
            </td>
          </tr>

          <tr>
            <td width="70">비밀번호</td>
            <td colspan="2">
              <input
                type="password"
                required
                placeholder="비밀번호를 입력하세요"
              />
            </td>
          </tr>
        </table>

        <fieldset style="width: 400px">
          <legend>성별 조사</legend>
          여성<input type="radio" value="여성" /> 남성<input
            type="radio"
            value="여성"
          />
        </fieldset>

        <fieldset style="width: 400px">
          <legend>취미 조사</legend>
          책읽기<input type="checkbox" /> 공부하기<input type="checkbox" /> 책
          읽으며 공부하기<input type="checkbox" /> 컴퓨터<input
            type="checkbox"
          />
        </fieldset>

        <fieldset style="width: 400px">
          <legend>하고 싶은 말</legend>
          <textarea name="" id="" cols="50" rows="3"></textarea>
        </fieldset>

        <button>
          <a href="test03.html">완료</a>
        </button>
        <button>다시작성</button>
      </form>
    </div>
  </body>
</html>

첫번째 사진

<!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>
    <div style="background-color: yellow; width: 800px">
      <table border="1" style="width: 800px; height: 300px">
        <thead>
          <th style="height: 100px" colspan="3">
            <font
              face="궁서체"
              style="
                color: blue;
                font-size: 50px;
                text-decoration: underline;
                text-decoration-color: gray;
                text-decoration-thickness: 3px;
                text-underline-offset: 25px;
              "
              >회사 소개</font
            >
          </th>
        </thead>

        <tr>
          <td>
            <ul>
              <li><a href="https://www.naver.com">네이버</a></li>
            </ul>
          </td>
          <td style="text-align: center; font-weight: 1000">안녕하세요</td>
          <td rowspan="3" style="text-align: center">
            <a href="test01.html">
              <img src="download.jpg" alt="이미지" width="100" />
            </a>
          </td>
        </tr>

        <tr>
          <td>
            <ul>
              <li><a href="https://www.google.com">구글</a></li>
            </ul>
          </td>
          <td style="text-align: center; font-weight: 1000">
            HTML 회사 입니다
          </td>
        </tr>

        <tr>
          <td>
            <ul>
              <li><a href="https://www.daum.net">다음</a></li>
            </ul>
          </td>
          <td style="text-align: center; font-weight: 1000">환영합니다</td>
        </tr>

        <tr>
          <td colspan="3">
            회사소개&#183;광고안내&#183;검색등록&#183;제휴문의&#183;인재채용&#183;서비스약관&#183;청소년보호
            정책&#183; 개인정보처리방침&#183;웹접근성안내&#183;고객센터
            <b><i>Copyright &copy; CARE LAB. ALL rights reserved.</i></b>
          </td>
        </tr>
      </table>
    </div>
  </body>
</html>

회사 소개

 

 

 

 

 

 

 

 

 

 

실습 예제

실습 예제

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <header style="text-align: center; color: pink">
      <b>B&nbsp;&nbsp;&nbsp;l&nbsp;&nbsp;&nbsp;o&nbsp;&nbsp;&nbsp;g</b>
      <hr style="color: #80808050; border: 2px solid" />
    </header>
    <div>
      <span style="padding: 0px 10px 0px 0px; color: green"><b>전체</b></span>
      <span style="padding: 0px 10px 0px 0px">인테리어</span>
      <span style="padding: 0px 10px 0px 0px">어학</span>
      <span style="padding: 0px 10px 0px 0px">자동차</span>
      <span style="padding: 0px 10px 0px 0px">만화</span>
      <hr />
    </div>
    <div style="height: 250px">
      <section style="width: 400px; height: 200px; float: left">
        <img src="download.jpg" alt="이상해씨" />
        <img src="download.jpg" alt="이상해씨" />
        <img src="download.jpg" alt="이상해씨" />
        <img src="download.jpg" alt="이상해씨" /><br />
        <img src="download.jpg" alt="이상해씨" />
        <img src="download.jpg" alt="이상해씨" />
        <img src="download.jpg" alt="이상해씨" />
        <img src="download.jpg" alt="이상해씨" /><br />
        <a href="#top">[위로 이동]</a>
      </section>
      <section
        style="
          padding: 0px 0px 0px 0px;
          width: 400px;
          height: 200px;
          float: right;
        "
      >
        <video src="" controls style="width: 350px"></video>
      </section>
    </div>
    <hr />
    <div style="height: 200px">
      <img
        src="download.jpg"
        alt="이상해씨"
        style="float: right; width: 100px"
      />
      <p>id : 컴퓨터</p>
      <p><b>겨울 제주도 여행 천백고지 부터 우도맛집 총정리!</b></p>
      <p>
        안녕하세요!! 제주도 여행 정말 즐거웠습니다. 겨울 제주도 여행을 12월쯤에
        다녀왔습니다.!! 내년에 또 다녀오겠습니다.!!!^^
      </p>
      <p><a href="#top">[위로 이동]</a></p>
      <hr />
    </div>
    <footer>
      <span style="color: green"
        ><i><b>CARE LAB</b></i></span
      >
      <span><i>Copyrigth &copy; AllRights Reserved</i></span>
      <span style="padding-left: 50px">1999 | 회사소개 | TEL : 777-777</span>
    </footer>
  </body>
</html>

코드 실행

728x90

+ Recent posts