📁
til
  • TIL(Today I Learned)
  • javascript
    • value-number-string-boolean-null-undefined
    • primitive-reference
    • Hoisting
    • Prototypes in Javascript
    • this
    • prototype
    • 콜백함수 (Callback function)
    • 함수의 호출
    • 자료구조 new keyword
    • closure
    • Promise
    • event-loop
    • array-object
    • 객체
    • Arguments
    • higher order function
    • operators-function-control-flow
    • 객체 생성 패턴 3가지
    • Javascript scopes
    • Functional Programming
    • Design Patterns
    • 데이터 타입
    • Object 객체
    • 표준 내장 객체의 확장
    • 참조
    • 함수
    • 상속(Inheritance)
    • this - 'this'를 사용하는 해당 함수를 '어떻게' 실행하느냐에 따른 4가지 this 정의
    • 전역객체(Global object)
    • 객체 지향 프로그래밍
    • The 'new' keyword - Object Creation in JavaScript
  • javascript-api
    • Number
      • Number.MAX_VALUE
      • Number.isInteger
      • Number.NEGATIVE_INFINITY
      • Number.isNaN()
      • Number.POSITIVE_INFINITY
      • Number.parseFloat
      • Number.EPSILON
      • number.toExponential
      • Number.MAX_SAFE_INTEGER
      • Number1 - 자연수, 정수, 10진수, 2진수, 부동소수점, 실수
      • Number.isSafeInteger()
      • Number.MIN_VALUE
      • Number.parseInt
      • Number.NaN
      • Number.isFinite()
      • Number.MIN_SAFE_INTEGER
      • toFixed
    • string.split
    • String.fromCodePoint
    • string.trimEnd
    • string.padStart
    • string.@@iterator
    • String.fromCharCode
    • string.toUpperCase
    • string.codePointAt
    • string.toLowerCase()
    • string.toString
    • string.includes
    • string.replace()
    • string.charAt
    • String.lastIndexOf
    • string.slice
    • string.search
    • string.padEnd
    • string.substring
    • string.length
    • string.trim
    • string.localeCompare
    • String.indexOf
    • string.endsWith
    • string.valueOf
    • String.raw
    • string.matchAll()
    • string.repeat
    • string.match
    • String.prototype
    • string.startsWith
    • string.charCodeAt
    • string.trimStart
    • string.concat
    • string.toLocaleUpperCase()
    • string.toLocaleLowerCase
    • String
  • learn-node
    • debugger
    • Tip
  • schema-design
    • Database Schema Design
    • Database Schema Design
  • react
    • LifeCycle
    • redux
    • Context API
    • 함수형 컴포넌트와 클래스, 어떤 차이가 존재할까?
    • Hooks과 useEffect 사용해 보기
    • Route
    • async wait 사용하기
    • Hooks API Reference
    • context
    • npm uninstall 하는법
    • test 만들기
  • tip
    • 클린코드
    • BxSlider로 텍스트 흐르는 효과 만들기
  • javascript30
    • Event Capture, Propagation, Bubbling and Once
    • Object and Arrays - Reference VS Copy
  • typescript
    • 우아한 타입스크립트 2부
    • The Basic Cheatsheet
    • TypeScript
    • Type Guards and Differnetiating Types
    • 우아한 타입스크립트
    • Generics
  • git-from-the-hell
    • git
    • init-status-add-commit-log-stage-repository
    • log-diff
    • 머지 후 branch 삭제하기
    • 지옥에서 온 Git
    • reset-revert
    • develop branch 를 pull 하고 싶을때
  • conference-and-seminar
    • 모던 프론트엔드 개발환경의 이해
  • fire-base
    • Firebase .gitignore
  • vanillacoding
    • Data Structures
    • Sorting Algorithms - part 1
    • Promise
    • class
    • 04.quiz
    • 07.event-loop
    • Design Patterns
    • OOP (Object Oriented Programming)
  • etc
    • 알고리즘 코드리뷰
    • 스스로 공부하는 법
    • 바닐라코딩 수강 후기
    • async 과제 후기 - 비동기, 동기, 클로저, 배열과 객체
    • 유용한 사이트
  • algorithm
    • The Supermarket Queue
    • Find the odd int
    • The Office III - Broken Photocopier
    • Directions Reduction
    • The Office II - Boredom Score
    • Divisible Sum Pairs
    • Codewars 이용자 솔루션 모음
    • Shortest Word
    • find key
    • Two Sum
    • Simple Pig Latin
  • Book
    • the essence of object-orientation
      • 타입과 추상화
      • 객체 지도
      • 이상한 나라의 객체
      • 추상화 기법
      • 05. 책임과 메시지
      • 07.함께 모으기
      • 04. 역할, 책임, 협력
      • 협력하는 객체들의 공동체
  • ecma-script2015
    • Object Literal Upgrades
    • default-parameter-template-literals-arrow-functions
    • spread-operator-rest-param
    • let-const-rest-parameter-spread-operator-destructuring
  • http
    • 웹 브라우저에 URL을 입력했을 때 어떻게 웹 페이지가 보여질까?
  • jest
    • toThrow(error?)
  • data-structures
    • Data Structures
  • express
    • express generator
    • CORS
  • css-flexible-box-layout
    • flex 해버렸지 뭐야
  • git
    • Git
  • mongodb
    • MongoDB
  • markdown
    • use-markdown
  • cmder
    • cmd 명령어 모음
  • debug
    • trackClicksEx function error
  • npm
    • NPM TOKEN 설정하기
  • storybook
    • Storybook
  • sort
    • Sorting Algorithms - part 1
  • javascript-koans
    • Javascript Koans 오답노트
  • rxjs
    • Rx.js
  • dom-elements
    • HTML Element
  • redux-toolkit
    • Redux Toolkit
  • github-actions
    • GitHub Actions
  • redux-middleware
    • redux middleware
  • rest
    • rest
  • css-rendering
    • 코드 스피츠 - CSS Rendering 1회차 2/2
    • 코드 스피츠 - CSS Rendering 1회차 1/2
  • you-dont-know-js
    • 타입
  • server
    • # shutdown local server
  • semantic-versioning
    • Semantic Versioning 2.0.0
Powered by GitBook
On this page
  • Graphics System
  • Fixed Number
  • Abstract Calculator
  • COMPONENTS
  • FRAMEWORK
  • Rendering System
  • CSS Specifications
  • Other Specifications
  • Normal Flow
  • BFC + IFC

Was this helpful?

  1. css-rendering

코드 스피츠 - CSS Rendering 1회차 1/2

Previous코드 스피츠 - CSS Rendering 1회차 2/2Nextyou-dont-know-js

Last updated 5 years ago

Was this helpful?

보고 정리한 내용

Graphics System

craphics라는건 점을 찍는 행위로 볼 수 있다. 점 찍는 방법

  • FIXED NUMBER

  • ABSTRACT CALCULATOR

  • COMPONENTS

  • FRAMEWORK

Fixed Number

고정된 숫자로 표현되어 있다.

x(left), y(top), width, height, color로 표현할 수 있다.

원시적인 방법

하지만 FIXED NUMBER 는 문제가 있다. 다양한 환경에 적용할 수 없다. 범용성을 가지는 craphics system을 만들려면 문제가 된다.

환경적인 요인

  • screen size

  • chrome size - 닫기버튼 스크롤바 같은것

  • hierapchy

이럴경우 숫자를 대신하는 메타포를 사용한다.

Abstract Calculator

%, left, block, inline, float

특정한 기준(부모,화면)으로 나타낸다. 환경을 인식해서 숫자로 나타낸다.

%는 공식이자 함수이다. 2단계를 거치게 된다.

COMPONENTS

html의 image tag를 예시로 들 수 있다. 컬러가 어디에 위치할지와 가로세로 사이즈까지 지정해 준다.

FRAMEWORK

태그 하나하나가 스타일이 먹혀져 있다. html체계자체를 framework로 볼 수 있다.

컴퓨터 사이언스는 항상 상대적이다. 고정적으로 생각하지 말라

Rendering System

어떠한 대상이 있으면 내가 원하는 모습으로 다시 그려내는 것을 말한다. 그림을 그리기위한 데이터를 어떻게 데이터로 바꿨는지에 대한 것

  • Geometry Calculate

    박스를 찾는다. 영역이 어떻게 나눠져 있는지를 먼저 계산한다. geometry를 계산하는 것을 reflow라고 한다.

  • Fragment Fill

    색칠을 한다. 채우는 행위를 repainting이라고 한다.

CSS Specifications

css 스펙 보는법

어떻게 하면 고정값으로 나타내지 않고 계산된 체계로 그래픽을 표현할것인지 영역을 어떻게 나눌것인지 어떻게 칠할것인지 boder-radius는 영역을 깎는것일까? 아닐까? 깎는게 맞다. 확인하는법은 border-radius를 준 다음 background-color를 준다.

  • CSS LEVEL 1 A4용지 한장 정도의 내용

  • CSS LEVEL 2 + MODULE

  • CSS LEVEL 2.1

    Include level 3 module - css3는 level2.1에 포함된 level3를 css3라 한다. syntax3, cascade3, color3, selectors3, background3, values3, text3, text decor 3, fonts 3, ui 3 레벨 업 중..

  • MODULE LEVEL

    transforms1, compositing1, effects1, masking1, flexbox1, grid1 레벨 업 중..

Other Specifications

그 전에는 w3c 권고안에 들어야지만 사용가능 했다. 통제하려고 하였다. 현재는 파워가 많이 없어졌다.

  • WICG Web Platform Incubator Community Group (크롬에 먼저 반영된다.)

  • RICG Responsive Issues Community Group

Normal Flow

CSS2.1 Visual Formatting Model

Positioning Schemes & Normal Flow

Position이란 어떤 Geometry의 left와 top을 결정하는 추상적인 체계이다.

static | relative | absolute | fixed | inherit

이 모든걸 이제 계산 공식으로 봐야한다.

Normal Flow는 static, relative 가 해당된다.

Normal Flow의 3가지 계산 방식이 있다.

  • Block Fomatting Contexts (BFC)

  • Inline Formatting Contexts (IFC)

  • Relative Formatting Contexts (RFC)

그럼 Block이란?

부모의 가로 길이를 가득 채운 한 줄

X는 무조건 부모의 값이기 때문에 Y값만 생각하면 된다.

BFC

  • 두번째 블록의 Y값은 첫번째 블록 요소 높이값이고 세번째 블록의 Y값은 첫번째 블록과 두번째 블록을 합친 값이이다.

  • 안에 있는 블록요소의 height값이 내 height값

IFC

  • X값은 내 앞의 요소가 얼마나 차지했냐가 내 X의 값이다.

  • 앞의 요소들의 X의 값들의 합이 부모 width값을 넘으면 밑으로 내려간다.

  • 내 앞에 있는 요소중 가장 height가 큰 값이 line height가 되어 line height값만큼 y가 내려간다. x는 0

base line

인라인을 구성하는 한줄의 요소들 중 가장 큰 애가 있으면 걔를 기준으로 위로 맞춘다. 중간, 밑으로 맞춤

다음 블록요소가 온다면 IFC가 종료되고 BFC가 온다.

<div style="width:500px;background:red">&nbsp;</div>

이런 블록요소가 있다면 bfc로 인하여 부모의 가로값을 전체를 차지하고 있지만, fragment 영역이 500px인거다. 😳

<div style="width:200px">
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</div>

왜 a는 width 200px에 맞추어 안 끊어지는 걸까? 공백문자가 없는 a는 IFC로 인식하기 때문이다.

혹은 word-break 속성을 줘야한다. 하나하나 문자를 inline으로 생각하라. 대신 엄청 느려진다. geometry 영역이 엄청 늘어나게 되는거다.😳wow..

BFC + IFC

<div style="width:500px">
  Hello
  <span>
    World
    <div style="background:red">&nbsp;</div>
  </span>
  !!
</div>

rendering system과 dom의 구조는 무관하다.

rendering는 BFC + IFC로 그린다.

BFC시작 -> IFC 시작 -> BFC시작 , BFC 끝 -> IFC 끝 -> BFC 끝

RFC

static으로 그렸는데 상대적으로 위치를 이동 시킬 수 있다. 그래서 static으로 그리고 relative로 지정되어 있는 만큼 상대적으로 이동 시킨다.

<div style="width:500px">
    **
  <span>
    Hello
      <span style="position:relative;top:50px">World
      <div style="background:red">&nbsp;</div>
    </span>
    !!
    <div style="background:blue">&nbsp;</div>
  </span>
  **
</div>

static으로 그리고 relative로 지정되어 있는 만큼 상대적으로 이동 시킨다. 이 말대로 생각한다면 span과 div (red) 만 50px 이동한다.

normal flow로 먼저 그린 다음에 static으로 그리고 relative로 지시된것 만큼 상대적으로 이동한다.

position static과 position relative가 섞여있다면 무조건 relative가 위로 올라간다!

relative는 box의 크기나 width의 크기가 변하지 않는다.

static으로 그리는 시점에서 geometry가 계산되며 그림만 상대적으로 그릴 뿐이다.

W3C Community And Business Groups()

https://youtu.be/_o1zsrBkZyg를
https://www.w3.org/community