1
), 없음(0
)으로 표현한다. 그리고 이렇게 특정한 신호에 대한 전자의 상태를 주소(address)와 값(data)이라고 부른다.인터넷 안에서 누구나 연결될 수 있게 하기 위해 세 가지를 발명했다.
http://www.google.com:80/search?q=w3c&h1=ko
http
): 약속된 방식이름을 표기www.google.com
): 도메인 주소80
): 포트번호. IP주소가 컴퓨터의 고유 집주소라고 한다면 포트번호는 방번호/search
): 리소스 위치?q=w3c&h1=ko1
): 물음표로 시작하며 서버 측에서 수행할 세부 명령을 ' ' = ' ' 형식으로 표기. & 기호를 통해 추가해 나감다음 코드에서 <script>
태그를 만나면 자바스크립트 엔진이 작동하고, 그 외(<html>, <head>
등)에는 렌더링 엔진이 작동한다.
따라서 보통 코드 작성 시 html
을 다 출력한 후 js
를 실행한다.(js 코드를 가장 아래에 작성)
<html>
<head></head>
<body>
안녕하세요.
<script>
window.document.children[0].children[1].innerHTML = '<h1>제목입니다.</h1>'
</script>
</body>
</html>
👉 실행 결과
<html>
<head></head>
<body>
안녕하세요.
<script>
window.document.children[0].children[1].textContent = '바꾼다.'
</script>
</body>
</html>
콜백 함수: function
을 사용해서 addEventListener
에 함수를 맡겨두고 click
발생 시 실행시킨다.
<html>
<head></head>
<body>
<div> 안녕하세요. </div>
<button> 바꾸기 </button>
<script>
window.document.children[0].children[1].children[1].addEventListener('click', 제목바꾸기);
function 제목바꾸기() {
window.document.children[0].children[1].children[0].innerHTML = '<h1>제목입니다.</h1>'
}
</script>
</body>
</html>
위의 코드를 조금 더 간편하게 작성했다.
<html>
<head></head>
<body>
<div> 안녕하세요. </div>
<button> 바꾸기 </button>
<script>
const target = document.querySelector('div');
const button = document.querySelector('button');
button.addEventListener('click', 제목바꾸기);
function 제목바꾸기() {
target.innerHTML = '<h1>제목입니다.</h1>'
}
</script>
</body>
</html>
👉 실행 결과
❌ 나쁜 예
<p class="title"></p>
<p class="subject"></p>
<p class="description"></p>
⭕ 좋은 예
<h1></h1>
<h2></h2>
<p></p>
<meta />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta />
는 HTML 문서(웹페이지)의 제작자, 내용, 키워드 같은 여러 정보를 검색엔진이나 브라우저에게 제공한다.viewport
: 브라우저에서 실제 웹페이지가 출력되는 부분이다. (모바일 장치에만 해당)index.html
위의 프로젝트에서 index.html
을 가장 먼저 찾으므로 <a href="/about">About</a>
처럼 파일명을 명시해주지 않아도 자동으로 index.html
파일을 찾아서 페이지가 로드된다.
<a href="/about/index.html">About</a>
<a href="/about">About</a>
💡 프로젝트 구조:
index.html
은 폴더로 관리하면 안 된다!!- 브라우저는 프로젝트 폴더로 들어가자마자
index
를 먼저 찾으므로 프로젝트의 최상위 경로에 index.html이 존재해야만 한다.- 위의 프로젝트에서 루트 경로에 있는 파일(폴더)는
js
,css
,images
,index.html
(VSCode
기준)
파일 생성 시마다 수동적으로 공백을 설정하기는 상당히 번거롭다.
그러니 파일 생성 시에 자동으로 변경되도록 설정해보자!
설정 - 'tab size' 검색 - 공백 크기 설정(2size 권장)
html
, css
구조를 분석할 수 있고, 분석을 통해 더 고차원적인 html
, css
레이아웃을 익힐 수 있다.Elements
와 Console
!가장 왼쪽의 Select
버튼을 누른 뒤 웹페이지에서 요소를 클릭하면 요소에 해당되는 코드를 찾아서 보여준다. 하단에서 css
도 함께 보여준다!
하단의 Style
에서 임시적으로 css
를 적용할 수도 있다.
Computed
에서는 margin, padding
등의 속성에 실제로 적용된 값을 확인할 수 있다.
CodePen: https://codepen.io/
다음처럼 스타일에 별도로 여백을 지정하지 않았음에도, 각 브라우저에서 기본적으로 제공하는 스타일이 있어 여백이 존재하는 경우가 있다.
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="./main.css">
</head>
<body>
<div></div>
</body>
</html>
div {
width: 300px;
height: 200px;
background: orange;
}
👉 실행 결과
따라서 개발을 시작하기 전, 브라우저에서 기본적으로 제공하는 스타일을 초기화하고 시작하는 것이 좋다.
https://www.jsdelivr.com/package/npm/reset-css
따로 수정하지 않고 그대로 적용할 것이므로 압축된 버전을 복사하자.
스타일이 적용되기 전, 초기화해야 하므로 추가적으로 작성하려고 하는 css파일보다 위쪽에 작성하는 것이 좋다.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="./main.css">
👉 실행 결과