기본 콘텐츠로 건너뛰기

Part03 CSS - 01

CSS / 개요, 선택자, 상속 

기본문법 - 선택자 {
                    속성: 속성값;
                    속성: 속성값;
                }
선언 방식 - 인라인 방식

                <div style='color: red; font-size: 20px; font-weight: bold;'>HELLO</div>

                내장 방식

              <style>
                div{
                  color: red;
                  font-size: 20px;
                  font-weight: bold;
                }
              </style>

                링크 방식 - html<link>를 이용해서 외부 문서로 css를 불러와 적용

                <link rel='stylesheet' href='css/common.css'>

                @(at)import 방식 - css에서 외부의 css를 가져오는 방식(직렬 방식이므로 시간                  지연이 생김, 대신 순서적으로 호출이 되야할때는 좋음)

                @import url('./common2.css');

기본 선택자 - 전체 선택자 - 요소 내부의 모든 요소를 선택 

                *{
                  color: red;
                }                 

                   태그 선택자 - 태그 이름으로 요소 선택

                li{
                  color: red;
                }

                   클래스 선택자 - HTML class속성의 값으로 선택

              .orange{
                  color: red;
                }

                   아이디 선택자 - HTML id속성의 값으로 선택

              #orange{
                  color: red;
                }

복합 선택자 - 일치 선택자 - 두가지 선택자를 동시에 만족하는 요소 선택

               span.orange{
                 color: red;
               }

                   자식 선택자 - 부모 선택자의 자식 요소를 선택(> 자식)

                ul > .orange{
                  color: red;
                }

                   후손(하위) 선택자 - 앞선 선택자의 후손(하위) 요소를 선택(띄어쓰기가 선택                      자의 기호)

                div .orange{
                  color: red;
                }

                   인접 형제 선택자 - 앞선 선택자의 다음 형제요소를 하나만 선택(+ 인접한 다                      음의 형제요소)

               .orange + li{
                  color: red;
                }

                  일반 형제 선택자 - 앞선 선택자의 다음 형제요소 모두를 선택(~ 일반 형제)

              .orange ~ li{
                  color: red;
                }
상속 - 상위 요소에 적용된 색상같은 속성이 하위요소에 똑같이 적용이 된다. (대부분 글자를 다루는 속성)
강제 상속 - 하위요소는 inherit으로 강제 상속이 가능하다. '자식'를 제외한 '후손'에게는 적용되지 않으며, 모든 속성이 강제 상속을 사용할 수 있는 것은 아니다.
우선 순위 - 1. 명시도, 2. 선언 순서(가장 마지막 해석) 3. 중요도(상속은 우선 순위가 떨어짐), 4. !important가 젤 중요(중요도)
                  인라인 선언방식은 1000점, 아이디 선택자는 100점, 클래스 선택자는 10점, 태그 선택자는 1점,                       전체 선택자는 0점, 상속은 아예 점수가 없음
가상 클래스 선택자 - :(가상 클래스 선택자), ::(가상 요소 선택자)
                                hover - 마우스가 올라가 있는 동안에만 선택
                                active - 마우스로 클릭하는 동안에만 선택
                                focus - 포커스 된 동안에만 선택(input, img, tabindex)
                                first-child - 형제 요소 중 첫번째 요소라면 선택
                                last-child - 형제 요소 중 마지막 요소라면 선택
                                nth-child - 형제 요소중 n번재 요소라면 선택(n 키워드 사용시 0부터 해석)

                                .fruits li:nth-child(2n){

                   color: red;
                 }
                                nth-of-type - 타입과 동일한 타입인 형제 요소 중 앞선 선택자가 n번째 요소라면 선택(n키워드 사용시 0부터 해석)

                 .fruits p:nth-of-type(1){
                   color: red;
                 }
                               부정 선택자 - 뒤의 조건이 아닌 앞선 선택자 선택
가상 요소 선택자 - before - 요소 내부의 앞에, 내용을 가상 요소 삽입(::), content는 필수(없으면 아무 효과가 없음)
                             after - 요소 내부의 뒤에 내용을 삽입(::)
속성 선택자 - attr - 속성을 포함한 요소 선택 [attr]
                     attr=value - 속성을 포함하며 속성값이 value인 요소 선택 [attr=value]
                     attr^=value - 속성을 포함하며 속성 값이 value로 시작하는 요소 선택 [attr^=value]
                     attr$=value - 속성을 포함하며 속성 값이 value로 끝나는 요소 선택[attrr$=value]

CSS / 실습 환경

CSS Reset - reset.css cdn검색후(https://www.jsdelivr.com/package/npm/reset-css) 정보를 걸어주며 된다. reset이 먼저 호출되고 그다음에 내가 작성한 css가 적용되도록 해야한다.
Emmet - list{list$}*8 $는 엑셀처럼 증가하는 변수

CSS / 단위

px, % - %는 부모요소의 영향을 받음 
em, rem - em은 자기 자신의 폰트 사이즈에 영향을 받음, 폰트 사이즈가 10px이고 em이 60em이면 600px와 같음, 폰트사이즈가 명시되지 않았을 경우 부모의 폰트사이즈를 상속함
vw - ViewportWidth Viewport=흰색 화면으로 나오는 화면 전체 100이 최대값(%를 따짐)
vh - ViewportHeight 최대값(%를 따짐)
vmin -  vw 나 vh중 제일 짧은 길이 쪽으로 설정이 됨
vmax - vw 나 vh중 제일 긴길이 쪽으로 설정이 됨

CSSS / 속성 - 박스 모델

width - 가로 넓이 기본값(auto)이 있음, 단위는 px, em, cm등이 있음
height - 세로 넓이 기본값(auto)이 있음, 단위는 px, em, cm등이 있음
max-width - 요소의 최대 가로 너비를 지정, 기본값은 none 
min-width - 요소의 최소 가로 너비를 지정, 기본값은 0
max-height - 요소의 최대 세로 너비를 지정, 기본값은 none
min-height - 요소의 최소 세로 너비를 지정, 기본값은 0
margin - 요소의 '외부(바깥) 여백'을 지정, 음수 값을 사용할 수 있다, 기본값은 0, 단위는 px, em, cm등 사용, auto, %(부모 요소의 가로 너비에 대한 비율)사용, 단축속성
.box{
  margin: 10px 20px 30px 40px;/*위 우 아래 좌*/
  margin: 10px 20px 40px;/*위 [좌,우] 아래*/
  margin: 10px 40px;/*[위,아래] [좌,우]*/
  margin: 10px ;/*[위,아래,좌,우]*/
}
margin-top - 요소의 '외부(바깥) 위쪽 여백'을 지정, 개별 속성
margin-bottom - 요소의 '외부(바깥) 아래쪽 여백'을 지정
margin-right - 요소의 '외부(바깥) 오른쪽 여백'을 지정
margin-left - 요소의 '외부(바깥) 왼쪽 여백'을 지정
마진 중복(병합, Collapse) - 마진의 특정 값들이 '중복'되어 합쳐지는 현상, 1. 형제 요소들의 margin-top이 만날때 2. 부모요소와 자식요소의 margin-top이 만날때 3. 부모 요소와 자식요소의 margin-bottom이 만날때
마진 중복 계산법 - 마진 중복 현상이 발생시, 중복 값을 계산하는 방법
조건                        요소A 마진    요소B 마진    계산법                        중복 값
둘 다 양수               30px             10px            더 큰 값으로 중복        30px
둘 다 음수               -30px           -10px           더 작은 값으로 중복     -30px   
각각 양수와 음수     -30px            10px            -30 + 10 = -20          -20px
padding - 요소의 '내부(안) 여백'을 지정, 기본값은 0 단위는 px, em, cm등 단위로 지정 %는 부모 요소의 너비에 대한 비율로 지정, 마진처럼 단축 속성 개별 속성이 있음, 사용기 추가된 padding 값마큼 요소의 크기가 커짐, box-sizing: border-box; 옵션을 추가하면 크기가 커지지 않도록 작성이 됨(content-box)
.box{
  padding: 10px 20px 30px 40px;/*위 우 아래 좌*/
  padding: 10px 20px 40px;/*위 [좌,우] 아래*/
padding: 10px 40px;/*[위,아래] [좌,우]*/
padding: 10px ;/*[위,아래,좌,우]*/
}
border - 요소의 '테두리 선'을 지정, 단축속성
.box{
  border: 1px solid red; /*두께 종류 색상*/
}
border-width - 선의 두께or너비이고 기본값은 medium, 개별 속성인데 단축속성이기도 하다
                         medium    중간 두께
                         thin           얇은 두께
                         thick          두꺼운 구께
                         단위           px, em, cm등 단위로 지정 
.box{
  border-width: 10px 20px 30px 40px;/*위 우 아래 좌*/
  border-width: 10px 20px 40px;/*위 [좌,우] 아래*/
border-width: 10px 40px;/*[위,아래] [좌,우]*/
border-width: 10px ;/*[위,아래,좌,우]*/
}
border-style - 선의 종류이고 기본값은 none, 개별 속성인데 단축속성이기도 하다
                       none         선없음
                       hidden      선없음과 동일(table 요소에서 사용)
                       solid          실선(일반선)
                       dotted       점선
                       dashed      파선                        
                       double       두줄선
                       groove       홈이 파여있는 모양(선)
                       ridge          솟은 모양(선, groove의 반대)
                       inset          요소 전체가 들어간 모양(선)
                       outset        요소 전체가 나온 모양(선)
.box{
  border-style: solid dotted double inset;/*위 우 아래 좌*/
  border-style: solid dotted inset;/*위 [좌,우] 아래*/
  border-style: solid inset;/*[위,아래] [좌,우]*/
  border-style: solid;/*[위,아래,좌,우]*/
}
border-color - 선의 색상이고 기본값은 black, transparent는 투명한 선(요소의 배경색이 보임), 개별 속성인데 단축속성이기도 하다
border는 이런식으로 개별 속성이 쓰임
border-top                    위쪽 선                    두께 종류 새상
border-top-width         위쪽 선의 두께         두께
border-top-style           위쪽 선의 종류         종류
border-top-color          위쪽 선의 색상         색상
box-sizing - 요소의 크기 계산 기준을 지정
                content-box - 너비(width, height)만으로 요소의 크기를 계산, 기본값이 content-box이다
                border-box - 너비(width, height)에 안쪽 여백(padding)과 테두리선(border)를 포함하여 요소의 크기를 계산     
display - 요소의 박스 타입(유형)을 설정
            block            블록요소
            inline            인라인요소
            inline-block    인라인-블록 요소(가로 세로 마진 패딩의 위아래 값 사용가능)
            기타              table, table-cell, flex
            none             요소의 박스 타입이 없음
overflow - 요소의 크기 이상으로 내용이 넘쳤을때, 내용의 보여짐을 제어
            visible            넘친 부분을 자르지 않고 그대로 보여줌
            hidden           넘친 부분을 잘라내고, 보이지 않도록 함
            scroll             넘친 부분을 잘라내고, 스크롤바를 이용하여 볼 수 있도록 함(무조건 나옴)
            auto              넘친 부분이 있는 경우만 잘라내고, 스크롤바를 이용하여 볼 수 있도록 함(넘치면 나옴)
opacity - 요소의 투명도를 지정, 기본값은 1이고 0부터 1사이의 소수점 숫자를 넣는다. 0.5 = .5로도 표현이 가능하다

CSS / 속성 - 글꼴, 문자

font - 글자 관련 속성들을 지정, 기울기 두께 크기 / 줄높이 글꼴; 크기 줄높이의 순서가 굉장히 중요하다. 단축 속성을 사용하려면 font-size와 font-family를 필수로 입력해야 한다.
.box{
  font: italic bold 20px / 1.5 "arial"
}
            font-style            글자 기울기 지정            normal
            font-weight         글자 두께 지정               normal
            font-size             글자 크기 지정               medium(16px)
            line-height          줄 높이(줄 간격)지정        normal(reset.css 적용시 1)
            font-family          글꼴(서체)지정                운영체제(브라우저)에 따라 달라짐
font-style - 글자 스타일(기울기)을 지정
            normal                스타일없음        기본값
            italic                   이텔릭체
            oblique               기울어진 글자
font-weight - 글자의 두께(가중치)를 지정
            normal                기본 글자 두께, 400과 동일
            bold                    두껍게, 700과 동일
            bolder                 부모(상위) 요소보다 더 두껍게(bold보다 두껍다는 개념이 아님)
            lighter                 부모(상위) 요소보다 더 얇게
            숫자                     100부터 900까지의 100단위의 숫자 9개, normal과 bold이외의 두께를 제공하는 글꼴(서체)을 위한 설정
두께의 이름        100            Thin(Hariline)
                          200           Extra Light(Ultra Light)
                          300           Light
                          400           Normal
                          500           Medium
                          600           Semi Bold(Demi Bold)
                          700           Bold
                          800           Extra Bold(Ultra Bold)
                          900           Black(Heavy)
상대적 두께        상속값        bolder        lighter
                         100            400           100
                         200           400           100
                         300           400           100
                         400           700           100
                         500           700           100
                         600           900           400
                         700           900           400
                         800           900           700
                         900           900           700
숫자 값과 두께의 불일치 - 글꼴(서체)의 정확한 두께를 숫자로 표현할 수 없는 경우
                                        1. 400이 주어지면 500을 사용하고, 500이 불가하면 500미만의 다른 두께 사용
                                        2. 500이 주어지면 400을 사용하고, 400이 불가하면 400미만의 다른 두께 사용
                                        3. 400미만 값이 주어지면, 가장 가까운 숫자의 얇은 두께 사용                           
                                        4. 500초과 값이 주어지면, 가장 가까운 숫자의 두꺼운 두께 사용             
font-size - 글자의 크기를 지정
                  단위                px, em, cm등 단위로 지정                16px
                  %                   부모(상위)요소의 비율로 지정
                  xx-small         가장 작은 크기
                  x-small           더 작은 크기
                  small              작은 크기
                  medium          중간 크기
                  large               큰 크기
                  x-large            더 큰 크기
                  xx-large          가장 큰 크기
                  smaller            부모(상위) 요소보다 작은 크기
                  larger               부모(상위) 요소보다 큰 크기
line-height - 줄 높이(줄 간격) 지정
                    값            의미
                    normal      브라우저의 기본 정의를 사용(1~1.4)
                    숫자         요소 자체 글꼴 크기의 배수로 지정
                    단위         px, em, cm등 단위로 지정
                    %            요소 자체 글꼴 크기의 비율로 지정









font-family - 글꼴(서체) 지정
                    글꼴 이름        글꼴(서체)후보 목록을 지정
                    serif               글꼴 계열 이름을 지정
                    sans-serif
                    monospace
                    cursive
                    fantasy
font-family: [글꼴후보1, 글꼴후보2.....], 글꼴계열;
.box{
  font-family: Arial, "Open Sans", "돋움", dotum, sans-serif;
}
color - 문자의 색상을 지정
            색상    문자의 색상을 지정    rgb(0, 0, 0)
        색상 표현
        표현                의미                                                    예시
        색상이름          브라우저에서 제공하는 색상의 이름            red, blue
        Hex 색상코드    16 진수 색상                                         #000000
        RGB                빛의 삼원색                                          rgb(255, 255, 255)
        RGBA              빛의 삼원색, 투명도                                rgba(255, 0, 0, .5)
        HSL                색상, 채도, 명도                                     hsl(120, 100%, 50%)
        HSLA              색상, 채도, 명도, 투명도                           hsla(120, 100%, 50%, .3)
text-align - 문자 정렬 방식을 지정
        left        왼쪽 정렬
        right      오른쪽 정렬
        center    가운데 정렬
        justify    양쪽 맞춤(2줄 이상)
text-indent - 들여쓰기를 지정(-로 반대 방향을 지정)
text-decoration - 문자의 장식(line)을 설정
        none            선없음                none
        underline      밑줄을 지정
        overline        윗줄을 지정
        line-through  중앙 선을 지정
letter-spacing - 문자의 자간(글자 사이간격)을 설정
        normal        단어 사이의 일반 간격        normal
        단위            px, em, cm등 단위로 지정
word-spacing - 단어사이(띄어쓰기)의 간격을 설정
         normal        단어 사이의 일반 간격        normal
        단위            px, em, cm등 단위로 지정

CSS / 속성 - 띄움(정렬), 위치

float - 요소를 좌우 방향으로 띄움(수평 정렬) 
        none        요소 띄움 없음        none
        left          왼쪽으로 띄움
        right        오른쪽으로 띄움(오른쪽 부터 쌓기 시작하는 개념 순서가 바뀔거임)
float 해제 - float속성이 적용된 요소의 주위로 다른 요소들이 흐르게 되는데 이를 방지하기 위해 속성을 '해제'해야함
        1. 형제요소에 clear: (left, right, both)추가하여 해제 단점은 다음 요소가 있어야만 적용이 가능함

<div class="float-left"></div>
<div class="float-left"></div>
<div class="next"></div>

.float-left {
  width: 100px;
  height: 100px;
  background: red;
  float: left;
}
.next{
  clear: both;
}

        2. 부모요소에 overflow: (hidden, auto) 추가하여 해제 단점은 overflow는 float랑 상관없는 속성이므로 편법임

<div class="parent">
  <div class="child"></div>
  <div class="child"></div>
</div>

.parent{
  overflow: hidden; /* or `auto` */
}
.child{
  clear: both;
}

        3. 부모요소에 clearfix 클래스 추가하여 해제(추천)
<div class="parent clearfix">
  <div class="child"></div>
  <div class="child"></div>
</div>

.clearfix::after{
  content: "";
  clear: both;
  display: block;
}
.child{
  float: left;
}
display 수정 - float속성이 추가된 요소는 display속성의 값이 대부분 block으로 수정됨(flex빼고 )
clear - float속성이 적용되지 않도록 지정(해제)
        none            요소 띄움 허용
        left              왼쪽 띄움 해제
        right            오른쪽 띄움 해제
        both            양쪽(왼쪽, 오른쪽) 모두 띄움 해제
position - 요소의 위치 지정 방법의 유형(기준)을 설정
        static             유형(기준)없음 / 배치 불가능            static
        relative          요소 자신을 기준으로 배치
        absolute        위치 상 부모 요소를 기준으로 배치(position:~~~가 위치상 부모요소임)
        fixed             브라우저(뷰포트)를 기준으로 배치
        sticky            스크롤 영역 기준으로 배치 top, bottom, left, right가 한개는 있어야 하고 IE지원 불가이다
top - 요소의 position기준에 맞는 위쪽에서의 거리(위치)를 설정
        auto            브라우저가 계산                        auto
        단위            px, em, cm등 단위로 지정            0
        %               부모(위치 상의 부모(조상)) 요소의 세로너비의 비율로 지정, 음수 값 허용
bottom - 요소의 position기준에 맞는 아래쪽에서의 거리(위치)를 설정
        auto            브라우저가 계산                        auto
        단위            px, em, cm등 단위로 지정            0
        %               부모(위치 상의 부모(조상)) 요소의 세로너비의 비율로 지정, 음수 값 허용
left - 요소의 position기준에 맞는 왼쪽에서의 거리(위치)를 설정
        auto            브라우저가 계산                        auto
        단위            px, em, cm등 단위로 지정            0
        %               부모(위치 상의 부모(조상)) 요소의 세로너비의 비율로 지정, 음수 값 허용
right - 요소의 position기준에 맞는 오른쪽에서의 거리(위치)를 설정
        auto            브라우저가 계산                        auto
        단위            px, em, cm등 단위로 지정            0
        %               부모(위치 상의 부모(조상)) 요소의 세로너비의 비율로 지정, 음수 값 허용
요소 쌓임 순서(Stack order) - 요소가 쌓ㅇ여 있는 순서를 통해 어떤 요소가 사용자와 가깝게 있는지(더 위에 쌓이는지)를 결정(Z축)
    1. static을 제외한 position속성의 값이 있을 경우 가장 위에 쌓임(값은 무관)
    2. position이 모두 존재한다면 z-index속성의 숫자 값이 높을 수록 위에 쌓임
    3. position속성의 값이 있고, z-index속성의 숫자 값이 같다면, 'HTML'의 마지막 코드일 수록 위에 쌓임(나중에 작성한 코드(요소))
display 수정 - absolute, fixed속성 값이 적용된 요소는 display속성의 값이 대부분 block으로 수정됨
























댓글

이 블로그의 인기 게시물

mac 맥 맥북 Brew 완전 삭제

맥북에서 Brew 초기화 Brew를 써서 h2를 쓰려고 하는데 brew install h2가 안되서 이리 저리 알아보다가 완전 삭제 후 다시 설치 하니까 되서 그 방법을 남겨놈 1. 터미널에 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh)" 입력후 y랑 뭐 비번.. 2. /usr/local 폴더에서 Homebrew 폴더 삭제 rm -rf Homebrew/ 권한설정으로 잘.....삭제하고 3. 다시 설치 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" 좀 오래걸리니까 기다려야한다는걸 배움... 출처.... https://discourse.brew.sh/t/error-no-formulae-found-in-taps/8331/9

메이븐으로 라이브러리 인식

 간혹 퍼블릭 jar가 아닌 파일이 있는데 그럴때 쓰면 될듯 <dependency> <groupId> SimpleCryptLib </groupId> <artifactId> SimpleCryptLib </artifactId> <version> 1.1.0 </version> <scope> system </scope> <systemPath> ${basedir}/src/main/webapp/WEB-INF/lib/SimpleCryptLib-1.1.0.jar </systemPath> </dependency> version, scope, systemPath는 꼭 작성해야 한다 groupId, artifactId, version은 암거나 해도 되는거 같음 최근(2021.05.04)스프링 부트    < dependency > < groupId > NiceID </ groupId > < artifactId > NiceID </ artifactId > < version > 1.0 </ version > < scope > system </ scope > < systemPath > ${basedir}/src/main/resources/lib/NiceID.jar </ systemPath > </ dependency > 이걸 추가해주는것도 필요할지도..?? < build > < plugins > < plugin > < groupId > org.springframework.boot </ groupId > < artifactId > spring-bo...

ORA-28000 계정이 잠금되었습니다 계정 잠길때

오라클 계정이 잠길때 해제방법 증상 t he account is locked 오류 발생 원인 Oracle 에서 t he account is locked  에러가 나는 원인은 ● 잘못된 패스워드로 설정횟수만큼 접속 시도시 Lock. ●  30일동안(Default) 해당 계정으로 로그인을 하지 않았을 경우 Lock. 등이 있다. 해결방법 command창에서 * 로컬일경우, sqlplus "/as sysdba"  또는  sqlplus /nolog  conn /as sysdba  * 로컬이 아닐 경우, sqlplus /nolog conn sys/password@<sid> 이름/패스워드@sid로 입력 로 접속 후 SELECT username, account_status, lock_date FROM dba_users; 으로 Lock이 된 사용자를 확인한 후 LOCKED<TIMED> 라고 되있으면, 패스워드 설정횟수 입력 오류로, 아래의 Unlock 명령만, EXPIRED & LOCKED 라고 되있으면, 패스워드 기간만료로, Unlock 후 비밀번호를 지정해줘야 한다. ALTER USER 사용자명 ACCOUNT UNLOCK; 로 Lock된 사용자를 Unl ock 시킨다 방금 말했다시피, 다시 Lock된 사용자 확인했는데,  Open되지 않고 EXPIRED되어 있다면, alter user 사용자명 identified by 바꿀패스워드;  로 패스워드를 변경하거나 또는 SQL*PLUS 를 재시작하여 Lock를 해제한 계정(사용자명/패스워드)로 로그인 하면 패스워드 변경 창이 뜬다. 추가로 패스워드 Lock 횟수 확인하는 방법은 SELECT U....