자바스크립트

  • 웹페이지는 한 번 화면에 출력되면 자기 자신을 바꾸는 능력이 없다. 그것을 가능하게 해주는 것이 자바스크립트이다.

<script> 태그

  • 자바스크립트 코드를 넣을 때는 웹 브라우저에게 지금부터 자바스크립트 코드가 시작된다는 사실을 알려야 한다. 그때 사용하는 태그가 script 태그다.

이벤트

  • 이벤트는 자바스크립트가 사용자와 상호작용하는 데 핵심적인 역할을 한다.
  • <input type="button" value="이름" onclick="alert('hi')"> 라고 작성하면 누르면 경고창이 뜨는 버튼을 생성할 수 있다.
  • <input type="text"> 라고 작성하면 텍스트창을 띄울 수 있으며 onkeydown, onchange등의 속성을 추가할 수 있다.
  • 이렇게 on으로 시작하는 속성들을 자바스크립트에서 이벤트라고 하며 웹 브라우저에서 일어나는 여러 사건중 기념할 만한 10~20개의 이벤트를 정의해놨고 이것들을 이용해 사용자와 상호작용할 수 잇는 코드를 작성할 수 있다.

콘솔

  • 브라우저에서 오른쪽 마우스 버튼을 누르면 검사 탭이 있고 여기에 들어가면 console을 사용할 수 있다.
  • console은 자바스크립트 코드르 즉석에서 실행할 수 있는 도구다.

데이터 타입 - 문자열과 숫자

  • 자바스크립트에는 6개의 데이터 타입이 있고 객체라는 것이 있다.

  • 자바스크립트의 데이터 타입

    • boolean
    • Null
    • undefined
    • Number
    • string
    • symbol
  • 숫자는 산술연산자(+, - , *, /)를 통해 더하기 빼기 곱하기 나누기가 가능하다.

  • 문자열은 따옴표 혹은 작은 따옴표로 표시되어 있다

  • 문자열 함수

    • .length: 문자열의 길이 출력
    • .trim(): 공백 제거
    • .indexOf(): 해당 문자열의 시작 인덱스
    • toUpperCase(): 대문자로 변환

변수와 대입 연산자

  • 변수(variable): 바뀔 수 있는 값, x = 1;과 같은 식으로 선언

  • 상수(constant): 바뀌지 않는것

  • 변수를 선언할 때는 var 키워드를 앞에 써준다.

웹브라우저 제어

  • document.querySelector(selectors); 로 스타일을 적용할 태그를 선택할 수 있다.
  • 버튼을 눌렀을 때 배경색을 바꾸고싶으면 input 태그에onclick="document.querySelector(body).style.backgroundColor = 'black'" 속성을 추가한다

조건문

  • 토글(toggle): 버튼 하나로 어떤 기능을 변화시켰다가 원래로 돌아왔다가 하게하는 것

  • 이 기능은 if 조건문으로 구현될 수 있다.

비교연산자와 불리언(boolean)

  • 비교연산자 '===': 같으면 true, 다르면 false를 출력한다. true와 false 두 가지 값을 묶어서 불리언(boolean)이라고 부른다.
  • &lt; : HTML에선 <가 태그를 여는 데 사용되기 때문에 < 부등호를 표시할 때 less than이라는 뜻에서 '&lt;'이라고 쓴다.
if (true or false) {
    // 조건문
} else {
    // 조건문
}

중복의 제거를 위한 리팩터링

  • 리팩터링(refactoring): 코드 자체를 효율적으로 만들어서 그 코드의 가독성을 높이고, 유지보수를 편리하게 만들고, 중복된 코드를 줄이는 방향으로 코드를 개선하는 작업

  • this: onclick과 같이 이벤트 안에서 실행되는 코드에서 현재 코드가 속해 있는 태그를 가리키도록 약속돼 있는 특수한 키워드

     <input id="night_day" type="button" value="night" onclick="
    if(document.querySelector('#night_day').value === 'night') {
      document.querySelector('body').style.backgroundColor = 'black';
      document.querySelector('body').style.color = 'white';
      document.querySelector('#night_day').value = 'day';
    } else {
      document.querySelector('body').style.backgroundColor = 'white';
      document.querySelector('body').style.color = 'black';
      document.querySelector('#night_day').value = 'night';
    }">

<!-- 바꾼 후 -->

    <input type="button" value="night" onclick="
    if(this.value === 'night') {
      document.querySelector('body').style.backgroundColor = 'black';
      document.querySelector('body').style.color = 'white';
      this.value = 'day';
    } else {
      document.querySelector('body').style.backgroundColor = 'white';
      document.querySelector('body').style.color = 'black';
      this.value = 'night';
    }">

중복되는 부분 변수에 할당하기

  • var로 target 변수를 선언하고 document.querySelector('body')를 변수에 넣어준다.
    <input type="button" value="night" onclick="
    var target = document.querySelector('body');
    if(this.value === 'night') {
      target.style.backgroundColor = 'black';
      target.style.color = 'white';
      this.value = 'day';
    } else {
      target.style.backgroundColor = 'white';
      target.style.color = 'black';
      this.value = 'night';
    }">

반복문

배열(Array)

  • 데이터 중에서 서로 연관된 데이터들을 잘 정리 정돈해서 담아두는 일종의 수납 상자를 배열이라고 한다.

  • 배열은 대괄호 안에 값들을 따옴표와 콤마로 구분하여 변수에 넣는다.

var coworker = ["egoing", "leezche"]
  • 배열 안의 값들은 인덱스(index)를 통해 가리킬 수 있다. (coworker[0])
  • coworker.length를 이용하면 배열안에 몇개의 값이 있는지 알려준다.
  • coworker.push()를 이용해 배열 끝에 아이템을 추가할 수 있다.

while 문

  • 제어문의 값이 true일 동안 코드를 반복적으로 실행한다.
  • while 반복문을 이용해 2, 3번째 코드를 3번 반복
<script>
    document.write('<li>1</li>');
    var i = 0;
    while(i < 3) {
        document.write('<li>2</li>')
        document.write('<li>3</li>')
        i = i + 1
    }
    document.write('<li>4</li>')
</script>
  • 코드를 배열의 길이만큼 반복하기
<script>
    var coworkers = ["egoing", "leezche", "duru", "taeho"]
</script>
<h2>co workers</h2>
<ul>
   <scipt>
       var i = 0;
       while(i < coworkers.length) {
                   document.write('<li><a href="http://"a.com/' + coworkers[i] + '">"' + coworkers[i] + '</a></li>');
                   i = i + 1;
       }
   </scipt> 
</ul>

배열과 반복문의 활용

  • querySelectorAll(): 현재 코드의 모든 태그를 가져오는 명령어
  • 모든 a 태그의 색을 powderblue로 바꾸기
var alist = document.querySelectorAll('a');
      var i = 0;
      while(i < alist.length) {
        alist[i].style.color = 'powderblue';
        i = i + 1;

함수

  • 함수의 기본적인 문법
<script>
    function two() {
        document.write('<li>2-1</li>')
        document.write('<li>2-1</li>')
    }
</script>
  • 매개변수(parameter): 함수의 입력
  • 인자(argument): 출력, return과 관련이 있음
<script>
    function sum(left, right){
        document.write(left + right + '<br>')
    }
</script>
  • return 문
<script>
    function sum2(left, right) {
        return left + right
    }
</script>
  • 최종 night 버튼 함수
  <script>
      function nightDayHandler(self) {
        var target = document.querySelector('body');
        if(self.value === 'night') {
          target.style.backgroundColor = 'black';
          target.style.color = 'white';
          self.value = 'day';

          var alist = document.querySelectorAll('a');
          var i = 0;
          while(i < alist.length) {
            alist[i].style.color = 'powderblue';
            i = i + 1;
          }
        } else {
          target.style.backgroundColor = 'white';
          target.style.color = 'black';
          self.value = 'night';

          var alist = document.querySelectorAll('a');
          var i = 0;
          while(i < alist.length) {
            alist[i].style.color = 'blue';
            i = i + 1;
          }
        }
      }
    </script>

객체(object)

  • 객체: 서로 연관된 함수와 변수를 정리 정돈하기 위한 수납상자, 객체는 정보를 순서없이 저장할 수 있음
  • 객체 리터럴(object literal): 객체를 만들 때 사용하는 기호
<script>
    var coworkers = {
        "programmer":"egoing",
        "designer":"leezche"
    }
    document.write("programmer :" + coworkers.programmer + "<br>");
    document.write("designer :" + coworkers.designer + "<br>");

    <!-- 객체에 데이터 추가 -->
    coworkers.bookkeeper = "duru";
    document.write("bookkeeeper :" + coworkers.bookkeeper + "<br>");
</script>
<h2>Iterate</h2>
<script>
    <!-- 객체 반복문으로 순회하기 -->
    for (var key in coworkers) {
        document.write(coworkers[key] + '<br>')
    }
</script>

객체 프로퍼티와 메서드

  • 객체에는 문자열, 배열, 숫자, 함수등을 담을 수 있다.
<h2>property & Method</h2>
<script>
  coworkers.showAll = function() {
      for(var key in this) {
          document.write(key + ' : ' + coworkers[key] + '<br>')
      }
  }
</script>

객체의 활용

  • 배경색 변경, 글자색 변경, 링크색 변경을 객체로 관리하기
<script>
      var Body = {
        setColor: function(color) {
          document.querySelector('body').style.color = color;
        },
        setBackgroundColor: function(color) {
          document.querySelector('body').style.backgroundColor = color;
        }
      }
      var Links = {
        setColor: function(color) {
          var alist = document.querySelectorAll('a');
          var i = 0;
          while(i < alist.length) {
            alist[i].style.color = color;
            i = i + 1;
          }
        }
      }
      function nightDayHandler(self) {
        var target = document.querySelector('body');
        if(self.value === 'night') {
          Body.setBackgroundColor('black');
          Body.setColor('white');
          self.value = 'day';

          Links.setColor('powderblue');
        } else {
          Body.setBackgroundColor('white');
          Body.setColor('black');
          self.value = 'night';

          Links.setColor('blue');
        }
      }
    </script>

파일로 쪼개서 정리 정돈하기

  • .js 파일에 script 태그 안 코드들을 옮겨 적고 <script src="color.js"></script>로 불러온다.
  • 이렇게 js를 다른 파일로 쪼개서 정리하면 웹 브라우저가 페이지를 불러올 때 js를 캐시로 저장하기 때문에 한 번 파일을 읽은 뒤 그 파일을 다시 읽지 않아도 된다.

라이브러리와 프레임 워크

  • 라이브러리: 내가 만들고자 하는 프로그램에 필요한 부품들이 되는 소프트웨어들을 잘 정리 정돈 해놓은 곳
  • 프레임워크: 만들고자 하는 기능이나 특성에 따라 달라지는 부분만 살짝살짝 수정하는 방법으로 우리가 만들고자 하는 것을 처음부터 끝까지 만들지 않게 해주는 거의 반제품과 같은 것

출처: 생활코딩! HTML + CSS + 자바스크립트

'Web > front' 카테고리의 다른 글

CSS - 2  (0) 2021.12.14
CSS - 1  (0) 2021.12.13
HTML - 2  (0) 2021.12.12
HTML - 1  (0) 2021.12.11

그리드

  • <div>: 그냥 평범한 개체를 태그로 묶고 싶을 때 무색무취의 태그, division의 약자, 블록레벨 엘리먼트
  • <span>: div와 같은 목적의 태그, 인라인 엘리먼트

그리드 사용

  • display: grid; 속성 지정
  • grid-template-columns: 150px 1fr;
  • 두개의 태그를 div id="grid"로 묶은 뒤, grid에 diplay: grid 속성을 지정해준다.

미디어 쿼리

  • 반응형 웹디자인: 화면 크기에 따라 웹 페이지의 다양한 요소들이 반응해서 최적화된 모양으로 바뀌는 것
  • 미디어 쿼리는 반응형 디자인을 CSS를 통해 구현하는 핵심적인 개념이다.
  • 화면크기가 800px를 넘으면 div를 출력하지 않는 코드
<style>
    @media(min-width: 800px) {
        div {
            display: none;
        }
    }
</style>

CSS 코드의 재사용

  • 각 페이지마다 중복된 CSS코드를 style.css 파일에 붙여 넣는다.
  • <link>태그를 이용해 CSS 파일을 각 페이지에 연결한다. 이러면 웹 브라우저가 link를 따라 style.css 파일을 다운받고 html 코드에 적용해준다.
<link rel="stylesheet" href="style.css" />

출처: 생활코딩! HTML+CSS+자바스크립트

'Web > front' 카테고리의 다른 글

JavaScript  (0) 2021.12.21
CSS - 1  (0) 2021.12.13
HTML - 2  (0) 2021.12.12
HTML - 1  (0) 2021.12.11

CSS

CSS의 등장

  • <!=- ... -->: HTML 주석처리
  • <style> 태그: head에 스타일 태그를 사용하고 스타일 태그 안의 내용은 CSS로 작성한다.
  • 모든 a 태그에 대해서 빨간색으로 처리하기
<style>
    a {
        color: red;
    }
</style>
  • CSS는 여러 태그를 쓸 일을 한 줄로 줄여주면서 코드의 가독성을 높인다.

CSS의 기본문법

  • <style> 태그 이외에 html속에 CSS를 포함시킬 수 있는 방법이 하나 더 있는데 'style' 속성을 이용하는 방법이다. style 속성을 사용하면 그 속성의 값을 웹 브라우저가 CSS 문법에 따라 해석해서 그 결과를 style 속성이 위치하는 태그에 적용된다.
  • style은 html의 속성이고 값으로 반드시 CSS 효과가 들어온다고 약속돼있다.
  • <style> 태그에 CSS를 작성하기 위해선 누구에게 효과를 줄 지 대상이 들어가야한다. 이런 코드를 효과를 누구에게 줄 것인가 선택한다는 점에서 선택자(selector)라고 한다. 그리고 선택자에게 지정될 효과를 declaration이라고 부른다.
  • 하나의 선택자에 여러개의 효과를 지정할 땐 세미콜론으로 구분한다.
<li><a href="2.html" style="color:red; text-decoration:underline;">CSS</a></li>

CSS 속성을 스스로 알아내기

  • 글씨 크기를 바꾸고 싶다!
    • css text size property 검색
    • font-size 속성과 여러가지 value 찾아냄
  • 텍스트를 가운데로 정렬하고 싶다!
    • css text center property 검색
    • text-align 속성 찾아냄

CSS 선택자의 기본

  • 태그 선택자
  • 클래스 선택자: 여러 태그를 클래스로 묶어서 제어, 한 태그에 여러 클래스가 부여될 수 있고 띄어쓰기로 구분
  • id 선택자: 가장 우선되는 선택자, 중복되는 것이 불가함

박스 모델

  • html의 태그들은 태그와 성격과 일반적인 쓰임에 따라 화면 전체를 쓰는 것이 편한 것과 자신의 크기만큼의 부피를 갖는 게 편한 것이 있기 때문에 화면 전체를 쓰는 태그가 있고, 자기 크기만큼 쓰는 것들이 있다.
  • 화면 전체를 쓰는 태그들을 블록 레벨 엘리먼트(block level element), 자기 자신의 콘텐츠 크기만큼을 쓰는 태그들을 인라인 엘리먼트(inline element)라고 한다.
  • display 속성을 이용하면 블록 레벨 엘리먼트도 인라인 엘리먼트처럼 자신의 부피만큼 쓰게 할 수 있다.

코드의 압축

  • 여러 선택자에 동일한 효과가 적용된다면 콤마로 한꺼번에 효과를 적용해줄 수 있다.
<style>
    a, h1{
        border-width: 5px;
        border-color: red;
        border-style: solid;
    }
</style>
  • 위의 코드를 보면 border 부분이 중복된다. 다음과 같이 줄일 수 있다.
<style>
    a, h1 {
        border: 5px red solid;
    }
</style>

박스 모델

  • 콘텐츠와 테두리 사이의 여백을 주고 싶다면 padding 값을 추가할 수 있다.

  • margin 속성을 0으로 주면 두 엘리먼트의 테두리 사이의 간격을 없앨 수 있다

  • h1 태그는 화면 전체를 사용하는 블록레벨 엘리먼트다. 이를 바꾸기 위해 width 값을 지정하면 태그의 크기가 변한다. 높이는 height로 지정한다.

  • 태그에서 콘텐츠는 border를 기준으로 밖으로는 margin, 안으로는 padding이 감싸고 있다.

박스모델 써먹기

  • 제목 부분 아래에 줄을 긋기 위해서 border-bottom을 사용한다.
  • ol 오른쪽에 줄을 긋기위해 boder-right를 사용한다
  • 각 영역의 margin과 padding을 정해주고 body의 margin을 0으로 설정한다.

출처: 생활코딩! HTML+CSS+자바스크립트

'Web > front' 카테고리의 다른 글

JavaScript  (0) 2021.12.21
CSS - 2  (0) 2021.12.14
HTML - 2  (0) 2021.12.12
HTML - 1  (0) 2021.12.11

문서의 구조와 슈퍼스타들

  • <title>: 페이지의 제목을 설정할 때 사용
  • <meta charset="utf-8">: 브라우저가 웹페이지를 utf-8로 열도록 하는 태그
  • 본문은 <body>, 본문을 설명하는 태그는 <head>
  • <head>와 <body>를 감싸는 태그는 <html>
  • 가장 위에는 관용적으로 이 문서에 html이 담겨있다는 뜻에서 <IDOTYPE HTML>을 써준다.

HTML 태그의 제왕

<a> 태그

  • anchor의 앞글자를 따서 a태그임
  • HyperText가 이 태그를 의미
  • 링크를 넣고 싶은 곳을 a 태그로 감싸고 href(reference 의 약자)로 링크를 써줌

웹사이트 완성

  • 링크는 본드와 실과같이 서로 연관된 웹페이지를 결합해서 하나의 책으로 엮어내는 존재
  • html들을 링크로 연결해서 하나의 사이트로 만든다.

원시 웹

인터넷을 여는 열쇠 서버와 클라이언트

  • 웹서버가 담긴 컴퓨터에는 html 파일들이 모여 있다.

  • 브라우저를 통해 인터넷으로 웹서버에 특정 html 파일을 요청하는 신호를 보내면 html 코드를 웹 브라우저에 전달하고 웹 브라우저가 html을 읽어서 정보를 전달한다.

  • 요청(request)를 하는 컴퓨터를 클라이언트(client), 응답(response)하는 컴퓨터를 서버(server)라고 함

  • 서버를 사용하는 방법은 두가지가 있는데 한가지는 내 컴퓨터에 서버를 설치하는 방법이고 다른 하나는 이런 일을 대행하는 다른 업체에 맡기는 것이다.

웹 호스팅 - 깃허브 페이지

  • 웹 서버를 운영하기 위한 컴퓨터, 호스트(host)를 빌려주는 회사를 웹 호스팅 업체라고 한다.

  • 깃허브를 웹 호스팅으로 사용할 수 있다. 깃허브 리포지토리에 html파일들을 올리고 setting 탭에 들어가 github pages 메뉴에서 source를 선택하고 save를 누르면 깃허브 페이지 링크가 뜨게 된다.

  • html만을 서비스하는 웹 호스팅을 스태틱 웹 호스팅(static web hosting)이라고 한다.

  • 나중에 PHP, 파이썬, 루비 같은 언어를 배운다면 다이내믹 웹 호스팅(Dynamic web hosting)이 필요해진다.

웹서버 운영하기

  • 웹서버 제품군에는 아파치, IIS, 엔진엑스 등의 여러 제품이 있다.
  • 아파치는 웹 서버 제품군중 점유율 1등을 차지하고 있는 웹서버이며 오픈소스이고 무료다.

웹서버를 통해 페이지를 여는 것과 그냥 브라우저를 통해 파일을 여는 것의 차이

  • 파일을 열였을땐 file://, 웹 서버로 열었을 땐 http://가 붙는다. http는 HyperText Transfer Protocol이라는 뜻으로 웹서버가 서로 웹페이지를 주고 받기 위한 규약이다.

출처: 생활코딩! HTML+CSS+자바스크립트

'Web > front' 카테고리의 다른 글

JavaScript  (0) 2021.12.21
CSS - 2  (0) 2021.12.14
CSS - 1  (0) 2021.12.13
HTML - 1  (0) 2021.12.11

코딩과 HTML

  • 사람이 하는 일: 코드, 소스, 프로그래밍 언어

  • 기계가 하는 일: 애플리케이션, 응용 프로그램, 앱, 웹페이지, 웹사이트(페이지가 모이면)

  • 웹페이지를 만드는 언어는 HTML(HyperText Markup Language)

HTML 코딩과 실습 환경 준비

  • Atom 에디터 사용 (https://atom.io/)

  • 바탕화면에 웹사이트 제작 프로젝트에 사용되는 파일들을 저장할 'web' 폴더 만들기

  • Add project folder를 이용해 폴더를 프로젝트 폴더로 추가하고 new file을 이용해서 html파일 만들기

  • 브라우저를 열고 ctrl + o를 누르면 html파일을 열 수 있다.

기본문법과 태그

  • </strong>: 글자를 굵게 강조

  • </u>: 글자에 밑줄을 침

  • 태그는 <> ... </>식으로 열리는 태그와 닫히는 태그를 사용해준다.

  • <h1>...<h6>: heading을 지정하는 태그

통계에 기반한 학습

  • 전 세계에 있는 수 많은 웹페이지들 중 25~26개의 태그로 구성되어 있는 웹페이지가 가장 많다.
  • 어떤 태그를 외울 것인지는 그 태그가 얼마나 널리 쓰이는지를 기반으로 정한다.

줄바꿈: <br> vs. <p>

  • <br> 태그를 이용하면 줄바꿈을 할 수 있다. 두개를 사용하면 문단을 표현할 수 있다. 이 태그는 닫히는 태그가 존재하지 않는다.
  • <p> 태그는 paragraph 단어에서 p를 따와서 만들어졌으며 어디까지가 한 단락인지 보여준다. 그래서 열리는 태그와 닫히는 태그가 존재한다.

두 태그의 차이점

  • <br> 태그는 줄바꿈일 뿐이고 문단을 바꿀때에는 <p> 태그가 더 가치있다.

  • <p> 태그는 CSS를 이용해서 공백의 범위를 조절할 수 있다.

HTML이 중요한 이유

  • 검색엔진은 html 태그를 본래의 의미에 맞게 사용한 글을 위 페이지에 올려준다.
  • 바르게 쓴 html 태그는 접근성 측면에서도 중요하다.

촤후의 문법 속성과 img 태그

<img> 태그

  • src(source의 줄임말) 속성을 이용하여 원하는 이미지의 주소를 적을 수 있다.

속성이란?

  • 속성(attribute)은 태그안에 아무 위치에나 쓰면 된다. 태그의 이름만으론 정보가 부족할 때 더 많은 의미를 부가하는 역할을 한다.

부모 자식과 목록

  • 태그가 서로 포함관계에 있을 때, 포함하고 있는 태그를 부모 태그, 포함된 태그를 자식 태그라고 한다.
  • <li>는 목차 또는 목록을 입력할 때 사용하는 태그이다.

다중 커서

  • 컨트롤을 누른 채 에디터 화면을 클릭하면 여러개의 커서가 생성되고 그 다음 입력을 하면 커서가 위치한 곳에 한꺼번에 태그를 입력할 수 있다.
  • 서로 다른 목록을 구분하고자 할 때 <ul>이라는 부모 태그를 사용한다.
  • <ol> (ordered list)태그를 ul 대신 이용하면 숫자를 자동으로 달아준다.

출처: 생활코딩! HTML+CSS+자바스크립트

'Web > front' 카테고리의 다른 글

JavaScript  (0) 2021.12.21
CSS - 2  (0) 2021.12.14
CSS - 1  (0) 2021.12.13
HTML - 2  (0) 2021.12.12

+ Recent posts