0025 HTML style 속성(attribute) 및 배경색 설정


스타일링이라 함은 폰트, 크기, 테두리, 색깔 등을 이용하여 예쁘게 꾸미는 것을 말하고 HTML 문서를 스타일링 할 때는 CSS(Cascading Style Sheet)라는 별도의 언어체계를 이용한다.

    

이 때,  HTML개별 요소(element) 하나를 CSS를 이용하여 꾸미고 싶을 때에는 style 속성을 사용하면 된다.

   

HTMLstyle 속성은 다음과 같은 구문으로 사용된다. 

    

<태그명 style="속성:속성값;">


위 구문에서 속성CSS에서 사용하는 속성(property)이고, 속성값CSS에서 사용하고 있는 속성값(value)이다. 즉, style 속성은 개별 요소에 CSS를 적용하기 위한 속성인 것이다. 

    

따라서 이 style 속성을 다루면서 익히게 될 속성(property)속성값(value)은 모두 CSS에서도 그대로 사용할 수 있다.

    

또, 당연히 style은 모든 요소에 적용할 수 있는 전역 속성(global attribute)이다.

    

추후에 CSS를 공부하면서 상세하게 다룰 내용이지만 참고적으로 간단히 언급하면 CSS를 적용하는 것은 아래와 같이 세 가지 방법이 있는데 그 중 마지막 방법이 이 style 요소를 사용하는 방법이다.

    

하나는 <head> 요소 내부에 중첩된 <style> 요소에 CSS를 작성하는 것이다. 

둘은 <link> 요소를 이용하여 외부에서 CSS 파일을 불러 읽는 것이다.

마지막은 개별 요소에 style 속성을 부가하여 CSS를 이용하는 것이다.


보통 첫 번째와 두 번째 방법으로 CSS를 사용하지만 이러한 방법은 일괄적으로 HTML 페이지의 스타일을 설정하기 때문에 이에 대한 예외적인 스타일이 적용되어야할 요소(element)들은 개별 요소에 style 속성을 이용하여 CSS를 부여하기도 한다(이는 CSS 상속과 적용 범위의 문제이므로 나중에 다시 보도록 하자.).

    

앞서 0017 이미지를 보여주는 img 요소 02 대체할 문구 및 크기 결정에서 <img> 요소의 크기를 style 속성으로 결정하는 예문을 아래와 같이 다루면서 최근 style 속성을 사용하여 이미지의 크기를 결정하는 이유를 CSS 스타일 시트에서 일괄적으로 이미지의 크기를 조작할 때 그 적용을 피하기 위해서라고 언급한 바 있는데 이것이 바로 위와 같은 이유이다.

    

<img src="sun.jpg" style="width:100px;height:100px" alt="떠오르는 태양" />


위의 예문에서 style 속성으로 CSS 속성인 widthheight를 이용하고 있고 속성값으로 픽셀수(px)를 이용하고 있다. 



배경색(Background Color)


HTML 요소의 배경색을 결정하는 CSS 속성은 background-color 속성이다. 요소의 배경색을 이용하여 앞서 공부한 블록 요소인라인 요소의 차이점을 다시 한번 살펴보자.

       

background-color 속성은 다음과 같이 사용한다.

     

<태그명 style="background-color:색상이름;">


색상이름red, blue, purple, yellow, white, black, powderblue 등 영문의 색상이름이 그대로 적용되고 더 디테일한 색상을 다룰 때에는 색상의 일련번호로 집어넣을 수도 있다.


다음과 같이  0025.html 파일을 만들어 실행해보자.


<!DOCTYPE html>

    

<html>

<head><title>배경색</title></head>

<body style="background-color:black;">

<h1 style="background-color:red;">h1 요소</h1>

<p style="background-color:white;"

  p요소<br />

 <strong style="background-color:yellow;">중요한 텍스트</strong><br />

 <em style="background-color:purple;">강조 텍스트</em><br />

  a 요소 <a href="https://deliciouslearning.tistory.com/" style="background-color:blue;">책 씹어먹는 즐거움</a>

</p>

</body>

</html>


<body> 요소에 중첩된 각각의 요소에 전부 배경색을 다르게 설정해보았다. 그리고 실행해보면 다음과 같이 나타난다. 



블록 요소인라인 요소에 따라서 배경색이 다르게 설정되어 있는 것을 알 수 있다. 블록 요소는 해당 행의 가로폭을 전부 차지하는 요소이므로 실제 내용이 얼마 안되더라도 해당 행의 전체에 배경색이 칠해진다. 반면, 인라인 요소는 배경색이 꼭 필요한 부분으로 한정되는 것을 알 수 있다. 

    

CSS에서 사용하고 있는 다양한 속성과 속성값을 이 자리에서 전부 살펴보는 것은 적합하지 않은 것 같다. 우선 배경색만 살펴보고. 또, 다른 요소들을 다루면서 관련된 스타일 속성은 그때그때 알아보도록 하자.


Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 


Ankilog 파일:  0025 HTML style 속성(attribute) 및 배경색 설정.apkg





0024 블록(block) 요소인라인(inline) 요소


이제 기본적인 태그와 요소들에 대해서 상당수 알게 되었다. 그런데 요소들 화면에 표시할 때 브라우저가 하는 특이한 행동 하나가 눈에 띈다. 그것은 <body> 요소에서 <h1~6>요소, <p>, <blockquote> 요소들은 브라우저가 화면에 표시할 때 반드시 줄바꿈(linebreak)이 앞뒤로 나타나 행 전체를 차지한다. 반면, <img>, <a>, <strong>, <em>, <q> 등의 요소들은 줄바꿈 없이 나타나 행 전체를 차지하지 않고 딱 해당 요소의 내용이 차지하는 공간만큼만 공간을 차지한다. 

    

요소(element) 중에서 화면에 표시(display)될 때 항상 새로운 행에서 시작하고 요소가 위치한 가로폭을 전부 차지하는 요소블록(block) 요소라고 하고 새로운 행에서 시작하지 않고 딱 요소의 내용이 차지한 가로폭만큼만 차지하는 요소인라인(inline) 요소라고 한다. 그리고 모든 HTML 요소는 화면표시(display)를 함에 있어 블록 요소인지 인라인 요소인지가 기본값으로 설정되어 있다. 

    

가령, 다음처럼  0024.html파일을 만들어 보자.

    

<!DOCTYPE html>

    

<html>

<head><title>Block과 inline</title></head>

<body>

<h1>h1 요소</h1>

<p>

  단락을 결정하는 p요소는 위 아래로 줄바꿈이 발생한 것을 확인할 수 있다. 

 (줄바꿈)을 했지만 브라우저에는 줄바꿈을 하지 않은 것으로 나타난다. 한편 <strong>중요한 텍스트</strong>, <em>강조 텍스트</em>를 사용해도 줄바꿈은 일어나지 않고 있다. img <img src="sun.jpg"> 요소를 집어넣으면 어떨까? 하이퍼텍스트 링크인 a요소를 이렇게 넣어보자. <a href="https://deliciouslearning.tistory.com/">책 씹어먹는 즐거움</a> 이처럼 줄바꿈이 일어나지 않는 것을 확인할 수 있다. 하지만 다시 <p>p요소를 내부에 중첩킨 것</p>은 줄바꿈이 일어나는 것을 확인할 수 있다. 

</p>

</body>

</html>


<img> 요소로 웹페이지에 넣을 사진은 다음과 같다. 



그럼 다음과 같이 나타난다. 




위에 보이는 것처럼 블록 요소는 항상 앞과 뒤에 줄바꿈를 가진 것처럼 표시되며, 인라인 요소는 웹페이지에 있는 텍스트의 흐름에 포함되어 ‘라인 위에(in line)’ 나타난다.

    

블록 요소인라인 요소의 구분이 상당히 중요한 것 같다. 어떤 요소들은 구조적으로는 동일한 구조적 기능을 하지만 블록 요 인라인 요소라는 차이점만 존재하는 것 같은 요소들이 있다. 가령 앞서 0023 HTML에서 인용하기(Quotation)에서 공부한 <blockquote><q> 요소는 인용구를 블록 요소로 할 것인가 인라인 요소로 할 것인가 하는 부분이 가장 핵심적인 차이로 보인다. 

    

또, 앞으로 CSS와 함께 정말 자주 사용하게 될 <div><span> 같은 요소들은 HTML문서에서 섹션을 나누고 해당 섹션의 요소들을 묶는 컨테이너(container) 같은 기능만 하는 요소들인데 둘의 차이점은 오직 <div>블록 요소이고 <span>인라인 요소라는 것뿐이다.

    

그렇다면 왜 요소들을 블록인라인으로 구분하는 것이 중요한 것일까?

    

여기저기 뒤져본 결과로 개인적으로 추론해본건대, HTML 개발하면서, 블록 요소전체 윤곽(lay out)을 구성하고 인라인 요소 페이지를 세련되게 다듬는 식의 웹페이지 구축 방법론을 채택한 것으로 보인다. 


그리고 블록 요소 인라인 요소라는 특성 때문에 HTML에 다음과 같은 규칙들이 생기게 되었다.

    

거의 대부분 블록 요소는 내부에 블록 요소중첩(nesting)시킬 수 있다. 

거의 대부분의 인라인 요소인라인 요소를 내부에 중첩시킬 수 있다. 

거의 대부분 블록 요소는 내부에 인라인 요소중첩시킬 수 있다. 

하지만 인라인 요소는 내부에 블록 요소중첩시킬 수 없다.


또, CSS블록 요소인라인 요소를 스타일링 할 때 사용할 수 있는 속성들이 다르다. 이 부분은 추후 CSS를 다루면서 다시 다루도록 하자. 일단, 지금은 블록 요소인라인 요소가 있고, 웹페이지 구축 방법론으로 블록 요소전체 윤곽(lay out)을 구성하고 인라인 요소페이지를 세련되게 다듬는 방식을 채택했다는 점, 그리고 인라인 요소 내부에 블록 요소중첩시킬 수 없다는 점을 기억해 두도록 하자.


Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 


Ankilog 파일:  0024 블록(block) 요소와 인라인(inline) 요소.apkg





0023 HTML에서 인용하기(Quotation)


글을 쓰다보면 소설이나 뉴스 등 다른 글을 인용해야하는 상황이 종종 생긴다. 이런 상황을 위하여 HTML에도 글의 성격이 인용인지 단순한 텍스트인지 등의 요소를 구별할 수 있도록 이에 맞는 요소들을 갖추고 있다. 

    

<q> 요소는 짧은 인용구를 정의하는 요소다. 브라우저는 보통 <q> 요소의 주위에 큰 따옴표를 둘렀거나 굵게 표시한다.

   

<blockquote> 요소는 다른 자료로부터 거의 문단 단위 이상을 인용할 때 사용한다. 브라우저는 <blockquote> 요소를 보통 들여쓰기(indent)로 나타낸다. 

    

<q> 요소가 짧고 핵심적인 인용구라면, <blockquote> 요소는 책이나 시처럼 완전한 문단을 기억하는 인용구이다.

    

<abbr> 요소는 약어(abbreviation)이나 두문자(acronym)를 정의하는 요소이다.

    

<address> 요소는 해당 문건의 작가나 저작자의 연락처를 정의하는 요소이다. <address> 요소는 보통 이탤릭으로 표시되고 대부분의 브라우저는 <address> 요소 위아래로 줄바꿈(line break)을 집어넣는다.

     

<cite> 요소는 해당 작품의 작품명(타이틀)을 정의하는 요소이다. 브라우저에는 보통 이탤릭으로 표시된다.


이제 배운 내용들이 실제로 브라우저에 어떻게 나타나는지 확인해보기 위해서 다음과 같이 작성해서 0023.html 파일로 저장하고 실행해보자. 


<!DOCTYPE html>

   

<html>

<head><title>HTML로 인용하기 예제</title></head>

<body>

<p>

최근 말라리아로 고생하는 사람이 자주 보인다. 특히 해외여행으로 인한 감염이 많은 것으로 나타났다. 다음은 신문기사다.

</p>

<blockquote>

말라리아의 위험성은 해외에서 더 심각하다. <abbr title="world health orginization">who</abbr><q>2015년 전 세계 말라리아감염자가 2억 1400만명, 사망자가 43만8000명에 달한다</q>라고 밝혔다. 이 중 상당수는 아프리카에서 발생했고 국내에도 지난해 해외에서 감염되어 온 환자가 72명으로 전체 국외유입감염병 중 2번째로 많은 수가 감염되었다.

</blockquote>

<P>말라리아에 대해서 좀 더 알고 싶다면 로버트 데소비츠가 쓴 <cite>말라리아의 씨앗</cite>을 추천한다.

</p>

<address>

저자 : 방구석 책벌레<br>

블로그 : deliciouslearning.tistrory.com

</address>

</body>

</html>


그러면 크롬 브르우저에서 아래와 같이 나타난다. 



우선 <blockquote> 요소로 인용한 곳은 들여쓰기(indent)가 된 문단처럼 나타났다. 그리고 <abbr> 요소로 집어넣은 내용은 아래에 점선으로 밑줄이 그어졌다. <q>요소는 큰 따옴표("")로 내용을 묶었고, <cite> 요소와 <address> 요소로 묶인 내용들은 이탤릭체로 나타났다.

    

브라우저에 어떻게 표현되었는지는 별로 중요하지 않다. 중요한 것은 브라우저가 각각의 내용에서 어떤 것이 인용구이고 어떤 것이 두문자이고 어떤 것이 인용된 작품명인지 안다는 사실이 중요하다.그러면 검색엔진은 이 웹 페이지가 말라리아에 대한 신문기사나 공신력 있는 단체의 말을 인용하고 있으며, 말라리아의 씨앗이라는 작품을 소개하고 있다는 것을 알게 되고 저자 자신과 접촉할 수 있는 연락처를 제시하고 있는 신뢰할만한 문서라고 판단하여 적절하게 이 웹 페이지를 소개할 것이다. 또, <abbr> 요소를 적절히 사용함으로써 브라우저와 검색엔진, 번역 시스템 등에 잘못된 단어 사용으로 오해받지 않게 될 것이다.

   

게다가 CSS를 이용하면 인용구가 전부 적절한 요소로 묶여 있으므로 각각의 요소에 대한 스타일을 명확하게 지정할 수 있게 된다.

Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 


Ankilog 파일:   0023 HTML에서 인용하기(Quotation).apkg






+ Recent posts