1.  변수  variable

👩🏻‍🚀  변수란 프로그램을 실행하는 동안 값이 여러 번 달라질 수 있는 데이터를 가리킴

👩🏻‍🚀  상수 constant 는 값을 한 번 지정하면 바뀌지 않는 데이터

 

1) 변수 선언 규칙

①  변수 이름은 일반적으로 라틴 문자(0-9, a-z, A-Z)와 밑줄 문자(_)를 사용
         - 띄어쓰기 허용 x, 숫자, 밑줄(_)은 첫번째 문자 x

②  영어 대소문자를 구별하며 예약어는 변수 이름으로 쓸 수 x
         - varfunctionletfor와 같은 단어

③  lower camel case 표기를 사용
④  변수 이름은 의미있게 작성 ( 이름만 보고도 대충 어떤 값인지 추측할 수 있어야 함 )

 

<script>
    var name = 10; // var : 변수 선언을 의미
    var str = 'javascript';
    var temp = true;
    // num, str, temp : 변수를 구분하는 이름(변수명)
    // 10, 'javascript', true : 변수에 저장 되는 데이터(값)
    document.write(num + '<br>' + str + '<br>' + temp + '<br><br>');

    // 여러 개의 변수를 선언할 경우 다음과 같은 방법으로 선언할 수 있다.
    var num, str, temp;
    num = 20;
    str = 'ECMAscript'
    temp = false;

    document.write(`${num}<br> ${str}<br> ${temp}<br><br>`);

    var num = 30, str = 'jquery', temp = true;
    document.write(num + '<br>' + str + '<br>' + temp + '<br><br>');

    // 변수는 새로운 데이터가 저장되면 기존 데이터는 사라진다.
    var num = 0;
    num = 10;
    document.write(`${num} <br>`); // 10

    num2 = 1
    document.write(nm2);
</script>

 


 

2.  자료형

👩🏻‍🚀  자료 data란 프로그래밍에서 프로그램이 처리할 수 있는 모든 것

👩🏻‍🚀  자료형 data type이란 컴퓨터가 처리할 수 있는 자료의 형태

👩🏻‍🚀  자바스크립트 자료형

       - 기본 자료형 : 숫자, 문자열, 논리형

       - 복합 자료형 : 배열, 객체

       - 특수 자료형 : undefined, null

종류 설명 예시
기본 자료형 숫자형 따옴표 없이 숫자로만 표기 var birthYear = 1995;
문자열 따옴표("" or '')로 묶어서 표기
숫자를 따옴표로 묶으면 문자로 인식
var greeting = 'Hello';
var birthYear = '1995';
논리형 참과 거짓이라는 2가지 값만 있는 유형
true, false 소문자로 표시
var isEmpty = true;
복합 자료형 배열 하나의 변수안에 여러 개의 값을 저장 var seasons = ['봄', '여름', '가을', '겨울']
객체 함수와 속성을 함께 포함 var date = new Date();
특수 자료형 undefined 자료형이 지정되지 않은 경우
  ex. 변수 선언만 하고 값을 할당하지 않은 변수
null 값이 유효하지 않은 경우

 



1) 기본 자료형 : 문자열 string


✏️  문자와 문자열을 구분하는 언어도 있으나 자바 스크립트는 문자열로 통일
✏️  문자열 자료형을 만드는 방법 : 작은 따옴표나 큰 따옴표로 감쌈

 

<script>
    console.log("안녕하세요");
    console.log('안녕하세요');

    //console.log("안녕하세요'); // 따옴표 시작과 끝은 같아야 함

    // 혼용하는 것도 가능
    console.log('this is "string"');
    console.log("this is 'string'");

    // 이스케이프 문자 사용 : 따옴표를 문자 그대로 사용하고 싶을 때
    console.log('this is \'string\'');
    console.log("this is \"string\"");

    /* 이스케이프 문자 사용 예
    \n : 줄바꿈
    \t : 탭문자
    \\ : 역슬래시(\) 자체
     */
    console.log("this is 'string' \nthis is 'string' ") // 줄 바꿈
    console.log("this is 'string' \tthis is 'string' ") // 탭 문자
</script>

콘솔 창 결과


 

💡  문자열 연산

문자열에 적용할 수 있는 처리 
  1. 문자열 연결 연산 : 문자열 + 문자열
  2. 문자 선택 연산 : 문자열[인덱스] -> 문자 하나
  3. 문자열 길이 : 문자열.length -> 문자 갯수
<script>
    console.log('안녕하세요.' + '자바 스크립트 입니다.');  // 안녕하세요.자바 스크립트 입니다.
    let greet = '안녕하세요.'; 
    console.log(greet + '자바 스크립트 입니다.'); // 안녕하세요.자바 스크립트 입니다.

    // 문자 선택 연산. 인덱스는 0부터 시작하는 정수로 이루어짐
    console.log('안녕하세요.'[0]); // 안
    console.log('안녕하세요.'[1]); // 녕
    console.log(greet[0]); // 안
    console.log(greet[1]); // 녕

    // 문자열의 길이
    console.log("안녕하세요.".length); // 6
    console.log(greet.length); // 6

    let name = prompt('이름을 입력');
    alert('이름은 '+name.length+'자 입니다.')

    let name2 = prompt('한글로 이름을 입력');
    alert('당신의 성은 '+ name2[0] +'입니다.');
</script>

 


💡 템플릿 문자열
문자열 결합 연산자를 사용하지 않고, 문자열 안에 바로 표현식을 사용할 수 있음

쌍따옴표나 홑따옴표 대신 백틱(`)을 사용 
<script>
    // 일반적인 방법 : 믄자열 결합 연산자 사용
    console.log('표현식은 273 + 52의 값은 ' + (273 + 52) + '입니다.');

    // 템플릿 문자열 사용
    console.log(`표현식은 273 + 52의 값은 ${273 + 52}입니다.`); // 백틱(`)을 사용

    let name = prompt('한글로 이름을 입력');
    alert(`당신의 성은 ${name[0]} 입니다.`);
</script>

 


 

2) 기본 자료형 : 숫자형 number

 

✏️  자바 스크립트는 정수와 실수의 구분이 없음
✏️  따옴표 없이 사용, 숫자에 따옴표를 붙이면 문자열 자료형이 됨

✏️  실수를 2진수로 변환해서 계산하는데, 이 때 자릿수가 많은 소수로 변환되어 계산되기 때문에 정확하지 x

    <script>
        console.log(100);
        console.log(123.456);

        // 숫자 관련 연산을 사용
        console.log(200 + 100); // 300
        console.log(200 - 100); // 100
        console.log(200 * 100); // 20000
        console.log(200 / 100); // 2

        // 프로그래밍에서는 나머지 연산이 자주 사용됨
        console.log(200 % 100); // 0
        console.log(200 % 99); // 2

        // 실수 사용시에 정확한 계산은 힘들다
        console.log(0.2 + 0.1); // 0.30000000000000004

        console.log(200 + 100); // 300
        console.log('200' + '100'); // 200100
    </script>

 

3) 기본 자료형: 논리형 boolean

 

✏️  참(True)과 거짓(False) 두 가지 값만 가지는 자료형

 

💡 비교 연산자 
    === : 양쪽이 같다.
    !==  : 양쪽이 다르다.
    >      : 왼쪽이 더 크다.
        : 오른쪽이 더 크다.
    >=    : 왼쪽이 더 크거나 같다.
    <=    : 오른쪽이 더 크거나 같다.

 

<script>
    console.log(1 === 2); // false 양쪽이 같다.
    console.log(1 !== 2); // true 양쪽이 다르다.
    console.log(1 > 2); // false 왼쪽이 크다.
    console.log(1 < 2); // true 오른쪽이 크다.
    console.log(1 >= 2); // false 왼쪽이 크거나 같다.
    console.log(1 <= 2); // true 오른쪽이 크거나 같다.

    // 문자열에도 비교 연산자 사용 가능. 내림차순 값이 크다.
    console.log('강아지' > '냐옹이'); // false

    // 논리 부정 연산자 (!)
    // 값을 반대로 바꿈
    console.log(!true); // false
    console.log(!false); // true
</script>

 


4) undefined와 null 자료형

 

✏️  undefined : 상수와 변수로 선언하지 않거나 변수를 선언하면서 값을 지정하지 않은 경우
✏️  상수는 선언할 때 반드시 값을 지정해야 하므로 값이 없는 상수는 존재하지 않음

✏️  null : ' 데이터 값이 유효하지 않은 상태 '

<script>
    'use strict'; // 엄격 모드

    console.log(typeof(a)); // undefined

    let b;
    console.log(typeof(b)); // undefined

    c = 100;
    console.log(typeof(c)); // number(엄격모드 지정 안할 시)
</script>

 


 

3. 자료형 검사  typeof

👩🏻‍🚀  자료형 확인할 때 'typeof' 사용

<script>
    let num = 10;
    console.log(num);
    num ='하이';

    // typeof 연산자 사용 : typeof(자료)
    console.log(typeof('안녕하세요')); // string
    console.log(typeof(100)); // number
    console.log(typeof(true)); // boolean

    // 괄호가 없어도 됨 : typeof가 연산자라서 가능
    console.log(typeof '안녕하세요'); // string
    console.log(typeof 100); // number
    console.log(typeof true); // boolean

    console.log(typeof "안녕하세요" === "string"); // true. "안녕하세요"의 자료형이 string
    console.log(typeof ("안녕하세요") === "string"); // true. "안녕하세요"의 자료형이 string
    console.log(typeof ("안녕하세요" === "string")); // boolean. "안녕하세요" === "string"의 결과값은 false

    // 자바 스크립트에서는 변수에 함수를 할당하는 것이 가능.
    // 즉, 함수도 하나의 자료형임.
    let fun = function() {
        console.log('hello');
    }
    fun(); // hello
    console.log(typeof fun); // function
</script>

 


4.  자료형 변환

 

 숫자 자료형으로 변환할 때는 Number() 함수를 사용
<script>
    // prompt로 입력 받으면 기본형이 문자열
    const rawInput = prompt("inch 단위의 숫자를 입력해주세요."); // 숫자를 입력.
    console.log(typeof rawInput); // String

    // 입력받은 데이터를 숫자형으로 변경하고 cm 단위로 변경.
    const inch = Number(rawInput);
    console.log(typeof inch); // Number
    const cm = inch * 2.54;

    // 출력
    alert(inch + 'inch는 ' + cm + 'cm 입니다.');
    alert(`${inch}inchsms ${cm}cm 입니다.`);
</script>

 

문자 자료형으로 변환할 때  String() 함수 사용
<script>
    var number = 100;
    console.log(typeof(number)); // number

    number = String(number); 
    console.log(typeof(number)); // string
    console.log(number); // 100
</script>

 

불 자료형으로 변환할 때 Boolean() 함수 사용
<script>
    // 숫자를 불린으로 형변환. 0은 false 나머지는 true
    var number = 200; 
    console.log(typeof(number)); // number
    console.log(number); // 200

    number = Boolean(number);
    console.log(typeof(number)); // boolean
    console.log(number); // true

    let num = 0;
    console.log(typeof(num)); // number
    console.log(num); // 0

    num = Boolean(num);
    console.log(typeof(num)); // boolean
    console.log(num); // false. 0은 false로 변환.

    // 문자열을 불린으로 형변환. 빈 문자열은 false, 나머지는 true.
    let string2 = 'hello';
    console.log(typeof(string2)); // string

    string2 = Boolean(string2);
    console.log(typeof(string2)); // boolean
    console.log(string2); // true

    let string3 = '';
    console.log(typeof(string3)); // string

    string3 = Boolean(string3);
    console.log(typeof(string3)); // boolean
    console.log(string3); // false
</script>

 

 

 

 

[ 내용 참고 : IT 학원 강의 및 책 'Do it HTML+CSS+자바스크립트 웹 표준의 정석' ]


 

1.  자바 스크립트

👩🏻‍🚀  자바 스크립트는 프로그램을 실행하는 도중에 변수에 저장되는 데이터 타입이 동적으로 바뀌는 동적 타입 언어

 

1) 웹 문서 안에 <script> 태그로 자바스크립트 작성

 

🍯  소스 코드가 짧을 경우 웹 문서에서 자바스크립트를 실행할 위치에 바로 코드 작성 가능

🍯  <script></script> 태그 사용

🍯  가급적 이미지나 텍스트 등의 요소를 다 표시한 후에 실행

🍯  영어 대소문자를 구별함

<body>
    <!-- 글자색 바꾸기 -->
    <h1 id="heading">자바스크립트</h1>
    <p id="text">위 텍스트를 클릭해 보세요</p>
    
<script>
    let heading = document.querySelector('#heading');
    heading.onclick = function() {
        heading.style.color = 'red';
    }
</script>
</body>


 

2) 외부 스크립트 파일로 연결해서 작성

 

<script src="외부 스크립트 파일 경로"></script>

 

🍯  CSS 처럼 자바스크립트 소스도 따로 파일로 저장한 후 웹 문서에 연결해서 사용 가능

🍯  외부 자바스크립트 파일은 <script> 태그 없이 소스만 작성하고 확장자는 *.js로 저장

<body>
    <!-- 글자색 바꾸기 -->
    <h1 id="heading">자바스크립트</h1>
    <p id="text">위 텍스트를 클릭해 보세요</p>

    <!-- css 처럼 외부 파일로 만들어서 실행 가능. -->
    <script src="js/change-result.js"></script>

</body>

 


 

2.  자바스크립트 용어와 기본 입출력 방법

1) 식 espression과 문 statement

 

🐝  '식'은 표현식이라고도 함. 어떤 값을 만들어 낼 수 있다면 모두 식이 될 수 있고, 식은 변수에 저장됨

🐝  '문'은 명령과 비슷. 문의 끝에는 세미콜론(;)을 붙여서 구분  ex. 조건문, 제어문

inch * 2.54 // 연산식은 식
"안녕하세요?"; // 문자열도 식
5           // 숫자도 식

 


2) 간단한 입출력 방법

 

(1) 알림 창 출력

alert(메시지)

 

🐝  알림창을 만드는 방법은 alert()를 입력하고 괄호 안에 따옴표와 함께 메시지를 넣어주면 된다.

 

<script>
    alert('안녕하세요!');
    alert(10 * 30);
</script>

 


 

(2) 확인 창 출력

confirm(메시지)

 

🐝  알림 창은 단순히 메시지를 보여주는 기능만 하지만, 확인 창은 사용자가 [확인], [취소] 버튼 중에서 직접 클릭

🐝  확인을 눌러야 이후의 코드가 실행(alert()함수가 종료)이 됨

<script>
    var reply = confirm('정말 배경 이미지를 바꾸겠습니까?')
</script>


 

(3) 프롬프트 창에서 입력받기

prompt(메시지) 또는 prompt(메시지, 기본값)

 

🐝  프롬프트 prompt 창은 텍스트 필드가 있는 작은 창

🐝  텍스트 필드 안에 간단한 메시지를 입력할 수 있으며 그 내용을 가져와 프로그램에 사용 가능

🐝  기본값을 지정하지 않으면 빈 텍스트 필드로 표시

 

<script>
    var name = prompt("이름을 입력하세요.", "홍길동");
</script>


 

(4) 브라우저 화면에 출력을 담당하는 document.write()문

 

🐝  결과값을 확인하는 용도로 많이 쓰임

🐝  괄호 안에 결과값이 저장된 변수나 html 태그를 따옴표 안에 넣을 수도 있다.

<script>
    document.write('<h1>환영합니다.</h1>')
</script>

 


 

(5) 콘솔 창에 출력하는 console.log()문

 

🐝  괄호 안의 내용을 콘솔 창에 표시. 콘솔 창은 웹 브라우저의 개발자 도구 창에 포함되어 있는 공간이다.

🐝  콘솔 창에서 소스 코드의 오류를 발견하거나 변숫값을 확인할 수도 있다.

🐝  괄호 안에 변수, 따옴표 사이에 표시할 텍스트를 넣을 수 있다. but! html 태그는 불가

 

주의점 : 자바 스크립트가 각각의 문장을 구별하는 방법
    1) 문장의 끝에 ;(세미 콜론)  2) 줄 바꿈 둘 중 하나
다른 언어로의 확장(파이썬, 코틀린을 제외한 대부분의 언어가 세미 콜론 사용, 즉 1번 사용) 및
명료성을 위해 세미 콜론을 붙이는 것이 좋음. (해당 라인을 작업 중인지 완료 했는지 구분)

 

<script>
    console.log('안녕하세요')
    console.log(10*30)
</script>

 

콘솔 에러 확인하기 - 빨간색 메세지로 나온다.
ReferenceError : 단어 오탈자 / SyntaxError : 기호에서 오탈자 
<script>
    aler('안녕하세요!'); /* Uncaught ReferenceError: aler is not defined */
</script>

 

 

 

 

[ 내용 참고 : IT 학원 강의 및 책 'Do it HTML+CSS+자바스크립트 웹 표준의 정석' ]


1.  flex-direction

🐰  flex-direction이 row인 경우 컨테이너의 자식 요소에 넓이를 지정하지 않으면 내부 컨텐츠에 따라 넓이가 정해짐
         ▶️  inline-block 속성과 유사
      

🐰  flex-direction이 column인 경우 넓이를 지정하지 않으면 자동으로 넓이가 100%로 정해짐.
        ▶️  block 속성과 유사

    <style>
        #container {
            margin-top: 10px;
            border: 3px solid #af94de;
            display: flex;
            flex-direction: column | row;
        }

        .item {
            padding: 10px;
            margin: 10px;
            background: #fcfc9e;
            color: #525d73;
        }
    </style>
</head>
<body>
    <div id="container">
        <div class="item">Item 1</div>
        <div class="item">Item 2</div>
        <div class="item">Item 3</div>
        <div class="item">Item 4</div>
        <div class="item">Item 5</div>
        <div class="item">Item 6</div>
        <div class="item">Item 7</div>
        <div class="item">Item 8</div>
    </div>
</body>

 

flex-direction: row

 

flex-direction:column

 

 


 

2. flex-wrap

🐰  flex-direction: column 일 때 속성 적용 안 됨

     /* 위 예제 스타일과 똑같이 적용하고 flex-wrap 속성만 추가 */
     #container {
            display: flex;
            flex-direction: row;
            flex-wrap: wrap | wrap-reverse;
        }

    </style>
</head>
<body>
    <div id="container">
        <div class="item">Item 1</div>
        <div class="item">Item 2</div>
        <div class="item">Item 3</div>
        <div class="item">Item 4</div>
        <div class="item">Item 5</div>
        <div class="item">Item 6</div>
        <div class="item">Item 7</div>
        <div class="item">Item 8</div>
        <div class="item">Item 9</div>
        <div class="item">Item 10</div>
        <div class="item">Item 11</div>
        <div class="item">Item 12</div>
    </div>

</body>

 

주축이 row인 경우, flex-wrap 속성의 wrap과 wrap-reverse를 적용했을 때
주축이 column인 경우 적용 안됨

 


 

3.  justify-content

🐰  flex-direction: column 일 때 속성 적용 안 됨

flex-start : 줄의 시작 지점에 배치. 왼쪽 맞춤. 기본 값
flex-end : 줄의 끝 지점에 배치. 오른쪽 맞춤.
center : 가운데 맞춤
space-between : 왼쪽과 오른쪽 끝에 있는 요소를 끝에 붙이고, 남은 부분들은 균등한 공간을 형성한 상태로 배치.
space-around : 항목들 간에 동일한 간격

space-evenly : 왼쪽과 오른쪽 끝에 있는 공간도 포함해서 균등한 여백을 형성한 상태로 배치
<head>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        #container {
            margin-top: 10px;
            border: 3px solid #af94de;
            display: flex;
            justify-content: flex-start | flex-end | center |
                             spac-between | space-around | space-evenly;
        }

        .item {
            padding: 10px;
            background: #fcfc9e;
            color: #525d73;
        }
    </style>
</head>
<body>
    <div id="container">
        <div class="item">Item 1</div>
        <div class="item">Item 2</div>
        <div class="item">Item 3</div>
        <div class="item">Item 4</div>
        <div class="item">Item 5</div>
        <div class="item">Item 6</div>
        <div class="item">Item 7</div>
        <div class="item">Item 8</div>
    </div>

</body>

 

flex-start
flex-end
center
space-between
space-around
space-evenly

 


 

4.  align-itmes

🐰  수직방향 맞춤. 부모 요소에 빈공간이 있으면 자식 요소에 수직 방향으로 어떻게 맞출지 지정

 

flex-start       - 부모 요소의 윗부분에 맞춰 배치
flex-end         - 부모 요소의 아랫부분에 맞춰 배치
center             - 중앙에 배치
stretch            - 부모 요소의 높이 또는 콘텐츠의 가장 높이가 높은 자식 요소에 맞춰 늘어남. 초기값
baseline          -  문자 기준선에 맞춰 배치

 

<head>
    <style>
        #container {
            margin-top: 10px;
            border: 3px solid #af94de;
            
            display: flex;
            align-items: flex-start | flex-end | center | stretch | baseline;
        }

        .item {
            padding: 10px;
            margin: 10px;
            background: #fcfc9e;
            color: #525d73;
        }
        
        .item:nth-child(2) { /* 두번째 박스만 지정 */
            padding: 20px;
        }
    </style>
</head>
<body>
    <div id="container">
        <div class="item">Item 1</div>
        <div class="item">Item 2</div>
        <div class="item">Item 3</div>
        <div class="item">Item 4</div>
        <div class="item">Item 5</div>
        <div class="item">Item 6</div>
    </div>
</body>

flex-start
flex-end
center
stretch
baseline

 


 

5.  align-content

🐰  여러 줄이 될 때의 맞춤. 자식 요소가 여러 줄이 됐을 때의 수직 방향 맞춤을 지정
🐰  flex-wrap: nowrap 이 적용 되어 있다면 자식 요소가 한 줄이 되므로 align-content 속성 의미가 없음

 

flex-start : 부모 요소의 윗부분에 맞춰 배치
flex-end : 부모 요소의 아랫부분에 맞춰 배치
center : 중앙에 배치
space-between : 위아래 끝에 있는 요소를 끝에 붙이고, 남은 부분들은 균등한 공간을 형성한 상태로 배치
space-around : 위아래 끝에 있는 여백도 포함해서 균등한 공간을 형성한 상태로 배치
space-evenly : 항목들 간에 동일한 간격
stretch : 부모 요소의 높이에 맞게 자식 요소의 높이를 늘여서 배치

 

 
        #container {
            width: 400px;
            height: 300px;

            display: flex;
            flex-wrap: wrap;
            align-content: flex-start | flex-end | center | space-between
                           space-around | space-evenly | stretch ;
        }

    </style>
</head>
<body>
    <div id="container">
        <div class="item">Item 1</div>
        <div class="item">Item 2</div>
        <div class="item">Item 3</div>
        <div class="item">Item 4</div>
        <div class="item">Item 5</div>
        <div class="item">Item 6</div>
        <div class="item">Item 7</div>
        <div class="item">Item 8</div>
        <div class="item">Item 9</div>
        <div class="item">Item 10</div>
        <div class="item">Item 11</div>
        <div class="item">Item 12</div>
    </div>

</body>

flex-start / flex-end
center / space-between
space-around / space-evenly

 

stretch

 

 

 

 

[ 내용 참고 : IT 학원 강의 및 책 'Do it HTML+CSS+자바스크립트 웹 표준의 정석' ]


1.  position 속성

 

🥑  배치 방법을 지정하는 속성
🥑  각 요소의 위치를 정하는 방법

상대 위치 좌표 : 태그 요소를 입력한 순서를 통해 상대적으로 위치를 지정
절대 위치 좌표 : 태그 요소로 만들어진 x좌표와 y좌표를 설정해 절대 위치를 지정

💡 함께 적용가능한 속성
     top - y축 상단기준
     bottom - y축 하단기준
     left - x축 좌측기준
     right - x축 우측기준
     z-index - 요소의 쌓임 순서를 정의. 값이 클 수록 앞쪽에 배치 된다.

 

종류 설명
static 문서의 흐름(위에서 아래로 순서대로 배치)에 맞춰 배치. 기본값.
relative 상대 좌표와 함께 위치를 지정 (상대위치 지정방식)
태그가 만들어진 순서대로 나열
absolute 절대 위치 좌표를 설정. 부모 박스 기준으로 좌표를 설정
단, 부모 요소가 static일 경우 부모 요소로 인식하지 않음
fixed 고정된 상태로 위치가 지정

 


 

 

static

위치지정불가 ) top, left, right, bottom의 영향을 받지 않음

 

<head>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        div {
            width: 300px;
            height: 300px;
            border: 4px solid black;
            margin-left: 30px;
            font-size: 30px;
            line-height: 300px;
            text-align: center;
        }

    </style>
</head>
<body>
    <div>static-1</div>
    <div>static-2</div>
    <div>static-3</div>
</body>

 


 

 

<head>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        div {
            width: 300px;
            height: 300px;
            border: 4px solid black;
            margin-left: 30px;
            font-size: 30px;
            line-height: 300px;
            text-align: center;

            /* position 속성을 지정하지 않은 상태 : static */
            left: 100px; /* 좌표 인식이 안됨 */
            top: 100px; /* 좌표 인식이 안됨 */
        }
    </style>
</head>
<body>
    <div>static-1</div>
    <div>static-2</div>
    <div>static-3</div>
</body>

 


relative

위치지정가능) 부모박스의 역할로 주로 사용 
<head>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        div {
            width: 300px;
            height: 300px;
            border: 4px solid black;
            margin-left: 30px;
            font-size: 30px;
            line-height: 300px;
            text-align: center;

            position : relative; /* 상대좌표 */
            top : 100px;
            left : 100px;
        }

    </style>
</head>
<body>
    <div>relative-1</div>
    <div>relative-2</div>
    <div>relative-3</div>
</body>

 


absolute

html 화면(x, y)을 기준으로 위치가 지정.
만들어진 순서대로 위쪽에 배치 (위치지정 가능) top, left, right, bottom의 영향을 받음.
기준이 되는 위치는 가장 가까운 부모 요소나 조상 요소 중 position 속성이 relative인 요소
absolute를 사용하려면 그 요소를 감싸는 <div>를 만들고 position 속성을 relative로 지정해 놓고 사용해야 함

 

<head>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .movie { /* 부모 요소 */
            width: 700px;
            height: 500px;
            border: 2px solid gray;
            background-color: darkslateblue;

            position: relative; /* 상대 좌표 */
        }

        /* 자식 요소 */
        /* 버튼 */
        .movie div {
            width: 120px;
            height: 120px;
            border: none;
            border-radius: 120px;
            background-color: antiquewhite;
            text-align: center;
            line-height: 120px;
            font-size: 30px;

            position: absolute;
        }

        .prev {
            top: 50%; /* top으로의 위치 */
            left: 10px; /* left로의 위치 */
            margin-top: -60px; /* 반지름 값만큼 빼줘야 중앙 정렬이 됨 */
        }

        .play {
            top: calc(50% - 60px);
            left: calc(50% - 60px);
        }

        .next {
            top: calc(50% - 60px);
            right: 10px;
        }

    </style>
</head>
<body>
    <!--부모 요소 relative -->
    <div class="movie">
        <!--자식 요소 absollute -->
        <div class="prev">PREV</div>
        <div class="play">▶</div>
        <div class="next">NEXT</div>
    </div>

</body>

 


fixed

스크롤과 상관없이 html화면기준 좌측상단을 기준으로 좌표고정
top,left, right, bottom의 영향을 받음

 

<head>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        body {
            height: 3000px; /* 스크롤 바를 나타내기 위해 문서의 높이를 임의의 크기로 지정 */
        }

        div {
            width: 300px;
            height: 300px;
            border: 4px solid black;
            margin-left: 30px;
            font-size: 30px;
            line-height: 300px;
            text-align: center;
        }

        div:nth-of-type(1) { /* div 박스 중에서 첫 번째 박스 */
            background-color: red;
            left: 100px; /* 왼쪽 좌표 */
            top: 100px; /* 상단 좌표 */
            position: absolute;
        }

        div:nth-of-type(2) { /* div 박스 중에서 두 번째 박스 */
            background-color: orangered;
            right: 100px; /* 오른쪽 좌표 */
            bottom: 100px; /* 하단 좌표 */
            position: fixed;
        }

    </style>
</head>
<body>
    <div>absolute</div>
    <div>fixed</div>
</body>

 

스크롤 밑으로 내렸을 때

 


z-index

 

<head>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        div {
            width: 300px;
            height: 300px;
            margin-left: 30px;
            font-size: 30px;
            line-height: 300px;
            text-align: center;

            position: absolute; /* 절대 좌표 */
        }

        div:nth-of-type(1) { /* div 박스 중에서 첫 번째 박스 */
            background-color: indianred;
            left: 100px; /* 왼쪽 좌표 */
            top: 100px; /* 상단 좌표 */
            z-index: 5;
        }

        div:nth-of-type(2) { /* div 박스 중에서 두 번째 박스 */
            background-color: lightgoldenrodyellow;
            left: 250px; /* 왼쪽 좌표 */
            top: 250px; /* 상단 좌표 */
            z-index: 3; /* 우선 순위 변경 */
        }

        div:nth-of-type(3) { /* div 박스 중에서 세 번째 박스 */
            background-color: teal;
            left: 400px; /* 왼쪽 좌표 */
            top: 400px; /* 상단 좌표 */
        }

    </style>
</head>
<body>
    <div>box-1</div>
    <div>box-2</div>
    <div>box-3</div>
</body>

 

 

 

 

 

[ 내용 참고 : IT 학원 강의 및 책 'Do it HTML+CSS+자바스크립트 웹 표준의 정석' ]


 

1.  표 만들기

🌻  표는 웹 페이지에서 자료를 정리할 때 자주 사용하는 요소

      실제는 게시판이나 회원 가입 페이지의 레이아웃을 만드는데 주로 사용

 

1) 표 구성요소 

 

🍯 tablerowcolumn 그리고 cell 로 이루어진다.

 

table 구조

   -  table > tr > td

 

 table 관련태그


   - table                       :  table 전체를 감싸는 태그

   - caption                  :  표에 제목을 붙일 때 <table> 태그 바로 다음에 사용. 표의 위쪽 중앙에 표시

   - tr("table row")   :  테이블의 행을 의미하는 태그. 자손으로 th나 td가 반드시 있어야 한다.
   - td("table data") :  테이블의 일반 셀(칸)을 의미하는 태그. 부모인 tr안에 있어야 한다.
                                           base style - 왼쪽정렬 (text-align:left)
   - th("table header") : 테이블의 제목 셀(칸)을 의미하는 태그. 부모인 tr안에 있어야 한다.
                                           base style - 중앙정렬(text-align:center), 두껍게(font-weight:bold)

    <style>
        table {
            border: 2px solid red;
        }
        td,th {
            border: 2px solid black;
            width: 200px;
        }
    </style>
</head>
<body>
    <caption>표의 제목1</caption>
    <table>
        <!-- 행의 시작 -->
        <tr>
            <!-- 열의 시작 -->
            <th>제목1</th>
            <th>제목2</th>
        </tr>
        <!-- 행의 시작 -->
        <tr>
            <!-- 열의 시작 -->
            <td>내용1</td>
            <td>내용2</td>
        </tr>
        <!-- 행의 시작 -->
        <tr>
            <!-- 열의 시작 -->
            <td>내용3</td>
            <td>내용4</td>
        </tr>

</table>


 

colspan, rowspan


   - 표를 만든 후 표의 행이나 열을 합치는 속성으로 셀을 만드는 <td>,<th> 태그에서 사용


       🥕 colspan="합쳐지는 열의 개수" : 가로의 병합
       🥕 rowspan="합쳐지는 행의 개수" : 세로의 병합

<head>
    <style>
        td, th {
            border: 2px solid black;
        }
    </style>
</head>
<body>
<!--colspan-->
<table>
    <caption>colspan</caption>
    <tr>
        <th colspan="2">코리아교육그룹</th>
    </tr>
    <tr>
        <td>1</td>
        <td>2</td>
    </tr>
    <tr>
        <td>3</td>
        <td>4</td>
    </tr>
</table>

</body>


 

col, colgroup

 

   -  '특정 열'에 배경색을 넣거나 너비를 바꿀 때 사용. 반드시 <caption> 태그 다음에 써야 함

    -  <col> 태그는 열을 1개만 지정, <colgroup> 태그는 <col>태그를 2개 이상 묶어서 사용 

    -  <colgroup> 태그 안에 표 전체 열 개수 만큼 <col> 태그를 작성해야 함

 

<caption>선물용과 가정용 상품 구성</caption>
<colgroup>
  <col style="background-color:#eee;">
  <col>
  <col style="width:150px">
  <col style="width:150px">
</colgroup>

 


 

2) 표 구조

 

🍯  표의 구조는 head, body, foot 으로 구분

 thead : 표의 제목 부분
 tbody : 표의 본문 부분
 tfoot : 표의 요약 부분

 

<head>
    <style>
        td, th {
            border: 2px solid black;
        }
    </style>
</head>
<body>
    <table>
        <caption>공지사항</caption>
        <!--표의 제목 부분-->
        <thead>
        <tr>
            <th>번호</th>
            <th>제목</th>
            <th>날짜</th>
        </tr>
        </thead>

        <!--표의 본문 부분-->
        <tbody>
        <tr>
            <td>001</td>
            <td>코리아교육그룹 2020 대한민국 교육브랜드 대상</td>
            <td>2020-07-01</td>
        </tr>
        <tr>
            <td>002</td>
            <td>청년학당 WE-GO</td>
            <td>2020-06-29</td>
        </tr>
        </tbody>

        <!-- 표의 요약 부분 -->
        <tfoot>
        <tr>
            <td>250</td>
            <td>10개의 게시물</td>
            <td>2020-07</td>
        </tr>
        </tfoot>
    </table>
</body>

 

 

 

 

 

 

[ 내용 참고 : IT 학원 강의 및 책 'Do it HTML+CSS+자바스크립트 웹 표준의 정석' ]

 


 

1.  목록 스타일

🍋  목록 태그에 스타일을 지정하는 방법으로 순서가 없는 항목(ul), 순서가 있는 항목(ol) 태그에 적용

 

1)   list-style-type 속성

 

  🥑  순서가 없는 항목 태그와 순서가 있는 항목 태그 앞에 나오는 블릿과 번호 스타일을 변경 

종류 설명 예시
disc 채운 원 모양
circle 빈 원 모양
square 채운 사각형 모양
decimal 1부터 시작하는 10진수 1, 2, 3...
decimal-leading-zero 앞에 0이 붙는 10진수 01, 02, 03...
lower-roman 로마 숫자 소문자 i, ii, iii ...
upper-roman 로마 숫자 대문자 I, II, III ...
lower-alpha 또는 lower-latin 알파벳 소문자 a, b, c...
upper-alpha 또는 upper-latin 알파벳 대문자 A, B, C...
none 불릿이나 숫자를 없앰  

 

순서 없는 태그 사용 예
<head>
    <style>
        .bullet_circle {
            list-style-type: circle; /* 빈 원으로 표시 */
        }
        .bullet_none {
            list-style-type: none; /* 블릿을 표시하지 않음 */
        }
    </style>
</head>
<body>
    <!--블릿 변경하기-->
    <ul class="bullet_circle">
        <li>회사소개</li>
        <li>생산설비</li>
        <li>제품소개</li>
        <li>온라인문의</li>
        <li>커뮤니티</li>
    </ul>
    <!--블릿 없애기-->
    <ul class="bullet_none">
        <li>회사소개</li>
        <li>생산설비</li>
        <li>제품소개</li>
        <li>온라인문의</li>
        <li>커뮤니티</li>
    </ul>
</body>

 

출력 결과


순서 있는 태그 사용 예
<head>
    <style>
        .style-num01 {
            list-style-type: lower-alpha; /* 알파벳 소문자 */
        }
        .style-num02 {
            list-style-type: upper-latin; /* 알파벳 대문자 */
        }
    </style>
</head>
<body>
    <!--블릿 변경하기-->
    <ol class="style-num01">
        <li>회사소개</li>
        <li>생산설비</li>
        <li>제품소개</li>
        <li>온라인문의</li>
        <li>커뮤니티</li>
    </ol>
    <!--블릿 없애기-->
    <ol class="style-num02">
        <li>회사소개</li>
        <li>생산설비</li>
        <li>제품소개</li>
        <li>온라인문의</li>
        <li>커뮤니티</li>
    </ol>
</body>

출력 결과


 

2) list-style-position 속성

 

list-style-position: inside | outside;

 

  🥑  전체 선택자(*)를 지정해서 마진과 패딩 값을 0으로 초기화하는 이유
         ▶️ 브라우저마다 기본 패딩값과 마진 값이 달라서 0으로 초기화 해서 사용

        ▶️ 이런 경우 블릿이나 번호타입을 지정해도 화면에 보이지 않음 

 

 🥑  list-style-position 속성 : 항목 번호가 보이지 않는 경우 들여쓰기 스타일 사용

  inside : 블릿이나 숫자를 안쪽으로 들여씀
  outside : 블릿이나 숫자를 밖으로 내어씀

 

<head>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .style-num01 {
            list-style-type: lower-alpha;
            list-style-position: inside;
        }

    </style>
</head>
<body>
    <ol class="style-num01">
        <li>회사소개</li>
        <li>생산설비</li>
        <li>제품소개</li>
        <li>온라인문의</li>
        <li>커뮤니티</li>
    </ol>

</body>

출력 결과


 

2.  표 스타일

1)  제목 위치를 정해주는 caption-side 속성

caption-side: top | bottom

 

top  :  캡션을 표 윗부분에 표시. 기본값
bottom :  캡션을 표 아랫부분에 표시.

 


 

2) 표 테두리를 그려 주는 border 속성

 

<head>    
    <style>
          table {
             caption-side: bottom;  /* 표 캡션 위치 */
             border:1px solid black;  /* 표 테두리는 검은 색 실선으로 */
          }
          td, th {
             border:1px dotted black;  /* 셀 테두리는 검은 색 점선으로 */
             padding:10px;  /* 셀 테두리와 내용 사이의 여백 */
             text-align:center;  /* 셀 내용 가운데 정렬 */
          }
       </style>
    </head>
    <body>    
       <h2>상품 구성</h2>
       <table>
          <caption>선물용과 가정용 상품 구성</caption>
          <thead>
             <tr>
                <th>용도</th>
                <th>중량</th>
                <th>갯수</t>
                <th>가격</th>
             </tr>
          </thead>
          <tbody>
             <tr>
                <td rowspan="2">선물용</td>
                <td>3kg</td>
                <td>11~16과</td>
                <td>35,000원</td>
             </tr>
             <tr>
                <td>5kg</td>
                <td>18~26과</td>
                <td>52,000원</td>
             </tr>
             <tr>
                <td rowspan="2">가정용</td>
                <td>3kg</td>
                <td>11~16과</td>
                <td>30,000원</td>
             </tr>   
             <tr>
                <td>5kg</td>
                <td>18~26과</td>
                <td>47,000원</td>
             </tr>
          </tbody>        
       </table>
    </body>

 


 

3)  셀 사이 여백을 지정하는 border-spacing 속성

 

🍯  table 태그와 border 속성을 사용했을 때 테두리와 셀들의 간격을 지정

border-spacing: 수평거리 수직거리

 

<head>
    <style>
        table {
            border: 2px solid black;
            border-spacing: 20px 40px;
        }
        td {
            padding: 15px;
            border: 1px dotted black;
            text-align: center;
        }
    </style>
</head>
<body>
    <table>
        <caption>표 스타일</caption>
        <tr>
            <td>시네마천국</td>
            <td>벤허</td>
        </tr>
        <tr>
            <td>11:00~14:30</td>
            <td>16:00~19:00</td>
        </tr>
    </table>
</body>

 

 

 


 

4)  표와 셀 테두리를 합쳐 주는 border-collapse 속성

 

🍯  표의 바깥 테두리와 셀의 각 테두리가 떨어져 있는 것을 합칠 것인지 그대로 둘 것인지 조정 가능
🍯  table과 td사이의 선값의 결합 유무를 결정하는 속성

collapse  :  표와 셀의 테두리를 합쳐 하나로 표시
separate  :  표와 셀 테두리를 따로 표시. 기본값 

 

<head>
    <style>
        table {
            border: 2px solid black;
            border-collapse: collapse;
        }
        td {
            padding: 15px;
            border: 1px dotted black;
            text-align: center;
        }
    </style>
</head>
<body>
    <table>
        <caption>표 스타일</caption>
        <tr>
            <td>시네마천국</td>
            <td>벤허</td>
        </tr>
        <tr>
            <td>11:00~14:30</td>
            <td>16:00~19:00</td>
        </tr>
    </table>
</body>

separate 인 경우
collapse 인 경우

 


 

5) empty-cells 속성 

 

🍯  table 태그에서 내용이 없는 빈 셀들의 표시 여부를 지정

 show : 빈 셀의 주위에 테두리를 표시하여 빈 셀을 나타냄. 기본값.
 hide : 빈 셀에 테두리를 그리지 않고 비워 둠
<head>
    <style>
        table {
            border: 2px solid black;
            empty-cells: hide;
        }
        td {
            padding: 15px;
            border: 1px dotted black;
            text-align: center;
        }
    </style>
</head>
<body>
    <table>
        <caption>표 스타일</caption>
        <tr>
            <td>시네마천국</td>
            <td>벤허</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>11:00~14:30</td>
            <td>16:00~19:00</td>
        </tr>
    </table>
</body>

 

hide로 지정한 경우

 


 

6)  width, height
        

🍯  표의 넓이와 높이를 지정. 
🍯  셀 / 전체 표의 넓이에 스타일 지정 가능 ▶️ 높이와 넓이를 지정하지 않으면 셀의 내용만큼 차지


 

 7)  table-layout 속성


🍯  콘텐츠에 맞게 셀 넓이를 지정
🍯  셀의 width 값을 지정하면 해당 크기에 맞게 화면에 맞춰 표시
       ➡️  영문을 띄어쓰기 없이 길게 입력을 하면 셀의 width 값은 무시되고, 내용이 한줄로 표시 됨

 

fixed : 셀 넓이를 고정하여 셀 내용에 따라 셀의 넓이가 달라지지 않음
auto : 기본값. 셀의 내용에 따라 넓이가 달라짐

 

<head>
    <style>
        table {
            border: 2px solid black;
            border-collapse: collapse;
            width: 400px;
            table-layout: fixed;
            word-break: break-all; /* 셀의 내용이 벗어나지 않도록 함 */
        }
        td {
            width: 200px;
            height: 40px;
            padding: 15px;
            border: 1px dotted black;
            text-align: center;
        }
    </style>
</head>
<body>
    <table>
        <caption>표 스타일</caption>
        <tr>
            <td>cinemacinemacinemacinemacinemacinemacinema</td>
            <td>벤허벤허벤허벤허벤허벤허벤허벤허벤허벤허벤허벤허벤허</td>
        </tr>
        <tr>
            <td>11:00~14:30</td>
            <td>16:00~19:00</td>
        </tr>
    </table>

</body>

 

 

 

 

 

 

 

 

 

[ 내용 참고 : IT 학원 강의 및 책 'Do it HTML+CSS+자바스크립트 웹 표준의 정석' ]

+ Recent posts