background-size: cover - 배경이 잘리는 것과 상관없이 배경을 가득 채우게 하는 명령어
background-size: contain - 배경이 잘리지 않는 선에서 최대한 배경을 채운다.
background-position: - 좌우상하 가운데 등 이미지가 채워질 위치 설정
1.선형 그라데이션 : linear-gradient
linear-gradient('그라데이션 방향',시작색, 마지막색)
코드 뒤에 fa-nx을 입력하여 아이콘의 크기를 조절할 수 있다. (n자리에 넣고 싶은 숫자 입력) 폰트로 취급하기 때문에 폰트처럼 코드 주면 됨
또한
link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta2/css/all.min.css"
integrity="sha512-YWzhKL2whUzgiheMoBFwW8CKV4qpHQAEuvilg9FAn5VJUDwKZZxkJNuGM4XkWuk94WCrrwslk8yWNGmY1EduTA=="
crossorigin="anonymous" referrerpolicy="no-referrer" />
이런 식으로 사이트에서 바로 가져올 수 있다.
fonts.google.com - 구글 폰트
font-family : 로 저장된 글꼴 불러오기
하드에 글꼴이 설치가 되어 있지 않으면
@font-face { font-family : '작명';
src : url(../font/파일위치를 설정); }
으로 글꼴을 설정해준다.
그림자
box-shadow: x축, y축, 블러, 색상;
x축으로 얼마나 보이는 지(-값이면 왼쪽으로 나옴)
y축으로 얼마나 보이는 지(-값이면 위쪽으로 나옴)
padding이나 border를 적용하면 설정한 컨텐츠 사이즈보다 더 넓어진다.
내가 원하는 실제 컨텐츠를 설정해도 보이는 크기는 더 크다. 이를 해결하기 위해
box-sizing: border-box;를 통해서 맞춰준다.
div { box-sizing:border-box} 등으로 css 파일에 설정해두면 편함
1) 이것은 두개의 block을 나란해 배치 하고자 할 때 block의 속성때문에 위아래로 배치되는 데 이때 float 속성을 사용하여 좌우로 배치가 가능하다.
이렇게 배치한 두 블록 아래에 새로운 블록을 넣으면 float의 속성 때문에 두 개의 블록 뒤로 배치가 되는데
clear: both 를 사용하면 아래쪽에 배치된다.
2) inline-block 이나 inline 요소에서만 vertical-align을 설정할 수 있다.
박스의 테두리가 만나면 marign이 공통으로 적용이 된다.
ex) 이미지와 글자의 테두리가 붙어있으면 글자에 marign-top을 적용할 때
이미지도 같이 margin-top이 적용된다. 그래서 이미지 파일에 padding-top: 1 또는 -1를 적용하여 떨어뜨려준다.
fixed와 비슷하나 화면에 처음부터 고정이 되어있는 fixed와 달리 자식태그에서 본인이 설정한 값에 도달하면 화면에 고정이 되고 스크롤이 부모태그를 넘어가면 sticky가 풀린다.
position : sticky
top : 100px
위에서 100px 띄워져서 고정 (스티키를 적용한 요소가 나타나도 100px이 띄워져야 고정이 된다.)
부모 태그에서 설정한 높이가 지나면 풀린다.
css 맨 아래부분에 코드를 입력한다
@media screen and (max-width: n px) {
.클래스명
}
0에서 n px까지의 크기에서는 아래에서 설정한 대로 적용
breakpoint 설정
사용 기종에 따라자주 쓰는 변곡점이 있다.
1200, 992px -> 태블릿용 사이즈
768, 576px -> 스마트폰용 사이즈
https://github.com/necolas/normalize.css/blob/master/normalize.css
여러 박스를 원하는 대로 배치 가능
flex-direction : ____; - 배열방향을 설정(좌우, 위아래)
flex-wrap : nowrap, warp - 각 요소의 크기가 지정된 넓이를 초과할 시 줄바꿈으로 나타나는 지(wrap) 한줄 안에서만 위치하는 지(nowrap) 설정
justify-content : - 배열의 정렬을 설정(좌, 우, 같은 간격, 가운데 ..등)
align-items : 배열의 세로 위치를 설정 (상, 하, 중간, 전체)
flex-grow : n - 다른 flex-grow에 비해 n배 이상 크다. (기준 flex-grow를 설정해주어야함)
4 x 4, 6 x 3 등 격자를 만들어준다.
1) 큰 div 박스를 만들고 그 안에 들어갈 칸의 개수만큼 자식 div도 넣어준다.
2) 부모 div 박스에
display : grid; 를 적용해주고 행과 열을 설정해준다.
3) grid-template-columns : 100px 100px 100px
grid-template-rows : 100px 100px
가로 세로 100px의 3 X 2의 격자가 나타난다.
* grid-gap : "n"px; 을 통해 격자간 간격 조정 가능
* px 대신 fr 단위 사용 가능 - fr은 배수
첫번재 방법 : 자식 div 태그에 class를 적용해주고
grid-columns : 1/4; 해당 칸의 첫번째 줄부터 4번째 줄까지 세로선을 합친다.
grid-rows : 2/4; 해당 칸의 2번째 줄부터 4번째 줄까지 가로선을 합친다.
을 적용한다.
두번째 방법 : 자식 태그에 class를 적용해준다.
자식태그에 이름을 부여한다 - grid-area: "작명";
부모태그에서
grid-template-areas : 를 넣고
"작명 작명 작명 . "
"작명2 작명2 . . "
"작명2 작명2 . . "
이런 식으로 합치고 싶은 곳에 같은 이름을 넣어 합친다.
ㄱ, ㄴ 모양으로는 불가능하고 직선이어야한다.
이때 빈공간은 .으로 표시
<input type="">
type 안에는 text, date, email, passward 등 다양한 형식이 들어갈 수있다. ctrl + space를 눌러 확인 가능
input의 부가기능
* value = "" : 빈공간에 미리 글자를 입력해둔다. 이는 입력한 글자와 같이 취급된다.
* placeholder = "" : 주석과 같이 입력하기 전 미리 입력해야할 내용이나 도움말 등을 보이게 하고 이는 입력시 사라진다.
* name = "" : 서버 개발 시 필요, 입력한 값을 이름으로 전송
* button 태그에서 type = "submit"을 활용하여 제출버튼 만들기 가능
* dir 를 통해 dir ="rtl" 이면 오른쪽 정렬된 상태에서 입력 가능
* input의 다른 형태
1. <select> <option> : 옵션선택 형식의 박스를 만들수 있다.
2. textarea : 크기를 마음대로 변경가능, rows,cols를 통해 크기 설정가능
* 필요시 구글를 통해 찾기
* css에서 input[type=text] { 이런 식으로 input 중 원하는 속성만 선택해서 디자인 가능
표만들 때 사용
tr : 행, 가로 줄
td : 열, 세로 줄
th : 세로 열이 굵게 나타남
tr(가로줄, 행)을 먼저 만들고 td(세로줄, 열)을 넣어줘야함
thead : 제목행은 thead 안에 넣으면 좋다.
tbody : 일반 행은 tbody 안에 넣으면 좋다.
행을 합치기 : html에서 rowspan
버튼이나 input 등등 마우스를 활용했을 때 변화를 줄 수 있다.
css에서 cursor : pointer를 주어 클릭이 가능하다는 표시
class명 : hover - 마우스를 올렸을 때 변화
class명 : active - 마우스가 누르고 있을때 변화
class명 : focus - 마우스로 클릭을 한 후 변화
.class명 :: first-letter {
color : red
font-size : 30px
}
등 내부의 일부만 스타일을 줄 수 있다.
.class명 :: first-line - 첫줄만 변화
.class명 :: after/before - 맨 뒤나 맨 앞에 추가
ex) .pesudo :: before {
content: '내용추가'
color : blue
}
input 태그에서 type="file"등(placeholder, range ...) 을 사용하면 숨겨진 태그가 하나 더 생긴다.
peseudo-element를 이용하여 숨겨진 태그를 스타일링 할 수 있다.
1) 크롬(파폭, 익스, 엣지, 사파리) 검사 기능 설정에서 shadow-dom를 볼 수 있도록 체크 박스에 체크를 한다.
2) shadow-dom의 psuedo 이름을 찾는다.
3) input의 class에서 psuedo-element를 주고 찾은 이름을 넣고 스타일링 한다.
크롬으로 다른 사이트 애니메이션 참고를 할 수 있다.
1) 시작 스타일 만들기
: 아무 동작도 하지 않았을 때 상태
2) 최종 스타일 만들기
: 예를 들어 hover를 하거나 active를 한 후 되는 상태
3) 언제 최종스타일로 되는 지
: hover나 active 등을 부여(css는 hover만 가능)
4) transition으로 애니메이션 주기
: transition 코드를 통해 트랜지션의 형태 부여
1. transition-property : 어떤 것에 트랜지션을 줄지 설정
2. transition-duration : 트랜지션이 작동하는 시간
3. transition-timing-function : 트랜지션의 속도를 설정
-linear : 일정한 속도 유지
4. transition-delay : 트랜지션이 동작하기까지의 시간을 설정
5. 한줄로 정리 가능 transition: 'property' 'duration' 'timing-function' 'delay';
ex) transition: width 2s linear 1s; -> 오브젝트의 폭을 2초 동안 일정한 속도로 1초 후에 변화시킨다.
6. transition에서 쉼표를 넣으면 두가지를 적용할 수 있다.
1) keyframes를 통해 만들기
@keyframes "작명" {
0% {
transform: translateX(0px)
}
50% {
transform: translateX(-100px)
}
75% {
transform: translateX(100px)
}
100% {
transform: translateX(0px)
}
}
이렇게 움직임을 줄 transform을 만든다.
transform을 주고 싶은 태그에 삽입
.class명:hover {
animation-name : 작명;
animation-duration: 1s;
}
이때 duration외 다양한 명령어들이 있다.
ex) animation-fill-mode: forwards; 는 애니메이션이 끝나도 초기 상태로 돌아오지 않고 유지된다.
2) 간단히 만들기
a -> b -> c 의 형태로 변화하면 keyframes를 주는 것이 합리적이나 간단한 변화는 class에서 바로 줄 수 있다.
.class명 {
transform : translateX(-100px)
transform : rotateX, Y, Z를 통해 설정
하나의 div 태그 안에 앞면, 뒷면을 제작
<div 부모태그>
<img src="blah blah">
<div>
<h4>somebody</h4>
<p>introduce</p>
</div>
</div>
부모 div 박스에 position : relative를 주고 자식 박스에 absolute를 주어 이미지와 글자를 겹친다.
그리고 뒷면 (자식 div박스)에 rotateY(180deg)를 준다.
그리고 부모 div 박스에 hover시 rotateY(180deg)를 준다.
transition : all 1s를 주어 자연스러운 움직임을 주고
transform-style: preserve-3d; 로 앞뒤면의 구분을 준다.
뒷면에 앞면이 비치지 않도록 하려면
앞쪽에 backface-visibility:hidden;을 주면 뒷면만 보인다.
row와 col 클래스를 사용하여 반응형 웹 만들기 (grid)
부모태그에 class ="row"를 적용하고 자식태그에 class="col"을 적용하면 일정한 간격으로 가로 배치가 된다.
이때 행은 12칸으로 나누어지기 때문에 col-6 , col-4 이런 식으로 각 자식태그가 차지할 공간을 설정할 수 있다.
'col-md-6'을 적용하면 md 사이즈 이상에서만 적용하라는 뜻으로 md 사이즈 미만이 되면 일반 div 사이즈로 적용된다. (grid로 검색)
order-md-1 은 md 사이즈 이상에서는 해당 태그를 첫번째로 이동하라는 뜻으로 반응형 웹에서 모바일과 PC에서 변화를 줄 수 있다.
bootstrap 사용시 class를 추가하여 사용(덮어쓰기는 잘 안함)
1) 추후 수정/관리가 쉬워야한다.
2) 확장성이 좋아야한다. (재활용 가능, 추가적으로 코드 넣기)
대규모의 사이트를 만들 때 사용
1) vs code에서 live sass compiler를 다운 받는다.
2) 제목.scss로 파일을 만들고 내용을 입력한 후 다운받은 컴파일러를 실행하면 같은 제목의 css파일이 만들어진다.
3) 그것을 html 파일에 연결
1) 변수 값 저장하기
- $변수명 : 내용(#2ac4c6e 등)
자주 쓰는 내용을 변수로 설정하고
- .class명 {
color : $변수명
}
이렇게 class에 적용하면 외우기힘든 것을 쉽게 넣을 수 있다.
2) 변수가 숫자일 경우 사칙연산도 가능하다.
$폰트 사이즈 : 16px
.box {
font-size : $v폰트 사이즈 * 2
}
는 32px로 출력
3) css 파일에서도 변수 적용 가능
root를 사용 / calc()를 통해서 사칙연산도 가능
4) nesting
scss 파일에서
.main-content {
width : 100%
h4 {
color : red
}
button {
width : 100px
height : 50px
}
}
로 만들면 한번에 main-content 태그 내를 정리할 수 있다.
5) extend
공통의 class를 만들어 사용
예를 들어 똑같은 모양의 버튼을 색깔만 다르게 한다고 했을 때 일일히 모든 버튼을 디자인 해주는 것이 아니라 색깔을 제외한 나머지를 공통으로 두고 색깔만 개별 부여해준다.
.btn {
font-size : 16px;
padding : 10px;
}
.btn-green {
@extend .btn;
background : green
}
이렇게 공통 요소를 빼고 @extend를 넣어 준다.
%btn 이렇게 가상 클래스를 만들어도 사용가능한데 이는 css 파일에 저장이 되지 않는다.
6) mixin
긴코드를 짧은 단어로 축약할 때 씀
@mixin 작명($구멍1, $구멍2) {
font-size : $구멍1;
letter-spacing : $구멍2;
}
h2 {
@include 작명(40px, -1px)
}
h3 {
@include 작명(30px, -2px)
}
같은 명령에 내용 다를 때 사용하기 좋다.
* @mixin 작명($구멍1, $구멍2) {
font-size : $구멍1;
# { $구멍2 } : 1;
}
이렇게 값을 미리 설정하고 명령을 따로 설정할 수 있다.
7) use
1. _rest.scss 파일을 만든다. (언더바(_)는 css파일을 따로 생성하지 말라는 뜻)
2. _rest 파일에 기본 설정에 필요한 명령을 넣는다.
3. 연결될 파일에 @use 'reset'; 을 맨 앞에 넣는다.
4. mixin도 연결이 가능하지만 rest.$메인칼라 이런 식으로 연결할 파일을 표시해줘야함
1. New repository를 생성
2. repository name 생성
3. readme 파일 생성
4. html, css, js 파일 업로드
name.github.io로 접속 / 문제시 repository 삭제
1. 호스팅 페이지에서 ftp 주소 생성
2. filezilla에서 ftp 주소와 아이디, 비번을 입력
3. www. 폴더에서 html,css 파일 등 복사해서 넣기
4. 도메인을 구입하면 나만의 도메인 설정 가능