ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 23_10_14 CSS 공부정리
    개발공부/CSS 2023. 10. 15. 01:39

    [코딩애플] HTML, CSS 기초모듈

     

    -input을 타입에 따라 선택할 수 있음

    input[type=text]{ // [type=타입명]을 하면 그 타입만 선택할 수 있음.
        padding : 10px;
        font-size: 10px;
        border : 1px solid black;
        border-radius: 5px;
    }

    -레이아웃을 짜기전 border-box를 지정해주는것이 좋음

    div, input, textarea, button {
        box-sizing: border-box;
    }

    -가장 큰 컨테이너의 높이와 너비는 px, 안쪽의 박스는 편의를 위해 %로 하는 경우가 많음

    -width : 100%를 사용해서 px단위의 미세조정을 없앨 수 있음.

    .background-container {
        background-color: black;
        padding : 30px;
        width : 500px;
        height : 570px;
    }

    .container {
        background-color: white;
        padding : 30px;
        height : 100%;
    }
    .form-input {
        width : 100%;
        padding : 5px;
        font-size : 15px;
    }

    -자주 사용하는 속성을 클래스로 지정하여 반복사용하는것이 좋음

            <div class="w-50">
              <p>First name</p>
              <input type="text" class="form-input">
            </div>
            <div class="w-50">
              <p>Last name</p>
              <input type="text" class="form-input">
            </div>
     
    .w-50 {
        width : 50%;
        float : left;
        padding : 0px 10px;
    }

    -label태그를 이용해서 체크박스를 클릭하지 않고도 체크박스를 클릭할 수 있음

    -id와 for속성의 값이 같아야함.

                <input type="checkbox" id="check">
                <label for="check">Subscribe</label>

     

    <thead>,<tbody>로 테이블구역 나누기 가능

     

    -div태그로 table을 만드는법

    -display : table/table-row/table-cell로 가능

    div태그로 table을 만드는 코드

    vertical-align : 텍스트 세로정렬(top/middle/bottom) / 테이블에서 텍스트 세로정렬시 사용
    1.inline/inline-block 요소간의 세로정렬
    *(table외)super : 윗첨자 sub : 아랫첨자
    2.이미지와 함께 중앙정렬

     

    -table 선을 한줄로 만들때 (td사이 공백없애기)

    table {
        border-collapse: collapse;
    }

    세로 셀 병합하기 : rowspan

    가로 셀 병합하기 : colspan

    https://hianna.tistory.com/442

     

    [HTML] 테이블(table) 가로, 세로 셀 병합하기 (colspan, rowspan)

    HTML에서 테이블을 표현하고, 테이블의 셀을 병합하는 방법을 알아보도록 하겠습니다. 먼저, HTML로 테이블을 그리는 방법을 모른다면 지난 포스팅을 참조하세요. [HTML] 기본 테이블(표, Table) 그리

    hianna.tistory.com

     

    -nth-child() : 태그순서에 따라 선택하는 선택자

    .cart-table td:nth-child(even) {
      color: red;
    } 

    이러면 짝수로 등장하는 td에만 스타일을 줄 수도 있고

    (odd라고 쓰면 홀수)

    .cart-table td:nth-child(3n+0) {
      color: red;
    } 

    이러면 3의 배수로 등장하는 3,6,9,12.. 번째 등장하는 요소에만 스타일을 줄 수 있고

    3n + 1 이렇게 작성하면 (3의배수 +1) 번째 등장하는 요소에만 스타일을 줄 수 있음

     

    -border-radius가 table에서 안먹을때

    table 태그에 border-radius가 안먹을 때 1. 

    table {
      border-collapse : collapse;
      border-spacing : 0;
    }
    
    (왼쪽위에있는 td) {
      border-top-left-radius : 5px;
    }

     

     

    table 태그에 border-radius가 안먹을 때 2. 

    table {
      border-collapse : collapse;
      border-radius : 7px;
      border-style : hidden;
      box-shadow : 0 0 0 1px #666;
    }

    box-shadow라는 속성을 이용해 테두리를 가짜로 만들어내는 편법.

    box-shadow는 그림자 넣는 속성. 

     

    -pseudo-class를 입력할때 hover- focus-active 순으로 입력해야함.

    button:hover {
        background-color : rgb(75, 162, 255);
    }

    button:focus {
        background-color: blueviolet;
    }
     
    button:active {
        background-color: aquamarine;
    }

     

    -BEM 룰 : class명 작명법

    Block__Element--Modifer(내용__역할--구분)

    <div class="profile">
        <img class="profile__img">
        <h4 class="profile__h4">이름</h4>
        <p class="profile__content">소개글</p>
        <button class="profile__button--red">빨간버튼</button>
        <button class="profile__button--blue">파란버튼</button>
    </div>

     

    - Object Oriented CSS : class별로 나눠서 속성을 부여하는 방법 => 이것을 잘쓰는  라이브러리가 Bootstrap

    *장점 : 중복된 스타일 재사용 / 유지보수 편리 / 코드 작성 효율 증가

    .bg-red {
        background : red;
      }
      .bg-green {
        background : green;
      }
      .bg-blue {
        background : blue;
      }

    -이렇게 나눠진 클래스들을 Utility Class라고 함.

     

    -외부 font는 @font-face를 이용해서 가능

    -웹용 폰트(용량이 작은거)는 .woff임. ttf는 용량이 너무 큼.

    @font-face {
        font-family : '나눔'; // '작명'
        src : url(../font/NanumSquareB.woff) // src : url(폰트위치)
    }

    body {
        font-family: '나눔'; //body태그에 적용하면 모든 자식에 inherit됨.
    }

     

    -폰트 안티엘리어싱 : 태그들을 살짝만 회전시켜서 폰트를 부드럽게 하는것.

    p,h4,h3,h2,h1,button,span,div {
        transform : rotate(0.03deg)
    }

    -Emmet문법으로 코드를 작성하면 빠르게 작성 가능.

    https://inpa.tistory.com/entry/HTML-%F0%9F%8E%A8-Emmet-%EB%AC%B8%EB%B2%95-%EC%A0%95%EB%A6%AC

     

    🏷️ 에멧(Emmet) 문법 모음 - 한눈에 정리

    Emmet (에밋) 에밋은 HTML, XML, XSL 문서 등을 편집할 때 빠른 코딩을 위해 사용하는 플러그인이다. 원래 젠코딩으로 부르다가 에밋으로 이름을 변경했다. 매우 간단한 몇 가지 코드만 입력하면, 자동

    inpa.tistory.com

     

    -절대경로와 상대경로

    1. css/main.css

    2. /css/main.css

    참고로 위 두개의 경로는 다른 경로입니다.

    1번은 현재 HTML파일과 같은 경로에 있는 css라는 폴더 내의 main.css 파일을 의미하고

    2번은 현재 사이트의 메인경로 (codingapple.com)부터 시작해서 codingapple.com/css/main.css 파일을 첨부해라 라는 뜻입니다.

    슬래쉬 기호가 첨부터 붙어있으면 사이트 메인경로부터 시작해라~ 라는 의미입니다.

    멋진 말로 1번은 상대경로, 2번은 절대경로라고 합니다.

     

    -head에 들어갈 수 있는 것들

    1.CSS 파일 링크
    2.스타일태그
    3.사이트 제목
    4.meta 태그 

    <head>
        <meta charset="UTF-8">
        <meta name="description" content="html 잘하는 코딩애플입니다.">
        <meta name="keywords" content="HTML,CSS,JavaScript,자바스크립트,코딩">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
     </head>

    -사이트의 인코딩 형식을 지정할 때 charset="UTF-8"

    - 사이트의 검색 결과 화면에 뜨는 글귀를 수정. name/content/description

    -사이트 초기 zoom 레벨이나 폭을 지정해주려면 name="viewport" 라는 속성을 부여

    width=device-width는 모바일 기기의 실제 폭으로 렌더링 해주세요 라는 뜻

    initial-scale=1 이 부분은 접속시의 화면 줌레벨 설정.

    5.open graph : og태그.

    <head>
        <meta property="og:image" content="/이미지경로.jpg">
        <meta property="og:description" content="사이트설명">
        <meta property="og:title" content="사이트제목">
     </head>

    og태그 예시


    6.파비콘 : 웹사이트 제목 옆에 뜨는 아이콘을 커스터마이징

    <head>
        <link rel="icon" href="아이콘경로.ico" type="image/x-icon">
    </head>

    파비콘 사용시 유의점.

     

    vw(viewport width) : 브라우저 비례 너비 (50vw = 브라우저 너비의 50%)
    vh(viewport heigth) : 브라우저 비례 높이 (50vh = 브라우저 너비의 50%)

    rem : html 태그 폰트사이즈(16px)의 10배(10rem = 16px의 10배, 요즘은 쓸일 없음. 타이포그래피할때 쓴다함)
    em : 내 폰트사이즈의 X배(20em = font-size설정값의 20배)

     

     

    권장 Breakpoint 

     

    media query 문법 max-width 안에 넣는 브라우저 폭을 breakpoint라고 합니다. 

    breakpoint는 원하는 만큼 저렇게 여러개 넣을 수 있는데 

    필요할 때 마다 사이즈를 임의로 넣고 작성하는 것 보다는

    많은 사람들이 사용하는 breakpoint를 쓰는게 좋습니다. 

     

    1200px / 992px / 768px / 576px

     

    Bootstrap 라이브러리가 기본으로 권장하는 breakpoint 이며 그대로 따라하도록 합시다. 

     

    반응형 레이아웃 코드 예시

    <body>
        <div class="container">
            <div>
                <h4>Fast Shipping</h4>
                <p>lorem ipsum</p>
            </div>
            <div>
                <h4>Good Service</h4>
                <p>lorem ipsum</p>
            </div>
            <div>
                <h4>Free Coupons</h4>
                <p>lorem ipsum</p>
            </div>
            <div>
                <h4>New Products</h4>
                <p>lorem ipsum</p>
            </div>
            <div style="float:none;clear:both"></div>
        </div>
    </body>
     
    div {
        box-sizing: border-box;
    }

    .container {
        background-color: #eee;
        padding : 30px;
        width : 80%;
        max-width: 1000px;
        margin : auto;
    }

    .container>div {
        float : left;
        width : 25%;
        text-align: center;
    }

    @media screen and (max-width:992px) {
        .container>div {
            float : left;
            width : 50%
        }
    }

    @media screen and (max-width:769px) {
        .container>div {
            width : 100%  
        } //이해가 안가는 부분. 모든 자식 div태그에 width100%를 주면 총 400%아닌가? 왜 제대로 작동하지?
    }

    pc버전
    태블릿버전(max-width : 992px)
    모바일버전(max-width : 769px)

     

    -크롬브라우저 검사창에서 css는 가장 위에있는것부터 적용됨

    위에서 부터 실행됨.

    -Font Awesome 설치방법

    1.CDN방식 : 아래 주소에서 all.min.css를 링크복사 후 헤드태그에 삽입

    https://cdnjs.com/libraries/font-awesome

     

    font-awesome - Libraries - cdnjs - The #1 free and open source CDN built to make life easier for developers

    The iconic SVG, font, and CSS toolkit - Simple. Fast. Reliable. Content delivery at its finest. cdnjs is a free and open-source CDN service trusted by over 12.5% of all websites, serving over 200 billion requests each month, powered by Cloudflare. We make

    cdnjs.com

    2.직접다운 방식 : 아래 주소에서 all.min.css를 다운로드 받아 html에 링크를 걸어 삽입

    https://fontawesome.com/download

     

    Font Awesome

    The internet's icon library + toolkit. Used by millions of designers, devs, & content creators. Open-source. Always free. Always awesome.

    fontawesome.com

    -아래에서 검색 후 코드를 복사해서 붙여넣으면 끝

    https://fontawesome.com/search

            <div>
                <i class="fa-solid fa-ship fa-2x"></i> // fa-nx로 n배만큼 크기를 키울 수 있음.
                <h4>Fast Shipping</h4>
                <p>lorem ipsum</p>
            </div>

     

    -애니메이션 만드는 순서

    1.시작상태 만들기

    2.트리거 + 최종상태 만들기

    3.애니메이션 삽입

    -transition : all 1s로 하면 변하는 속성 모두가 1초에 걸처 서서히 변함

    .overlay { //시작상태
        color : white;
        text-align: center;
        font-size: 5vw; //반응형 폰트사이즈
        position : absolute; //div위에 겹치게하기 위해서(부모박스에 display : relative)
        width: 100%;
        height: 100%;
        background-color: rgba(0,0,0,0.7);
        display : flex; //p태그 가운데정렬
        justify-content: center;
        align-items: center;
        opacity : 0;
        transition : all 1s;  //애니메이션 삽입
        /* transition : opacity 0.5s ease ;  */
        transition-timing-function: cubic-bezier(); /*애니메이션 타이밍관련*/
    }
    .overlay:hover {  //트리거(호버) + 최종상태
        opacity : 1;
    }

    .overlay>p {
        padding-bottom : 2vw; //가운데정렬 더 정확히 하기 위해(p태그 안 텍스트 상하정렬힘듬)
    }

     

    -한 요소에 이벤트가 발생했을때 다른요소에 애니메이션을 주는 방법

    *선택자:pseudo-class 다른선택자 { 최종 상태 }

    .overlay-black {
        box-sizing: border-box;
        color : white;
        width: 100%;
        height: 100%;
        background-color: rgba(0,0,0,0.3);
        padding : 20px;
        margin-top : 100%;
        transition: all 1s;
    }
     
    .overlay-wrap:hover .overlay-black { //해당부분
        margin-top : 50%
    }

    -다른 웹사이트 애니메이션 참고하는법
    1.오른쪽위 점세개 > 도구 더보기 > 애니메이션
    2.해당 애니메이션을 동작시키면 기록이 되어 확인가능

    크롬 개발자도구 애니메이션 확인창

    '개발공부 > CSS' 카테고리의 다른 글

    23_10_16 CSS 공부정리  (1) 2023.10.17
    23_10_15 CSS 공부정리  (0) 2023.10.15
    23_10_13 CSS 공부정리  (1) 2023.10.14
    23_10_12 CSS 공부정리  (0) 2023.10.13
    23_10_11 CSS공부정리  (0) 2023.10.12
Designed by Tistory.