1-3 : 웹 프로그래밍 기초 (엘리스 AI 트랙)
[엘리스 AI 트랙] 1주차 - 3
- 온라인 이론 강의, 실습 강의, 실시간 강의 내용 정리본
- 9/16 목요일
HTML/CSS 기초
3. 웹사이트에 생명 넣기
웹 사이트에 생명을 넣기 위해서는 css3 속성 Transform, Transition, Animation을 기억하자!
01. Transform
: 웹사이트 특정 영역에서 오브젝트 각도 틀거나 크기 조절, 위치 변경할 때 사용하는 속성
1) rotate, scale
- rotate(30deg)
: 입력한 각도만큼 특정 오브젝트 회전 효과 줌. (평면적 회전.) 음수도 입력 가능 - scale(2, 10)
: 선택 오브젝트를 확대 or 축소 → width 2배, height 10배 확대시키겠다! 축소시 0.5 등의 소숫점 사용하면 됨.
2) skew, translate
- skew(10deg, 30deg)
: 입체적으로 각도 비틀때 사용. (3차원적으로 x축 기준 10도 y축 기준 30도 틀어줌) - translate(100px, 200px)
: 선택 오브젝트 위치 변경 (x축으로 100px, y축으로 200px 옮김). margin, padding 대신 사용도 많이 함.
3) prefix 접두사
: css3은 최신 언어라 ie최신 버전에선 사용 못함. → prefix 사용시 브라우저 하위 버전에서도 동작 가능
<style>
.transition {
transform: scale(2, 3);
-webkit-transform: scale(2, 3); // 크롬, 사파리
-moz-transform: scale(2, 3); // 파이어폭스
-ms-transform: scale(2, 3); // 익스플로러 9.0
-o-transform: scale(2, 3); // 오페라
}
</style>
-
위와 같은 접두사가 붙은 코드를 기본 코드와 함께 작성해두어야 함!! (위 경우엔 transform: scale(2, 3);)
-
여러개의 transform 적용시 마지막 하나만 적용됨. (아래의 경우 skew만 적용)
<style> .transform { transform: scale(2, 3); transform: translate(100px, 150px); transform: rotate(45de); transform: skew(10deg, 30deg); } </style>
02. Transition
: 변화하는 과정 보여주고자 할 때 사용
1) property, duration
- property : 변화하는 과정을 주고자하는 속성
- duration : 변하는 시간 설정
<style>
.transition{
transition-property: background-color; // 배경 색이 변하는 걸 사용자에게 보여주겠다는 표시
transition-duration: 3s; // 3초동안 변함
}
</style>
2) timing-function, delay
- timing-function : 변화하는 속도. linear (일정하게)
- delay : 효과 바로 발생 시키지 않고 일정 시간 지연
<style>
.transition{
transition-timing-function: linear; // 일정한 속도로 변화
transition-delay: 0.5s; // 0.5초 후 변화
}
</style>
3) 가상 선택자 : hover
-
hover : css에서 미리 만들어 둔 선택자. 마우스를 올렸을 때를 의미
<style> .trans:hover { height: 100px; } // trans라는 클래스 영역에 마우스 올리면 높이를 100px로 바꿔라 </style>
4) Transition 종합
: transition 효과적 작성법.
- 순서 상관 없이 작성 가능하지만 duration은 delay보다 먼저 나와야 한다!! (먼저 나오는 숫자가 duration으로 적용. 숫자가 하나인 경우에도)
<style>
.trans{
transition: height 3s linear 2s; //3s가 duration, 2s가 delay
}
.trans:hover { height: 200px; }
</style>
→ transition 클래스 영역에 마우스 올리면 2초 후에 높이를 200px로 3초동안 일정한 속도로 변하는 애니메이션 적용!
03. Animation
마우스 오버와 같은 조건과 상관 없이 어떤 이벤트를 발생시킬 때 사용
.anim {
animation-name: changeHeight; // 개발자 임의로 이름 설정
animation-duration:10s; // 10초 동안 애니메이션
animation-timing-function: linear; // 속도의 성격 규정
animation-delay: 2s; // 웹 사이트 접속 후 몇초 이후에 진행할지
animation-iteration-count: 5; // 애니메이션 반복 횟수
animation-direction: normal; // 애니메이션 진행 방향
}
@keyframes changeHeight { // 변화 줄 실제 결과 값. 애니메이션 사용시 필수 세트로 써주자
from { height: 300x; } // 시작
to { height: 600px; } // 끝
}
.anim { // 위의 애니메이션과 같은 코드! 한 줄로 작성한 것
// 순서는 상관 x but 앞선 숫자가 duration, 뒤 숫자는 delay
animation: changeHeight 10s linear 2s 5 normal;
}
-
애니메이션 진행 방향 (direction)
- 시작 → 끝 : normal
- 끝 → 시작 : reverse
- 시작 → 끝 → 시작 : alternate
-
적용할 애니메이션 이름과 @keyframes는 같은 이름을 가져야 함!
04. 애니메이션 응용
1) Transform & Animation
.box{
animation: skewing 1500ms linear infinite alternate; // 1500ms : 1.5초
}
@keyframes skewing {
from { transform: skew(-20deg, 10deg); }
to { transform: skew(20deg, -10deg); }
}
2) prefix 작성시 유의 사항
.box{
-webkit-animation: rotation 5s linear 1s 4 alternate;
}
@-webkit-keyframes rotation {
from { -webkit- transform: rotate(-20deg); }
to { -webkit- transform: rotate(20deg); }
}
- 애니메이션에서도 prefix 사용할 때 각각에 맞는 prefix를 keyframes에 하나하나 붙여 주어야 함. (webkit, moz 등 따로!! from to 속성에서 transform 쓸 경우에 transform 앞에도 붙여 주자.)
4. 모바일에 대응되는 웹사이트 만들기
01. 미디어쿼리 소개
1) 미디어쿼리란?
- 웹 사이트를 PC 뿐 아니라 태블릿, 모바일 환경에서도 자연스럽게 표현되도록 하는 CSS 구문
- 레이아웃, 폰트 크기 등을 조절하는 등의 반응형/적응형 웹 사이트 제작에 사용
- 반응형 : 브라우저 폭 줄이거나 늘렸을 때 자연스러운 resizing 일어나는 것
- 적응형 : 브라우저 폭 줄이거나 늘렸을 때 뚝뚝 끊기면서 레이아웃 변하는 것
2) 미디어쿼리 media
- @media ( ) and ( ) { } 의 형태
- min-width와 max-width
: 브라우저 가로폭 설정
.myImg {
width: 1000px;
}
/* 브라우저 가로폭이 최소 320px, 최대 800px이 되면 해당 css적용 */
@media (min-width: 320px) and (max-width: 800px) {
.myImg {
width: 300px;
}
}
3) 미디어쿼리의 정상 출력 확인 방법
- 크롬 개발자도구 : f12 누르고 아래 이미지의 노란색 부분 클릭!
-
Troy Labs ( 찾아보니 현재는 서비스하지 않는 것 같다. )
: 도메인 주소 있을 때(결과물이 서버에 등록돼 있을 때) 사용 가능
02. 미디어쿼리 사용시 주의사항
1) viewport
- 미디어쿼리 사용할 때 viewport라는 아래의 메타 태그 속성을 꼭 작성해야 함!
<meta name="viewport" content="width=device-width, initial-scale=1">
- viewport : 기기 화면 영역을 의미. 너비와 배율 설정시 사용
- initial-scale : 제작된 화면의 비율
2) CSS 속성 상속
- 미디어쿼리 내부에선 미디어쿼리 외부 영역의 CSS 속성을 상속받음
- 외부와 내부에서 적용될 CSS가 다르다면 항상 명시해주자! (속성 값 없애려면 none으로. ex. background-color: none; )
grid
- 웹 페이지의 여러 영역을 쉽게 배치시키는 레이아웃. float 사용 대신 간편하게!
- 배치할 영역의 부모를 display: grid; 로 설정하고 grid-template 속성으로 비율 설정
<style>
#container {
display: grid;
grid-template-columns: 1fr 1fr; /* columns: 왼쪽부터 오른쪽으로 쌓임.
1대 1로 비율 설정.
100px 1fr 처럼 왼쪽 영역 100px,
나머지는 모두 오른쪽 영역으로 설정할 수도 있다. */
}
</style>
...
<div id="container">
<ol>
<li>First</a></li>
<li>Second</a></li>
</ol>
<div>
<a href="index.html">Hello</a>
This is grid layout practice.
</div>
</div>
유용한 사이트 및 단축키
-
vscode에서 alt + z 하면 화면 world wrap
-
ul>(li>a)*3 + tab키
Author And Source
이 문제에 관하여(1-3 : 웹 프로그래밍 기초 (엘리스 AI 트랙)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sue/1-3-웹프로그래밍-기초저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)