2020년 01월 06일
이전 프로젝트에서는 webpack을 eject하여 CSS module을 사용했지만, 이번 프로젝트에서는 eject 작업을 하지 않고 진행하기 때문에 방법을 찾아보았다.
Module을 적용하지 않는다면, 최상단 App.jsx 또는 컴포넌트에서 scss 파일을 호출합니다.
// index.tsx or App.tsx
import "./index.scss";
또한 클래스명이 기존 html처럼 class=”container” 형태로 들어가기 때문에 css/scss 파일을 컴포넌트별로 생성했음에도 스타일 명이 충돌하는 불편함이 있습니다.
css/scss 파일명을 module.css, module.scss로 변경합니다.
예를들어 index.scss는 index.module.scss
가 됩니다.
이후 컴포넌트에서는 다음과 같이 사용합니다.
import React from "react";
import styles from "./index.module.scss";
...
return (
<div id={styles.container}>
<div className={styles.messageWrap}>
</div>
</div>
)
...
scss는 기존처럼 사용하시면 되며, id, class
의 컴파일 결과를 확인하시면 scss 파일의 이름 혹은 폴더 이름으로 유니크하게 생성된 것을 확인할 수 있습니다.
아래는 컴파일 결과의 예시입니다.
// components/Pages/index.module.scss
#loginPage {
display: block;
}
// components/Pages/LoginPage.tsx
import styles from "./index.module.scss"
...
return (
<div id={styles.loginPage}>
);
=> <div class="Pages_LoginPage__2Jrev" />
2020년 01월 08일
HTML에서 세로 정렬은 다들 까다로워하는 부분입니다. `vertical-align: middle;`으로 알고 사용하지만, 특정한 환경(Table 등)이 아니라면 세로 정렬이 되지 않는 문제 때문입니다. 이번 글에서는 `CSS flex`와 `align-items`를 사용하여 쉽게 세로정렬하는 방법을 알아봅니다. ## 세로/가로 가운데 정렬 ```html Login ``` 위 예제에서 로그인 페이지 내에 내용을 가로/세로 정렬을 진행합니다. ```scss .login-page { display: flex; // flex 사용 height: 100vh; // 세로 높이를 화면 크기에 맞춤 align-items: center; // 세로 정렬 justify-content: center; // 가운데 정렬( 아래서 추가 설명 ) margin: 0 auto; // 가운데 정렬 } ``` > justify-content 속성은 flex-direction 속성의 `진행 축` 정렬에 영향을 받는데, `flex-direction: row | row-reverse` 인 경우 `x축 정렬`을 제어합니다. `flex-direction: column | column-reverse` 인 경우 `y축 정렬`을 제어합니다.
2020년 01월 07일
스코프(Scope, 유효범위)에 대해서는 여러분들은 이미 사용하고 있을 것 입니다. 다만, 정확한 정의와 상세한 정보에 대해서 글을 통해 상세하게 알고 넘어가겠습니다. ## 스코프란? 특정한 변수(identifier)에 접근이 가능한가에 대한 규칙(범위)입니다. ```js var x = "global scope"; function foo() { var x = "function scope"; console.log(x); } foo(); // function scope console.log(x); // global scope ``` 위 예제에서 함수 foo 내 선언된 변수 x에 대해서는 foo 내에서만 참조가 가능하고 외부에서는 참조가 불가능하다. 이와같은 규칙들을 스코프라고 합니다. ## 스코프의 구분 스코프는 전역 스코프와 지역 스코프로 나눠집니다. #### 전역 스코프(Global Scope) 전역 변수(Global variable), 코드 어디에서든 참조할 수 있습니다. var로 선언한 전역 변수는 `전역 객체(Global Object) window`의 프로퍼티가 됩니다. #### 지역 스코프 (Local scope or Function-level scope) 지역 변수(Local variable), 지역(함수) 내에서 선언되어 함수 내에서 자신과 하위 함수에서만 참조 가능합니다. ## 자바스크립트 스코프 특징 자바스크립트는 `함수 레벨 스코프(function-level scope)`(함수 코드 블록 내에서 선언된 변수는 함수 코드 블록 내에서만 유효)를 따르고 있습니다. ```js var x =...
2019년 12월 23일
자바스크립트는 프로토타입 기반 객체지향 언어라고 불립니다. 그리고 여러분들은 한번 쯤은 __proto__라는 Object를 본 적이 있을 것이고 그냥 지나치는 경우가 대다수일 것 입니다. 그러한 __proto__가 무엇이고 자바스크립트가 prototype 기반 언어라는 이유를 알아보도록 하겠습니다. Prototype 자바스크립트에서 모든 객체는 부모(객체 원형)와 연결되어 있습니다. 그리고 객체 지향에서 상속 개념과 동일하게 부모의 프로퍼티와 메소드를 상속받아 사용할 수 있게 됩니다. 여기서 부모 객체를 Prototype 객체 또는 Prototype이라고 부릅니다. 간단한 예제를 통해 알아봅니다. var item = { key: "key", }; console.log(item); // { // key: "key" // __proto__: { // item 객체의 Prototype(부모 객체) 정보 // constructor: ƒ Object() // hasOwnProperty: ƒ hasOwnProperty() // toString: ƒ toString() // valueOf: ƒ valueOf() // ... // } // } console.log(item.hasOwnProperty("key")); // true item 객체를 출력하여 __proto__ 프로퍼티를 열어보면 자바스크립트의 Object 객체가 부모이며, item 객체에서 선언하지 않은 hasOwnProperty 메소드를 상속받아 사용이 가능합니다. proto ? 위에서 생각할 수 있는 부분은 ‘아 __proto__ 프로퍼티를 통하여 부모 객체에 접근할 수 있구나’라는 것을 알...