안녕하세요!

FE 개발자 유진주입니다.

Web/HTML+CSS+JS

[자바스크립트의 시작] 웹과 Javascript

ypearl 2023. 3. 27. 13:47

JavaScipt

HTML : 정적, Javascript: 동적

HTML을 이용해 웹 페이지를 만들고, Javascript를 이용해 사용자와 상호작용할 수 있도록 한다.

1. 자바스크립트는 사용자와의 상호작용 역할을 한다.

2. 웹 브라우저는 한번 화면에 출력되면 자기자신을 바꿀 수 없다.

 

<script></script> 태그

: HTML에서 Javascript 코드를 사용하기 위해서 script 태그를 사용할 수 있다.

* 참고. HTML로 쓴 코드는 정적이기 때문에 문자 그대로를 출력하지만,

           Javascript 코드는 동적으로 이를 계산할 수도 있다.

 

이벤트

: 웹 브라우저에서 일어나는 유용한 사건

 

예)

onclick 이벤트: 사용자가 어떤 것을 클릭하는 사건

onchange 이벤트: 입력창에서 사용자가 키보드를 이용해 무언가 입력하면, 그에 따라 내용이 바뀌는 사건

* 이 외에도 총 10~20가지 정도의 이벤트가 존재

 

onclick 속성

<input type="button" value="hi" onclick="alert('hi')">

 

콘솔(Console)

: 콘솔을 이용하면 웹사이트에서 간단한 문제를 간편하게 Javascript를 실행시켜서 해결할 수 있다.

alert('Hello, World!'.length) //alert창 띄우기

웹 브라우저에서 오른쪽 버튼 > 검사 > Console 탭 ( Elements와 Console을 동시에 띄우려면 ESC 키 누르기 )

 

변수와 대입연산자

- 변수를 쓸 때는 일반적으로 var 표기

var name='jinju';

- 변수의 기능 (좋은 점)

1. 유지보수 편함

2. 간결함

 

CSS

<div>, <span> 태그

특정 부분에 css로 스타일 속성값을 넣어주고 싶을 때, 이 부분을 감싸주는 기능만 있는 태그들

(예. <h1>은 특정 부분을 감싸주지만, 글자 크기를 지정하는 기능이 있어

딱 css 스타일만 넣어주고 싶을 때 사용할 수는 없다.)

 

- <div>는 자동 줄바꿈이 되고(화면 전체 사용), <span>은 줄바꿈 되지 않는다.

 

하지만, 모든 부분을 div나 span 태그로 감싼다면 사용하기도 수정하기도 어렵기에,

이를 위해 CSS에는 선택자라는 기능이 존재한다.

 

선택자

- class

head 태그 안에 style 태그 생성. 그 안에서 클래스를 생성

<head>
		<style>
        	<!--점 안 찍으면 태그 의미-->
			js{
				font-weight:bold;
			}
            <!--점 찍어야 클래스 의미 -->
            .js{
            	font-weight:bold;
			}
		</style>
</head>

- id

id는 class와 달리 . 대신 #을 붙여야 한다.

class는 무언가를 그룹핑한다는 의미이고, id는 어떤 한가지를 식별한다는 의미.

예) class - 반, id - 학번

따라서, class는 중복해서 사용 가능하지만, id는 한 페이지에서는 딱 한 번만 사용 가능하다.

(class 선택자가 더 포괄적, id 선택자가 더 타케팅적)

 

결과적으로, 우선순위: id>class>태그(<div>, <span> 등)

 

 

- 제어할 태그 선택하기

querySelector

: querySelector라는 함수를 이용하면 이러한 선택자를 이용해서 원하는 태그를 선택할 수 있다.

그리고, 고른 태그에 스타일을 적용시킨다. 예를 들어, 다음과 같이 코드를 작성하여

버튼을 클릭할 때마다(이벤트가 발생할 때마다) 이러한 스타일 변화가 나타나도록 한다.

<input type="button" value="night" onclick="
documnet.querySelector('body').style.backgroundColor = 'black';
">