2022년 7월 6일 수요일

[패스트캠퍼스] react 강의 학습일지 - 4주차

 React&Redux로 시작하는 웹프로그래밍_4주차

HTML/CSS/JS로 만드는 스타벅스 웹사이트



JS라이브러리


CDN Lodash.js
주소: https://cdnjs.com/libraries/lodash.js
속도 제어 라이브러리

CDN GSAP
주소: https://cdnjs.com/libraries/gsap
애니메이션 효과를 주는 라이브러리

gsap easing 검색
타이밍 function 
https://greensock.com/docs/v2/Easing

ScrollToPlugin.min.js
화면 스크롤 


CDN scrollMagic 
주소: https://cdnjs.com/libraries/ScrollMagic


CDN Swiper JS
주소: https://swiperjs.com/
슬라이드 기능들 제공
사용방법: 
1. Get started로 들어가서 Installation > Use Swiper from CDN을 이용, 링크를 복붙
<link
  rel="stylesheet"
  href="https://unpkg.com/swiper@8/swiper-bundle.min.css"
/>

<script src="https://unpkg.com/swiper@8/swiper-bundle.min.js"></script>
2. Installation > Add Swiper HTML Layout에서 코드 확인해서 내 코드에 적용

2. DEMO -> Vertical -> 움직임 확인하기

3. API : 어떤 명령을 사용할 수 있는지에 대해 정리된 문서

*주의사항: 꼭 현재 시점에 API를 확인할 것. 변경된 사항이 있을 수 있음
(예. 클래스 네임)

라이브러리 **

오픈되어있는 수 많은 라이브러리를 내 프로젝트에 직접 설치해보고 
어떻게 동작하는지 분석하면서 사용 해야한다. 
API 공식 문서에는 기본적인 사용 방법에 대한 설명만 나와있고, 
다양한 사용 방법은 개발자가 알아서 개발자 도구 열어서 분석하여 사용해야한다.


예) Swiper JS 사용하여, 다양한 슬라이드 제작하기

슬라이드 수직(위->아래)

요소 가운데 배치하는 방법
* css - calc()
1. 컨테이너 만들고, 
2. 안에 박스 만들고
3. left값 50%주고
4. margin-left: -박스의 절반 값 calc(요소사이즈 / -2)


영상추가하기 (비율: 16:9)

* 기본적으로 padding은 요소의 크기가 늘어날 수 있는 속성을 갖는다. %로 값을 지정하며, 상대적인 크기로 크게 하는데, 이때 이 코드에서는 부모 요소의 가로 넓이를 기준으로 커진다.
이 속성을 이용해, 영상을 올릴때 사용한다.


* 16:9 는 padding-top에 56.25% 주기

*HTML요소 추가 없이 스타일 주려면, CSS안에서 가상선택자 ::before을 쓰기


*유투브 영상을 삽입하기
youtube iframe api 검색
주소: https://developers.google.com/youtube/iframe_api_reference


* 간단한 페럴렉스 코드
.p-bg {
  background-image: url("../images/p-bg.jpg");
  background-repeat: no-repeat;
  background-position: center;
  background-attachment: fixed;
  background-size: cover;
}



* scrollMagic cdn 사용
https://cdnjs.com/libraries/ScrollMagic


*특수문자 (html entities)
주소: 
https://html.spec.whatwg.org/multipage/named-characters.html
문제점: <> 같은경우, html이 tag로 인식할수 있음.
해결법: &copy; , &lt;, &gt 등등..




React&Redux로 시작하는 웹프로그래밍_4주차

JavaScript Essentials_Node.js


모듈(패키지) 버전 일치시키기

1. 필요한 package.json 파일을 활용할 프로젝트 폴더에 넣은후

2. 터미널에서 npm i로 설치한다.


Node.js 개요 및 설치

Node.js란?
Chrome V8 JavaScript 엔진으로 만들어진 JavaScript 런타임 (프로그래밍 언어가 동작하는 환경)
즉, Javascript가 작동할 수 있는 환경
2가지의 환경이 있다. 1) 컴퓨터환경 (Node.js), 2) 브라우저

웹페이지를 개발하기 위해 약간의 도움을 받기위해 Node.js를 사용해야 함.
예) 브라우저에서 직접적으로 사용할수 없는 Sass, less, EJS, BABEL, Stylus, 같은 모듈들을 쓰기위해,
컴퓨터에서 css로 변환을 해야함. 이때, Node.js 환경에서 변환작업을 함


설치
주소: https://nodejs.org/en/

1. 노드 버전 매니저(원할때 언제든지 버전을 바꿔주는 프로그램)를 먼저 설치
구글: nvm-windows 검색 (주소: https://github.com/coreybutler/nvm-windows)
웹페이지 접속 > download now 누르고 > mvm-setup.zip 받기 > 압축 풀어 설치

2. MS Code에서 설치 확인하기
설치 이전에 ms 코드를 켜두었다면 재 실행후,
터미널 > nvm --version 쳐서 확인

3. Node.js 원하는 버전 설치하기
터미널에서, nvm ls 치면, 현재 깔려 있는 정보가 나옴
현재는 없으니 설치해야함

터미널에서 설치 명령어: nvm install 버전
예: nvm install 12.14.1
예: nvm install 12.21.0

설치 후 다시 nvm ls 치면 12.14.1 이나옴

원하는 버전 설정하기: nvm use 12.14.1

삭제 방법: nvm uninstall 버전
예: nvm unintall 12.21.0


**VS CODE에서 작동하지 않을시, 관리자 권한 에러일 가능성이 큼 ** Windows PowerShell 을 관리자로 실행해서 위 명령어 입력하면 작동됨

NVM 사용법

설치: nvm install 버전

삭제: nvm uninstall 버전

설치되있는 정보 확인: nvm ls

현재 버전 확인 nvm --version

원하는 버전 설정하기: nvm use 버전

여러가지 명령 확인: nvm --help


npm 개요

NPM (Node Package Manager)은 전 세계의 개발자들이 만든 다양한 기능(패키지, 모듈)들을 관리한다.


사용법 - npm을 이용해 project 만들기
1. ms code프로젝트 폴더열고
2. 터미널에서 npm init -y 엔터 -> package.json이 생성됨
{
  "name": "testnode",
  "version": "1.0.0",
  "description": "",
  "main": "index.js", //node.js 클라우드에 업로드 될때만 필요한 정보이므로, 내 홈페이지 개발에서는 필요없어 삭제 가능함
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}


3. 터미널 npm install parcel-bundler -D 라는 패키지 설치
node_modules와 package-lock.json이 생성되어 있음.
node_modules 안에 parcel-bundler가 들어가 있음

4. 내가 설치한 패키지 내역은 package.json 안에 나오는데,
devDependencies 안에는 개발의존성 패키지가 명시되고,
dependencies 안에는 일반 패키지가 명시된다.
{
  "name": "testnode",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": { // 내가 설치한 패키지 내역이 나옴
    "parcel-bundler": "^1.12.5"
  }
}


5. npm install lodash 설치

{
  "name": "testnode",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "parcel-bundler": "^1.12.5"
  },
  "dependencies": {
    "lodash": "^4.17.21" //여기에 내역이 나옴
  }
}


6. node_modules폴더를 삭제해도, 위에 정보가 있어,
내 프로젝트에 npm i까지만 입력하면, 모두 한번에 설치가 됨


**
설치 시, -D (--save-dev) 플래그를 붙이고 안붙이고의 차이는 구분을 위함
$npm install -D xxx 개발용 의존성 패키지 설치 
: 개발시에만 필요함, 웹브라우저에서는 직접 사용하지 않음
$npm install XXX 일반 의존성 설치
: 웹브라우저에서 동작 할 수 있음


** 
package.json 직접 관리
package-lock.json은 자동으로 관리되는 파일임



개발 서버 실행과 빌드

1. 개발 서버 실행

parcel-bundler 을 설치 > 개발 의존성으로 npm install parcel-bundler -D

package.json에 scripts 아래 test: 부분 지우고 아래 코드 넣기
"scripts": {
    "dev": "parcel index.html"
  },
내 프로젝트 안에서 index.html을 기준으로 로컬에서 개발용 서버를 열고 
브라우저에서 확인하겠다. 라고 명시해주기

> 터미널: npm run dev (dev스크립트를 실행하겠다.)
브라우저에서 열수 있는 링크가 나오면 클릭해보면 실행됨을 확인할 수있다.

2. 내 js파일에

import _ from 'lodash'

console.log('hello world');
console.log(_.camelCase('hello world')) ;

입력후 저장하면, 자동으로 브라우저에 반영됨을 확인 할 수 있다.


3. 빌드
실제로 user가 보는 용도의 결과물
  "scripts": {
    "dev": "parcel index.html",
    "build": "parcel build index.html"
  },

Ctrl+c 현재 서버 종료 후
>터미널:  npm run build 실행

dist라는 폴더안에 파일이 생김을 확인 할 수 있다.
dist로 들어가면 index.html파일이 압축버전으로 생긴다. 실제 브라우저에서 뜨는 것


유의적 버전(SemVer) semantic versioning 버전에 의미가 부여되어 있다.

버전 확인 방법:
터미널: node --version
터미널: npm --version

구조: Major.Minor.Patch
예: 12.14.1

Major: 기존 버전과 호환되지 않는 새로운 버전
Minor: 기존 버전과 호환되는 새로운 기능이 추가된 버전
Patch: 기존 버전과 호환되는 버그 및 오타등이 수정된 버전

구조: ^Major.Minor.Patch
예: ^12.14.1

^: Major 버전 안에서 가장 최신 버전으로 업데이트 가능
12는 바뀌지 않고 14.1이 바뀔수 있다.

터미널: npm info lodash
latest: 최신 버전 확인 방법

터미널: npm install lodash@4.17.20

기존에 설치된 버전을 다른 버전으로 minor과 patch만 덮어쓰인다.


터미널: npm update lodash
최신 버전으로 업데이트하기



NPM 프로젝트의
버전 관리(.gitignore)

주의사항
*따로 버전관리할 필요 없는 폴더들은 업로드 하지 않는다.
-cache, dist, node_modules 폴더를 삭제.

루트에 .gitignore 파일 생성
.cache/
dist/
node_modules/

터미널: git init

터미널: git status

터미널: git add .

터미널: git status

git commit -m '프로젝트 생성'
버전 만들기

git log
버전 제대로 만들어졌는지

q
빠져나올때


웹 저장소에 github 만들기
your repository
new
repo: test
creat
주소 복사

vs code
git remote add origin 주소 붙여넣기
연결

git push origin master
푸쉬 완료

웹 저장소
제대로 들어갔는지 확인



삭제 방법
setting > delete this repository
주소 복붙 컨펌 삭제





#패스트캠퍼스 #내일배움카드 #국비지원 #K디지털기초역량훈련 #바이트디그리 #react강의

2022년 6월 29일 수요일

[패스트캠퍼스] react 강의 학습일지 - 3주차

React&Redux로 시작하는 웹프로그래밍_3주차

HTML/CSS/JS로 만드는 스타벅스 웹사이트



1_JavaScript 


개요

  • 표기법
    • [HTML, CSS에서 사용] dash-case(kebab-case) 예: the-brown-fox
    • [HTML, CSS에서 사용] snake_case 예: the_brown_fox
    • [JS 에서 많이 사용] camelCase 예: theBrownFox
    • [JS 에서 사용] PascalCase 예: TheBrownFox (맨앞도 대문자)

  • Zero-based Numbering
    • 특수한 경우를 제외하고 0부터 숫자를 시작한다.
  • 주석(Comments) 
    • 단축키: Ctrl+/
// 한 줄 메모
/* 한 줄 메모
/** 
* 여러 줄 메모
* 주르륵
*/

 

데이터종류 

  • 데이터 타입
    • String (문자 데이터)
      • 따옴표를 사용
      • 예: let myName = "Jenny"; ("" 대괄호 또는 ''소괄호)
      • let hello = `Hello ${myName}?!` (보관법) 
      • console.log(hello); // Hello Jenny?!

    • Number (숫자 데이터)
      • 정수 및 부동소수점 숫자를 나타냅니다.
      • 예: let number = 123; //정수
      • 예: let opacity = 1.57; //부동소수점
    • Boolean (불린 데이터)
      • //true, false 두 가지 값밖에 없는 논리 데이터
      • 예: let checked = true; //참
      • 예: let isShow = false; //거짓
    • Undefined
      • //값이 할당되지 않은 상태
      • let undef;
      • let obj = { abc: 123 }; //객체데이터라고 함. abc는 속성, 123은 값
      • console.log(undef); //undefined
      • console.log(obj.abc); //123
      • console.log(obj.xyz) //undefined
    • Null
      • //어떤 값이 의도적으로 비어있음을 의미
      • let empty = null;
      • console.log(empty); //null
    • Object (객체 데이터)
      • //여러 데이터를 Key:Value 형태로 저장합니다. { }
      • let user = {
      •   // Key: Value,
      •   name: 'Jenny',
      •   age: 20,
      •   isValid: true
      • };
      • console.log(user.name); //Jenny
      • console.log(user.age); //20
      • console.log(user.isValid); //true
    • Array (배열 데이터)
      • //여러 데이터를 순차적으로 저장 [ ]
      • let fruits = ['Apple', 'Banana', 'Cherry'];
      • console.log(fruits[0]); //'Apple'
      • console.log(fruits[1]); //'Banana'
      • console.log(fruits[2]); //'Cherry'


변수, 예약어

  • 변수
    • 데이터를 저장하고 참조(사용)하는 데이터의 이름
    • var(잘 안씀), let, const
    • 재사용이 가능
    • 변수 선언
    • 값(데이터)의 재할당 가능 : 변수 let
    • 값(데이터)의 재할당 불가 : 변수 const (재할당시, TypeError가 뜸)
  • 예약어 (Reserved Word)
    • 특별한 의미를 가지고 있어, 변수나 함수 이름 등으로 사용할 수 없는 단어

함수 (function)

  • 특정 동작(기능)을 수행하는 일부 코드의 집합(부분) 
    • 함수 선언
      • function helloFunc() { //실행코드 console.log(1234);}
    • 함수 호출
      • helloFunc(); //1234
    • 반환
      • return을 사용해서 함수 밖으로 값을 내보내라. 
      • function returnFunc() { return 123; }
      • let a = returnFunc();
      • console.log(a); //123



조건문 

  • 조건의 결과(truthy, falsy)에 따라 다른 코드를 실행하는 구문 if, else

DOM API


Documnet Object Model,  (도큐멘트=Html, 오브젝트모델= Div, span, input)
Application programming interface (웹사이트가 동작하도록하는 프로그래밍 언어, 명령들)
자바스크립트에서 HTML을 제어하는 명령들



메소드 체이닝 



BEM (block element modifier)
- HTML클래스 속성의 작명법
방법1. 요소__일부분 : underscore(lodash)기호로 요소의 일부분을 표시 
방법2. 요소--상태 : Hyphen(Dash)기호로 요소의 상태를 표시

#패스트캠퍼스 #내일배움카드 #국비지원 #K디지털기초역량훈련 #바이트디그리 #react강의

2022년 6월 23일 목요일

[패스트캠퍼스] react 강의 학습일지 - 2주차

 

React&Redux로 시작하는 웹프로그래밍_2주차

HTML/CSS/JS로 만드는 스타벅스 웹사이트



CSS 속성 (Properties)

  • 속성에는 기본값, 즉 요소에 이미 들어가 있는 속성의 값이 있다.
  • 개요
    • 박스모델
      • HTML요소는 기본적으로 가로, 세로넓이를 갖고있는 사각형임
      • 박스모델은 HTML요소 하나의 박스의 모양을 제어하는 속성들
    • 글꼴, 문자
      • 특정한 글꼴/크기/두께 등..을 제어하는 속성
    • 배경
      • 요소의 배경에 배경색/배경을 삽입하는 속성
    • 배치
      • 특정 요소를 원하는 위치에 배치하는 속성
    • 플렉스(정렬)
      • 기본적으로 요소들은 위아래로 수직으로 쌓이지만 수평정렬을 할때 사용
    • 전환
      • 요소의 전상태와 후상태 중간을 애니메이션 처리해주는 속성
    • 변환
      • 요소를 회전하거나 이동시키거나 크기를 조절해주는, 요소의 2D또는 3D변화를 주는 속성
    • 띄움
      • 요소를 공중으로 띄운다. (예: 박스주변으로 문자가 흐르게 하는 구조)
    • 애니메이션
      • 요소에 전환보다 복잡한 효과를 줄때 사용
    • 그리드
      • 엑셀처럼 행과 열을 갖은 2차원의 레이아웃을 만들때 사용
    • 다단
      • 문서작업을 할때 하나의 페이지에서 문단을 여러개로 나눌때 사용
    • 필터
      • 다양한 필터를 제공함. (예: 이미지 블러처리, 흑백효과, 이미지 색상 반전 등)
  • 너비(width, height)
    • 기본값 auto / 단위 / none 등이 있는데, auto란 브라우저가 너비를 계산해서 출력하는 값이고, 단위란 px, em, vw등 단위로 지정하는 값이다.
    • [width, height] 요소의 가로/세로 너비 (기본값: auto)
      • 예: <span> 대표적인 인라인 요소로, 포함한 콘텐츠 크기만큼 자동으로 가로,세로 너비가 줄어듦, 인라인 요소는 글자를 제어하는 요소이기 때문에 가로,세로 너비를 100px로 주어도 변화가 없음!
      • 예: <div> 대표적인 블록 요소로, width 너비는 부모 요소의 크기만큼 자동으로 늘어나지만, height는 포함한 콘텐츠 크기만큼 자동으로 줄어듦
    • [max-width, max-height] 요소가 커질 수 있는 최대 가로/세로 너비 (기본값: none)
    • [min-width, min-height] 요소가 작아질 수 있는 최대 가로/세로 너비 (기본값: 0)
  • CSS 단위
    • [px] 픽셀/ 화면에 출력하는 하나의 점, 절대 단위 (디바이스와 화면의 확대/축소에 따라 달라져 상대적일 수도 있음)
    • [%] 상대적 백분율 (특정한 기준의 요소에 대해 백분율로 나타냄) 
    • [em] 요소의 글꼴 크기 = 1em (즉, 글꼴이 10px이면 1em = 10px) 상대적
    • [rem] 루트 요소, 최상위 요소(html)의 글꼴 크기 (16px)
    • [vw] 뷰포트 가로 너비의 백분율 (예: 1vw란, 뷰포트의 1/100 크기라는 뜻, 50vw는 뷰포트의 절반을 사용해라)
    • [vh] 뷰포트 세로 너비의 백분율
  • 외부 여백(margin)
    • 요소의 외부 여백(공간)을 지정하는 단축 속성 (기본값: 0, auto, 단위)
      • 0은 외부 여백 없음
      • auto는 브라우저가 여백을 계산함. 가/세로 너비가 있는 요소의 가운데 정렬에 활용
      • % (사용빈도 적음) 부모 요소의 가로 너비에 대한 비율로 지정
    • 값을 지정할수 있으며, 기본값은 0이고 음수를 사용 가능
    • 단축속성
      • margin-top
      • margin-right
      • margin-bottom
      • margin-left
        • 예: margin: 0; (top, right, bottom, left)
        • 예: margin: 10px 20px; (10px: top, bottom / 20px: left, right)
        • 예: margin: 10px 20px 30px; (10px: top / 20px: left, right / 30px: bottom)
        • 예: margin: 10px 20px 30px 40px; (10px: top / 20px: right / 30px: bottom, 40px: left)
  • 내부 여백(padding)
    • 요소의 내부 여백(공간)을 지정하는 단축 속성 ( 기본값: 0, 단위, %)
    • 특징: 요소의 자체 크기가 커짐
    • 0: 내부 여백없음
    • %: 부모 요소의 가로 너비에 대한 비율로 지정
  • 테두리 선(border)과
    • 요소의 테두리 선을 지정하는 단축 속성
      • 예: border: 4px solid black; (검은색 실선 4px 두께의 선이 들어감)
    • 특징: 요소의 자체 크기가 커짐
    • 기본값: border: medium none black 
      • border-width(선-두께): 요소 테두리 선의 두께 (기본값: medium) 단위 px, em, %등 단위로 지정하는것을 권장
      • border-width는 단축 속성
      • boder-style(선-종류): 요소 테두리 선의 종류 (기본값: none 선의 종류가 없어서 출력되지 않음), none, solid, dashed 를 많이 사용
      • border-color(선-색상): 요소 테두리 선의 색상을 지정하는 단축 속성 (기본값: black) black, 색상, transparent 가 많이 쓰임
  • 요소 테두리 선을 지정하는 기타 속성들
    • border-방향
    • border-방향-속성
    • border-top: 두께 종류 색상;
    • border-top-width: 두께;
    • border-top-style: 종류;
    • border-top-color: 색상;
    • border-right 
    • ...
  • 색상 표현
    • CSS 전체에서 사용 가능한 개념
    • 색을 사용하는 모든 속성에 적용 가능한 색상 표현 방법
      • 색상이름: 브라우저에서 제공하는 색상 이름 (권장하지않음)
        • 예: red, tomato, royalblue
      • Hex 색상코드: 16진수 색상 (Hexadecimal colors) (권장) 
        • 예: #000, #FFFFFF
      • RGB: 색의 삼원색
        • 예: rgb(255, 255, 255)
      • RGBA: 색의 삼원색+투명도
        • 예: rgba(0, 0, 0, 0.5)
        • 투명도: 0~1 사이에 소수점값 입력 (0: 투명, 1: 불투명)
  • 모서리 둥글게(border-radius)
    • 요소의 모서리를 반지름사이즈만큼 둥글게 깎음 (기본값: 0, 단위)
    • 기본값 0은 둥글게 없음
    • 특정한 모서리만 깎을 수 있음
      • 예: border-radius: 0 10px 0 0; (1 2 3 4 시계 방향, 1은 왼쪽상단)
  • 크기 계산(box-sizing)
    • 요소의 크기 계산 기준을 지정 (기본값: content-box)
      • content-box: 요소의 내용(content)으로 크기 계산
      • border-box: 요소의 내용+padding+border로 크기 계산
        • 요소의 크기를 키우는 속성(예: padding, border)들로 인한 크기변화가 없게 만들어주는 속성
  • 넘침 제어(overflow)
    • 요소의 크기 이상으로 내용이 넘쳤을 때, 보여지는 것을 제어하는 단축 속성
    • 기본적으로 부모에 overflow를 명시함.
      • [visible] (기본값) 넘친 내용을 그대로 보여짐
      • [hidden] 넘친 영역을 화면에 보이지 않게 숨겨라
      • [auto] 넘친 부분만 스크롤바를 생성해서 보여줘라
      • [scroll] 넘치던 안넘치던 스크롤바 (x축/y축 모두) 생성해서 보여줘라
    • 요소의 크기 이상으로 내용이 넘쳤을때 보여짐을 제어하는 개별 속성들
      • [overflow-x] : x축으로 넘치는 부분만 체크
      • [overflow-y] : y축으로 넘치는 부분만 체크
  • 출력 특성(display)
    • 요소의 화면 출력 즉, 보여짐 특성
      • [block] 상자(레이아웃)요소, 각 요소에 이미 지정되어 있는 값
      • [lnline] 글자요소, 각 요소에 이미 지정되어 있는 값
      • [inline-block] 글자+상자 요소, 각 요소에 이미 지정되어 있는 값
      • [flex] 플렉스 박스 (1차원 레이아웃), 따로 지정해서 사용하는 값
      • [grid] 그리드 (2차원 레이아웃), 따로 지정해서 사용하는 값
      • [none] 보여짐 특성없음, 화면에서 사라짐, 따로 지정해서 사용하는 값
      • [기타]: table, table-row, table-cell 등..
  • 투명도 (opacity)
    • 요소의 투명도를 결정
      • [1] (기본값) 불투명 
      • [0~1] 0부터 1사이의 소수점 투명도 지정
        • 예: opacity: 0.07;
  • 글꼴 (font)
    •  [font-style] 글자의 기울기
      • normal (기본값) 기울기 없음
      • italic / oblique 기울어진 글자
    • [font-weight] 글자의 두께(가중치)
      • normal, 400 기본 두께 (기본 값)
      • bold, 700 두껍게
      • 100~900 100단위의 숫자9개, normal과 bold이외 두께
      • bolder 상위(부모)요소보다 더 두껍게 (잘 안씀)
      • lighter 상위(부모)요소보다 더 얇게 (잘 안씀)
    • [font-size] 글자의 크기
      • 16px 기본 크기
      • 단위 px, em, rem등 단위로 지정
    • [line-height] 한 줄의 높이, 행간과 유사
      • normal 브라우저의 기본 정의를 사용 (기본값)
      • [숫자] 요소의 글꼴 크기의 배수로 지정 (예: line-height: 2; // 2배)
      • 단위 px, em, rem등의 단위로 지정
    • [font-family] 글꼴(서체) 지정
      • font-family: 글꼴1, "글꼴2", ... 글꼴계열;
      • 띄어쓰기 등 특수 문자가 포함된 글꼴 이름은 큰 따옴표 안에 명시
      • 글꼴계열은 필수로 넣어야함.
  • 문자
    • [color] 글자의 색상
      • rgb(0, 0, 0)검정색
      • 색상: 기타 지정 가능한 색상
    • [text-align] 문자의 정렬 방식
      • left, right, center, justify..
    • [text-decoration] 문자의 장식(선)
      • none, underline, line-through, overline..
    • [text-indent] 문자 첫줄의 들여쓰기
      • 0(기본값) 들어쓰기 없음
      • 단위 px, em, rem등의 단위로 지정
  • 배경 (background)
    • 배경의 색상이나 이미지 추가할때 사용하는 속성
    • [background-color] 요소의 배경색상
      • transparent (기본값) 투명함
      • 색상
    • [background-image] 요소의 배경 이미지 삽입
      • none (기본값) 이미지 없음
      • url("경로") 이미지 경로
    • [background-repeat] 요소의 배경 이미지 반복
      • repeat (기본값) 이미지를 수직, 수평으로 반복, 바둑판식
      • repeat-x 수평 반복
      • repeat-y 수직 반복
      • no-repeat 반복 없음
    • [background-position] 요소의 배경 이미지 위치
      • 방향 top, bottom, left, right, center 방향
        • 예: background-position: top right;
      • 단위 px, em, rem등 단위로 지정 (x, y축의 값)
      • 0% 0% (기본값) 0%~100% 사이값 (중요도 x)
    • [background-size] 요소의 배경 이미지 크기
      • auto (기본값) 이미지의 실제 크기
      • 단위 px, em, rem등 단위로 지정
      • cover 비율을 유지, 요소의 더 넓은 너비에 맞춤
      • contain 비율을 유지, 요소의 더 짧은 너비에 맞춤
    • [background-attachment] 요소의 배경 이미지 스크롤 특성
      • scroll (기본값) 이미지가 요소를 따라서 같이 스크롤
      • fixed 이미지가 뷰포트에 고정, 스크롤 x
        • Parallax (페럴렉스)에 활용
      • local 요소 내 스크롤 시 이미지가 같이 스크롤(중요도 x)
  • 배치 
    • [position] 요소의 위치 지정할때의 기준, 음수 사용 가능
    • 요소의 위치를 지정할때는 기준을 먼저 설정해야한다.
      • [static] (기본값) 기준 없음 (배치를 할수 없는 상태)
      • [relative] 요소 자신을 기준 (기존 위치가 시각적으로만 안보이는것일 뿐 실제 존재하고 있음// 거의 사용되지 않음)
      • [absolute] 위치 상 부모 요소를 기준
        • 위치상 부[모 요소로 지정한 후 사용해야 요소가 정상적으로 배치가 됨 (코드 position: relative;)
      • [fixed] 뷰포트(브라우저)를 기준
      • [sticky] 스크롤 영역 기준 (중요도 x)
      • 요소의 각 방향별 거리지정 속성: top, bottom, left, right, z-index(쌓인 순서)
        • auto (기본값)브라우저가 계산
        • 단위 px, em, rem
    • 요소 쌓임 순서(statck order)
      • 어떤 요소가 사용자와 더 가깝게 있는지(위에 쌓이는지) 결정
        • 1. 요소에 position 속성의 값이 있는 경우 위에 쌓임. (기본값 static 제외)
        • 2. 1번 조건이 같은 경우, z-index 속성의 숫자 값이 높을 수록 위에 쌓임
        • 1번과 2번 조건까지 같은 경우, HTML의 다음 구조일 수록 위에 쌓임
    • [z-index] 요소 쌓임 순서를 지정
      • auto (기본값) 부모 요소와 동일한 쌓임 정도 (0이라고 생각하면됨)
      • 숫자 숫자가 높을 수록 위에 쌓임 (음수 -1정도까지 쓸수 있음)
    • 요소의 display가 변경됨
      • position속성의 값으로 absolute, fixed가 지정된 요소는, display 속성이 block으로 변경됨. 
  • 플렉스(정렬) 
    • 기본 정렬은 수직 (위->아래)정렬이며, 수평(왼->오)정렬로 변경할때, 부모요소에 display:flex를 사용.
    • flex로 지정하면, flex container(부모)과 flex items(자식요소)가 생성된다. 두 요소에 적용하는 속성이 다르다.
    • x축: 주축, main-axis, y축: 교차 축, cross-axis
    • 플렉스(정렬) Container
      • display
        • flex container의 화면출력(보여짐)특성
          • [flex] 블록요소와 같이 flex container 정의
            • 예:display: flex;
          • inline-flex 인라인 요소와 같이 flex container 정의
      • flex-flow, flex-direction, flex-wrap
        • [flex-direction] 주 축(Main-axis)을 설정 (예: 표(table))
          • [row] (기본값) 행 축 (좌->우)
          • [row-reverse] 행 축 (우->좌)
          • [column] 열 축 (위->아래) (중요도x)
          • [column-reverse] 열 축 (아래 -> 위) (중요도x)
        • [flex-wrap] flex items 묶음(줄 바꿈) 여부
          • [nowrap] (기본값) 묶음(줄 바꿈) 없음
          • [wrap] 여러줄로 묶음
          • [wrap-reverse] wrap의 반대 방향으로 묶음
      • justify-content
        • 주 축의 정렬 방법/ 수평정렬시
        • [flex-start](기본값) flex items를 시작점으로 정렬 (수평정렬시 왼쪽정렬)
        • [flex-end] flex items를 끝점으로 정렬 (수평정렬시 오른쪽정렬)
        • [center] flex items를 가운데 정렬
        • [space-between](중요도x) 각 flex item 사이를 균등하게 정렬
        • [space-around](중요도x) 각 flex item의 외부 여백을 균등하게 정렬
      • align-content 
        • 교차 축의 '여러 줄' 정렬 방법 / 수직정렬시
        • 조건: flex-wrap:wrap; 이여야 하고 items가 2줄 이상이여야 하고 정렬이 가능한 여백이 있어야 작동함
        • [stretch](기본값) flex items를 시작점으로 정렬
        • [flex-start] flex items를 시작점으로 정렬
        • [flex-end] flex items를 끝점으로 정렬
        • [center] flex items를 가운데 정렬
        • [space-between](중요도x) 각 flex item 사이를 균등하게 정렬
        • [space-around](중요도x) 각 flex item의 외부 여백을 균등하게 정렬
      • align-items (활용도 높음)
        • 교차 축의 '한 줄' 정렬 방법
        • [stretch](기본값) flex items를 교차 축으로 늘림
        • [flex-start] flex items를 시작점으로 정렬
        • [flex-end] flex items를 끝점으로 정렬
        • [center] flex items를 가운데 정렬
        • [baseline] flex items를 각 줄의 문자 기준선에 정렬 (중요도x)
    • 플렉스(정렬) Items
      • order
        • flex item의 순서, 이 순서를 임의로 변경 가능함
        • [0] (기본값) 순서 없음
        • [숫자] 숫자가 작을 수록 먼저, 음수 가능
      • flex, flex-grow, flex-shrink, flex-basis
        • [flex-grow]
          • flex item의 증가 너비 비율 (빈 공간을 나눠 그 비율로 나눔)
          • [0] (기본값) 증가 비율 없음
          • [숫자] 증가 비율
        • [flex-shrink]
          • flex item의 감소 너비 비율
          • [1] flex container 너비에 따라 감소 비율 적용
          • [숫자] 감소 비율
        • [flex-basis] 
          • flex item의 공간 배분 전 기본 너비
          • [auto](기본값) 요소의 content너비
          • [단위] px, em, rem등 단위로 지정
      • align-self
  • 전환효과
    • transition 요소의 전환(시작과 끝)효과를 지정하는 단축속성
    • 포멧: transition 속성명 지속시간 타이밍함수 대기시간;
      • transition-property 속성명
        • 전환 효과를 사용할 속성의 이름을 지정
        • [all] (기본값) 모든 속성에 적용
        • [속성이름] 전환 효과를 사용할 속성 이름 명시
      • transition-duration 지속시간(필수)
        • 전환 효과의 지속시간을 지정
        • [0s] 전환 효과 없음
        • [시간] 지속시간(s)을 지정
      • transition-timing-function 타이밍함수
        • 전환 효과의 타이밍(Easing)함수를 지정
        • Easing functions (Easing 함수 치트시트 , tweenmax easing , Easing functions mdn 검색 또는 웹사이트 참고)
        • [ease] (기본값) 느리게-빠르게-느리게 (cubic-bezier(0.25, 0.1, 0.25, 1))
        • [linear] 일정하게 (cubic-bezier(0, 0, 1, 1))
        • [ease-in] 빠르게-느리게 (cubic-bezier(0.42, 0, 1, 1))
        • [ease-out] 느리게-빠르게 (cubic-bezier(0, 0, 0.58, 1))
        • [ease-in-out] 느리게-빠르게-느리게 (cubic-bezier(0.42, 0, 0.58, 1))
        • [cubic-bezier(n,n,n,n) 자신만의 값을 정의 (0~1) (중요도x)
        • steps(n) n번 분할된 애니메이션 (중요도x)
      • transition-delay 대기시간;
        • 전환 효과가 몇초뒤에 시작할지 대기시간을 지정
        • [0s] 대기시간 없음
        • [시간] 대기시간(s)을 지정
    • 단축속성
      • transition: 1s .5s; (1초 지속시간, .5초 대기시간)
  • 변환
    • transform: 변환함수1 변환함수2 ...;
    • transform: 원근법 이동 크기 회전 기울임
    • 2D 변환 함수
      • 단위: px
        • translate(x,y) 이동(x축, y축)
        • translateX(x) 이동(x축)
        • translateY(y) 이동(y축)
      • 단위: 없음
        • scale(x,y) 크기(x축, y축)
        • scaleX(x) 크기(x축) (중요도x)
        • scaleY(y) 크기(y축) (중요도x)
      • 단위:deg
        • rotate(degree) 회전(각도)
        • skew(x,y) 기울임(x축, y축) (중요도x)
        • skewX(x) 기울임(x축)
        • skewY(y) 기울임(y축)
      • matrix(n,n,n,n,n,n) 2차원 변환효과 (중요도x)
    • 3D 변환 함수
      • 단위: px
        • translateZ(z) 이동(z축) (중요도x)
        • translate3d(x,y,z) 이동(x축, y축, z축) (중요도x)
      • perspective(n) 원근법(거리), 단위 px
      • 단위: 없음(배수)
        • scaleZ(z) 크기(z축) (중요도x)
        • scale3d(x, y, z) 크기(x축, y축, z축) (중요도x)
      • 단위:deg
        • rotateX(x) 회전(x축)
        • rotateY(y) 회전(y축)
        • rotateZ(z) 회전(z축) (중요도x)
        • rotate3d(x,y,z,a) 회전(x축, y축, z축, 각도) (중요도x)
      • matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) 3차원 변환효과 (중요도x) - 실제 브라우저가 쓰는 방법
      • 단축속성
        • transform: perspective(500px) rotateX(45deg); 원근법 함수는 제일 앞에 작성해야함
    • perspective
      • 하위 요소를 관찰하는 원근 거리를 지정하는 속성
      • 단위: px등 단위로 지정
      • perspective 속성과 함수의 차이점
        • [속성] perspective:500px; , 관찰 대상의 부모에 적용, 기준점 설정: perspective-origin
        • [함수] transform: perspective(500px);, 관찰 대상에 적용, transform-origin
    • backface-visibility
      • 3D변환으로 회전된 요소의 뒷면 숨김 여부
      • [visible] (기본값) 뒷면 보임
      • [hidden] 뒷면 숨김
#패스트캠퍼스 #내일배움카드 #국비지원 #K디지털기초역량훈련 #바이트디그리 #react강의

2022년 6월 16일 목요일

[패스트캠퍼스] react 강의 학습일지 - 1주차

React&Redux로 시작하는 웹프로그래밍_1주차

HTML/CSS/JS로 만드는 스타벅스 웹사이트



1_개요

  • HTML,CSS 그리고 JS
    • HTML = 구조, CSS = 스타일, JS = 동적부분 담당
    • HTML과 CSS는 '레이아웃 중심' 사고 // JS는 '데이터 중심' 사고
  • 웹앱의 동작원리
  • 웹 표준과 브라우저
    • 웹표준 기술(WEB STANDARD) = W3C
    • 크로스 브라우징 (CROSS BROWSING) : 다양한 브라우저에서 사용자들에게 동일한 화면과 동작을 줄 수 있도록 제작하는 기술, 방법. 다양한 브라우저들의 다른 웹표준 해석으로 인한 문제점들을 '크로스 브라우징 이슈'라고 함.
    • 브라우저의 구조
      • 창 > 탭, 주소창, 뷰포트(VIEWPORT)
    • 렌더링(RENDERING)이란, 브라우저의 뷰포트에 웹사이트를 출력하는 동작을 뜻함
  • 웹에서 사용하는 이미지
    • PIXEL / VECTOR
    • JPG, GIF, WEBP (하위 호환성을 체크할 것)
    • Material-Design (벡터이미지): 고품질 디지털 경험을 구축할 수 있도록 구글에서 만든 디자인 시스템
  • 특수 기호

  • 오픈소스 라이선스
    • 오픈소스도 라이센스(저작권) 체크하기 
    • 개인적/상업적 이용가능한 라이센스
      • apache license 
      • MIT license
      • BSD license
      • Beer ware

2_VScode

  • 설치 및 실행
    • Visual Studio Code 설치하기 (IDE 아님!)
  • 파일 생성과 삭제
    • 프로젝트 (폴더) > 파일
    • 폴더(프로젝트) 만들기 : 내컴 원하는 위치에 폴더 생성하기
    • 파일명은 소문자로 작성하기
  • 한글화
  • 정리된 코드 만들기(Beautify)
    • 코드를 보기 쉽게 정렬할때 사용하는 플러그인
    • 설치
    • 바로가기 키 등록하기 
      • 커멘드 복사하기 (Feature Contributions > Commands)
      • File> Preferences > keyboard shortcuts (or Shift + Ctrl + p > shortcuts)

      • 단축키 삽입할 커멘드를 더블클릭 (파일없는걸로!) 후 단축키 삽입하기
  • 태그 이름을 한 번에 변경(Auto Rename Tag
  • 브라우저에 출력(Live Server)
  • 단축키 & 공백2로 만들기
    • 단축키
  • 공백 2로 만들기
  • 프로젝트 관리
    • 프로젝트
      • 루트 파일 - index.html
      • css 폴더 - main.css
      • js 폴더 - main.js
      • images 폴더 - logo.png

3_무작정시작하기
  • Doctype(DTD)
    • <!DOCTYPE html> : 문서의 HTML 버전을 지정하는 테그
  • HTML, HEAD, BODY
    • <html> : 문서의 전체 범위
    • <head> : 문서의 정보를 나타내는 범위
      • 웹페이지에 보이지않는 정보(제목, 설명, 파일위치, css 등..)의 테그가 가 담김
    • <body> : 문서의 구조를 나타내는 범위
      • 웹페이지에 보여지는 구조(헤더, 푸터, 내비, 메뉴, 버튼, 이미지 등..) 를 나타내는 테그가 담김
  • CSS,JS 연결하기
    • css 연결 코드 : <link rel="stylesheet" href="./main.css">
    • js 연결 코드 : <script src="./main.js"></script>
    • js 연결확인하기: 크롬에서 F12 (개발자 도구)누른후 console에서 확인하기
  • 정보를 의미하는 태그 살펴보기 (<head>안의 태그)
    • <title> : HTML문서의 제목 (웹 브라우저 탭에 표시)
    • <link> : 외부 문서를 연결할때 사용 (대부분 css파일)
    • <style> : html문서에 css를 직접 작성하는 경우
    • <script> : 외부에 있는 js파일을 가져올때 또는 js를 html 문서에 직접 작성하는 경우
    • <meta> : html문서의 여러 메타 정보(제작자, 키워드 등)를 검색엔진이나 브라우저에 제공
      • <meta charset="UTP-8" /> 문자인코딩 방식
      • <meta name="viewport" content=".."> viewport는 모바일에만 해당.
  • 화면에 이미지 출력하기
    • <img src="주소" alt="대체 문자">
  • 상태 경로와 절대 경로
    • 상대경로 
      • 주변 ./ : 생략가능
        • 작성하는 파일의 같은 단의 파일들을 갖고올때 사용
      • 상위 ../ : 상위폴더
        • 작성하는 파일의 상위 단의 파일들을 갖고올때 사용
    • 절대경로
      • http (https) : 원격
      • / (//) : 최상위 경로(root)
    • 개발서버 (라이브 서버 플러그인)
      • http://localhost:5500
  • 페이지를 나누고 연결(링크)하기
    • 라우터 기능 (추후 공부할 예정)
  • 모든 파일 공백 크기 설정
    • VS code 환경설정 변경하기
      • Setting
  • 개발자 도구 사용하기
    • 크롬 -> F12
  • Codepen.io
    • 코드를 테스트 할 때 유용한 웹사이트
  • 브라우저 스타일 초기화
    • 브라우저마다 스타일이 다르기에 완전 초기화 하여 사용하는것을 추천
    • Codepen.io에서 초기화 하기

    • reset.css cdn을 이용하기
      • jsdelivr.com에서 제공하는 링크를 활용하는것을 추천
      • reset.css 는 원본, reset.min.css 용량압축버전을 사용 권장
      • Copy HTML하여 index.html에 넣어주는데, 이때 내가 사용하는 main.css 상단에 넣어주어야한다.
      • <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reset-css@5.0.1/reset.min.css">
        <link rel="stylesheet" href="main.css">
  • Emmet
    • 코드를 자동완성해주는 기능
    • 사용법: 태그명 + tab
    • Emmet은 CSS선택자를 활용해 사용하는 기능
      • *: 곱하기
      • {} : 내용 삽입
      • $ : 순서대로 숫자를 입력

4_HTML
  • 기본 문법
    • 요소 : <태그>내용</태그>
  • 부모와 자식 관계의 이해
    • <태그><태그><태그>내용</태그></태그></태그>
    • <상위요소>,<부모요소>,<자식요소>
  • 빈 태그
    • HTML5 : <태그 /> 또는 <태그> 모두 허용
    • 필수 속성과 값을 모두 입력해주어야 요소로써의 역할을 함.
  • 글자와 상자
    • 인라인 (inline) : 글자를 만들기 위한 요소들, 
      • 특징1: 요소가 수평(왼쪽에서 오른쪽)으로 쌓이고 요소를 엔터쳐 한줄 내리면 띄어쓰기가 사이에 삽입됨, 안내리면 붙어나옴!
      • 특징2: 자신이 포함한 콘텐츠(글자) 크기만큼 자동으로 줄어드는 성질이 있음
      • 특징3: 글자는 위/아래 여백사용불가, 좌/우 여백은 가능
      • 특징4: 인라인요소 안에 블록요소는 넣을 수 없다 (예외 있긴 함)
      • <Span>대표적 인라인 요소, 콘텐츠 영역을 설정하는 용도 (아무것도 안보임)
    • 블록 (block)요소 : 상자(레이아웃)를 만들기 위한 요소들
      • 특징1: 요소가 수직(위에서 아래로) 쌓임
      • 특징2: 부모요소의 크기만큼 자동으로 늘어남 (가로너비만!) 
      • 특징3: 여백은 모두 추가 가능
      • 특징4: 블록요소 안에는 블록요소, 인라인요소 모두 넣을 수 있다.
      • <div> 대표적 블록 요소, 콘텐츠 영역을 구분하는 용도 (아무것도 보이지 않음)
  • 핵심 요소(element) 정리
    • <div>: 블록요소, (division) 특별한 의미가 없고 구분(영역)을 위한 요소이다.
    • <h1~6>: 블록요소, (heading) 제목(목차)를 의미하는 요소, 숫자가 작을수록 더 중요한 제목을 정의
    • <p>: 블록요소, (paragraph) 문장을 의미하는 요소 (* div로 대신해도 됨)
    • <img>: (예외: 문자가아님)인라인요소, (image) 이미지를 삽입하는 요소
    • <ul><li>: 블록요소, (unordered list, list item), 순서가 필요없는 목록의 집합과 목록내의 항목들
    • <a> : 인라인요소, (Anchor), 링크를 지정하는 요소
    • <span>: 인라인요소, 특별한 의미가 없는 구분(영역)을 위한 요소
    • <br>: 인라인요소, (Break), 줄바꿈 태그
    • <input>inline-block요소, 사용자에게 데이터를 입력받는 요소  <input type="text" value="미리작성">
      <input type="text" placeholder="힌트">
      <input type="text/checkbox/radio" disabled>
    • <label>: 인라인요소, 라벨 가능 요소(input)의 제목
    • <table>: 테이블요소(블록요소의 한부분), 행(Row)과 열(column)의 집합
  • 주석
    • <!--메모-->
    • 단축키: Ctrl+/
  • 전역 속성
    • 요소는 자신이 사용할수 있는 속성이 지정되어 있으나, 전역 속성은 전체 영역에서 모두 사용할 수 있는 속성이다.  (예: title, style, .class, #id, data-이름)
5_CSS 개요
  • 기본 문법, 주석
    • 선택자{속성: 값;}
    • /* CSS 주석 */
  • 선언 방식
    • 내장 방식
      • html파일에서 <head>안에 <style></style>의 내용으로 스타일을 작성하는 방식
    • 인라인 방식
      • html파일에서 요소의 style속성에 직접 스타일을 작성하는 방식(선택자 없음)
      • <div style="color: red;"></div>
    • 링크 방식
      • css/main.css파일에 css를 작성 (병렬방식)
      • <link rel="stylesheet" href="./css/main.css">
    • @import 방식
      • html파일에 <link>로 main.css연결 후 main.css에 또다른 외부에 있는 box.css파일을 가져와서 연결하는 방법, 단점이자 장점은 모두 로딩된 이후 디스플레이가됨 (직렬연결)
      • @import url("./box.css");
      • 많이 사용되지는 않음
  • 선택자_기본
    • [*] 전체 선택자 (Universal Selector)
      • 모든 요소를 선택 (예: * {..} )
    • [태그] 태그 선택자 (Type selector)
      • 태그이름에 해당하는 요소를 선택 (예: li {..} )
    • [.] 클래스 선택자 (Class Selector)
      • HTML class속성 값에 해당하는 요소 선택 (예: .orange {..} )
      • 중복이 가능함
    • [#] 아이디 선택자 (ID Selector)
      • HTML id속성의 값에 해당하는 요소 선택 (예: #orange {..} )
      • id속성은 전역속성임
  • 선택자_복합
    • 해석을 뒤에서부터 해야 찾기 편함!
    • 일치 선택자 (Basic Combinator)
      • 선택자 2개를 동시에 만족하는 요소 선택 (예: span.orange {..} - 스펜테그에 오렌지 클래스 갖고있는 모든 요소 선택)
    • [>] 자식 선택자 (Child Combinator)
      • 선택자의 자식 요소 선택 (예: ul > .orange {..} - 클래스가 오렌지를 갖고있는 요소인데, ul테그의 자식인 요소 )
    • [띄어쓰기] 하위/후손 선택자 (Descendant combinator)
      • 선택자의 하위 요소 선택 (예: div .orange {..} - div의 후손중 오렌지 클래스를 갖고 있는 모든 요소 )
    • [+] 인접 형제 선택자 (Adjacent sibling combinator)
      • 선택자의 다음 형제 요소 하나를 선택 (예: .orange + li {..} - 오렌지라는 클래스를 갖고 있는 li의 다음 li태그 )
  • 선택자_가상 클래스 (Pseudo-classes)
    • 간단한 동작을 주는 가상 클래스 (기본적인 움직임은 js로 주는게 맞음)와 일반 가상 클래스가 있음, 단독으로 사용할 수 는 없고 복합 선택자와 함께 쓰임
    • [동작] :hover
      • 선택자 요소에 마우스 커서가 올라가 있는 동안 선택
    • [동작] :active
      • 선택자 요소에 마우스를 클릭하고 있는 동안 선택
    • [동작] :focus
      • 선택자 요소가 포커스(활성화)되면 선택
      • focus를 적용할 수 있는 요소는 HTML대화형 콘텐츠 (input, a, button, label, select등..)가 해당됨. 
      • tabindex 속성을 통해 focus가 될수 있는 요소를 만들수도 있음 (예: <div class="box" tabindex-"-1"></div> *값은 -1을 넣는다, 한페이지에서 한 요소만 사용 가능
    • :first-child
      • 선택자가 형제 요소중 첫째라면 선택
    • :last-child
      • 선택자가 형제 요소중 막내라면 선택
    • :nth-child(n)
      • 선택자가 형제 요소중 (n)째라면 선택 (내가 선택할 수 있음)
      • 예: .coffee *:nth-child(2){..} 
      • *:nth-child(2n){..}  (n은 0부터 시작 zero-based numbering! 즉 2의 배수를 선택해라. 2n = 2,4,6,8..)
      • *:nth-child(2n+1) 홀수를 선택해라, 2n+1 = 1,3,5,7...
      • *:nth-child(n+2) 2번째 요소부터 선택하라, n+2 = 2,3,4,5...
    • :not(ABC) 부정 선택자 (Negation) NOT
      • .coffee *:not(span) (커피 클래스안에 span이 아닌 요소 모두 선택)
  • 선택자_가상요소 (Pseudo-Elements)
    • ::before (inline요소, content라는 속성은 필수 값)
      • 선택자 요소의 내부 앞에 내용(content)이 삽입되어 화면에 출력됨
      • 예: .box::before { content: "앞!"; }
    • ::after (inline요소, content라는 속성은 필수 값)
      • 선택자 요소의 내부 뒤에 내용(content)이 삽입되어 화면에 출력됨
      • 예: .box::after { content: "뒤!"; }
  • 선택자_속성 (Attribute)
    • 속성을 포함한 요소 선택, 특이한 속성에 사용하는게 유용
    • [속성]{..} 으로 사용함 ( 예: [disabled] {..} )
    • [속성="값"] (예: [type="password"]{..} )
  • 스타일 상속
    • 스타일도 하위 요소로 상속이 된다. 
    • 상속되는 CSS속성들
      • 대부분의 글자/문자 관련 속성들이 속성된다. (예: font-style, font-weight, font-size, line-height, font-family, color, text-align..등..)
    • 강제 상속
      • 자동으로 상속되지는 않지만, 강제적으로 상속될 수 있도록 함
      • height: inherit; (부모 값을 상속받아 사용해라)
  • 선택자 우선순위(중요)
    • 같은 요소가 여러번 선언했을때, 어떤 선언의 CSS속성을 우선적으로 적용되는지에 대한 순서를 정하는 규칙이 있음 
      • 점수가 높은 선언이 우선되고 점수가 같으면 가작 마지막에 해석된 선언이 우선됨. (명시도의 중요도 순의, 선언순서라고도 함)
      • 점수가 높은 순서:  !important(무한값) > 인라인선언(html)(1000점) > id선택자(100점) > class선택자/가상클래스선택자(10점) > 태그 선택자/가상요소선택자(1점) > 전체선택자(0점) > body태그 선택자(상속되는 구조이지만 점수가 없다)
        • 예: .list li.item {..} (21점, class선택자 2개, 태그 선택자 1개)
        • 예: :not(.box){..} (10점, class선택자1개, 부정선택자의 점수는 계산되지 않음)
      • !important는 극히 일부분을 제외하고 사용하지 않음.
      • 인라인방식으로 스타일을 명시하는것도 제외할것 (수정이 안됨)


#패스트캠퍼스 #내일배움카드 #국비지원 #K디지털기초역량훈련 #바이트디그리 #react강의

2019년 3월 13일 수요일

[AI] 일러스트 브러쉬 - 수채화

다운로드: https://www.youtube.com/watch?v=PKPJgLPRT8E&t=205s

1. File > Place > 이미지 불러오기



2. 화면에 그림 불러서, 작게 조절 
작을수록 브러쉬 효과 좋음

3. object > Rasterize


4. Brushes > New brush


3. Art Brush 선택



5. 결과




2019년 3월 12일 화요일

[AI] 일러스트 브러쉬 설정

[AI] 일러스트 브러쉬 설정

브러쉬 타입: 필압에 따라 달라지는 브러쉬

1. 새 브러쉬 만들기 > Calligraphic Brush


2. 설정

3. 결과


예제: https://www.youtube.com/watch?v=DEBI2fcDgSw

2018년 3월 21일 수요일

[AI] 일러스트에서 사진을 벡터로 바꾸기

1. 이미지 열기
2. image Trace에서 High Fidelity Photo 선택후 Expand
3. object 에서 ungroup

이미지가 알아서 벡터로 바뀜