JavaScript Portfolio(1)
업데이트:
html 구성
<head> 영역
- 역할 :페이지가 렌더링 되기전의 준비되어야하는 단계
- internet expolor의 최신버전으로 렌더링 시키기 위해 http-equiv 영역 설정
- 반응형 웹을 설정하기위해 viewpoint 설정
- title 영역은 웹브라우저의 이름을 결정
- 인터넷 익스플러러에서 자바스크립트 경고창을 방지할수 있게 적어야함
- 아이콘, 폰트, 유저스타일, 유저스크립트
<meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"> <title>Portfolio</title> <!-- 인터넷 익스플로러에서 자바스크립트 관련 차단된 컨텐츠 허용 뜨는것 방지--> <!-- saved from url=(0013)about:internet --> <!-- icon --> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous"> <!-- fonts --> <link href="https://fonts.googleapis.com/css?family=Heebo|Noto+Sans+KR" rel="stylesheet"> <!-- user style --> <link rel="stylesheet" href="portfolio.css">
<body> 영역
- 역할: 페이지의 내용을 포함하는 단계
- class, idea를 사용하여 javascript가 html에 접근하고 제어하기 쉽게 해줌
CSS 속성
- 큰 영역부터 차례로 작성해나감
- *를 선언하고 조정하여 공통영역을 다룸
- body 의 webkit : Chrome과 Safari / moz : firefox
- word-braek: 줄바꿈을 의미
- @keyframs와 @keyframs를 사용하여 에니메이션 효과를 추가할 수 있음
- calc()를 활용하여 페이지가 넓이 100%를 가질수 있게됨
- @media query를 사용하여 반응형 웹을 만들 수 있음
- .header-area > .navbar > .navbar-brand 의 내용을 통해 logo를 가운데로 맞출 수 있음
/* COMMON */
* {
margin: 0;
padding: 0;
font-size: 0;
}
body {
box-sizing: border-box;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
word-break: break-all;
font-family: 'Heebo', sans-serif;
}
.navbar-fade {
animation-name: navbar-fade;
animation-duration: 0.5s;
-webkit-animation-name: navbar-fade;
-webkit-animation-duration: 0.5s;
}
@keyframes navbar-fade {
from { opacity: .4}
to { opacity: 1 }
}
@-webkit-keyframes navbar-fade {
from { opacity: .4}
to { opacity: 1 }
}
.header-area > .navbar {
width: calc(100% - 120px);
margin: 0 60px;
overflow: hidden;
}
@media (min-width: 992px) {
.header-area > .navbar {
max-width: 900px;
margin: 0 auto;
}
}
@media (min-width: 1200px) {
.header-area > .navbar {
max-width: 1000px;
}
}
.header-area > .navbar > .navbar-brand {
display: inline-block;
position: absolute;
top: 50%;
transform: translateY(-50%);
font-size: 32px;
cursor: pointer;
}
찾아봐야 할 것
- display:
- position
- transform:
- overflow:
- cursor:
JS 영역
- JS를 활용하여 페이지를 동적으로 변화 시킴
- classList.toggle함수는 show라는 클래스가 없으면, 만들어주고 있으면 없애줌
- toggleBtn을 누르면 이벤트가 실행되고 menuToggle함수를 호출
function menuToggle() {
document.getElementById('menu').classList.toggle('show');
}
document.getElementById('toggleBtn').addEventListener('click', menuToggle);
- NaviBar를 아래의 함수를 가지고 항상 위에 고정시킴
- fade 효과를 줌
function scrollFunction() {
var header = document.getElementById('header');
if(document.documentElement.scrollTop > 70) {
if(!header.classList.contains('navbar-fixed')) {
header.classList.add('navbar-fixed');
document.getElementsByTagName('body')[0].style.marginTop = '70px';
header.style.display = 'none';
setTimeout(function(){
header.style.display = 'block';
}, 40);
}
} else {
if(header.classList.contains('navbar-fixed')) {
header.classList.remove('navbar-fixed');
document.getElementsByTagName('body')[0].style.marginTop = '0';
}
}
}