함수 ( 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

 

 

JavaFX 를 사용하여 미니 프로젝트를 진행하려하는데 Eclipse 가 아닌 IntelliJ 를 사용하여 프로젝트를 진행해보려 한다.

 

프로젝트는 데이터베이스를 연동하여 JavaFX 를 사용하여 서버(1), 사용자(2) 환경으로 구성한뒤 사용자가 숫자야구를 진행하여 순서대로 값을 입력하면 서버에서 값을 전달받아 처리하는 형식으로 만들어 보려고 한다.

 

프로젝트를 진행하기 앞서서 우선적으로 인텔리제이에 JavaFX 프로젝트를 생성해야 한다.

 

New Project 클릭

 

Generators 에서 JavaFX 를 선택해준뒤 프로젝트 이름과 경로를 설정하고 Next 클릭

 

Create 클릭

 

생성된 프로젝트에서 main 을 실행해주면 정상적으로 출력된다

 

- 단점 -

eclipse 보다 코드 실행속도가 느리다..... 그리고 Scene builder 를 연동하여 사용할때 우클릭으로 사용이 가능한 것 같긴 한데 관련된 자료가 너무 적어 설정 방법을 아직 모르겠으므로 우선은 SceneBuilder 를 설치하여 인텔리제이와 연동하지 않고 그냥 SceneBuilder 에서 fxml 파일을 불러와서 사용하는 방식으로 사용해야 할 것 같다.

 

- Scene Builder 다운로드 링크 -

 

Scene Builder - Gluon

Drag & Drop,Rapid Application Development. Download Now   Integrated Scene Builder works with the JavaFX ecosystem – official controls, community projects, and Gluon offerings including Gluon Mobile, Gluon Desktop, and Gluon CloudLink.   Simple Drag

gluonhq.com

Mac OS X dmg (Apple Silicon) 설치 - M3 칩셋 기준

 

SceneBuilder 실행 후 좌측 하단의 Open Project 클릭

 

프로젝트 경로로 접근하여 변경하고자하는 fxml 파일을 선택한 뒤 Open 클릭

 

정상적으로 fxml 파일이 끌어와진다 이후 저장하게 되면 인텔리제이의 fxml 파일에도 적용된다

 

 

 

 

 

 

 

아무래도 프로젝트를 진행하는데 있어서 윈도우에서 SceneBuilder 를 연동하거나 JavaFX 를 사용하는 방법에 대해서는 자료가 좀 있지만, 맥OS 관련해서는 자료가 거의 없다시피 하다... 문제가 발생할때 마다 하나하나씩 다 이클립스랑 비교해가며 부딫혀보는 수 밖에 없을 것 같다.....

728x90

'BE > JAVA' 카테고리의 다른 글

11. JAVA - Scanner  (0) 2023.11.25
10. JAVA - 연산자  (1) 2023.11.13
09. JAVA - 포멧 문자  (1) 2023.11.13
08. JAVA - 패키지란?  (0) 2023.11.13
07. JAVA 변수와 자료형  (0) 2023.11.09

 

 

 

 

 

javaFX 이미지, 동영상

실습용 파일과 미디어 준비

미디어는 resources.image 하위에 사진과 resources.media 하위에 비디오를 준비

 

imageFx.fxml 파일 scene builder 로 세팅

 

fxml 파일 세팅

 

fxml 파일 세팅 완료

 

MainClass 에 Scene 등록 후 module-info 파일까지 작성( 패키지 우측 클릭해서 Configure - Create module-info.java 클릭 )

 

이미지 경로를 잡아서 반복문을 통해 이미지의 목록들을 List 컬렉션에 넣는다

 

폴더 내의 이미지 목록 출력 완료

 

버튼 하나 생성 후 On Action 설정

 

버튼을 클릭하면 해당 이미지가 출력되게 설정

 

코드 실행 영상

 

이미지 출력 부분을 메소드로 따로 분리

 

이벤트 메소드를 생성하여 인덱스를 얻어 버튼을 누르지 않아도 자동으로 이미지가 출력되게 설정

 

버튼을 누르지 않아도 자동으로 이미지가 출력

 

 

 

 

 

 

 

 

 

 

비디오 출력

세팅

 

파일 세팅

 

On Action ( 연결될 메소드 ), fx:id, Controller class 설정 완료

 

MainClass

 

Controller

 

module-info 에 javafx.media 직접 추가

 

정상적으로 실행되는 것 확인

 

Controller 에서 각 기능을 @FXML 어노테이션으로 연동, 필요한 자료형 변수 생성

 

File 클래스로 디렉토리로 접근하여 파일명을 리스트 컬렉션에 담아 영상 목록 구현

 

코드 실행 영상

 

영상 클릭 시 재생버튼만 활성화, 나머지 버튼은 모두 비활성화

 

재생버튼만 활성화된 모습

 

컨트롤러에 재생버튼 기능, 일시 정지 버튼 기능, 정지 기능 추가

 

현재는 재생버튼만 활성화.... 재생 버튼이 눌리면 일시 정지, 정지가 활성화 되도록 설정해야 함

 

상황별 버튼 설정 ( 동영상 재생 중, 일시 정지 중, 정지 중 버튼 상태 설정 )

 

각 상황별 버튼 활성화 되는 모습

 

 

 

 

 

- 미디어 제어 부분 설정 -

SceneBuilder 에서 세팅

 

SceneBuilder 에서 세팅 완료

 

새로 추가된 버튼들 @FXML 어노테이션으로 연동

 

소리 설정

 

영상 재생 시간 출력 메소드 설정 ( 영상 시간 연산해서 라벨에 출력 )

 

코드 실행 영상 ( 영상 재생 바, 소리 구현 )
728x90

+ Recent posts