***CSS

 * 레이아웃

   01. 수평 정렬
       : 자손에 float 속성을 지정, 부모의 overflow 속성에 hidden 적용
         <style>
           div.container { overflow:hidden; }      -- 부모 속성 (줄바꿈)
           div.item { float: left; (margin: ; padding: ;)}             -- 자손 속성 float (왼오정렬)
         </style>
      +) 부모 속성에 overflow:hidden 적용해야 하는 이유
          ---> 적용하지 않으면 뒤의 컴포넌트가 계속 float의 영향을 받아 레이아웃의 옆으로 따라붙는 등 모양이 이상해짐 -- 줄바꿈 정렬을 위해 사용한다!
          clear:both를 적용하는 방법도 있는데 수평정렬 레이아웃을 중첩해야 하는 경우엔 부모속성을 추가하는게 더 효율적인가봄? 상황 따라 봐가면서 적용하도록 하자

   02. 중앙 정렬
       : 정렬할 가장 큰 몸체부분에 너비(width) 값을 부여, margin 속성 0 auto (중앙정렬 시켜주는거)
         <style>
           body { width:960px;  margin:0 auto; }    --body나 contents나 아무튼 중앙 정렬할 가장 바깥 틀에 적용
         </style>

   03. one true 레이아웃 (수평+중앙)
       : 행을 기준으로 공간을 배치
       : 행 구성 - 열 구성 - 레이아웃 구성 (가장 바깥 틀에 중앙 정렬 먼저, 그 아래 수평 정렬)
         <style>
           body {         --중앙 정렬
            width: 500px;
            margin: 10px auto;           }
           -- 수평 정렬
           #middle { overflow: hidden; }
           #left { float: left; width: 150px; background: red; }
           #right { float: right; width: 350px; background: blue; }
         </style>


 * 요소 배치
   01. 절대 위치를 사용한 배치
       : 부모 속성 position:relative                  자식 속성 position:absolute
         └ 요소의 위치를 조정하고 싶을 때 사용   └ 그 조정할 위치를 절대 좌표로 지정

   02. 중앙 배치
       : 중앙 정렬할 div태그의 position:absolute   left:50% top:50%   --절대위치, 왼위의 50% 위치로 지정
         div 태그의 margin-left, margin-top 속성에 div 태그 크기의 반만큼 음수 입력
         (width:500 height:250 일 때, margin-left:-250 margin-top:-125)

        - position:absolute   left:50% top:50% 일 때 div태그의 시작점을 기준으로 배치됨

        - ★즉 진짜 중앙정렬을 시키려면 박스 위치를 박스의 반만큼 반대 방향으로 옮겨야 함 (음수 입력 이유)


   03. 고정 위치
       : 웹페이지의 상하좌우에서 사용자가 스크롤할 때 계속 화면에 고정되어 따라오는 요소 (고정바)
       : position:fixed (고정)   left,top,right,bottom: 위치 지정    width,height: 크기 지정
         ---> 이 때, 본문 위치를 고정바와 겹치지 않게 하려면 margin으로 거리를 벌려주는 게 좋음

   04. 글자 생략
       : text-overflow: ellipsis 설정!    ---> 가나다라마바... 형태로, 박스 넘어가는 부분이 [ ... ] 처리
            overflow: hidden;     --박스 넘어가는 부분 숨김
            text-overflow: ellipsis;   -- 단, 텍스트는 ... 으로 생략처리해 숨김




 * 반응형 웹
   : PC, 폰에 맞게 디자인이 자동으로 반응해 변경되는 웹 페이지
   : 개발 효율성, 유지 보수 용이 --- 미디어 쿼리media query 사용해 개발
   : 사이즈가 너무 크면 분리해 만드는 게 더 낫긴 함 (naver/com과 m.naver/com 분리해놓은 것처럼)

 1. 뷰 포트 (반응형 웹에 반드시 들어가야 하는 것)
   : meta 태그: 추가적인 웹 페이지 정보 제공 --- 뭐 예를 들면 검색 엔진에 뜨는 타이틀, 사이트 설명 부분
         <meta name="title" content="">

   - content 속성에 설정할 수 있는 값


 2. 미디어 쿼리
   01. 설정
       - @ 규칙
         : 스타일시트 내부에서 특정한 규칙을 표현하는 데 사용
         @media (screen, print...) : 장치나 화면 비율에 따른 레이아웃 디자인
         @import : 외부 스타일을 가져옴
         @font-face : 글꼴을 추가로 정의

       - media
         : link 태그에 입력해 해당 미디어 쿼리 조건에 맞는 장치에서만 css 파일을 불러옴
         <link rel="stylesheet" href="파일 이름" media="미디어 쿼리">
         ex.
         <link rel="stylesheet" href="screen.css" media="screen"> ---> 스크린에서만 적용되는 css파일

   02. 미디어 타입

출처&nbsp; https://nuli.navercorp.com/community/article/573473


       - 연산자
         - only: 해당 장치에서만
         - not: 해당 장치를 제외한 나머지
         - and: 미디어 특징 여러개를 하나로 결합
         - , 쉼표: 개별 미디어 쿼리
        참고: only, not 사용 시 미디어 타입을 반드시 지정해야 함

       - 특징


         ex1. 화면 너비에 따라 다른 미디어 쿼리
             @media screen and (max-width:760px) {} --화면 너비 760px 이하일 때 적용
             @media screen and (min-width:761px) and (max-width:959px) {} -- 너비 761~959일 때 적용
         ex2. 화면 가로/세로에 따른 미디어 쿼리
             @media screen and ( orientation:portrait ) {}         --orientation: portrait    ---> 세로 화면
             @media screen and ( orientation:landscape ) {}     --orientation: landscape ---> 가로 화면


   03. 웹 패턴
       : 미디어 쿼리 구성은 모바일 기준!
       : 일반 구성(PC 화면)에서 float의 left, right를 활용해 배치하고 모바일(미디어쿼리)에서 전부 해제
       : 모바일에서 float:none으로 해제 ---> 수직 배치로 바뀌면서 메뉴가 섹션의 위 또는 아래로 향하게 됨



      ※ 참고:  li { list-style:none; } ---> 리스트 설정 시 앞의 ○ 이런거.. 안 보이게 해줌


 * bootstrap
http://www.w3schools.com 에서 받을 수 있는 라이브러리. 

   - 직접 다운받은 bootstrap 불러오기
      //head
        <link rel="stylesheet" href="css/bootstrap.css">   --css파일 불러오기
        <script src="js/bootstrap.js"></script>    --js파일 불러오기 (css와 방식이 다르므로 주의!)
      //body
        <img src="img/Koala.jpg"  class="img-thumbnail" width=300px height=250px> 

   - 외부 서버에 저장된 bootstrap 불러오기 (cdn 방식)
     01. 이미지 모양
      //head
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
        <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js"></script>
      //body
        <img src="img/Koala.jpg"  class="img-thumbnail" width=300px height=250px> 

     02. 버튼 모양
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
        <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js"></script>
      //버튼 생성
        <button type="button" class="btn btn-link">Link</button>      --button 태그 
        <input type="button" class="btn btn-info" value="Input Button"> --input의 button 속성 
        <div class="btn btn-info">info</div>    --div를 이용해 블록 단위로 감싸진 텍스트
        <a href="#" class="btn btn-link">Link</a> --하이퍼링크가 걸린 텍스트

     03. 테이블 모양
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
        <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js"></script>
        //table
        <table class="table table-hover">
            <thead>
              <tr>
                <th>

     04. 페이지 모양
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
        <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js"></script>
        //bootstrap.css의 .pagination
        .pagination {
                  display: -ms-flexbox;
                  display: flex;   
                  padding-left: 0;
                  list-style: none;       --리스트의 ○ 없애주는거
                  border-radius: 0.25rem;   }
        //body
          <ul class="pagination">
            <li class="page-item"><a class="page-link" href="#">Previous</a></li>
            <li class="page-item active"><a class="page-link" href="#">2</a></li>

     05. dropdown ---> 버튼 누르면 메뉴가 드롭되는 것
        //body
          <div class="btn-group">   --일반 버튼 그룹
            <button type="button" class="btn btn-primary">Apple</button>
            <button type="button" class="btn btn-primary">Samsung</button>
            <div class="btn-group">  -- 드롭다운 화살표가 포함된 버튼을 그룹으로 추가할 것
              <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"> Sony </button>         -- data-toggle="dropdown" ---> 버튼 클릭 시 "dropdown"class로 접근해 데이터 가져오라고
          <div class="dropdown-menu"> --드롭다운 메뉴, 아래 아이템 나열.
            <a class="dropdown-item" href="#">Tablet</a>
            <a class="dropdown-item" href="#">Smartphone</a>
          </div></div></div>

     06. collapse ---> 내용 펼치기(show)/숨기기(hide)
        //---1. data-toggle, data-target 사용
          <button type="button" class="btn btn-primary" data-toggle="collapse" data-target="#demo"> Simple collapsible </button>
          <div id="demo" class="collapse"> Lorem ipsum </div>
        //---2. a, href 사용
          <a class="collapsed card-link" data-toggle="collapse" href="#collapseTwo"> 파이썬 </a>
          <div id="collapseTwo" class="collapse" data-parent="#accordion">

   ※★
   data-toggle: bootstrap이 뭘 해야하는지 알려줌. (link의 a 태그 같은 역할)
                 (data-toggle="collapse" : collapse의 데이터를 가져오란 뜻)
   data-target: bootstrap에 어떤 요소가 오픈될 건지 알려줌. (href 같은 역할)
                 (data-target="#demo" : id=demo의 요소를 출력한단 뜻) --- 대체로 toggle에 함께 있는 id를 가져옴

      07. form, input 모양
          <form action="/action_page.php">  --제출 시 입력데이터를 여기로 보냄
            <div class="form-group"> --그룹형 폼
              <label for="email">Email address:</label>
              <input type="email" required="required" class="form-control" placeholder="Enter email" id="email">
            </div>   //input type="email" required="required" ---> 이메일 형식으로 입력, 검사
            <div class="form-group">
              <label for="pwd">Password:</label>
              <input type="password" class="form-control" placeholder="Enter password" id="pwd">
            </div>
            <div class="form-group form-check">
              <label class="form-check-label">
                <input class="form-check-input" type="checkbox"> Remember me
              </label>
            </div>
            <button type="submit" class="btn btn-primary">Submit</button>
          </form>

+ Recent posts