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

The Adjacent & Direct-Descendent Selectors

 

 

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS Selectors</title>

    <link rel="stylesheet" href="app.css">
    <link rel="stylesheet" href="more_styles.css">
</head>


<body>
    <nav>
        <label for="search">Search</label>
        <input type="text" placeholder="search" id="search">
        <input type="password" placeholder="password">
        <button>Log In</button>
        <button id="signup">Sign Up</button>
    </nav>
    <main>
        <h1>Popular Posts</h1>
        <section class="post">
            <span>Posted by <a href="#213adas">/u/not_funny</a></span>
            <h2>Lol look at this hilarious meme <span class="tag">funny</span></h2>
            <button>+Vote</button>
            <hr>
        </section>
        <section class="post">
            <span>Posted by <a href="#345adas">/u/gooner4lyfe</a></span>
            <h2>Happy birthday to the strongest defender/bodyguard in the Prem! <span class="tag">gunners</span></h2>
            <button>+Vote</button>
            <hr>
        </section>
        <section class="post">
            <span>Posted by <a href="#981adas">/u/dogfan</a></span>
            <h2>This Corgi got some good stuff from the vet. <span class="tag">dogs</span></h2>
            <button>+Vote</button>
            <hr>
        </section>
        <section class="post">
            <span>Posted by <a href="#213adas">/u/not_funny</a></span>
            <h2>Lol look at this hilarious meme <span class="tag">funny</span></h2>
            <button>+Vote</button>
            <hr>
        </section>
        <section class="post">
            <span>Posted by <a href="#345adas">/u/gooner4lyfe</a></span>
            <h2>Happy birthday to the strongest defender/bodyguard in the Prem! <span class="tag">gunners</span></h2>
            <button>+Vote</button>
            <hr>
        </section>
        <section class="post">
            <span>Posted by <a href="#981adas">/u/dogfan</a></span>
            <h2>This Corgi got some good stuff from the vet. <span class="tag">dogs</span></h2>
            <button>+Vote</button>
            <hr>
        </section>
        <section class="post">
            <span>Posted by <a href="#213adas">/u/not_funny</a></span>
            <h2>Lol look at this hilarious meme <span class="tag">funny</span></h2>
            <button>+Vote</button>
            <hr>
        </section>
        <section class="post">
            <span>Posted by <a href="#345adas">/u/gooner4lyfe</a></span>
            <h2>Happy birthday to the strongest defender/bodyguard in the Prem! <span class="tag">gunners</span></h2>
            <button>+Vote</button>
            <hr>
        </section>
        <section class="post">
            <span>Posted by <a href="#981adas">/u/dogfan</a></span>
            <h2>This Corgi got some good stuff from the vet. <span class="tag">dogs</span></h2>
            <button>+Vote</button>
            <hr>
        </section>

        <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Maiores explicabo neque velit, eveniet quibusdam
            ipsum cumque eos rerum quis natus, sequi nemo corporis quos, reiciendis earum error delectus magnam aperiam?
            Neque, saepe? Minus nihil enim vel est corporis ex porro sit debitis similique quo nostrum accusantium,
            aliquam id! Accusantium doloremque consequatur reprehenderit earum voluptatibus corporis sint ipsum sequi
            tempora nobis?
            Impedit, dicta. Ad saepe recusandae dignissimos, alias deserunt vero ratione et natus sequi dolorum non
            accusantium, explicabo quidem vel commodi dolor a voluptates cum tenetur libero voluptatem quod quae ullam!
            Sequi, molestiae repudiandae. Optio maiores ipsam nam necessitatibus placeat, libero itaque ratione, vitae
            veritatis quidem incidunt? Ducimus dolorum, distinctio molestiae, ut excepturi deleniti hic ipsum quod
            asperiores optio dolore ea?
            Perspiciatis doloremque ratione sint architecto fugiat est, quia eveniet. Numquam adipisci dolorum quia esse
            illo, officia quaerat veniam quidem, blanditiis facere fugiat exercitationem. Et exercitationem libero minus
            non facere deserunt!
            Ex, quae deleniti, distinctio at soluta sapiente ratione, cumque reiciendis quo facilis perferendis
            quibusdam rerum aliquam ad quaerat odit praesentium quisquam explicabo voluptas quam. Corrupti enim mollitia
            nostrum magnam minima.
            Eius, excepturi distinctio! Quas magni consequuntur fugiat libero minima, harum animi, molestiae debitis
            atque necessitatibus non ipsam, maxime officiis unde facilis error fuga aut. Atque consequuntur inventore ea
            facere tempore?
            Rem perspiciatis nesciunt repudiandae officiis eius eos quasi accusantium veritatis temporibus ex ullam a
            facere, perferendis ipsum cum dolor sint odio assumenda fugiat natus. Perferendis esse beatae tempora
            quibusdam similique.
            Earum, dignissimos suscipit. Eius id adipisci consectetur commodi dolor beatae maxime facilis eveniet, nemo
            asperiores quibusdam mollitia vitae nisi repellendus quam illo cumque et sint, eaque magni repellat! Labore,
            dolorem?
            Unde nemo, enim ipsa ratione nulla praesentium corrupti quidem distinctio molestiae culpa, hic placeat natus
            dolor fugit vitae rem aliquid obcaecati quaerat? Error quis eveniet expedita hic, nemo ducimus porro?</p>
    </main>
    <footer>
        <nav>
            <ul>
                <li>
                    <a href="#home">Home</a>
                </li>
                <li>
                    <a href="#about">About</a>
                </li>
                <li>
                    <a href="#contact">Contact</a>
                </li>
                <li>
                    <a href="www.google.com">Google</a>
                </li>
            </ul>
        </nav>
        <a href="#license">Content is available under these licenses.</a>
    </footer>

</body>

</html>
h2 + button {
    font-size: 20px;
}

footer > a {
    color: #457b9d;
}

adjacent selector는 바로 뒤에오는 요소를 선택하는 selector(h2 바로 뒤에 온 button에만 폰트 사이즈만 변경됨)
direct-descendent selector는 direct child를 선택한다. 

그러니까 descendent selector는 그냥 nest되어있는 것들을 전부 통틀어서 선택한다면

direct descendent는 요소에 아랫단계에 있는 부분들만 select함(지금의 예시에선 footer에 a태그가 많지만 footer바로 아랫단계에 있는 a element만 색깔이 달라짐_

 

 

The Attribute Selector

reference

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

 

Attribute selectors

The CSS attribute selector matches elements based on the presence or value of a given attribute.

developer.mozilla.org


attribute selector는 element의 attribute가 있는 content만 select 해주는 selector

 

input[type="text"] {
	font-size: 30px
}

위에 코드는 그러니까 많은 인풋들중 text타입의 input만 셀렉트해서 스타일을 설정하겠다는 뜻이다.

selector[class="c1"]{
	background-color: cyan;
}

======
.c1{
	background-color: cyan;
}
=====
selector.c1{
	background-color: cyan;
}

물론 class도 element의 attribute라서 이런 selector도 가능하다.

하지만 그냥 class만 적으면 보디에 모든 컨텐츠의 지정 class가 다 적용되므로

엄밀히 말하면 .class와 selector.c1은 다르다(물론 selector[class="c1"]과 selector.c1은 같은 것을 select한다)

/* <a> elements with a title attribute */
a[title] {
  color: purple;
}

/* <a> elements with an href matching "https://example.org" */
a[href="https://example.org"] {
  color: green;
}

/* <a> elements with an href containing "example" */
a[href*="example"] {
  font-size: 2em;
}

/* <a> elements with an href ending ".org" */
a[href$=".org"] {
  font-style: italic;
}

/* <a> elements whose class attribute contains the word "logo" */
a[class~="logo"] {
  padding: 2px;
}

그리고 attribute 셀릭트에서 *= , $=을 써서 그 단어가 포함되어 있으면 그것을 select해주는 기능도 있다. 이건 대소문자를 가리기 때문에 주의.. (만약 html에 google.com을 쓰고 css selector에 *=Google을 쓴다면 인식하지 못한다.)

 

 

Pseudo Classes

pseudo 미국식 [sú:dou]  영국식 [sjú:-]  1. 허위의, 가짜의; 모조의

reference

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

 

Pseudo-classes

A CSS pseudo-class is a keyword added to a selector that specifies a special state of the selected element(s).

developer.mozilla.org

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

 

:hover

The :hover CSS pseudo-class matches when the user interacts with an element with a pointing device, but does not necessarily activate it. It is generally triggered when the user hovers over an element with the cursor (mouse pointer).

developer.mozilla.org

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

 

 

:active

The :active CSS pseudo-class represents an element (such as a button) that is being activated by the user.

developer.mozilla.org

developer.mozilla.org/en-US/docs/Web/CSS/:nth-of-type

 

:nth-of-type()

The :nth-of-type() CSS pseudo-class matches elements of a given type (tag name), based on their position among a group of siblings.

developer.mozilla.org

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

 

:checked

The :checked CSS pseudo-class selector represents any radio (input type="radio"), checkbox (input type="checkbox"), or option (option in a select) element that is checked or toggled to an on state.

developer.mozilla.org


 

가상의 클래스를 선택할때 쓰는 selector 

:active는 마우스로 클릭할때 스타일을 적용시키게 해주는 pseudo class이다. 

:hover는 마우스를 컨텐츠에 올릴때를 select하는 pseudo class selector

:checked는 체크박스에 체크가 됐을때

:nth-of-type()은 element의 n번째를 select할때,, 괄호안에 2,3,3n 이런식으로 입력해서 2번째, 3번째, 3n번째를 선택하는 selector

예시는 mdn에 더 자세히 나와있다.

 

 

코딩 연습 11: Checkerboard Exercise

 

/* Odd paragraphs */
p:nth-of-type(2n+1) {
  color: red;
}

/* Even paragraphs */
p:nth-of-type(2n) {
  color: blue;
}

를 활용한 연습문제.

 

 

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

2020-10-25 TIL(2)  (0) 2020.10.25
2020-10-25 TIL(1)  (0) 2020.10.25
2020-10-23 TIL  (0) 2020.10.23
2020-10-22 TIL  (0) 2020.10.22
2020-10-21 TIL  (0) 2020.10.21

섹션 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 Pseudo Elements  
CSS Specificity Pseudo Classes  

adjacent: 인접한

descendent : 하강성의


Universal & Element Selectors

selector {
	property: value;
}

이게 css의 기본적인 pattern과 syntex

여기에서 selector에 대한 것들을 배울것..

 

universal selectors

* {
	property: value;
}

* selector는 universal 말그대로 모든 것들에 대한 스타일을 정의함.(select everything)

 

element selectors

h1 {
	property: value;
}
h1, h2{
	property: value;
}

html element들을 select하는 selector (select element)

다수의 element들을 select 할수도 있다.(selector list)

 

 

 

The ID Selector

reference

coolors.co/palettes/trending

 

Trending color palettes - Coolors

Get inspired by thousands of beautiful color schemes and make something cool!

coolors.co

developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id

 

id

The id global attribute defines an identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).

developer.mozilla.org


select ID 

ID는 우리가 예전에 input element를 작성할때 다뤘었다.

input과 라벨에 id과 for attribute를 이용해서 두개를 연결했었다.

그리고 이제 그 id를 css에 selector로 이용해 select 할 수 있다.

ID는 identity를 의미하는것일듯

The id global attribute defines an identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).

id selector를 이용해서 많은 버튼들중에(혹은 많은 element들중에) 하나를 집어서 style을 적용시킬수 있다.

 

 

The Class Selector

reference

developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/class

 

class

The class global attribute is a space-separated list of the case-sensitive classes of the element. Classes allow CSS and Javascript to select and access specific elements via the class selectors or functions like the DOM method document.getElementsByClassN

developer.mozilla.org


id와 비슷하지만 id는 하나만 지정하고 

class는 요소 각각을 따로따로 그룹지을수 있는 attribute 이다. 

이걸통해서 그룹핑된 요소들을 css로 스타일링 할 수 있다.

id과 class의 selector syntex의 다른점은 id는 hash 심볼(#)을 달고 class는 dot 심볼(.)을 단다는것 정도인것 같다.

※VSCode 다중 커서 키 : alt + 클릭

 

코딩 연습 9: Basic Selectors Practice

 

The Descendent Selector

 

.post a {
    color: #457b9d;
    font-weight: 700;
    text-decoration: none;
}

footer a {
    color: #e63946;
}

element나 class에 nesting된 element들을 select하는 selector

 

코딩 연습 10: Descendent Combinator Practice

www.codingfactory.net/10553 참고함.. font-weight에 대한 사항(bold 만들때 필요)

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

2020-10-25 TIL(1)  (0) 2020.10.25
2020-10-24 TIL  (0) 2020.10.24
2020-10-22 TIL  (0) 2020.10.22
2020-10-21 TIL  (0) 2020.10.21
2020-10-20 TIL  (0) 2020.10.20

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

 

2020-10-21 TIL

섹션 6. CSS: The Very Basics crucial! important nice to have Conceptual Overview of CSS Common Text Properties Basic CSS Syntax including Styles Correctly Color Systems: RGB, Hex, etc. font-family p..

pgsb.tistory.com

 

Colors Systems: Hexadecimal

RGB로 컬러를 입력하는 방식은 (r,g,b)로 표현된다.

수치의 범위는 0-255까지

hexadecimal은 16진수 .. 16진수로 컬러를 표시하는 방식이라고 생각하면 된다.(보통 우리는 실생활에서 10진수를 사용하고 10진수는 decimal)

syntex는 숫자 두개씩 짝지어서 6자리로 컬러로 표시하는 방식

RGB랑 표현되는건 똑같지만 패턴이 다르다고 생각하면 된다.

16진수에서 FF는 10진수의 255와 같다.

colorpicker를 통해서 rgb표현이랑 hex표현이랑 같이 알 수 있다.

 

A Reminder On Semicolons & CSS

property를 적용할때 꼭 ;(semi-colon)을 적용해야 한다. 안그러면 제대로 적용이 안되고 다음 property가 무시된다. 브라우저로는 이게 잘 확인이 안되기 때문에 중요.

syntex를 무시하지마라.

 

 

Common Text Properties

reference

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

developer.mozilla.org/en-US/docs/Web/CSS/font-weight

developer.mozilla.org/en-US/docs/Web/CSS/text-decoration

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

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


 

텍스트를 꾸며주는 여러 property들을 알아보기

text-align : 텍스트 정렬

font-weight : 폰트 무게? 그러니까 폰트의 진하기정도

text-decoration : 밑줄 긋기? 가운뎃줄 긋기 같은 텍스트 마킹류의 데코레이션 특성

line-height : 줄 간격

letter-spacing : 글자 간격

MDN에 예시가 잘 나와있다.

 

※폰트 사이즈 같은경우에는 폰트에 저장되어 있는 값이 400, 700이면 100을 설정했을때 근사값으로 표현해준다.

selecter{

    font-weight : 100;

}

을 했다면 400이 표현되는것.

보통 400이 normal 700이 bold이다.

 

 

Font Size Basics With Pixels

reference

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


폰트 사이즈 특성에 대해서 알아보는 시간

많은 단위들이 있지만 보통 절대값단위로는 px(pixel)을 사용한다.

자주 쓰이는 몇몇 단위만 쓴다.

하지만 픽셀은 디스플레이의 픽셀 하나를 치기 때문에 디스플레이마다 1px은 다르다. 그러나 1px은 작다는 것에는 이견의 여지가 없다.

 

The Font Family Property

reference

developer.mozilla.org/en-US/docs/Web/CSS/font-family

www.cssfontstack.com/


font family? 글꼴집합? 글씨체라고 보면 될듯하다.

custom font family를 쓰는 방법이 있지만 지금은 브라우저나 컴퓨터안에 내장되어 있는 font family를 쓰는 방법을 알아본다. 

운영체제마다(win,mac) 내장되어있는 font family가 다르기 때문에 그 부분은 염두해 두어야한다.

Generic font familiy는 font family 모음집이다. font family특성을 사용할때 generic font family를 넣으면 그 generic에 속한 폰트가 적용된다.

font family는 하나이상을 적을 수 있다. 첫번째를 우선 적용하고 다음에 오는걸 백업용으로 넣을 수 있다. 첫번째 폰트가 빌드인 되지 않았다면 그 뒤에 폰트가 적용된다.

 

 

코딩 연습 8: Hipster Logo Exercise

text-transform같은 경우는 강의에서 소개해주지 않은걸로 알고 있는데 있어서 구글링해서 찾았다

text-decoration같은 경우는 특성 추가할때마다 콤마를 찍는줄 알았는데 그냥 스페이스 눌러서 추가하는거여서 헤맸다.

 

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

2020-10-24 TIL  (0) 2020.10.24
2020-10-23 TIL  (0) 2020.10.23
2020-10-21 TIL  (0) 2020.10.21
2020-10-20 TIL  (0) 2020.10.20
2020-10-19 TIL(2)  (0) 2020.10.19

섹션 6. CSS: The Very Basics

crucial! important nice to have
Conceptual Overview of CSS Common Text Properties  
Basic CSS Syntax    
including Styles Correctly    
Color Systems: RGB, Hex, etc.    
font-family property    

What is CSS?

reference

codepen.io/TurkAysenur/pen/JjGKKrP


CSS - cascading style sheets

cascading (정보통신) 연속화     cascading  폭포같은, 계속되는, 연속적인
the purple dino dance에서 purple에 해당 

noun을 꾸며주는 adjective에 비유될수 있다.

문서에서 style sheets 부분에 해당

t's not a programming language necessarily, but it's a language that we can use to just describe the appearance or the visual representation of our documents.

css를 작성하는 양식 패턴이 중요한것 같다.

selecter {
	proerty: value;
}

대부분은 이 양식으로 css를 작성한다.

 

 

CSS is Huge, Don't Panic!

reference

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


css는 많은 properties가 있다. 그렇다고 그걸 다 쓰지는 않는다.

다 외울필요도 없고 있다는 것만 알아두고 그때 그때 검색해서 사용하면 된다. 

ex) text shadow를 구글링하면 예제와 실제로 적용해보면서 바로바로 보여주는 자료들이 많다.

MDN이란 중요한 소스를 사용하자.

가장 중요한건 syntex와 pattern

syntex와 pattern에 집중하자.

통사론 (Syntax)

통사론 또는 구문론은 단어가 문장을 이루는 방법을 연구하는 언어학의 하위 분야이다. 문장론, 구문법 등으로도 불린다. 언어의 문법에서 구문론이 차지하는 비중에 따라 언어를 교착어·굴절어·고립어 등으로 구분하기도 한다. 위키백과

 

 

Including Styles Correctly

    <!-- Using a Style Element - Not Ideal -->
    <!-- <style>
        h2 {
            color: palevioletred;
        }
    </style> -->

    <!-- Linking to an External Stylesheet! The best option! -->
    <link rel="stylesheet" href="app.css">
</head>

<body>
    <!-- INLINE STYLES - BAD! -->
    <!-- <h1 style="color: purple">Hello World</h1>
    <button style="background-color: palegreen">I AM BUTTON</button>
    <button style="background-color: palegreen">Another button!</button> -->

    <h2>I am an h2</h2>
    <h2>I am an h2</h2>
    <h2>I am an h2</h2>
    <button>Button 1</button>
    <button>Button 2</button>

html에 css를 적용시키는 방법은

3가지가 있다.

1. inline - 이방법은 요소 내에 바로 적용시키는 방법. (나쁨)

So this is not a great idea, mainly because it's really difficult.

It's impossible to share these styles without duplicating them.

I'd have to change them all individually. (만약 20개의 버튼이 있다면... 각각 개별적으로 다 적용시켜야 된다.)

Also, I can't share these styles between documents.

I might have 10 different pages or HTML documents for an application and they all need to have the same

styles.

2. html 헤드 부분에 스타일 적용시키기. (차악?)

to use the style element which allows us to write CSS directly instead of our document, but not nested or not embedded in an element.

I can style all hues, but we still have the problem of if I have multiple documents, multiple pages

on my website that I want to use the same styles, I would have to copy and paste this into each one.

(페이지가 많다면 그 페이지마다 개별적으로 적용해야 한다.)

3. 외부에서 연결시키기 (추천)

So the best approach and the one you see the most is to write your styles in an external style sheet.

we'll make a new file that's completely separate file where we write our CSS

It needs to end in that case as the file extension and then we can include that file in our own document

or any other documents we make.

외부에서 연결시키려면 html link element를 사용해야한다.

<head>
    <title>CSS Intro</title>
    <link rel="stylesheet" href="app.css">
</head>

.href는 적용할 파일이 저장되어있는 위치.

The rel stands for "relationship", and is probably one of the key features of the <link> element 

(by mdn - developer.mozilla.org/en-US/docs/Web/HTML/Element/link)

rel은 mandatory(의무적)하지 않다. 없어도 파일은 적용이 되지만 코딩하는 사람이 임의적으로 구분하기 좋다. 그냥 파일에 이름표를 만드는 느낌(I don't think it's actually mandatory, but most editors will put that there for you.)

css 파일은 메타 데이터에 가깝기 때문에 head부분에 넣는다.

 

 

Color & Background-Color Properties

reference

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

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

 


color property 적용해보기

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

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

<body>
    <h2>I am an h2</h2>
    <h2>I am an h2</h2>
    <h2>I am an h2</h2>
    <button>Button 1</button>
    <button>Button 2</button>
    <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Iusto, fuga. Aperiam ipsa expedita illum illo aliquam
        debitis accusamus consequuntur repellat incidunt quaerat nesciunt minus, iure laboriosam deleniti cum corrupti
        officia.
        Aspernatur reiciendis error quibusdam! Voluptatum atque sapiente ab et id voluptates. Commodi sapiente
        praesentium, possimus iusto quam perspiciatis, omnis vero fugit aperiam alias assumenda harum asperiores vel
        architecto expedita accusantium!
        Rerum, accusamus veritatis magnam labore autem odio porro reprehenderit repellat eveniet, praesentium beatae
        nostrum reiciendis doloremque quaerat quis laudantium minus eius excepturi velit temporibus. Quasi doloribus
        magni autem consequatur expedita?</p>
</body>

</html>

-> 적용된 css 파일

h2 {
    color: #5FCFFC;
    background-color: rgb(89, 151, 0);
}

button {
    color: magenta;
    background-color: cyan;
}

p {
    color: olive;
    background: rgb(228, 161, 37);
}

body {
    background-color: #c5e;
}

※brace(괄호) 

h2같은 경우는 블럭 레벨 요소라서 백그라운드 컬러 설정하면 블록단위로 배경색이 설정됨.

 

 

코딩 연습 7: Our First CSS Exercise

쌩 html에 css적용해서 스타일 적용해보기

 

 

 

 

Colors Systems: RGB & Named Colors

reference

htmlcolorcodes.com/color-names/

htmlcolorcodes.com/color-picker/(or seach google -> color picker)

ko.wikipedia.org/wiki/RGB


Modern browsers support 140 named colors, which are listed below. Use them in your HTML and CSS by name, Hex color code or RGB value.

컬러네임은 140개로 제한되어 있다.(그것도 브라우저가 인식하는.. 미리 세팅되어있는 네이밍된 값들임)

 

 

RGB는 빛의 삼원색을 이용해서 색을 표현하는 방식(red, green, blue)

color피커는 rgb값을 외울필요없이 그냥 색을 정해주면 rgb값을 출력해서 알수 있게 해준다.

그러니까 rgb값에 대한 내용을 파고들 필요가 없이 우리는 syntex와 pattern에 익숙해져야한다.

 

 

 

 

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

2020-10-23 TIL  (0) 2020.10.23
2020-10-22 TIL  (0) 2020.10.22
2020-10-20 TIL  (0) 2020.10.20
2020-10-19 TIL(2)  (0) 2020.10.19
2020-10-19 TIL (1)  (0) 2020.10.19

 

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

 

2020-10-19 TIL(2)

섹션 5. HTML: Forms & Tables crucial! important nice to have Table Basics: , , , and Table Sections: , , Table Colspan and Rowspan form Element Basics Range & Text Areas Button Elements Form Validat..

pgsb.tistory.com

 

 

 

 "Hijacking" Google & Reddit's Search

<h2>Hijacking Searches</h2>
    <h3>Search Reddit</h3>
    <form action="https://www.reddit.com/search">
        <input type="text" name="q">
        <button>Search Reddit</button>
    </form>
    <h3>Search Google</h3>
    <form action="https://www.google.com/search">
        <input type="text" name="q">
        <button>Search Google</button>
    </form>
    <h3>Search Youtube</h3>
    <form action="https://www.youtube.com/results">
        <input type="text" name="search_query">
        <button>Search Youtube</button>

url패턴을 파악해서 우리가 input에 내용을 입력해서 summit하면 그 내용을 해당 사이트의 검색결과 페이지 내용과 똑같이 띄워주는 demonstration -> form의 액션과 input의 네임의 용법에 대한 예시

 

레딧의 경우 검색을 하면 

www.reddit.com/search/?q=value

이런 식의 url패턴이 나온다.

그래서 이런 패턴을 파악해서 우리의 폼과 인풋의 형식을 해당 사이트에 검색 패턴에 맞추면

인풋에서 summit을 했을때 해당 사이트에서 검색을 summit한것과 똑같은 결과가 나온다.

 

다른사이트도 비슷하다. 

 

※인풋요소는 엔터를 쳐도 서밋 버튼없이 서밋이 된다. 하지만 명시적으로 있는게 좋은듯..

 

Radio Buttons, Checkboxes, & Selects

reference

developer.mozilla.org/en-US/docs/Web/HTML/Element/input/radio

developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox

developer.mozilla.org/en-US/docs/Web/HTML/Element/select


 

    <h2>More Inputs!</h2>
    <form action="/birds">
        <input type="checkbox" name="agree_tos" id="agree">
        <label for="agree">I agree to everything</label>
        <p>
            <label for="xs">XS:</label>
            <input type="radio" name="size" id="xs" value="xs">
            <label for="s">S</label>
            <input type="radio" name="size" id="s" value="s">
            <label for="m">M</label>
            <input type="radio" name="size" id="m" value="m">
        </p>
        <p>
            <label for="meal">Please Select an Entree</label>
            <select name="meal" id="meal">
                <option value="fish">Fish</option>
                <option value="veg">Vegetarian</option>
                <option value="steak">Steak</option>
            </select>
        </p> 
	</form>

 

체크박스와 라디오는 인풋요소의 다른 타입이다.

체크박스는 체크박스의 대상에 대해 yes(on) or no(off)로 형식을 보내게 된다.

 

라디오는 라디오 그룹에 대해 하나만 지정할 수 있게 체크박스가 만들어진다.

하지만 value값을 지정하지 않게되면 개별정인 형식으로 보내지게 되는게 아니라 yes or no로 인식하고 형식을 보낸다.

(-> 그러니까 밸류값이 안정해지면 어떤 값을 누르든 형식은 on으로 서밋되게 된다.)

 

select는 input의 타입이 아닌 별개의 요소이다.

select 박스를 만들고 옵션을 추가해서 선택할 수 있게 한다.

 You can include a selected attribute on an <option> element to make it selected by default when the page first loads.

 

Range & Text Area

reference

 

developer.mozilla.org/en-US/docs/Web/HTML/Element/input/range

developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea


 

        <p>
            <label for="cheese">Amount of Cheese:</label>
            <input type="range" id="cheese" min="1" max="100" value="75" name="cheese_level">
        </p>

        <p>
            <label for="requests">Any Special Requests?</label>
            <br>
            <textarea id="requests" rows="10" cols="40" name="Requests?" placeholder="Type something here"></textarea>
        </p>

range 타입이나 number 타입은 step이라는 attribute를 통해서 step 밸류값만큼 한번에 올리거나 내릴수 있다.

 

 

※min, max는 input type number에서도 쓸수 있다.

 

 

코딩 연습 6: Forms Practice Exercise

 

 

HTML5 Form Validations

reference

developer.mozilla.org/en-US/docs/Web/HTML/Attributes/required

developer.mozilla.org/en-US/docs/Web/HTML/Attributes/min

developer.mozilla.org/en-US/docs/Web/HTML/Attributes/minlength

developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern


   <h2>Validations Demo</h2>
    <form action="/dummy">
        <p>
            <label for="first">Enter First Name</label>
            <input type="text" name="first" id="first" name="first" required>
        </p>
        <p>
            <label for="user">Username</label>
            <input type="text" id="user" name="username" minlength="5" maxlength="20" required>
        </p>

        <p>
            <label for="email">Email</label>
            <input type="email" id="email" name="email" required>

        </p>
        <p>
            <label for="website">Website</label>
            <input type="url" id="website" name="website">
        </p>

        <button>Submit</button>
    </form>

 

validation 확인; 비준

서버에서 확인하는 방법이랑 내장된 방법(built-in)된 방법이 있는데

여기서 소개하는건 브라우저에 내장된 validation을 소개함.

 

 

the term validations

generally refers to adding constraints(제약) or validating user input or data, for example, requiring that

some fields can't be empty or that a password has to be between, I don't know, seven and 12 or 20

characters or whatever it is.

 

 

And in the past, server side validation was pretty common in the earlier days of it's still around

where you would type something, you know, fill everything out, then you hit, submit the page refreshes

and then it tells you if there's any problems because it's hitting a server first and then coming back

and telling you, here are the issues.

 

server side validation같은 경우에는 data가 browser를 통해 들어가지 않을경우(terminal을 통한 접근) browser가 validation을 못하기 때문에 필요한 경우도 있다.

 

min, minlength같은 경우 이미 그 속성안에 validation이 내장되어 있다.

input type email과 url도 비슷한 경우.

 

패턴은 조금 복잡해서 나중에 더 심화해서 배우도록하고..

 

저장되어진 패턴들도 있다.

<input type="email">

<input type="url"> 등등

 

 

Creating A Marathon Registration Form Intro

 

이런 형식의 폼 만들어보기 

다음 동영상으로 넘어가기 전에 자기가 스스로 해볼것을 권장하고 있고

조건들이 있다.

1. name에는 required 속성이 붙어 있다.

2. select a race같은 경우에는 p태그로 둘러 쌓여 있다.

3. form을 보낼 곳은 정해져 있지 않다. 그저 형식을 만드는것에 중점을 둘것.

4. select age group은 정해져 있지 않다. 보여준건 under 18, 18-30, 30-50, 50+

한번 만들어보자..

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>race register form</title>
</head>
<body>
    <form action="">
        <h1>Race Registration!</h1>
        <form action="">
            
            <!-- name section -->
            <div>
                <label for="First Name">First name</label>
                <input type="text" id="First name" required>
                <label for="Last Name">Last Name</label>
                <input type="text" id="Last Name" required>
            </div>
            
            <!-- select race section -->
            <p>
                Select a Race:
            </p>
            <div>
                <input type="radio" id="Fun Run 5k" name="race category" value="Fun Run 5k">
                <label for="Fun Run 5k">Fun Run 5k</label>
            </div>
            <div>
                <input type="radio" id="Half Marathon" name="race category" value="Half Marathon">
                <label for="Half Marathon">Half Marathon</label>
            </div>
            <div>
                <input type="radio" id="Full Marathon" name="race category" value="Full Marathon">
                <label for="Full Marathon">Full Marathon</label>
            </div>

            <!-- email password section -->
            <div>
                <label for="email">Email</label>
                <input type="email" id="email">
                <label for="password">Password</label>
                <input type="password" id="password">
            </div>

            <!-- age group section -->
            <div>
                <label for="age">Select Age Group</label>
                <select name="age" id="age">
                    <option value="under 18">under 18</option>
                    <option value="18-30">18-30</option>
                    <option value="30-50">30-50</option>
                    <option value="50+">50+</option>
                </select>
            </div>

            <!-- summit button -->
            <button>Register!</button>
        </form>
    </form>
    
</body>
</html>

 

marathone form.html
0.00MB

 

 

 

Creating A Marathon Registration Form Solution

 colt's solution

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Register Form</title>
</head>

<body>
    <h1>Race Registration!</h1>
    <form action="">
        <div>
            <label for="first">First Name</label>
            <input type="text" id="first" name="firstname" required>
            <label for="last">Last Name</label>
            <input type="text" id="last" name="lastname" required>
        </div>
        <p>Select a Race: </p>
        <div>
            <input type="radio" name="race" id="funrun">
            <label for="funrun">Fun Run 5k</label>
        </div>
        <div>
            <input type="radio" name="race" id="half">
            <label for="half">Half Marathon</label>
        </div>
        <div>
            <input type="radio" name="race" id="full">
            <label for="full">Full Marathon</label>
        </div>
        <div>
            <label for="email">Email</label>
            <input type="email" name="email" id="email" required>
            <label for="password">Password</label>
            <input type="password" name="password" id="password" required>
        </div>

        <div>
            <label for="division">Select Age Group</label>
            <select name="division" id="division">
                <option value="kids">under 18</option>
                <option value="ya">18-30</option>
                <option value="adults">30-50</option>
                <option value="seniors">50+</option>
            </select>
        </div>
        <button>Register</button>

    </form>

</body>

</html>

 

내가 한것과 비교하기 및 tip & trick

1. emmet input 단축키 input:password, input:email 등등

input에서 그냥 스니팻하면 text가 디폴트임

 

2. 그냥 div를 하기보단 section요소가 더 semantic적임

 

3. email과 패스워드란에 required 속성을 넣었는데 그게 나와는 차이점임

근데 굳이 넣지 않아도 해봤을때 validation이 걸림... email타입 패스워드 타입 안에 이미 validation이 포함되어 있는데 굳이 required가 필요한가 싶음..

 

4. name 인풋에 placeholder를 넣어도 좋다. 하지만 라벨이 accessible하다. placeholder는 그렇지 않음

 

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

2020-10-22 TIL  (0) 2020.10.22
2020-10-21 TIL  (0) 2020.10.21
2020-10-19 TIL(2)  (0) 2020.10.19
2020-10-19 TIL (1)  (0) 2020.10.19
2020-10-18 TIL(2)  (0) 2020.10.18

섹션 5. HTML: Forms & Tables

crucial! important nice to have
Table Basics: <table>, <tr>, <td>, and <th> Table Sections: <thead>, <tfoot>, <tbody> Table Colspan and Rowspan
form Element Basics Range & Text Areas  
Button Elements Form Validations  
Labels    
Common Input Types    

Introducing HTML Tables

표를 만들기...

여기서 표는 2차원적인(행과 열) 정보의 나열을 얘기한다.

웹의 초기 그러니까 90년대, 00년대초에는 구조배치(layout)이 어려웠기 때문에 테이블을 이용해서 홈페이지를 꾸몄다.

※ ex)www.dolekemp96.org/main.htm

    www.spacejam.com/

->페이지 inspect하면 table요소로 레이아웃을 한게 보인다.

 

지금은 정보를 효율적으로 보여주는것에 잘 쓰인다.

※ ex)en.wikipedia.org/wiki/List_of_largest_cities#List

 

Tables: TR, TD, and TH Elements

reference

developer.mozilla.org/en-US/docs/Web/HTML/Element/table

developer.mozilla.org/en-US/docs/Web/HTML/Element/td

developer.mozilla.org/en-US/docs/Web/HTML/Element/tr

developer.mozilla.org/en-US/docs/Web/HTML/Element/th

 

table은 표를 나타내는 semantic markup을 나타냄.

td는 셀하나하나의 데이터 table data

tr은 가로 한줄 그러니까 행 table row

th는 열의 주제? table header

 

 

Tables: Thead, Tbody, and Tfoot Elements

reference

developer.mozilla.org/en-US/docs/Web/HTML/Element/thead

developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody

developer.mozilla.org/en-US/docs/Web/HTML/Element/tfoot

 

semantic한 구분

Thaed, Tbody, Tfoot

Thead는 테이블의 머리 1열

Thead는 테이블의 본 컨텐츠

Tfoot은 테이블의 끝열(developer.mozilla.org/en-US/docs/Web/HTML/Element/tfoot 에 사용예시가 있다. 굳이 잘 쓰지는 않을거같다.)

 

보통 테이블 안에 thead와 tbody를 구분해놓고 안에 컨텐츠를 작성한다.

마치 html boilerplate에 헤드 보디 구분하는것처럼...

<table>
    <caption>Council budget (in £) 2018</caption>
    <thead>
        <tr>
            <th scope="col">Items</th>
            <th scope="col">Expenditure</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <th scope="row">Donuts</th>
            <td>3,000</td>
        </tr>
        <tr>
            <th scope="row">Stationery</th>
            <td>18,000</td>
        </tr>
    </tbody>
</table>

 

Tables: Colspan & Rowspan

reference

developer.mozilla.org/en-US/docs/Web/HTML/Element/thead -> attribute란 참조.

 

colspan과 rowspan은 attribute이다. 

rowspan : how many rows the cell extends

rowspan : how many columns the cell extends

둘다 적지않으면 디폴트 값인 1로 지정되어있다.

en.wikipedia.org/wiki/List_of_largest_cities#List

에 표 헤더에 한 열에 3개에 3열이 또 세부적으로 나눠져 있는것을 볼수 있는데 이 속성을 이용해서 표현한것이다.

chrome inspect로 살펴볼수 있다.

 

developer.mozilla.org/en-US/docs/Web/HTML/Element/tr

 

: The Table Row element

The HTML tr element defines a row of cells in a table. The row's cells can then be established using a mix of td (data cell) and th (header cell) elements.

developer.mozilla.org

-> example 보면 span쓰는 용법도 자세히 나와있다.

 

 

 

코딩 연습 5: Table Practice Exercise

 

 

 

The Form Element

action attribute is very important.

It specifies where the data should be sent when the form is submitted.

 

That's the form itself is the container and it has a label on it that says send this data to my

server.com or send it to search or whatever.

URL is some destination to send the information to.

 

when you submit a form, a HTTP request will be sent and we control where that request goes to using this attribute called action.

And we control which type of HTTP method. We control that using an attribute called method.

 

There are lots of options, but I need to remember for now is that the form access as this thing that

groups together inputs and then submits them together to some specified destination with a little shipping

label.

 

ex)reddit search form - inspect

 

form요소는

 정보를 보내기 위해 상호작용되는 컨트롤부분이다.

 form은 단순히 semantic 적인 요소이고 안에는 input,button 등등이 있다.

 form에는 속성이 있는데 대표적으로 action과 method,, 

 action속성은 form안에 상호작용된 정보들을 보낼 도착지를 명시하는부분

 method속성은 어떤방식으로 form의 정보들을 컨트롤할것인지 정하는부분(get등등)

 

 

Common Input Types

reference

developer.mozilla.org/en-US/docs/Web/HTML/Element/input

 

: The Input (Form Input) element

The HTML input element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.

developer.mozilla.org

 

form 요소는 그저 요소들을 집어넣는 컨테이너적인 역할을 하는 요소이다.(semantic적)

그렇다면 form이라는 컨테이너안에 들어가는 것은 무엇일까. 

대부분 input 요소가 들어간다. (form controler중 하나)

input은 정말 다양해서(versatile) 20가지 이상의 input type이 있다.

 

클로징태그가 없다.(셀프 클로징)

 

input의 속성엔 대표적으로 type과 placeholder가 있다.

type은 인풋의 방식을 바꿔주고(mdn에 다양하게 있다. 예시로는 text, password, date 등등)

placeholder는 input박스에 내용을 기입하지 않을때, 자리를 지키고 있는 텍스트? 라고 생각하면 될거같다.

보통 placeholder는 input박스에 무엇을 입력할지 명시할때 많이 쓰인다.

 

 

The All-Important Label

developer.mozilla.org/en-US/docs/Web/HTML/Element/label

 

 

The HTML label element represents a caption for an item in a user interface.

developer.mozilla.org

라벨은 인풋의 접근성(accessibility)을 높혀주고 form요소를 사용하기 쉽게 만들어준다.

라벨은 그저 인풋의 보여지는 부분만 엮어주는게 아니라 코드적으로도 같이 엮어준다.

 

<div class="preference">
    <label for="cheese">Do you like cheese?</label>
    <input type="checkbox" name="cheese" id="cheese">
</div>

label에 속성인 for로 라벨의 개별적인 id를 부여하고

input의 id 속성으로 라벨에 부여된 id를 입력함으로써 서로 연결되게 설정할 수 있다.

 

물론

<div class="preference">
    <label>Do you like cheese?
    <input type="checkbox" name="cheese">
    </label>
</div>

for와 id를 쓰지 않고 label안에 input을 nesting 할 수 있지만 올바른 접근방식(invaild approach)은 아니고 

보통 위에 방식으로 많이 쓴다.

nesting하는건 지저분해보일수 있고 스탠다드하지 않다.

 

 

 

HTML Buttons

developer.mozilla.org/en-US/docs/Web/HTML/Element/button

 

 

The HTML button element represents a clickable button, used to submit forms or anywhere in a document for accessible, standard button functionality.

developer.mozilla.org

버튼은 말그대로 버튼의 역할을 한다.

폼안에선 기본적으로 summit 타입으로 되어있는데

type 속성으로 summit, button으로 바꿀수 있다.

버튼을 눌러 summit을 하게 되면 form의 action url로 이동하게 된다.

버튼을 버튼 타입으로 하게 되면 그냥 클릭해도 아무런 반응이 없다.(이건 js로 바꿀수 있는듯)

폼 컨테이너 요소 밖으로 버튼을 생성하면 아무런 반응도 일어나지 않는다.

클로징 태그가 있다.

 

인풋태그로도 summit버튼을 만들수 있다.

<button type="summit">summit!</button>

==

<input type="summit" value="summit!">

저 두 코드는 다른 요소로 쓰였지만 랜더링은 둘다 똑같이 보인다.

 

 

The Name Attribute

form action="/search/"

 

 

input에 name 속성은 input에 입력된 정보를 name에 맞춰서 url형식으로 보내주는 역할을 한다.

 

 

 

다른 input과 함께 보내지면 url은 ampersand(&)를 포함해서 같이 정보를 보낸다.

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

2020-10-21 TIL  (0) 2020.10.21
2020-10-20 TIL  (0) 2020.10.20
2020-10-19 TIL (1)  (0) 2020.10.19
2020-10-18 TIL(2)  (0) 2020.10.18
2020-10-18 TIL(1)  (0) 2020.10.18

SEC 4. HTML : Next Steps & Semantics

Crucial! important Nice to Have
Understanding what HTML5 Actually is   VSCode Tip : Emmet
Block Vs. Inline Elements   <sub> elements
<span> and <div> elements   <hr> elements
Semantic Elements   <sup> elements
    <br> elements

 


What Exactly Is HTML5?

HTML5 is the latest evolution of the standard that defines HTML.

browser를 만드는 회사에서 설정하기 때문에 유저가 HTML 버전을 낮추거나 하는건 불가..

그냥 최신의 HTML 스탠다드라고 생각하면 될듯.. 

HTML 파일을 에디터할때 표준규격(boilerplate)이 가장 앞에

<!doctype HTML> 을 쓰는데 이건 HTML파일이라는 깃발, 선언에 가깝고, 실질적으로 문서에 영향을 주는건 없다. 바꾼다고해서(HTML 4.01 ~~) 버전이 달라지는것, 변경되는것도 없고 그저 명시해놓는것에 가까움.

 

 

 

 Block vs. Inline Elements - Divs and Spans

 

inline element : on-line , in-line  ex) <a>. <span>

block level element : own-line,  take own block ex) <div>

지금(HTML을 배우는 단계)은 중요하지 않을지 모르지만 CSS에서 많이 쓰인다고함.

 

div같은 경우에는 특히 CSS를 적용하기 전엔 컨텐츠에 아무런 영향을 주지 않음. (span도 비슷)

 

div

developer.mozilla.org/en-US/docs/Web/HTML/Element/div

 

span

developer.mozilla.org/en-US/docs/Web/HTML/Element/span

 

 

An Odd Assortment of Elements: HR, BR, Sup, & Sub

MDN에서 HR, BR , Sup, Sub 용법 찾아보면 자세한 예시가 나와있음

중요한 비중을 차지하지는 않는 요소들인것 같다.

 

HR(horizontal rule)은 구분선, self tag

developer.mozilla.org/en-US/docs/Web/HTML/Element/hr

 

BR(break)은 Break line 줄 띄어쓰기,, 줄 띄어쓰기가 필요한 이유는 에디터안에서 줄 띄어쓰기를 해도 html 자체에서는 그냥 이어서 인식하기 때문에

a line break in text

developer.mozilla.org/en-US/docs/Web/HTML/Element/br

 

Sup(Superscript) 은 지수표현하는 느낌으로 철자하나를 위로 올림,, 위키에 주석을 달때도 자주 쓰이는 요소

developer.mozilla.org/en-US/docs/Web/HTML/Element/sup

 

sub(subscript)은 분모나 분자 구조표현할때 쓰는 느낌으로 철자 하나를 아래로 내림,, 분모 표현할때 좋을거 같다.

developer.mozilla.org/en-US/docs/Web/HTML/Element/sub

 

 

Entity Codes

레퍼런스들

entitycode.com/

 

dev.w3.org/html5/html-author/charref

 

ex ) google search  - html entity less than 


entity : 독립체

잘 쓰이지 않거나 키보드로 타이핑하기 어렵거나 html 문서가 헷갈려하는 기호들을 표현할때 쓰는 코드.

에디터에선 이상하게 보일지모르나 브라우저에서는 엔티티코드를 인식하고 렌더링해준다

보통 &(ampersand)로 시작하고 ;(semi-colon)으로 끝난다.

ex) &copy;  &euro;

 

 

코딩 연습 4: Snowman Logo Exercise

entity code 사용법과 sup 요소 이용하는 연습

 

 

? : 등록 상표 기호(登綠商標記號, Registered Trademark Symbol, ®)은 특정 국가 및 지역에서, 어떤 단어나 문구, 기호가 등록된 상표 또는 서비스 마크 임을 알리기 위해 사용하는 심볼 마크이다. 동그라미 안에 '등록 상표'(Registered Trademark)'를 뜻하는 "R" 문자가 기입된 모양을 띈다. by wiki

 

 

Intro to Semantic Markup

semantic : 의미의, 의미론적인

 

Semantic markup, the term semantic itself, independent of code or HTML just means something relating to meaning.

semantic markup is meaningful markup or markup that relates or pertains to the meaning of the content of that element.

 

div 같은 경우는 그냥 컨테이너로써의 요소.. 의미가 없다.

semantic markup은 a요소나 img 요소같은 눈에 딱 보이는 효과를 주지는 않지만 요소에 의미를 부여한다.

이게 메인이다. 이게 네비게이션이다. 이게 하단부(footer)다 이런것

이런 구분없이 div로만 떡칠한다면 정보를 모으는 주체(google 등등)는 정보를 모으는데 헷갈릴 수 있다.

그리고 호환성의 문제(screen reader user)도 있고 마지막으로 개발을 하는데 있어서 개발할 부분들을 쉽게 찾고 구분할 수 있다.

그래서 non-semantic markup(div)보다 semantic markup(main, nav, footer)등을 사용하는게 더 좋다.

->

section , main, nav, header, footer

Header footer, nav section, article main.

They all behave just like divs, except they have some meaning.

So that's one reason making your code more clawable, more friendly to other applications or to other code.

The second reason has to do with accessibility and making your code more accessible to people, using

screen readers to people who cannot see the rendered content or may not be able to fully see it or might

elect to use a screen reader.

Those screen readers can look for things like a nav element or a header or a footer or an article,

a main section.

It can use those as hooks.

And then the third reason that's important is that it just makes your your own code, your markup more

navigable for yourself and for other developers.

So adding meaning into our markup is the idea behind writing semantic markup.

There's nothing new about them except that they add meaning to the markup.

You use an article or a section or a main instead of divisive div.

 

 

Playing With Semantic Elements

그냥 div를 쓰는것보다 semantic한 markup을 쓰자.. 

div는 그냥 컨테이너적인 역할을 하는것이고 

의미가 있는 markup을 함으로써 우리가 그것이 실질적으로 무슨 의미인지 더 빠르게 이해할수 있고 검색최적화와 호환성및 스크린리더유저의 사용에 더 좋게 만들수 있다.

section 요소는 그저 섹션을 나누는 .. 그냥 의미적인 요소에 불과하지만 div보다는 훨씬더 의미가 있다.(이런게 semantic하다고 하는것일듯)

 

figure time footer section article nav main header footer aside summary

MDN으로 찾아보는것도 나쁘지 않을거같다.

 

Screen Reader Demonstration

스크린 리더 사용 동영상

스크린 리더유저의 시점으로 웹을 사용하는것을 보여준다. 

sematic markup을 기준으로 정보들을 읽어주기때문에 숙련이 된다면 숏컷과 함께 빠르게 정보를 찾는것도 가능하다.

또한 스크린 리더 유저를 위해서 semantic markup 사용을 권장하는것...

 

 

VSCode Tip: Emmet

docs.emmet.io/

docs.emmet.io/cheat-sheet/

 

emmet은 그냥 html 코드를 쓰는데 도움을 주는 툴이다. 

VSCode 안에 내장되있기도한데 코드를 빠르게 짜는데 도움이 된다.

치트시트에 간략하게 사용법이 요약되어 있다.

보통 자주쓰는건 child, sibiling, mutiply정도?

그 이외에도 html 요소들을 빠르게 코딩하게 숏컷하게 해주는 툴...

 

 

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

2020-10-21 TIL  (0) 2020.10.21
2020-10-20 TIL  (0) 2020.10.20
2020-10-19 TIL(2)  (0) 2020.10.19
2020-10-18 TIL(2)  (0) 2020.10.18
2020-10-18 TIL(1)  (0) 2020.10.18

sec 3 . HTML : The Essentials

crucial! important nice to have
Paragraph Elements Using MDN as a Resource VSCode Formating On save
HTML Headings The Chrome Inspector  
HTML Lists    
HTML Anchor Tags    
HTML Images    
HTML Boilerplate    

Introduction to HTML

 HTML kind of like the nouns of a Web page, it is the structure of the content.

 HTML : hypertext markup language.

 

 It's just about marking up a document.

 

 Additional information is being added onto the pure content.

 

 in 1989,1990, HTML was created to help describe the structure of academic research papers and share them across the very early Internet.

 Originally was the same issue, but with academic research papers and sharing research papers and sharing

the structure.

 

to write HTML, we use what are called HTML elements.

 

 There's lots and lots of things that we can do, but we define them using this syntax here, this general

pattern where we wrap a tag in opening tag this right here and a closing tag around some content.

 ex)<p> blar blar </p> 

 

 the key concept here is that we are marking up some document just like this here where we're marking

up an essay or a plagiarized poem.

 

 We're going to be marking up Web documents, actual content to be displayed on a page.

 

 So we'll be able to do things like make this a paragraph of text or make this an image, make this a

link to Facebook, make this a bold element or a bold piece of text. Make this a heading.

 That's all stuff we can do with HTML hypertext markup language.

 

 

Our Very First HTML Page

 HTML 문서 만들어보기

 그냥 확장자명을 HTML로 만들면 HTML문서가 만들어지고 문서를 열면 웹브라우져에서 HTML파일을 열고 HTML파일을 인식한다.

 간단한 HTML bold tag를 써보고 확인해보기..

 

 

TIP: Mozilla Developer Network

MDN : Mozila Developer Network

유용한 사이트 

공식적인 문서는 아니고 개발자들이 오픈소스로 만든 자료들이 많다.

HTML CSS JS 가이드들이 많다.

만약 HTML form 태그를 잘 모르겠다하면

HTML form MDN 으로 구글링하면 가이드가 잘 나와있음

참조에서 html 요소 레퍼런스를 보면 요소들의 용법들이 잘 나와있음

developer.mozilla.org/en-US/docs/Web/HTML/Element

 

Paragraph Elements

developer.mozilla.org/en-US/docs/Web/HTML/Element/p

 

 

 

: The Paragraph element

The HTML p element represents a paragraph.

developer.mozilla.org

html은 텍스트에 줄을 띄어쓰기해도 인식해주지 않는다.

따로 html 요소를 사용해야하는데 paragraph element를 사용한다.

p태그를 이용해서 글을 문단 단위로 인식하게 만들어준다.

 

블록 레벨이다. (나중에 배운다고한다)

 

※tip   cmd + arrow ,, or ctrl + arrow  :  줄의 처음과 끝,  글의 처음과 끝을 갈 수 있는 단축키

 

Heading Elements

developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements

h1에서 h6까지.. 

컨텐츠의 제목에 대한 html 요소

h1은 대부분의 문서에 하나만 들어가고(주제에 대한 표현으로 쓰인다) h2가 자주쓰인다.

헤딩 요소는 다른 컨텐츠와 섞이지 않는다.

<h1>chicken</h1>asdfasdfasd

->

chicken

asdfasdfasd

로 표현된다.

 

헤딩 요소의 사이즈는 조절할 수 있지만 문서의 구조성으로 인해서 쓰는걸 권장하진 않는다.

 

헤딩을 글씨 사이즈 조절하는데 쓰지말고 올바르게 써라.

 -> h1 아래 h2 아래 h3 그러니까 문서의 구조성을 생각하면서 써야한다. 토픽 아래 하부 토픽

 

※emmet으로 h1을 쓰고 탭키를 누르면 h1태그가 스니펫된다.

  lorem + 탭 을하면 lorem ipsum 문장이 나온다.

  lorem ipsum은 placeholder text로 쓰인다.

  lorem ipsum * n + tab 을 하면 n줄만큼 lorem 문장이 나온다.

 

 

코딩 연습 1: Pangolin Practice

 h 태그와 p 태그를 사용하는 practice

 별로 어려울건 없었다.

 

 

Introduction to the Chrome Inspector

크롬 page source 보기에 대한 가이드

페이지 소스를 보면서 각각에 요소에 어떤것이 쓰였는지 볼 수 있다.

 to help debug and work with HTML and CSS and JavaScript. For now, we're going to look at one called the inspector.

임시적으로 컨텐츠를 바꿀 수도 있다.

 

 

 

HTML Boilerplate

developer.mozilla.org/en-US/docs/Web/HTML/Element/html

 

: The HTML Document / Root element

The HTML html element represents the root (top-level element) of an HTML document, so it is also referred to as the root element. All other elements must be descendants of this element.

developer.mozilla.org

developer.mozilla.org/en-US/docs/Web/HTML/Element/head

 

: The Document Metadata (Header) element

The HTML head element contains machine-readable information (metadata) about the document, like its title, scripts, and style sheets.

developer.mozilla.org

developer.mozilla.org/en-US/docs/Web/HTML/Element/body

 

: The Document Body element

The HTML body Element represents the content of an HTML document. There can be only one body element in a document.

developer.mozilla.org

 

 

boilerplate 미국식 [-lər-]  영국식 [ˈbɔɪləpleɪt](사업상 서류·법률적 합의안 등의) 표준 문안

 

모든 HTML 문서는 뼈대(skeleton)이 필요하다. 보통 이것을 boilerplate(표준문안)라고 하는데

<!DOCTYPE html>
<html lang="en">
  <head>...</head>
  <body>...</body>
</html>

이 뼈대는 HTML형식의 기본이 된다. 

 

<!doctype html>태그는 이 문서가 html이라는 걸 표현해주는 셀프태그이다(클로징 태그가 없는데 태그가 그자체를 표현하기 때문에 그렇다. 깃발이라고 생각하면 된다.)

 

<html>태그는 모든 태그의 상위 요소이다.

모든 html요소는 이 안에 들어간다.

 

html 요소의 설명에는 이런 설명이 있다.

 

Permitted content

One <head> element, followed by one <body> element.

<head>요소와 <body>요소가 따라온다고 되어있는데

head 요소는 메타 데이터를 설명하는 구간이고

body 요소는 컨텐츠 데이터를 설명하는 구간이다.

 

head 요소는 페이지에 표시가 안되는 메타 데이터를 설명하는 구간이다.

구글에 검색하거나 브라우저에 탭에 표현되는 <title>요소의 내용을 집어 넣는 부분..

 

body 요소는 페이지에 표현되는 컨텐츠 데이터를 넣는 부분.

 

VSCode에선 html 문서를 에디팅할때 ! + tab을 하면 이 boilerplate가 스니팻된다.

 

 

VSCode Tip: Auto-format

 auto-format기능은 컨텐츠에 영향을 주진 않지만 코드를 에디팅하는 입장에서는 보기 좋게 정렬해주는 기능이다.

수동 : commend palette -> mac : cmd + shift + p ,  window? : ctrl + shift + p 

         and format document

자동 : setting -> format on save

 

setting -> extention에 html란에도 format 관련 옵션이 있다.

 

List Elements

developer.mozilla.org/en-US/docs/Web/HTML/Element/li

 

 

  •  

    The HTML li element is used to represent an item in a list.

    developer.mozilla.org

developer.mozilla.org/en-US/docs/Web/HTML/Element/ol

 

 

      : The Ordered List element

 

The HTML ol element represents an ordered list of items — typically rendered as a numbered list.

developer.mozilla.org

developer.mozilla.org/en-US/docs/Web/HTML/Element/ul

 

 

      : The Unordered List element

 

The HTML ul element represents an unordered list of items, typically rendered as a bulleted list.

developer.mozilla.org

 

<li> - an item in a list

<ol> - ordered list

ex)

<ol>
    <li>first item</li>
    <li>second item</li>
    <li>third item</li>
</ol>
  1. first item
  2. second item
  3. third item

 

<ul> - unordered list

ex)

<ul>
    <li>first item</li>
    <li>second item</li>
    <li>third item</li>
</ul>
  • first item
  • second item
  • third item

 

 

list를 nesting 할수 있다.

ex)

<ol>
  <li>first item</li>
  <li>second item  <!-- closing </li> tag not here! -->
    <ol>
      <li>second item first subitem</li>
      <li>second item second subitem</li>
      <li>second item third subitem</li>
    </ol>
  </li>            <!-- Here's the closing </li> tag -->
  <li>third item</li>
</ol>

 

  1. first item
  2. second item
    1. second item first subitem
    2. second item second subitem
    3. second item third subitem
  3. third item

물론 nesting된 ol을 ul로 바꾸면 bullet point(unordered list) list 로 바뀐다.

 

※tip : VSCode 줄복사 short cut : mac - opt + shift + ↑ or ↓ 

        li + tab ,, ol + tab ,, ul + tab -> emmet

 

 

코딩 연습 2: Favorite Movies Exercises

ul , ol 요소 연습하기. 쉽다.

 

Anchor Tags

developer.mozilla.org/en-US/docs/Web/HTML/Element/a

 

 

<a> : anchor tags -> creates a hyperlink

most frequently these are used to create hyperlinks to go to another page.

also use link same page

 

a태그만 단독으로 쓰면 제 역할을 하지 못한다. destination을 지정해줘야하는데 

이런 추가적인 정보를 더하기 위해 attribute를 사용한다.

 

Attributes in HTML are like little pieces of information we can pass in to a tag.

 

So not in between an opening and closing tag, but actually inside one of the tags.

 

a 태그에 attribute는 href를 사용 

href : hypertext reference

 

href를 쓸때 https://을 써서 인터넷 참조를 해야한다. 

안쓰면 로컬 파일을 참조한다.(local URL을 부름) 

로컬 파일을 의도적으로 사용할것이 아니면 http://www. ~~~ 를 써줘야한다.

 

in-line : a element

own-line : <h1> , <p> element

 

※ a tag snippet : a + tap

 

 

Images

developer.mozilla.org/en-US/docs/Web/HTML/Element/img

 

: The Image Embed element

The HTML img element embeds an image into the document.

developer.mozilla.org

 img 요소는 클로징 태그가 없다. 셀프 클로징태그라고 하는데 이미지는 글에 부연설명을 하는게 아니라 이미지 그자체가 정보기 때문에 클로징 태그가 없는것이다.

 그대신에 img 태그에는 src(source) attribute가 있어야한다. img태그만 달랑 있고 이미지에 대한 위치정보가 없다면 아무것도 안되기 때문 

+ The alt attribute holds a text description of the image, which isn't mandatory but is incredibly useful for accessibility(cuz screen reader user)

 

Comments

 comments in HTML, so comments are not an element there,

 nothing that you will see rendered in the browser.

 

It's really just way of adding notes or text to your HTML document that will be ignored by the browser.

 

So usually use this for notes or feedback or reminders.

 

comment는 다른 언어에도 사용되고 형식은 다르지만 컨셉트는 같다.

 

html의 코멘트 형식

<!-- blar blar -->

VSCode 코멘트 숏컷 :  mac - cmd + /    window? : ctrl + /(forward slash)

아니면 커멘트 팔레트에서 comment를 치면 실행해보거나 숏컷을 확인해 볼 수 있다.

 

 

코딩 연습 3: Wolf Images & Links Exercise

 

 a 태그와 img 태그를 사용하기

 a 태그는 href 속성을 img태그는 src와 alt 속성을 써서 연습해보는 시간

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

2020-10-21 TIL  (0) 2020.10.21
2020-10-20 TIL  (0) 2020.10.20
2020-10-19 TIL(2)  (0) 2020.10.19
2020-10-19 TIL (1)  (0) 2020.10.19
2020-10-18 TIL(1)  (0) 2020.10.18
  • udemy에서 웹 개발 부트캠프 강의 듣기 시작.

오리엔테이션

1. 모든 과제 해보기

2. 그냥 따라하지 않기 - 고든램지를 본다고 고든램지가 될 순없다.

3. 시간을 가지기 - 부트캠프코스는 10~12주 풀타임 코스워크다.. 60시간은 그냥 동영상 시간일뿐.

4. 당황하지 않기 

5. 때로는 휴식 취하기.

---

섹션 인트로 스킵 하지말것

 

 

 

sec 2 : An introduction to Web Development

 

crucial! important nice to have
installing vscode and chrome How the internet works(in 5minutes) VSCode Theme
understanding the roles of HTML, CSS and JS HTTP Requset/Response cycle  
  Intro to the Web  

 


how the internet works(in 5minutes)

 internet : a global network of networks

              it's jsut a bunch of connected computers, devieces

              infrastructure 

물리적인 케이블로 연결된 커뮤니케이션.. 

 

ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%EB%84%B7

 

인터넷 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 라우터를 통해 연결된 인터넷을 시각화한 그림. 인터넷(영어: Internet, 문화어: 인터네트)은 컴퓨터로 연결하 TCP/IP(Transmission Control Protocol/Internet Protocol)라는 통신

ko.wikipedia.org

 

디바이스들이 그물망처럼 연결된 것이라고 생각하면 될 것 같다.

 

intro to the web

인터넷을 통해서 웹(world wide web)을 비롯한 많은 것들을 할 수 있다.

인터넷은 디바이스들을 연결하는 구조 그자체..

 

The World Wide Web, commonly known as the Web, is an information system where we're able to share

documents and resources over the Internet.

 

And those resources, those documents are identified by you, URLs, uniform resource locators.

 

HTTP is the foundation of how the World Wide Web works, how we communicate and how we request and share resources or web pages.

It's a standardized sort of set of rules for how a form of communication should work.

foundation of communication on the World Wide Web

 

웹 브라우저는 그저 웹 리소스를 요구하고 보는것뿐이다.

 

인터넷은 웹 이상의 것이다. (스트리밍 서비스, 이메일, 인터넷 게임 등등)

 

웹은 인터넷을 통해 서로의 리소스를 공유하는 정보체계(information system)

 

리소스는 URL(uniform resouce locators)을 통해 인식한다.

 

정보를 transfer하는 방식을 protocol(규약)이라고한다. 

대표적으로 HTTP , 주소창앞에 http또는 https 라고 적혀진것이 그것..

 

인터넷엔 다른 규약들도 많다. TCP, IP

 

http를 통해 우리(client)는 서버에 정보를 요구(request)하고 서버는 요구받은 정보에 반응(response)하고 우리(client)에게 요구한 정보를 보냄으로써 우리는 정보를 볼 수 있다.

 

웹은 http를 기반으로 작동한다.

 

The Request/Response Cycle

 

웹 브라우저를 통해 서버로 http request를 보내면 서버는 코드로 이루어진 구조(instructure with code)를 웹브라우저로 보내고 웹 브라우저는 구조를 html, css, javascript를 통해 해석하고 사람에 맞춰서 보여준다.(understanding instructure for human)

 

※소스 페이지보기를 통해 어떻게 코드가 짜여져 있는지 볼 수 있다.

 

Front-end and Back-end

프론트 앤드와 백 앤드는 무엇인가?

프론트 앤드는 보여지는 부분, 백앤드는 보여지지 않는 서버작업 부분

음식점에 비유하자면 프론트 앤드는 접객하게 되는 테이블부분이고 백 앤드는 주방일 이라고 할 수 있다.

 

What do HTML/CSS/JS do?

 

HTML은 컨텐츠 

CSS는 그 컨텐츠를 꾸며주고

JS(Java Script)는 컨텐츠에 역동성과 논리를 만드는 역할을 한다.

문장으로 비유하자면 HTML은 명사 CSS는 형용사 JS는 동사로 생각하면 된다.

 

Setting up our Developer Environment

개발에 필요한 tool들 소개.

기본적으로

web browser와 text editor가 필요

web browser - Chrome , firefox

text editor - Visual Studio Code

옵션으로는

spectacle -> 맥에서.. rearrange window 하는데 쓰임

                 근데 윈도우에서는 기본적으로 시작키와 화살표키로 리어레인지가 가능해서 나한테는 아직 필요없다.

 

OPTIONAL VSCode Theme

www.youtube.com/watch?v=rH1RTwaAeGc&t=1s

기본적으로 

강의에선 material theme만 추천하지만

유튜브 링크로 자기가 사용하는 vs code 확장프로그램을 소개함

 

1.emmet

기본적으로 설치되어 있음

html 스니펫인것 같음

※ 스니펫(Snippet)은 재사용 가능한 소스 코드, 기계어, 텍스트의 작은 부분을 일컫는 프로그래밍 용어이다. 사용자가 루틴 편집 조작 중 반복 타이핑을 회피할 수 있게 도와준다. - 위키백과

 

2. material theme

설치하고

cmd +k & t 로 간단하게 바꿀 수 있음

세팅에 들어가서 theme으로도 바꿀 수 있음

 

3. live server

저장하고 새로고침하고 할 필요 없이

live server extention을 켜면 수정된 사항을 바로바로 볼 수 있음

우클릭으로 시작하고 끌 수 있음

 

4. css peek

id와 class위에 f12나 f12+opt을 누르면 바로 그 id와 class 설정으로 이동시켜줌

 

5. color highlight

컬러 설정을 바로 띄워줌 

기본 설정이 백그라운드로 띄워주는거라서 

설정에서 background -> dot-before로 바꿔주는게 편함

 

6.bracket pair colorizer

괄호를 색깔로 구별되게 매칭시켜줌

보기 편함

세팅으로 색깔 바꾸기 가능

 

7. react snippets

js 스니펫이 필요할때 쓰는것 같은데

아직 필요는 없을듯

 

8. prettier now

코드를 예쁘게 정렬해줌

setting에서 editor.format 찾아서 format on save 체크할지 안할지 설정

세이브하면 자동적으로 코드 정렬해줌

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

2020-10-21 TIL  (0) 2020.10.21
2020-10-20 TIL  (0) 2020.10.20
2020-10-19 TIL(2)  (0) 2020.10.19
2020-10-19 TIL (1)  (0) 2020.10.19
2020-10-18 TIL(2)  (0) 2020.10.18

+ Recent posts