2020/11/01 - [TIL(today I learned)] - 2020-11-01 TIL

 

2020-11-01 TIL

섹션 12:CSS Frameworks: Bootstrap crucial! important nice to have WTF is Bootstrap Bootstrap Grid Icons Working With CSS Frameworks Responsive Bootstrap Grid Typography and Utilities Including 3rd P..

pgsb.tistory.com

Including Bootstrap & Containers

bootstrap set-up

1. download -> 컴퓨터에 파일을 가질 수 있다, 링크가 바뀔 수도 있기때문에 상업적 작업물을 만들때 사용.

2. link (CDN, content delivery network) 

-> bootstrap에 있는 content 파일을 html에 링크하는것, order matter에 의해 우리의 css 파일보다 앞에 있어야 한다.

    bootstrap은 약간의 JS가 포함되어 있다. 그래서 body 맨 하단에 JS 링크를 한다.

 

Bootstrap의 syntex는 class를 기반으로 한다.

class를 기반으로 pre-define되어진 작업물이기때문에 bootstrap docs를 보면서 class를 사용하는것이 올바른 사용법.

버전마다 조금씩 차이가 있을 수 있다.

 

container 와 container-fluid

getbootstrap.com/docs/4.5/layout/overview/

 

Overview

Components and options for laying out your Bootstrap project, including wrapping containers, a powerful grid system, a flexible media object, and responsive utility classes.

getbootstrap.com

layout의 container는 미리 설정되어진 bootstrap의 layout이다. 각 디바이스에 맞게 brake-point도 설정되어 있다.

container-fluid는 사이즈가 작아짐에 따라 유기적으로 컨텐츠가 늘었다 줄었다 하게 한다.(breke point가 없다)

 

 

Bootstrap Buttons

getbootstrap.com/docs/4.5/components/buttons/

 

Buttons

Use Bootstrap’s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.

getbootstrap.com

docs에 많은예제와 함께 기능들이 소개되어있다.

 

※색상등은 부트스트랩 기본값이다. 언제든지 따로 커스텀 할 수 있다.

 

 

 

 

'TIL(today I learned)' 카테고리의 다른 글

2020-11-04 TIL  (0) 2020.11.04
2020-11-03 TIL  (0) 2020.11.03
2020-11-01 TIL  (0) 2020.11.01
2020-10-31 TIL 정리(10월의 TIL 정리하기)  (0) 2020.10.31
2020-10-30 TIL  (0) 2020.10.30

섹션 12:CSS Frameworks: Bootstrap

crucial! important nice to have
WTF is Bootstrap Bootstrap Grid Icons
Working With CSS Frameworks Responsive Bootstrap Grid Typography and Utilities
Including 3rd Party CSS & CDNS Bootstrap Navbars Bootstrap Forms
    Bootstrap Buttons

Bootstrap은 3rd party tool이다. 직장에서 사용하지 않는다면 필요없게 될 내용일 수 있다.

비슷한 3rd party tool로는 semantic UI, Boerma, Foundation이 있고 이 tool들의 goal은 다 같다.


WTF Is Bootstrap

framework 뼈대.. 

쌩 날것의 언어로 처음부터 작성할 필요없이 어느정도 형식을 갖춘, 작업되어진 library라고 생각하면 될것 같다.

getbootstrap.com/docs/4.5/getting-started/introduction/

 

Introduction

Get started with Bootstrap, the world’s most popular framework for building responsive, mobile-first sites, with jsDelivr and a template starter page.

getbootstrap.com

css framework에는 bootstrap, semantic ui, boerma, foundation등이 있지만 가장 많이 쓰는건 bootstrap이라고 한다.

 

'TIL(today I learned)' 카테고리의 다른 글

2020-11-03 TIL  (0) 2020.11.03
2020-11-02 TIL  (0) 2020.11.02
2020-10-31 TIL 정리(10월의 TIL 정리하기)  (0) 2020.10.31
2020-10-30 TIL  (0) 2020.10.30
2020-10-29 TIL  (0) 2020.10.29

'TIL(today I learned)' 카테고리의 다른 글

2020-11-02 TIL  (0) 2020.11.02
2020-11-01 TIL  (0) 2020.11.01
2020-10-30 TIL  (0) 2020.10.30
2020-10-29 TIL  (0) 2020.10.29
2020-10-28 TIL  (0) 2020.10.28

섹션 11:Pricing Panel Project

이 프로젝트는 code pen의 travis williamson의 작업물을 base로 하고 있다.

 

 

meyerweb.com/eric/tools/css/reset/

 

CSS Tools: Reset CSS

CSS Tools: Reset CSS The goal of a reset stylesheet is to reduce browser inconsistencies in things like default line heights, margins and font sizes of headings, and so on. The general reasoning behind this was discussed in a May 2007 post, if you're inter

meyerweb.com

 

The goal is to normalize how browser styles work across different browsers.

Basically give you a clean slate because some browsers have different default padding or margin or font

sizes for headings.

So this is just a couple of lines of css that people like to copy and put inside of their style

sheets or make a separate out style sheet with.

you don't have to do that when you're making applications in your writing your styles.

But a lot of people like to do that just so that you do have this even sort of very blank starting spot

that you can then add onto and modify.

그냥 기본적인 css 요소들의 특성의 default값들을 리셋한다고 생각하면 될듯.. 하지 않아도 되지만 많은 사람들이 이걸 쓴다.

사용법은 reset css의 syntext를 css sheet에 복붙하면 된다.

 

프로젝트의 목표는 html로만 작성된 페이지에 flex특성과 media특성이 가미된 반응형 페이지를 만드는것.

 

 

처음에는 모바일 디바이스에 대응하는 css를 만들고 

그다음에 미디어 특성을 이용해서 만든다.

 

으... 보는건 쉽지만 

직접만들어보자니 이거 참... 막막하다..

 

으아아아아 만드는데 너무 해멘다 ... 잘 시간이 다가온다.. 

내일 일 끝나고 다시 해야겠다.

 

 

 

 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Price Tiers</title>
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:400,600,700">
    <link rel="stylesheet" href="app.css">
</head>

<body>
    <div class="panel">

        <div class="pricing-plan">
            <img src="icons/icon1.png" alt="" class="pricing-img">
            <h2 class="pricing-header">Personal</h2>
            <ul class="pricing-features">
                <li class="pricing-features-item">Custom domains</li>
                <li class="pricing-features-item">Sleeps after 30 mins of inactivity</li>
            </ul>
            <span class="pricing-price">Free</span>
            <a href="#/" class="pricing-button">Sign up</a>
        </div>

        <div class="pricing-plan">
            <img src="icons/icon2.png" alt="" class="pricing-img">
            <h2 class="pricing-header">Small team</h2>
            <ul class="pricing-features">
                <li class="pricing-features-item">Never sleeps</li>
                <li class="pricing-features-item">Multiple workers for more powerful apps</li>
            </ul>
            <span class="pricing-price">$150</span>
            <a href="#/" class="pricing-button is-featured">Free trial</a>
        </div>

        <div class="pricing-plan">
            <img src="icons/icon3.png" alt="" class="pricing-img">
            <h2 class="pricing-header">Enterprise</h2>
            <ul class="pricing-features">
                <li class="pricing-features-item">Dedicated</li>
                <li class="pricing-features-item">Simple horizontal scalability</li>
            </ul>
            <span class="pricing-price">$400</span>
            <a href="#/" class="pricing-button">Free trial</a>
        </div>

    </div>

</body>

</html>
/* http://meyerweb.com/eric/tools/css/reset/ 
   v2.0 | 20110126
   License: none (public domain)
*/

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
	font: inherit;
	vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section {
	display: block;
}
body {
	line-height: 1;
}
ol, ul {
	list-style: none;
}
blockquote, q {
	quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
	content: '';
	content: none;
}
table {
	border-collapse: collapse;
	border-spacing: 0;
}

html {
  box-sizing: border-box;
  font-family: 'Open Sans', sans-serif;
}

body {
  background-color: #60a9ff;
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
}

.panel {
  background-color: white;
  border-radius: 10px;
  padding: 15px 25px;
  width: 100%;
  max-width: 960px;
  display: flex;
  flex-direction: column;
  text-align: center;
  text-transform: uppercase;
}

.pricing-plan {
  border-bottom: 1px solid #e1f1ff;
}
.pricing-plan:last-child {
  border-bottom: none;
}

.pricing-img {
  margin-bottom: 25px;
  max-width: 100%;
}

.pricing-header {
  color: #888;
  font-weight: 600;
  letter-spacing: 1px;
}

.pricing-features {
  margin: 50px 0 25px;
  color: #016ff9;
}

.pricing-features-item {
  font-weight: 600;
  letter-spacing: 1px;
  font-size: 12px;
  line-height: 1.5;
  padding: 15px 0;
  border-top: 1px solid #e1f1ff;
}

.pricing-features-item:last-child{
  border-bottom: 1px solid #e1f1ff;
}

.pricing-price {
  color: #016ff9; 
  display: block;
  font-size: 32px;
  font-weight: 700;
}

.pricing-button {
  border: 1px solid #9dd1ff;
  border-radius: 10px;
  color: #348efe;
  display: inline-block;
  padding: 15px 35px;
  text-decoration: none;
  margin: 25px 0;
  transition: background-color 200ms ease-in-out;
}

.pricing-button:hover, .pricing-button:focus {
  background-color: #e1f1ff;
}

.pricing-button.is-featured {
  background-color: #48aaff;
  color: white;
}

.pricing-button.is-featured:hover, .pricing-button.is-featured:focus{
  background-color: #269aff;
  color: white;
}


@media (min-width: 900px){
  .panel {
    flex-direction: row;
  }
  .pricing-plan {
    border-bottom: none;
    border-right: 1px solid #e1f1ff;
    padding: 25px 50px;
  }
  .pricing-plan:last-child {
    border-right: none;
  }
}

 

일할때 쉬는시간에 보기위한 솔루션 코드

'TIL(today I learned)' 카테고리의 다른 글

2020-11-01 TIL  (0) 2020.11.01
2020-10-31 TIL 정리(10월의 TIL 정리하기)  (0) 2020.10.31
2020-10-29 TIL  (0) 2020.10.29
2020-10-28 TIL  (0) 2020.10.28
2020-10-27 TIL  (0) 2020.10.27

2020/10/27 - [TIL(today I learned)] - 2020-10-27 TIL

2020/10/28 - [TIL(today I learned)] - 2020-10-28 TIL

 

 

Flex Shorthand

reference

developer.mozilla.org/en-US/docs/Web/CSS/flex

 

flex

The flex CSS shorthand property sets how a flex item will grow or shrink to fit the space available in its flex container.

developer.mozilla.org


이 3가지에 대한 shorthand property

/* Keyword values */
flex: auto;
flex: initial;
flex: none;

/* One value, unitless number: flex-grow */
flex: 2;

/* One value, width/height: flex-basis */
flex: 10em;
flex: 30%;
flex: min-content;

/* Two values: flex-grow | flex-basis */
flex: 1 30px;

/* Two values: flex-grow | flex-shrink */
flex: 2 2;

/* Three values: flex-grow | flex-shrink | flex-basis */
flex: 2 2 10%;

/* Global values */
flex: inherit;
flex: initial;
flex: unset;

 

 

 

 

Responsive Design & Media Queries Intro

 

 

 

 

responsive design 반응성 디자인을 소개하는 강의

 

7,8년 전에는 각각의 다양한 디바이스들에 대해 각각의 css를 만들었었다.

하지만 이제는 미디어쿼리를 이용해서 다양한 디바이스들에 대응하는 다양한 사이즈들의 스타일을 정의할 수 있게 되었다.

 

 

The Power of Media Queries

reference

developer.mozilla.org/en-US/docs/Web/CSS/@media

 

@media

The @media CSS at-rule can be used to apply part of a style sheet based on the result of one or more media queries.

developer.mozilla.org

developer.mozilla.org/en-US/docs/Web/CSS/@media/width

 

width

The width CSS media feature can be used to test the width of the viewport (or the page box, for paged media).

developer.mozilla.org

developer.mozilla.org/en-US/docs/Web/CSS/@media/orientation

 

orientation

The orientation CSS media feature can be used to test the orientation of the viewport (or the page box, for paged media).

developer.mozilla.org


media queries

are the main mechanism that we can use to make a responsive website to restyle things or remove things, show and hide, change their sizes, go from a row to a column.

Whatever the style changes are based upon an attribute of the browser, whether it's the width of the viewport or the height or the orientation of your screen, there are different features, different parameters.

So all media queries begin with this at media.(@media)

@media의 property들은 brace pharenthsis(중괄호)를 쓰기보단 그냥 pharenthsis(소괄호)를 쓴다

 

width property는 min-width와 max-width를 쓴다.

그냥 width를 쓰면 딱 그 value에 맞출경우에만 속해진 value들의 propertye들이 적용된다.

 

order matter에 영향을 받는다.

500px까지 red고 1000px까지 orange인데 이 코드 나열이라면 그냥 500px이하에도 orange가 적용된다.

제대로 적용하려면 내림차순으로 적용시켜야 한다.

그러니까 위에 부분에 max-width를 1000px로 정해야한다.

 

 

portraitThe viewport is in a portrait orientation, i.e.,  the height is greater than or equal to the width.

landscapeThe viewport is in a landscape orientation, i.e., the width is greater than the height.

 

body {
  display: flex;
}

div {
  background: yellow;
}

@media (orientation: landscape) {
  body {
    flex-direction: row;
  }
}

@media (orientation: portrait) {
  body {
    flex-direction: column;
  }
}

 

 

 

 

Building a Responsive Nav

media selector를 이용한 반응성 navigation bar 만들기

@media와 flex property를 활용한 nav bar 생성

 

'TIL(today I learned)' 카테고리의 다른 글

2020-10-31 TIL 정리(10월의 TIL 정리하기)  (0) 2020.10.31
2020-10-30 TIL  (0) 2020.10.30
2020-10-28 TIL  (0) 2020.10.28
2020-10-27 TIL  (0) 2020.10.27
2020-10-26 TIL  (0) 2020.10.26

2020/10/27 - [TIL(today I learned)] - 2020-10-27 TIL

 

2020-10-27 TIL

섹션 10:Responsive CSS & Flexbox crucial! important nice to have FOCUS ON CONCEPTS, NOT MEMORIZING THE PROPERTIES! Flex Shorthand Flex-basis, grow, and shrink Align-Items Flex-wrap Align-content and..

pgsb.tistory.com

 

 

Flex-Wrap

 

flex-wrap 의 값들 wrap, wrap-reverse, nowrap(default)

wrap은 콘텐츠 값이 부모의 범위 값을 벗어나면 다음 row로 넘기는 property

wrap-reverse를하면 cross-axis의 값이 반대가 된다.

 

 

Align-Items

align-items의 value들

flex-start, flex-end, center, baseline

baseline은 글 적은 문장의 줄을 기준으로 정렬함 (문장의 가장 큰 폰트 사이즈 중앙에 반응함)

justify-content는 main-axis의 진행방향이 왼쪽에서 오른쪽으로 진행한다는 기준으로 정렬이 된다면

align-item은 cross-axis의 진행방향이 위에서 아래로 진행한다는 기준으로 정렬이 된다.

여기서 wrap-reverse를 하면 cross-axis의 진행방향이 반대가 되니까 그것도 생각해야한다.

한번 연습을 해봐야겠다.

 

Align-Content & Align-Self

 

align-content는 wrap, wrap-reverse가 되어있을때 작동한다.

왜냐면 wrap이 안되면 한줄로 정렬되고(main-axis만 사용) 

row가 생성이 안된다(cross-axis를 사용안함)  ->> This property has no effect on single line flex containers

developer.mozilla.org/en-US/docs/Web/CSS/align-content

 

align-content

The CSS align-content property sets the distribution of space between and around content items along a flexbox's cross-axis or a grid's block axis.

developer.mozilla.org

 

 

align-self는 단일 요소를 대상으로 정렬하는것

flex property들은 하위대상에 적용시키는 property이지만 이건 개별적으로 적용하기 때문에 적용하고자 하는 대상 그자체에 value를 적용시킨다.

developer.mozilla.org/en-US/docs/Web/CSS/align-self

 

align-self

The align-self CSS property overrides a grid or flex item's align-items value. In Grid, it aligns the item inside the grid area. In Flexbox, it aligns the item on the cross axis.

developer.mozilla.org

 

 

Flex-Basis, Grow, & Shrink

 

The flex-basis CSS property sets the initial main size of a flex item

 

 flex basis is just the initial size that an element should be added into our box as and it might be with it might be a height depending on the main axis direction.

 

flex-grow는 작은 컨텐츠를 비율에 맞게 공간을 채우게 하고

flex-shrink는 큰 컨텐츠를 비율에 맞게 공간에 맞춘다.

 

 

'TIL(today I learned)' 카테고리의 다른 글

2020-10-30 TIL  (0) 2020.10.30
2020-10-29 TIL  (0) 2020.10.29
2020-10-27 TIL  (0) 2020.10.27
2020-10-26 TIL  (0) 2020.10.26
2020-10-25 TIL(2)  (0) 2020.10.25

섹션 10:Responsive CSS & Flexbox

crucial! important nice to have
FOCUS ON CONCEPTS, NOT MEMORIZING THE PROPERTIES!    
Flex Shorthand    
Flex-basis, grow, and shrink    
Align-Items    
Flex-wrap    
Align-content and align-self    
justify-content    
Flex-Direction    
Media Queries    

What on Earth Is Flexbox?

css box model들을 flexing하게 해주는 것.. flexible함.

layout을 flex하게 해줌.

 

Flex-Direction

axis 

1. (사물의) (중심) 축, 축선
2. (도표의) 축
3. (대칭체의) 중심축

 

terminology

1. (집합적인) 전문 용어
2. (어떤 개념을 나타내는) 용어들

 

designate

1. 지정하다
2. (특정한 자리나 직책에) 지명하다
3. (특정한 기호 등을 써서) 표기하다

 

developer.mozilla.org/en-US/docs/Web/CSS/display

 

display

The display CSS property sets whether an element is treated as a block or inline element and the layout used for its children, such as flow layout, grid or flex.

developer.mozilla.org

 

The display CSS property sets whether an element is treated as a block or inline element and the layout used for its children, such as flow layout, grid or flex.

 

Formally, the display property sets an element's inner and outer display types. The outer type sets an element's participation in flow layout; the inner type sets the layout of children. Some values of display are fully defined in their own individual specifications; for example the detail of what happens when display: flex is declared is defined in the CSS Flexible Box Model specification. See the table at the end of this document for all of the individual specifications.

 

 

display property에는 inside type과 outside type이 있는데

outside type은 예전에 배웠던 inline과 block이 있고

inside type은 지금 배우는 inside가 있다. 

inside type은 안에 내용물에 대한 형식을 정의한다.

-> 왜 해당요소에 직접 flex value를 넣으면 flex가 제대로 작동이 안되는지 궁금해서 mdn을 찾아봄.. 

    그러니까 flexing하는 범위자체가 부모한테 있으니까 해당 요소에 직접 flex 값을 집어넣으면 적용이 안되는건가?

    어쨋든 정의 자체가 하위요소에 대한 레이아웃을 다루는것이다보니 그 요소에 flex를 넣는게 아니라 

    flex하고 싶은 요소의 상위요소에 flex 값을 넣는것 이라고 생각하면 되는것 같다.

 

한 요소에 flex-box를 지정하면 그 박스에는 두개의 축이 생기게 된다.

main-axis, cross-axis

main-aixs(주축)은 기본적으로 왼쪽에서 오른쪽으로 간다.

 

 

 

flex-direction just determines how the content flows in this container.

 

flex-direction은 row가 default value다.

flex-direction은 이 main aixs의 방향(contents의 흐름)을 어떻게 할지를 정하는 property이다. 가로로 둘지(row) 세로로 둘지(column)

아니면 축을 반대로 바꿀지(-reverse)를 정한다.

 

 

Justify-Content

evenly

1. 고르게, 반반하게
2. 균등하게, 고르게; 대등하게
3. 차분히

 

justify

1. 옳음을 보여 주다
2. 정당화시키다, 해명하다
3. (인쇄되는 텍스트의) 행의 끝을 나란히 맞추다

 

developer.mozilla.org/en-US/docs/Web/CSS/justify-content

 

justify-content

The CSS justify-content property defines how the browser distributes space between and around content items along the main-axis of a flex container, and the inline axis of a grid container.

developer.mozilla.org

space-between은 아이템간의 공간를 균등하게 나누는 value

space-around는 아이템간의 공간을 균등하게 나누면서 시작과 끝에 아이템 사이에 공간의 절반의 공간을 또 나누는것.

space-evenly는 그냥 시작과 아이템 사이 아이템간 사이 아이템과 끝 사이를 균등하게 나누는것.

 

justify-content는 이렇게만 보면 horizontal-justify라고 생각될 수 도있지만. display-direction마다 main-axis가 달라지기때문에 마냥 단순하게 그렇게 용어를 정리하면 안된다.

justify-content라는 용어보다는 오히려 main-axis-justify라는 느낌으로 다가가는게 더 낫지 않나 싶다.

main-axis는 가로에서 세로가 될수도 reverse가 될 수도 있기 때문에 justify가 한방향으로 되지 않는다. main-axis를 기준으로 하고 main-axis는 display-direction에 따라 달라질 수 있기 때문에.

 

'TIL(today I learned)' 카테고리의 다른 글

2020-10-29 TIL  (0) 2020.10.29
2020-10-28 TIL  (0) 2020.10.28
2020-10-26 TIL  (0) 2020.10.26
2020-10-25 TIL(2)  (0) 2020.10.25
2020-10-25 TIL(1)  (0) 2020.10.25

섹션 9:Other Assorted Useful CSS Properties

Crucial! Important Nice To Have
Transitions Opacity & Alpha Channel Transforms
Position Property Google Fonts  
  The Full Story On The Background Property  

assort 1. 분류하다(classify), 구분하다 2. (가게에) 구색을 갖추다, (같은 종류끼리) 짜맞추다

assorted 여러 가지의, 갖은


Opacity & The Alpha Channel

reference

developer.mozilla.org/en-US/docs/Web/CSS/opacity

 

opacity

The opacity CSS property sets the opacity of an element. Opacity is the degree to which content behind an element is hidden, and is the opposite of transparency.

developer.mozilla.org

developer.mozilla.org/en-US/docs/Web/CSS/color_value#rgba()

 

 

The color CSS data type represents a color in the sRGB color space. A color may also include an alpha-channel transparency value, indicating how the color should composite with its background.

developer.mozilla.org

 


opacity

1. (유리·액체 등이) 불투명함
2. (말·태도 등이) 불투명함

transparent

1. 투명한
2. 속이 뻔히 들여다보이는, 명백한, 투명한
3. 명료한, 알기 쉬운

transparency

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Opacity & Alpha</title>
    <link rel="stylesheet" href="app.css">
</head>

<body>
    <section>
        <div id="rgba">
            Lorem ipsum dolor sit amet, consectetur adipisicing elit. Fugiat pariatur dolor doloribus excepturi magni
            qui, temporibus numquam aliquam exercitationem magnam et harum aut nihil nisi eius? Accusamus officiis iste
            dolores.
        </div>
    </section>
    <section>
        <div id="opacity">
            Lorem ipsum dolor sit amet, consectetur adipisicing elit. Fugiat pariatur dolor doloribus excepturi magni
            qui, temporibus numquam aliquam exercitationem magnam et harum aut nihil nisi eius? Accusamus officiis iste
            dolores.
            <button>alksjdlaksjd</button>
        </div>
    </section>
</body>

</html>
section {
    width: 500px;
    height: 500px;
    background-color: magenta;
}

#rgba {
    width: 50%;
    height: 50%;
    background-color: rgba(255,255,255,0.7)
}

#opacity {
    width: 50%;
    height: 50%;
    background-color: yellow;
    opacity: 0.3;
}

rgba는 rgb에서 alpha값이 더 덧붙혀진 property

alpha값은 transparent(불투명도)를 나타내고 value의 범위는 0~1이다.(0은 투명 , 1은 원래의 색깔)

rgba는 hexadecimal로 표현이 가능하다. rgb에서 a가 붙은것처럼 뒤에 2digit hex value가 붙는다

ex) rgba(255, 255, 255 ,1) = #ffffffff    아마도 0~1의 범위를 00~ff로 쪼갠것이 아닐까 생각된다.

rgba는 property자체의 값만 표시하기때문에 그 property값에만 영향을준다면 (background-color라면 background-color만 영향)

opacity는 selector안에있는 모든것들에 영향을 준다. herit되는 느낌..

 

ish 거의(진술 뒤에 붙여 거의 그러함을 나타냄)

 

 

 

The Position Property

reference

developer.mozilla.org/en-US/docs/Web/CSS/position

 

position

The position CSS property sets how an element is positioned in a document. The top, right, bottom, and left properties determine the final location of positioned elements.

developer.mozilla.org


position property는 셀렉터의 포지션이 어떻게 되는지를 나타내는 특성

position property의 값들은 static(default값), relative, absolute, fixed, sticky가 있다.

그리고 position에 대한 property는 top, right, bottom, left가 있다. 이 특성들은 그 방향으로 밀어낸다(offset, 상쇄?)

특이한건 negative값이 있다.(left : -40; = right: 40;)

static property는 position에 대한 property에 아무런 영향을 받지 않는다.

relative는 그 요소가 있던 자리를 기준으로 top, left값을 주면 그 기준으로 움직인다.

absolute는 position이 relative가 되있는 상위 요소(ancester)를 기준으로 움직인다. (relative가 되어있는 요소를 기존요소를 기준으로 차근차근 올라가서 relative포지션을 찾으면 그 요소를 기준으로 움직인다.)

fixed는 스크롤에 고정되어 움직인다.

sticky는 fixed와 sticky가 결합되어있는 느낌인데 가만히 있다가 스크롤에 밀리면 fixed의 성격을 가진다.

 

mdn에 예시가 잘 나와있다. 나중에 헷갈린다 싶으면 mdn 참조하자.

 

 

 

 

CSS Transitions (yay!)

reference

easings.net/

 

Easing Functions Cheat Sheet

Easing functions specify the speed of animation to make the movement more natural. Real objects don’t just move at a constant speed, and do not start and stop in an instant. This page helps you choose the right easing function.

easings.net

developer.mozilla.org/en-US/docs/Web/CSS/transition

 

transition

The transition CSS property is a shorthand property for transition-property, transition-duration, transition-timing-function, and transition-delay.

developer.mozilla.org

developer.mozilla.org/en-US/docs/Web/CSS/transition-timing-function

 

transition-timing-function

The transition-timing-function CSS property sets how intermediate values are calculated for CSS properties being affected by a transition effect.

developer.mozilla.org


보통 hovering 할때 많이 쓰인다.

select한 요소의 style을 hover한 style로 바꿀때 시간을 줘서 애니메이션하게 바꾸는것.

mdn에 trasition에 예시가 많다. 

 

app.css
0.00MB
index.html
0.00MB

The Power of CSS Transforms

reference

developer.mozilla.org/en-US/docs/Web/CSS/transform

 

transform

The transform CSS property lets you rotate, scale, skew, or translate an element. It modifies the coordinate space of the CSS visual formatting model.

developer.mozilla.org

developer.mozilla.org/en-US/docs/Web/CSS/transform-function

 

 

The transform-function CSS data type represents a transformation that affects an element's appearance. Transformation functions can rotate, resize, distort, or move an element in 2D or 3D space. It is used in the transform property.

developer.mozilla.org


 

transform

1. 변형시키다 (=convert) 2. (모습·성격을, 특히 더 좋게) 완전히 바꿔 놓다[탈바꿈시키다]

 

transition (다른 상태·조건으로의) 이행(移行)[과도(過渡)], 전이?

 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Transform</title>
    <link rel="stylesheet" href="app.css">
</head>

<body>
    <section>
        <!-- SHOULD NOT BE USING h1's like this!  -->
        <!-- ONLY ONE PER DOCUMENT! -->
        <h1>Transform me!</h1>
        <h1>Transform me!</h1>
        <h1>Transform me!</h1>
        <h1>Transform me!</h1>
    </section>
    <section>
        <h1>Transform me!</h1>
        <h1>Transform me!</h1>
        <h1>Transform me!</h1>
        <h1>Transform me!</h1>
    </section>
</body>

</html>
h1 {
    background-color: #2a9d8f;
    border: 5px solid #264653;
    color: #eae2b7;
    padding: 0.7em;
    width: 300px;
    font-size: 1.8em;
    text-align:center;
    margin: 20px auto;
    font-family: Courier New;
    font-weight: lighter;
}

h1:nth-of-type(2n) {
    background-color: #e9c46a;
}
h1:nth-of-type(3n) {
    background-color: #f4a261;
}
h1:nth-of-type(4n) {
    background-color: #e76f51;
}


section:first-of-type h1:nth-of-type(1){
    /* transform-origin: top right; */
    transform: rotate(45deg);
}
section:first-of-type h1:nth-of-type(2){
    transform: scale(0.6);
}

section:first-of-type h1:nth-of-type(3){
    transform: translateX(200px);
}
section:first-of-type h1:nth-of-type(4){
    transform: translate(-100px, 50px);
}

section:nth-of-type(2) h1:nth-of-type(1){
    transform: skew(30deg);
}
section:nth-of-type(2) h1:nth-of-type(2){
    transform: skew(10deg, 5deg);
}

section:nth-of-type(2) h1:nth-of-type(3){
    transform: rotate(-20deg) scale(1.3);
}
section:nth-of-type(2) h1:nth-of-type(4){
    transform: translateX(-500px) rotate(0.5turn) scaleY(1.5);
}

section:nth-of-type(2) {
    transform: scale(0.7) translateX(500px);
}

 

transform property는 element를 변형시키는 value들이 많이 있다. 

value값은 mdn reference에 참조할 사항이 많이 있다.

transform value들은 inherit 된다.

 

skew 1. 왜곡하다 2. 비스듬히 움직이다[있다]

 

 

 

Fancy Button Hover Effect CodeAlong

reference

developer.mozilla.org/en-US/docs/Web/CSS/box-shadow

 

box-shadow

The box-shadow CSS property adds shadow effects around an element's frame. You can set multiple effects separated by commas.

developer.mozilla.org


button에 애니메이션을 만들어보는 exercise

transition, transform을 응용해서 만들어보는 작업.

강의를 보고서 solution을 따라 만드는 연습을 해봤는데 은근히 하기 힘들었다.

역시 보는것보다는 한번 해보는 연습이 필요하다. 근데 무엇보다 아직 안배운것들을 끌어오면서 코드를 작성하니까 하다가 맥이 끊기는것도 있었다.

 

codealong강의들은 강의를 보고서 내가 직접해보는 시간도 따로 가져야겠다.

 

그리고 하면서 느낀건 강의를 보면서 정리는 하지만 내가 직접 체화시킨것들이 아니기 때문에 바로바로 사용을 하지 못하겠다. reference를 보면서 하는데 뭐 그래도 이것만 할게 아니니까 라는 생각도 들지만 한편으로는 

아.. 강의를 듣는다고 다 끝나는게 아니구나 라는 생각이 든다.

 

 

solution 코드 - >

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hover Me!</title>
    <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@300&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="button.css">
</head>

<body>
    <button>Hover Me</button>
</body>

</html>
body {
  font-family: 'Roboto', sans-serif;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100vh;
  background-color: #151b29;
}

button {
  background: none;
  color:#ffa260;
  border: 2px solid;
  padding: 1em 2em;
  font-size: 1em;
  transition: color 0.25s, border-color 0.25s, box-shadow 0.25s,transform 0.25s;
}

button:hover {
  border-color: #f1ff5c;
  color: white;
  box-shadow: 0 0.5em 0.5em -0.4em #f1ff5c;
  transform: translateY(-0.25em);
  cursor: pointer;
}

 

 

The Truth About Background

reference

unsplash.com/

 

Beautiful Free Images & Pictures | Unsplash

Beautiful, free images and photos that you can download and use for any project. Better than any royalty free or stock photos.

unsplash.com

developer.mozilla.org/en-US/docs/Web/CSS/background

 

background

The background shorthand CSS property sets all background style properties at once, such as color, image, origin and size, or repeat method.

developer.mozilla.org

developer.mozilla.org/en-US/docs/Web/CSS/background-position

 

background-position

The background-position CSS property sets the initial position for each background image. The position is relative to the position layer set by background-origin.

developer.mozilla.org

developer.mozilla.org/en-US/docs/Web/CSS/background-repeat

 

background-repeat

The background-repeat CSS property sets how background images are repeated. A background image can be repeated along the horizontal and vertical axes, or not repeated at all.

developer.mozilla.org

developer.mozilla.org/en-US/docs/Web/CSS/background-size

 

background-size

The background-size CSS property sets the size of the element's background image. The image can be left to its natural size, stretched, or constrained to fit the available space.

developer.mozilla.org


background property는 shorthand한 property이고 안에는 다양한 property들이 있다.

대표적으로 background-color.. background-image, background-size

background property는 mdn에선 순서적으로 적으라고 되어있지만 꼭 그렇게 순차적으로 value값을 나열하지 않아도 브라우저는 인식한다.(순서는 문제가 안된다)

하지만 포지션과 사이즈는 충돌할 경우가 있으므로 포지션과 사이즈를 대쉬와 함께 적는다. ex)center/80%

  • The <bg-size> value may only be included immediately after <position>, separated with the '/' character, like this: "center/80%".

보통 background-size는 contain은 같은 비율로 이미지를 넣고 비율을 넘으면 repeat된다. 컨텐츠 박스가 크다면 차라리 repeat를 하거나 cover를 하는게 보통이다. cover를 자주쓴다.

 

 

Google Fonts is Amazing

reference

fonts.google.com/

 

Google Fonts

Making the web more beautiful, fast, and open through great typography

fonts.google.com


 

구글폰트는 무료이고 사용하기 편하다. 

사용도 간편하게 마음에 드는 폰트가 있으면 눌러서 스타일을 추가하고 embed란에 링크를 html header부분에 붙여놓기만 하면된다.

이 폰트가 사용자한테 bulit-in 되어있나 하고 걱정할 필요가 없이 링크로 불러들여서 font에 대한 걱정이 없어진다.

 

 

Photo Blog CodeAlong Pt. 1 & 2

developer.mozilla.org/en-US/docs/Web/CSS/calc

 

calc()

The calc() CSS function lets you perform calculations when specifying CSS property values. It can be used anywhere a length, frequency, angle, time, percentage, number, or integer is allowed.

developer.mozilla.org

solution->>>

<!DOCTYPE html>
<html>

<head>
    <title>Photo Blog</title>
    <link href="https://fonts.googleapis.com/css2?family=Raleway:wght@800&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="photos.css">
</head>

<body>
    <!-- PUT YOUR NAME HERE! -->
    <nav>Colt/Steele</nav>

    <!-- Massimo Margagnoni -->
    <img src="http://c1.staticflickr.com/9/8450/8026519634_f33f3724ea_b.jpg"><img
        src="http://c2.staticflickr.com/8/7218/7209301894_c99d3a33c2_h.jpg"><img
        src="http://c2.staticflickr.com/8/7231/6947093326_df216540ff_b.jpg">

    <!-- Giuseppe Milo -->
    <img src="http://c1.staticflickr.com/9/8788/17367410309_78abb9e5b6_b.jpg"><img
        src="http://c2.staticflickr.com/6/5814/20700286354_762c19bd3b_b.jpg"><img
        src="http://c2.staticflickr.com/6/5647/21137202535_404bf25729_b.jpg">

    <!-- GörlitzPhotography -->
    <img src="http://c2.staticflickr.com/6/5588/14991687545_5c8e1a2e86_b.jpg"><img
        src="http://c2.staticflickr.com/4/3888/14878097108_5997041006_b.jpg"><img
        src="http://c2.staticflickr.com/8/7579/15482110477_0b0e9e5421_b.jpg">

    <!-- All Photos Licensed Under Creative Commons 2.0 -->
    <!-- https://creativecommons.org/licenses/by/2.0/legalcode  -->

</body>

</html>
img {
    width: 30%;
    /* margin: 1.6666666%; */
    margin: calc(10%/6);
}

nav {
    font-family: 'Raleway', sans-serif;
    font-size: 1.5em;
    text-transform: uppercase;
    border-bottom: 2px solid #f1f1f1;
    width: 30%;
    margin-left: calc(10%/6);
    padding: 1.2em 0;
}

/* 30 + 30 + 30

10% */

 

 

간단한 포토 블로그를 만들어보기..

 

clac : 단위를 입력할때 유용한 value값, 나누기나 곱하기 더하기 연산을 해준다.

 

그리고 flex-box에서는(지금진도에서는 안나왔지만) 문제가 안되지만 html자체의 문제가 있는데 그건 요소와 요소 사이의 공간문제이다.

=====1
<span>hello</span><span>world</span>

=====2
<span>hello<span> <span>world</span>

=
<span>hello</span>
<span>world</span>

 1과 2는 랜더링하면 아무 차이가 없는것 같지만 

자세히보면 2는 두 요소의 공간 사이에 띄어쓰기가 되어있어 띄어쓴 공간에 대한 공간이 생긴다. 

이것은 작은 차이이지만 이것으로 인해서 내가 생각한 스타일이 어그러질때가 있다. 

혹시나 다 계산했는데 스타일이 어그러진다면 이런 이슈를 생각해봐야한다.

    <img src="http://c1.staticflickr.com/9/8450/8026519634_f33f3724ea_b.jpg"><img
        src="http://c2.staticflickr.com/8/7218/7209301894_c99d3a33c2_h.jpg"><img
        src="http://c2.staticflickr.com/8/7231/6947093326_df216540ff_b.jpg">

 

 

 

'TIL(today I learned)' 카테고리의 다른 글

2020-10-28 TIL  (0) 2020.10.28
2020-10-27 TIL  (0) 2020.10.27
2020-10-25 TIL(2)  (0) 2020.10.25
2020-10-25 TIL(1)  (0) 2020.10.25
2020-10-24 TIL  (0) 2020.10.24

섹션 8:The CSS Box Model

Crucial! Important Nice To Have
Width & Height   Border Radius
Border    
Padding    
Margin    
Display Property    
Units - Percentages, EMS, & REMS    

Box Model: Width & Height

reference

developer.mozilla.org/en-US/docs/Web/CSS/width

 

width

The width CSS property sets an element's width. By default, it sets the width of the content area, but if box-sizing is set to border-box, it sets the width of the border area.

developer.mozilla.org


 

 

 the box model is basically just the idea that everything in css is a box and those boxes have a couple of different properties.

 

chrome inspect dev tool로 css 박스가 어떻게 되어있는지 볼 수 있다.

 

 

 

Box Model: Border & Border-Radius

reference

developer.mozilla.org/en-US/docs/Web/CSS/border

 

border

The border shorthand CSS property sets an element's border.

developer.mozilla.org

developer.mozilla.org/en-US/docs/Web/CSS/border-width

 

border-width

The border-width shorthand CSS property sets the width of an element's border.

developer.mozilla.org

developer.mozilla.org/en-US/docs/Web/CSS/border-style

 

border-style

The border-style shorthand CSS property sets the line style for all four sides of an element's border.

developer.mozilla.org

developer.mozilla.org/en-US/docs/Web/CSS/border-color

 

border-color

The border-color shorthand CSS property sets the color of an element's border.

developer.mozilla.org

developer.mozilla.org/en-US/docs/Web/CSS/box-sizing

 

box-sizing

The box-sizing CSS property sets how the total width and height of an element is calculated.

developer.mozilla.org

 


 

the main properties you need to understand the first three are border with border color and border style.

 

border-width/ border-color/ border-style 이 세가지는 border property의 핵심 properties이다. 

이것들도 다 shorthand된 property이고

실질적인 property는 다 방향이 있다.

ex)border-left-width + border-right-width + border-top-width + border-bottom-width = border-width

mdn에 더 자세히 나와있으므로 참고

 

그리고 이 세가지 핵심 properties를 또 shorthand한게 

border property이다.

 

box-sizing property는 content-box와 border-box value가 있는데

content-box는 content-box size에 border-width를 +한 개념.. 이게 default값이다.

ex).box {width: 350px; border: 10px solid black;} renders a box that is 370px wide.

border-box는 content-box size에 border-width를 -한 개념

ex).box {width: 350px; border: 10px solid black;} renders a box that is 350px wide, with the area for content being 330px wide

border-box는 content area를 침범하면서 content size를 유지한다,, content area에 border를 넣는다는 느낌

 

보통 border같은 경우는 작게 쓰기때문에 px를 많이 쓴다. 경계선이니까.. 크게 만들필요가 없음.

 

border-radius같은 경우는 border를 둥글게 만들기 위해 %를 쓰는경우가 있음 50%를 쓰면 원형의 border가 만들어진다.

 

 

코딩 연습 12: Box Model Practice

 

 

Box Model: Padding

reference

developer.mozilla.org/en-US/docs/Web/CSS/padding

 

padding

The padding CSS shorthand property sets the padding area on all four sides of an element at once.

developer.mozilla.org


vertical(수직의,세로의, 종적인) = top, bottom    ,     horizontal(수평(선)의, 가로의) = left, right

 

padding is the space between the content, the actual content box and the border of an element.

배송물에 깨지기 쉬운물건을 넣을때 뽁뽁이 넣는것과 비슷,, 이 뽁뽁이가 padding이라고 생각하면 된다.

 

여기에서 blue부분이 content box, green 부분이 padding이다.

 

padding-left , padding-right, bottom, top이 있지만 보통은 이것들을 shorthand한 padding property를 자주쓴다.

mdn에 예시랑 참고사항이 많다.

 

 

 

Box Model: Margin

reference

developer.mozilla.org/en-US/docs/Web/CSS/margin

 

margin

The margin CSS property sets the margin area on all four sides of an element. It is a shorthand for margin-top, margin-right, margin-bottom, and margin-left.

developer.mozilla.org


padding is the spacing on the inside of the border.

Margin is the spacing on the outside.

 

blue = content box,  green = padding,  orange = margin

 

body는 기본적으로 8px의 default margin이 설정되어있다. 

그래서 많은 사람들이 처음 웹페이지를 만들때 body margin을 0으로 해놓고 하는 경우가 많다.

 

boxmodel - > content box = width & height

                   padding = the spacing on the inside of the border.

                   border

                   margin =  the spacing on the outside.

 

 

The Display Property

reference

developer.mozilla.org/en-US/docs/Web/CSS/display

 

display

The display CSS property sets whether an element is treated as a block or inline element and the layout used for its children, such as flow layout, grid or flex.

developer.mozilla.org


 html element를 배울때 inline element와 block element를 배웠는데

inline element는 element의 display property(CSS)의 기본값이 inline이여서 lnline element이고

block element는 기본값이 block이기때문에 그런것.

 

그래서 역으로 h1의 css의 display property vlaue를 inline으로 바꾸면 inline element로 바뀐다.

span도 block으로 바꾸면 block level의 element가 된다.

 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Display Property</title>
    <link rel="stylesheet" href="app.css">
</head>

<body>

    <div></div>
    <div></div>
    <div></div>

    <h1>I am H1</h1>
    <h1>I am also H1</h1>

    <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Laboriosam ipsum blanditiis veritatis distinctio. Nisi
        saepe consequuntur eius facilis rem magnam a vel impedit maxime quidem error alias, sed mollitia earum?
        Corrupti vero quae rem debitis aut quas eaque possimus, repellat consequuntur non cumque ipsum nemo odit,
        blanditiis est ducimus nam! Pariatur cupiditate enim fuga nobis reiciendis perspiciatis velit culpa nemo?
        Ipsam veritatis, magni maxime molestiae praesentium quos totam! Corrupti ullam dolores odio autem voluptas unde
        dicta voluptatibus alias, asperiores magnam nemo quae maiores et distinctio error ex, non iusto deserunt!
        Sunt vero labore nostrum ad ab, quas fugit facilis voluptatum sed dicta, perspiciatis incidunt sit iusto
        molestiae nulla reiciendis quos doloremque? Possimus accusamus animi cumque fugit modi explicabo nihil sint.
        Explicabo enim perspiciatis dolorum id debitis dicta tempore totam cumque pariatur saepe, ab alias quas, hic
        fugiat porro! Libero molestiae est non voluptates quaerat velit delectus at fuga laboriosam a?
        Vero, eaque quod nihil voluptatibus quasi veniam rerum neque cum eveniet magni minima totam, nulla temporibus
        quaerat sequi architecto nisi? Harum alias aperiam rerum itaque voluptas temporibus veniam reiciendis
        laudantium!
        <span>I AM SPAN!!!</span>
        Voluptatum quam cumque laudantium. Ab at voluptatem hic ipsum in. Ex unde accusantium quis tempore nihil odit
        in! Voluptatum, vel libero accusamus eligendi amet aliquam? Aperiam repellat facere pariatur tempora?
        Error, alias, ex dolores adipisci aperiam aliquam dolor obcaecati voluptatibus cumque iste eveniet perspiciatis
        iusto harum nulla a in mollitia architecto nesciunt? Aut, ipsa. Provident animi voluptate deleniti tempore
        maxime.
        Quam aperiam necessitatibus corporis, asperiores repudiandae sint molestiae odio commodi aliquam consectetur
        inventore porro voluptatum architecto vel enim quia dignissimos repellendus earum blanditiis dolore, obcaecati
        officia temporibus maiores? Recusandae, quos!
        Voluptatibus odio magni reprehenderit! Ea tenetur eveniet animi quo autem odio sint corporis laboriosam, iusto
        laborum exercitationem molestias. Maiores, numquam optio impedit deserunt rem autem sit quisquam a fugiat
        eligendi.</p>
</body>

</html>
span {
    background-color: palevioletred;
    border: 1px solid black;
    width: 500px;
    padding: 50px;
    margin: 50px;
}


h1 {
    background-color: paleturquoise;
    border: 1px solid black;
    width: 300px;
    padding: 50px;
    margin: 100px;
}


div {
    height: 200px;
    width: 200px;
    background-color: olivedrab;
    border: 5px solid black;
    display: inline-block;
    margin: 50px;

}

display의 value값인 inline은 box-model을 respect하지 않는다.

width와 height를 무시한다.

padding값은 적용되긴하지만 공간을 주진않는다. 그러니까 자리는 차지하되 다른 컨텐츠들에대한 공간을 생각하지 않고 그냥 침범한다.

margin값은 위아래는 적용되지 않고 줄의 양옆만 적용된다.

 

block은 그대로 box model을 따른다.

 

inline-block : they are behaving like inline elements.

They are sharing the space or sharing the row right there sitting in line together.

They're not forcing each other onto a separate line, but all the other properties with respect to the box model are going to work.

 

none value도 있다. 

display : none; 은 콘텐츠는 있는데 브라우저상에는 보이지 않게 한다.

 

vice versa  [보통 and ~로; 생략문으로서] 거꾸로, 반대로, 역(逆)도 또한 같음 ((略 v.v.))

 

 

 

CSS Units Revisited

css 크기 단위에 대한 강의

absolute유닛은 px을 많이쓰고 다른것들은 잘 쓰이지 않는다.

relative유닛은 앞에 3개인 %, em , rem이 자주 쓰인다.

percentages unit은 parent element나 element자체의 property value를 100%로 치고 거기서부터 percentage를 매긴다.

->line-height: 200% = line-height: 80px (cuz font-size: 40px;)

 

 

CSS Units: ems

 

It(em)'s an old term from before css.

It has to do with the width of the height of the upper case letter M and typography.

 

em

1.

M자; [인쇄] 전각 ((M자 크기의 4각형))

 

em은 font-size에 영향을 받는다. 1em = parent font-size

보통 inherit된 font-size에 영향을 받는다.

 

#ems h2 {
    font-size: 2em;
    margin-left: 1em;
}

만약 #ems h2의 상위 요소의 font-size가 20px이라면

#ems h2의 font-size는 40px이 되고 

margin-left는 40px이 된다.(#ems h2에 font-size 설정이 없었다면 20px이다.)

 

em이나 %를 쓰면 좋은점은 반응형이라는것

그러니까 만약에 button element를 만드는데 절대값인 px로 border-radius를 만들어서 둥글둥글하게 만든다면 

button이 커졌을때 px 값은 그대로 있기때문에 새로 만져야되는데 relative값을 쓰면 크기가 바껴도 유동적으로 값이 조절이된다.

 

 

CSS Units: rems

em의 문제점이 하나 있는데 

em은 parent element의 font-size를 기준으로 하기 때문에 element에 nesting된 요소가 많다면 font-size가 stack이 되서 snowball처럼 font-size가 커져간다는것이다.

이걸 방지하기 위해선 rem을 써야한다.

rem은 root em으로 root element의 font-size를 기준으로 하겠다는 것을 말한다.

root element는 가장 상위의 element인 html을 말하고 rem은 html의 font-size를 기준으로 한다는것을 말한다.

보통 html font-size의 default value는 20px이다.

 

그래서 

em을 쓰는 상황은 보통 작은 요소의 것(button등등)을 반응형으로 value값을 유동적으로 조정할때 em을 쓰고

나머지 상황은 rem을 쓴다.(rem이 root element의 font-size를 기반으로 하기때문에 좀 더 직관적인것도 있다.)

 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS Units</title>
    <link rel="stylesheet" href="app.css">
</head>

<body>
    <h1>CSS Units <button>Click Me</button></h1>

    <article id="ems">
        <h2>I am h2</h2>
        <h3>I am h3</h3>
        <button>Click Me</button>
        <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Debitis minima libero nemo voluptatem impedit
            consectetur fugiat explicabo magnam similique iste, ipsum labore et reprehenderit, laudantium sequi eaque.
            Commodi, cumque nam.Ipsam numquam quaerat maxime ipsum perferendis ab quam ut corrupti iusto eligendi libero
            aperiam maiores, sit nulla repellendus, repellat quasi quae. Repudiandae tempora accusamus enim porro quas
            reiciendis repellendus perferendis.</p>
        <ul>
            <li>
                Pasta
                <ul>
                    <li>
                        Ravioli
                        <ul>
                            <li>Spinach Ricotta</li>
                        </ul>
                    </li>
                    <li>Penne</li>
                </ul>
            </li>
            <li>Salad</li>
            <li>Gelato</li>
        </ul>
    </article>

    <article id="rems">
        <h2>Using rems instead of ems!</h2>
        <h3>I am h3</h3>
        <button>Click Me</button>
        <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Debitis minima libero nemo voluptatem impedit
            consectetur fugiat explicabo magnam similique iste, ipsum labore et reprehenderit, laudantium sequi eaque.
            Commodi, cumque nam.Ipsam numquam quaerat maxime ipsum perferendis ab quam ut corrupti iusto eligendi libero
            aperiam maiores, sit nulla repellendus, repellat quasi quae. Repudiandae tempora accusamus enim porro quas
            reiciendis repellendus perferendis.</p>
        <ul>
            <li>
                Pasta
                <ul>
                    <li>
                        Ravioli
                        <ul>
                            <li>Spinach Ricotta</li>
                        </ul>
                    </li>
                    <li>Penne</li>
                </ul>
            </li>
            <li>Salad</li>
            <li>Gelato</li>
        </ul>
    </article>

    <button>Click Me</button>
    <section id="percentages">
        <div></div>
    </section>





</body>

</html>
html {
    font-size: 30px;
}
#percentages {
    background-color: #6d6875;
    width: 800px;
    height: 800px;
}

#percentages div {
    background-color:#e5989b;
    width: 70%;
    height: 20%;
}


#ems h2 {
    font-size: 2em;
    margin-left: 1em;
}
#ems h3 {
    font-size: 1.5em;
}
#ems p {
    font-size: 1em;
}

#ems {
    font-size: 15px;
}

#ems ul {
    font-size: 1.5em;
}

button {
    font-size: 1em;
    padding: 0 1em;
    border-radius: 0.5em;
    background-color: #2a9d8f;
    color: white;
}


#rems h2{
    font-size: 3rem;
}
#rems h3{
    font-size: 2rem;
}
#rems ul{
    font-size: 1.5rem;
}

#rems button{
    font-size: 1.5rem;
}


'TIL(today I learned)' 카테고리의 다른 글

2020-10-27 TIL  (0) 2020.10.27
2020-10-26 TIL  (0) 2020.10.26
2020-10-25 TIL(1)  (0) 2020.10.25
2020-10-24 TIL  (0) 2020.10.24
2020-10-23 TIL  (0) 2020.10.23

2020/10/23 - [TIL(today I learned)] - 2020-10-23 TIL

 

2020-10-23 TIL

섹션 7:The World of CSS Selectors crucial! important nice to have Element Selector Adjacent Selector Class Selector Direct Descendent Selector ID Selector Attribute Selector Descendent Selector Pseu..

pgsb.tistory.com

2020/10/24 - [TIL(today I learned)] - 2020-10-24 TIL

 

2020-10-24 TIL

2020/10/23 - [TIL(today I learned)] - 2020-10-23 TIL 2020-10-23 TIL 섹션 7:The World of CSS Selectors crucial! important nice to have Element Selector Adjacent Selector Class Selector Direct Descend..

pgsb.tistory.com

 


Pseudo Elements

reference

developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements

 

Pseudo-elements

A CSS pseudo-element is a keyword added to a selector that lets you style a specific part of the selected element(s). For example, ::first-line can be used to change the font of the first line of a paragraph.

developer.mozilla.org

- 플라스크(flask) 마크로 표시된 selector들은 test에 가까운 selector들 아직 실험적이고 보편적이지 않음.

developer.mozilla.org/en-US/docs/Web/CSS/::first-letter

 

::first-letter (:first-letter)

The ::first-letter CSS pseudo-element applies styles to the first letter of the first line of a block-level element, but only when not preceded by other content (such as images or inline tables).

developer.mozilla.org

developer.mozilla.org/en-US/docs/Web/CSS/::first-line

 

::first-line (:first-line)

The ::first-line CSS pseudo-element applies styles to the first line of a block-level element.

developer.mozilla.org

developer.mozilla.org/en-US/docs/Web/CSS/::selection

 

::selection

The ::selection CSS pseudo-element applies styles to the part of a document that has been highlighted by the user (such as clicking and dragging the mouse across text).

developer.mozilla.org


 

 

 

pseudo class는 앞에 colon 하나만 붙지만 pseudo elements는 앞에 colon이 두개 붙음 물론 브라우저는 이걸 신경쓰지 않는다. 그냥 pseudo elements를 쓸때 colon 하나만 써도 pseudo element selector로 인식한다.

::first-letter와 ::first-line은 그냥 명칭만 봐도 사용법이 보인다

::selection은 드래그된 element(content)에 스타일을 적용하는 selector

 

※colon : ,, semi-colon ;

 period, dot . ,, comma ,

 

 

The CSS Cascade

cascade 미국·영국 [kæˈskeɪd] 

1. 작은 폭포
2. 폭포처럼 쏟아지는 물
3. 풍성하게 늘어진 것

 

만약 같은 selector에 스타일이 충돌이 일어난다면 무엇을 우선할까에 대한 topic

결론부터 말하자면 나중에 오는 스타일을 적용한다.(order matter)

작성한 코드들의 가장 마지막에 오는것을 적용하고 

다른 링크가 있다면 링크의 순서도 나중에 오는것을 적용함.

<link rel="1" href="1.css">
<link rel="2" href="1.css">

=====css in 1.css
h1 {
	color: red;
}

h1 {
	color: purple;
}

=====css in 2.css
h1 {
	color: yellow;
}

만약 link 1만 적용하고 스타일을 적용할때 h1은 purple이 되고

      link 2까지 적용하면 h1은 yellow가 된다.

만약 link2를 먼저 적용하고 link1이 나중에 적용된다면

      h1의 색깔은 purple이 된다.

 

WTF is Specificity

reference

specificity.keegan.st/

 

Specificity Calculator

Specificity Calculator A visual way to understand CSS specificity. Change the selectors or paste in your own.

specificity.keegan.st

www.w3.org/TR/selectors-3/#specificity

 

Selectors Level 3

Selectors are patterns that match against elements in a tree, and as such form one of several technologies that can be used to select nodes in an XML document. Selectors have been optimized for use with HTML and XML, and are designed to be usable in perfor

www.w3.org


specific (specificity)

1. 구체적인, 명확한, 분명한
2. 특정한
3. 특유의, 독특한

 

 

같은 셀렉터가 충돌이 일어날경우 순서에 따라(order matter) 적용이 되지만

다른 셀렉터가 충돌이 일어날경우 어떻게 될까? -> 이경우엔 specificity(구체성)을 따른다.

specificity의 규칙에 따르면 id>class>element로 셀렉터의 구체성이 다르다.

좀더 구체적일수록 구체적인 부분에 스타일이 적용이 된다.

스코어로 예시를 들자면 id는 100 , class는 10 , element는 1로 브라우저가 계산해서 스타일을 적용한다.

물론 브라우저가 셀렉터의 우선순위적용을 스코어에 비유해서 말하는것이지 element가 100개가 와도 class 하나를 못이긴다.

 

※구체성이 비등하다면 순서에 따라 적용된다. 

 

TIP: Chrome Dev Tools & CSS

 

chrome dev tool을 통해서 하나의 요소에 어떤 스타일이 적용되고 specificity가 어떻게 되는지 알 수 있다.

일회성으로 코드를 작성해서 어떻게 적용되나도 바로바로 볼 수 있고 

필터를 통해서 특정한 selector를 search 해볼수도 있다.

되게 유용하다..

 

 

Inline Styles & Important

 

inline styles element와 important property는 잘 사용하지 않고 사용하기 적합하지 않지만 알아두어야 할 요소.

inline styles은 html element에 직접 스타일을 적용하는 것이다.

<div style="color:blue; border: 1px dashed currentcolor;">
  The color of this text is blue.
  <div style="background:currentcolor; height:9px;"></div>
  This block is surrounded by a blue border.
</div>

하지만 html에 스타일을 적을경우 confuse가 오게 되고 문서가 지저분해지게 되므로 잘 쓰지 않는다.

 

important rule도 모든 specificity를 무시하고 우선적으로 적용되기 때문에 원래 작성된 style들을 다 뭉개버려서 잘 쓰이지는 않지만 그래도 알아둘 필요가 있는 rule이다. 

developer.mozilla.org/en-US/docs/Web/CSS/Specificity

 

Specificity

Specificity is the means by which browsers decide which CSS property values are the most relevant to an element and, therefore, will be applied. Specificity is based on the matching rules which are composed of different sorts of CSS selectors.

developer.mozilla.org

-> !important exception

<div class="foo" style="color: red;">What color am I?</div>
.foo[style*="color: red"] { 
  color: firebrick !important;
}

inline 스타일도 이기는모양이다..

좀 더 자세한건 mdn reference를 통해 더 알아보자.. 이정도만 알면 될듯하다..

 

CSS Inheritance

inheritance

1. 상속받은 재산, 유산; 상속

2. (과거·선대로부터 물려받는) 유산, 유전(되는 것)

 

특성을 상속하는것..(물려받는것)

컨텐츠의 상위 element의 style이 있다면 그 style을 inheritance받아서 그 style을 적용한다.

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Inheritance Demo</title>
    <link rel="stylesheet" href="app.css">
</head>

<body>
    <h1>The Header</h1>
    <section>
        <h2>The Subheader</h2>
        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum, quisquam quas placeat quam suscipit dicta
            inventore odio vero quasi perferendis. Aliquid ducimus nostrum impedit nam, illo praesentium hic deserunt
            ullam.Consequuntur esse eveniet error sequi labore facere eos, quaerat voluptate tenetur rem placeat quidem
            a aperiam voluptas optio voluptatem quos suscipit. Voluptas minima vel in deleniti provident alias libero
            enim.</p>
        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum, quisquam quas placeat quam suscipit dicta
            inventore odio vero quasi perferendis. Aliquid ducimus nostrum impedit nam, illo praesentium hic deserunt
            ullam.Consequuntur esse eveniet error sequi labore facere eos, quaerat voluptate tenetur rem placeat quidem
            a aperiam voluptas optio voluptatem quos suscipit. Voluptas minima vel in deleniti provident alias libero
            enim.</p>
    </section>
    <section>
        <h2>Another Subheader</h2>
        <form action="blah">
            <label for="username">Username:</label>
            <input type="text" placeholder="username" id="username">
            <button>Do Something</button>
        </form>
    </section>

</body>

</html>
body {
    color: purple;
}

section {
    color: aqua;
}

form {
    color: greenyellow;
}

button, input {
    color: inherit;
}

몇몇 element들은 inherit가 안되도록 기본값이 설정되어 있다. 

그럴경우에는 property의 value를 inherit로 바꿔서 inherit되게 바꿀수 있다.

 

mdn에서 스타일이 inherit되는 style인지 아닌지 확인할 수도 있다.

'TIL(today I learned)' 카테고리의 다른 글

2020-10-26 TIL  (0) 2020.10.26
2020-10-25 TIL(2)  (0) 2020.10.25
2020-10-24 TIL  (0) 2020.10.24
2020-10-23 TIL  (0) 2020.10.23
2020-10-22 TIL  (0) 2020.10.22

+ Recent posts