728x90
728x90

  레이아웃 템플릿 상속 / 재사용  

- 현재 만들어진 모든 페이지들의 레이아웃은 공통된 코드 및 부분들이 많습니다.

- 이를 jinja2 템플릿 상속 기능을 사용해 공통된 부분은 상속받아 사용하고, 변화되는 부분만 수정하여 사용하겠습니다.

- jinja2 템플릿 상속 방법은 아래의 링크에 정리되어있습니다.

hiio.tistory.com/44

 

[Python] 5. Flask(플라스크) -jinja2 템플릿 엔진 / 템플릿 상속하기 / 재사용

jinja2 템플릿 상속 기능 - jinja의 가장 강력한 기능 중 하나는 상속 기능입니다. - php에서 include() 와 require() 함수와 비슷한 기능을 제공합니다. - 웹사이트를 제작하다보면 공통된 코드가 자주 사��

hiio.tistory.com

- 이 방법을 사용해 layout.html 파일을 만들어 각 페이지들에게 상속합니다.

 

  layout.html 파일 생성  

- 먼저 layout.html 파일을 생성하기 전에 어떤 부분이 공통된 부분인지, 어떤 곳을 오버라이딩 하면 될지 알아 보겠습니다.

- header / footer / main / main 안에 sidebar 는 공통된 부분입니다.

- maintext / mainimg 부분이 각 페이지 마다 변화되는 부분입니다.

- 이제 layout.html 파일을 생성하고 index.html 코드는 복사 하여 붙여 넣은 뒤 maintext 부터 mainimg까지 부분을 삭제하고 그 부분에 {% block content %}{% endblock %} 코드를 추가해 주겠습니다.

 

  layout.html  

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

<head>
    <meta charset="UTF-8">
    <link href="{{ url_for('static', filename='css/reset.css') }}" rel="stylesheet">
    <link href="{{ url_for('static', filename='css/style.css') }}" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100;300;400;500;700;900&display=swap" rel="stylesheet">
    <title>hello</title>
</head>

<body>
    <header></header>
    <div id="main">
        <div id="sidebar">
            <nav>
                <ul id='sidebarul'>
                    <li>
                        <a href="/">Home</a>
                    </li>
                    <li>
                        <a href="/about">About</a>
                    </li>
                    <li>
                        <a href="/portfolio">Portfolio</a>
                    </li>
                    <li>
                        <a href="https://hiio.tistory.com">Blog</a>
                    </li>
                    <li>
                        <a href="/contact">Contact</a>
                    </li>

                </ul>

            </nav>
        </div>
        {% block content %}
        {% endblock %}

    </div>
    <footer></footer>
</body>

</html>

- index.html 코드를 수정합니다.

- {% extends 'layout.html'%}을 추가해 상속받습니다.

- {% block content %} 와 {% endblock %} 사이에 maintext 부터 mainimg 까지의 코드를 추가 하고 나머지 코드들을 삭제 합니다.

 

  index.html  

{% extends 'layout.html' %}
{% block content %}
<div id='maintext'>Welcome to My PortFolio</div>
<div id="mainsubtext">
    <p>Breath</p>
    <p>- Everything will be made by me.</p>
</div>
<div id='mainimg'>
    <img src="../static/img/main/main_img.jpg" alt="MainImage">
</div>
{% endblock %}

- 이제 웹사이트에 접속 해서 확인 해 보겠습니다.

- 잘 적용 되었습니다.!!!

- 이제 각 페이지도 똑같이 상속한 후에 {% block content %}{% endblock %} 사이를 우선은 비워두겠습니다.

{% extends 'layout.html' %}
{% block content %}

{% endblock %}

  Title 변수 선언 및 값 지정  

- 각 페이지들 마다 타이틀 이름이 다릅니다.

- 각 페이지들의 타이틀을 페이지 주소 이름으로 정하려고 합니다.

- 이전에 동적 라우팅을 통해서 페이지 주소를 pagename이라는 변수로 받아 왔습니다.

- 이를 템플릿 변수 사용을 통해서 <title> 태그안에 변수를 선언 후 서버에서 값을 넘겨 줍니다.

- 아래의 링크에 템플릿 변수 적용에 대해 간단히 정리 해 놨습니다.

- 이를 이용해서 각 페이지 별 타이틀을 지정해 보겠습니다.

hiio.tistory.com/45

 

[Python] 6. Flask(플라스크) - 템플릿 변수 사용 / 변수 값 적용

플라스크 변수 사용  - 플라스크 서버에서는 html에 변수를 만들어 서버 python에서 값을 넘겨 줄 수 있습니다. - 변수 사용에는 아래의 코드를 원하는 위치에 추가해 사용합니다. {{변수명}} - 변수�

hiio.tistory.com

- 먼저 layout.html에서 <head> 태그 -> <title> 태그에 {{ title }} 변수를 선언 합니다.

<head>
    <meta charset="UTF-8">
    <link href="{{ url_for('static', filename='css/reset.css') }}" rel="stylesheet">
    <link href="{{ url_for('static', filename='css/style.css') }}" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100;300;400;500;700;900&display=swap" rel="stylesheet">
    <title>{{title}}</title>
</head>

- 서버 index() 함수에서 render_template() title변수 값으로 Home을 대입합니다.

- 서버에서 menu() 함수에서 title 변수를 선언하고 값으로 pagename을 대입합니다.

- render_template() title 변수 값으로 위에서 선언한 변수 title을 대입합니다.

@app.route("/")
def index():
    return render_template('index.html',title='Home')
    
@app.route("/<pagename>")
def menu(pagename):
    title = pagename
    return render_template(f'{pagename}.html',title=title)

- 웹사이트에 접속 해서 확인해 보겠습니다.

728x90
728x90

  CSS Reset  

- CSS Reset은 고유 css 속성값들을 초기화 시켜서 다른 브라우저에서도 웹사이트가 똑같이 표시 되게끔 하기위해 초기화 시키는 것입니다.

- CSS 초기화란 각 태그들의 css속성값들(margin, padding, line-weight)들을 0 이나 none값으로 만드는 것입니다.

- reset.css를 통해서 초기화 시킨후 style.css를 통해서 새 속성값을 지정합니다.

 

  CSS Reset 참고 사이트  

cssreset.com/

 

CSS Reset - 2019's most common CSS Resets to copy/paste, with documentation / tutorials

This short post talks about creating a stylish focus effect on input text elements using a pure CSS solution. The animation shows a colored bottom border gradually appearing on the input text focus and completing the animation in half of […] Read Article

cssreset.com

Eric Meyer’s “Reset CSS” 2.0
http://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

HTML5 Doctor CSS Reset
http://html5doctor.com/html-5-reset-stylesheet/

 

HTML5 Reset Stylesheet | HTML5 Doctor

We’ve had a number of people ask about templates, boilerplates, and styling for HTML 5. Last week, Remy introduced some basic boilerplates for HTML 5, so to keep the momentum going, I’ve modified Eric Meyer’s CSS reset for you to use in your HTML 5 p

html5doctor.com

Yahoo! (YUI 3) Reset CSS
http://yuilibrary.com/yui/docs/cssreset/

 

CSS Reset - YUI Library

Note: The files "reset.css" and "reset-context.css" are deprecated, use "cssreset.css" and "cssreset-context.css" instead. The foundational CSS Reset removes the inconsistent styling of HTML elements provided by browsers. This creates a dependably flat fou

clarle.github.io

Normalize.css 1.0
https://github.com/necolas/normalize.css

 

necolas/normalize.css

A modern alternative to CSS resets. Contribute to necolas/normalize.css development by creating an account on GitHub.

github.com

등이 있습니다. 

 

  Reset CSS code  

- 이중 Eric Meyer’s “Reset CSS” 2.0 을 살펴 보면 

- html 캐그들의 margin /padding / border 값들을 초기화 시켜 놓은 것을 알 수 있습니다.

/* 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;
}

 

  reset.css 적용  

- reset.css를 적용 하는 방법은 style.css를 링크 시키는 방법과 동일합니다.

- 우선 static -> css 디렉토리에 reset.css를 생성 후 위 코드를 입력하고 저장합니다.

- html 파일들의 head부분에 링크 시켜 줍니다.

<link href="{{ url_for('static', filename='css/reset.css') }}" rel="stylesheet">

- 그런데 , css 하나를 링크 시키기 위해서 모든 html 파일들을 수정해줘야합니다.

- 파일들이 많아지면 각각 수정해 줘야 해 , 시간도 많이 걸리고 유지 보수하기 힘들 수 있습니다.

- 다음 포스팅에서는 템플릿 재사용 / 상속을 이용한 방법을 알아보겠습니다.

728x90
728x90

  <a> 태그   

- <a> 태그는 특정 텍스트나 이미지 등에 하이퍼 링크를 걸어 주는 태그입니다.

- 이전에 이어서 웹사이트를 먼저 살펴 보겠습니다.

- 웹페이지에서 하이퍼링크가 필요한 부분은 nav태그안에 있는 Menu를 구성하는 컨텐츠들입니다.

- Home / About / Portfolio Blog Contact에 각각 a태그를 추가해 하이퍼링크를 걸어보겠습니다.

 

  <a>태그 추가  

- <a>태그를 추가 할때 어디에 위치시킬지 중요합니다.

- 예를들어 Home이라는 텍스트에 하이퍼링크를 걸어준다고 한다면, <a>태그가 <li>를 감싸는 위치에 올 수 있고, 

<li>태그 하위로 들어 갈 수도 있습니다.

- 그럼 먼저 <li>태그를 감사도록 <a>태그를 추가 해 보고 css로 border값을 줘서 확인해 보겠습니다.

<a href="">
	<li>Home</li>
</a>
a{
    border : 2px solid red;
}

- <a> 태그가 들어간 부분이 기존에 계획되었던 레이아웃을 벗어나 버렸습니다. 

- css로 조정해 줄 수 있지만, li의 전체 범위에서 링크가 걸리는게 아니라 텍스트를 클릭 할 경우에만 링크로 이동 시키고 싶습니다.

- <li> 태그 안에 <a>태그를 위치시킵니다.

<li>
	<a href="">Home</a>
</li>

- <a>태그를 <li> 태그 안에 위치 시키자 텍스트에만 <a>태그의 border가 표시되는 것을 확인 할 수 있습니다.

- 하지만, <a>로 하이퍼링크를 걸자 텍스트에 밑줄이 생기고, 링크를 클릭하면 텍스트 색이 변하게 됩니다.

- 밑줄을 제거 하고 색상을 검정으로 고정해야합니다.

- 밑줄을 제거 할때는 text-decoration을 none으로 지정해 줍니다.

a {
    border: 2px solid red;
    color: black;
    text-decoration: none;
}

- 이제 border를 제거하고 확인해 보겠습니다.

a {
    color: black;
    text-decoration: none;
}

 

  <a>태그 하이퍼 링크  

-<a> 태그의 하이퍼 링크는 href의 속성값으로 이동할 주소를 지정해주면 됩니다.

<a href="주소"></a>

- 아무 값도 지정하지 않으면 현재 페이지로 이동합니다.

- nav 의 각 텍스트에 <a>태그를 추가해서 상대 경로를 통해 링크를 걸어 주겠습니다.

                    <li>
                        <a href="localhost:5000">Home</a>
                    </li>
                    <li>
                        <a href="localhost:5000/about">About</a>
                    </li>
                    <li>
                        <a href="localhost:5000/portfolio">Portfolio</a>
                    </li>
                    <li>
                        <a href="https://hiio.tistory.com">Blog</a>
                    </li>
                    <li>
                        <a href="localhost:5000/contact">Contact</a>
                    </li>

- 로컬 환경에서 진행 중이므로 localhost와 port 번호를 주소로 지정했습니다.

- Home을 클릭하면 초기 화면으로 이동합니다.

- About / Portfolio / Contact 를 클릭하면 해당 페이지롤 이동합니다.

- Blog를 클릭하면 현재 제 블로그로 이동합니다.

- 주소를 제외하고 '/이동페이지' 로 지정해도 이동이 됩니다.

- About을 클릭해 보겠습니다.

- Not Found Error 페이지가 나왔습니다.

- 아직 링크에 연결된 html파일이 없고, 서버에서 라우팅을 해줘야 합니다.

 

  페이지 추가  

- About / Portfolio / Contact링크에 연결될 html 파일을 생성합니다.

- index.html 내용을 복사하여 붙여 넣기 한후 main 안에 sidebar 부분을 제외하고 삭제 하고, <head> 부분에 title을 수정 해 주겠습니다.

 

About.html

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

<head>
    <meta charset="UTF-8">
    <link href="{{ url_for('static', filename='css/style.css') }}" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100;300;400;500;700;900&display=swap" rel="stylesheet">
    <title>About</title>
</head>

<body>
    <header></header>
    <div id="main">
        <div id="sidebar">
            <nav>
                <ul id='sidebarul'>
                    <li>
                        <a href="/">Home</a>
                    </li>
                    <li>
                        <a href="/about">About</a>
                    </li>
                    <li>
                        <a href="/portfolio">Portfolio</a>
                    </li>
                    <li>
                        <a href="https://hiio.tistory.com">Blog</a>
                    </li>
                    <li>
                        <a href="/contact">Contact</a>
                    </li>

                </ul>

            </nav>
        </div>

    </div>
    <footer></footer>
</body>

</html>

- 이제 서버에 라우팅을 해주어야 합니다.

 

  서버 라우팅  

- 백엔드 서버로 파이썬 프레임워크인 플라스크를 사용하고 있습니다.

- 플라스크 서버의 라우팅 방법으로는 동적 방법과 정적 방법이 있습니다.

- 아래의 링크로 이동하면 정적 / 동적 라우팅 방법을 확인 할 수 있습니다.

정적 / 동적 라우팅 방법

hiio.tistory.com/41

 

[Python] 4. Flask(플라스크) - 정적 라우팅 / 동적 라우팅

플라스크 라우팅 - 플라스크에서는 @app.route() 데코레이터(decorator) 함수를 통해서 라우팅을 실행합니다. - 라우팅 방법으로는 정적 라우팅 방법과 동적 라우팅 방법이 있습니다. - 먼저 정적 라우�

hiio.tistory.com

- 이제 동적 라우팅 방법으로 페이지를 렌더시켜 표시하겠습니다.

@app.route("/<pagename>")
def menu(pagename):
    return render_template(f'{pagename}.html')

- @app.route()의 pagename으로 주소이름을 받아옵니다.

-이 변수를 이용해 페이지 이름과 같은 html 파일을 불러옵니다.

- 'About' 메뉴를 클릭해 해당 주소로 이동해 보겠습니다.

- 잘 이동 되었네요!!

 

- 다음 포스팅에서는 reset.css를 추가 해 보겠습니다.

728x90
728x90

  Main Image  

- 계속해서 이번 포스팅에서는 mainimg 부분에 이미지를 삽입해 완성하겠습니다.

- 이미지를 삽입 하기 위해서는 <img> 태그를 사용합니다.

- Main Image에 삽입할 이미지는 아래의 이미지를 사용합니다.

- 이미지는 아래의 링크를 통해 들어가면 무료 이미지 사이트들을 몇군데 모아놨습니다.

- 마음에 드는 사이트에 들어가 이미지를 다운로드 받은 후 제가 원하는 데로 편집했습니다.

무료 이미지 사이트 모음

 

[Web] 무료 이미지 사이트 모음 - Free image website ##1

1. pixabay 2.freepik Freepik | Graphic Resources for everyone Discover millions of copyright-free vectors, photos and PSD www.freepik.com 3.unsplash Beautiful Free Images & Pictures | Unsplash Bea..

hiio.tistory.com

 

- 이제 아래의 단계별로 진행해 보겠습니다.

 

  단계  

1. index.html에 img 태그 추가 및 이미지 삽입

2. Main Image 크기 및 위치 지정

3. 레이아웃 완성

 

 

  1. index.html에 img 태그 추가 및 이미지 삽입  

- mainimg div 태그 안에 img 태그를 삽입합니다.

        <div id='mainimg'>Main image
            <img src="" alt="">
        </div>

- src 속성값으로 이미지 경로를 지정해 줍니다.

- 이미지는 static 디렉토리 > img 디렉토리 > main 디렉토리 안에 있습니다.

        <div id='mainimg'>Main image
            <img src="../static/img/main/main_img.jpg" alt="">
        </div>

- alt 속성값으로 대체 문자를 입력해 줍니다.

        <div id='mainimg'>Main image
            <img src="../static/img/main/main_img.jpg" alt="MainImage">
        </div>

- 이미지가 삽입 되었습니다.

- 하지만 크기가 맞지를 않네요.

- css를 통해서 크기와 위치를 조정합니다.

 

  2. Main Image 크기 및 위치 지정  

- 먼저 이미지 크기를 확인해 보겠습니다.

- 가로 600px * 높이 526px입니다.

- 이 값에 맞춰 mainimg div 크기를 수정합니다.

#mainimg {
    width: 600px;
    height: 526px;
    position: absolute;
    top: 50%;
    left: 60%;
    transform: translate(-50%, -50%);
    border: 1px solid gray;
}

- 이제 이미지를 mainimg div 가로 크기에 맞춰 넣습니다.

-<img> max-width 값을 지정합니다.

#mainimg > img{
    max-width: 100%;
}

- 자식 선택자로 img 태그를 선택해 줬습니다.

- img 태그를 바로 선택해 값을 지정하게 되면 모든 img 태그에 값이 부여 될 수 있습니다.

- 이미지가 Main Image 안으로 잘 들어 간것을 확인 할 수 있습니다.

- 이제 위치를 지정해줍니다.

- 먼저 위치를 확인해 보겠습니다.

- left 610px 입니다.

- top 값은 이전과 마찬가지의 방법을 사용합니다.

- main 높이 / 2 - mainimg 높이 /2 - 50 = 112px

#mainimg {
    width: 600px;
    height: 526px;
    position: absolute;
    top: 112px;
    left: 610px;
    border: 1px solid gray;
}

- 위치가 자 지정 되었지만 Main Image가 Main Text 뒤로 이동 해야 합니다.

- 컨텐츠의 배치를 바꾸는 방법에는 태그 순서를 바꾸거나 css 에서 z-index를 사용하는 방법들이 있습니다.

- 먼저 기존에 태그들이 어떻게 위치 하고 있는지 확인해 보겠습니다.

        <div id='maintext'>Welcome to My PortFolio</div>
        <div id="mainsubtext">
            <p>Breath</p>
            <p>- Everything will be made by me.</p>
        </div>
        <div id='mainimg'>Main image
            <img src="../static/img/main/main_img.jpg" alt="MainImage">
        </div>

- mainimg div 태그가 maintext div 태그 아래에 위치함을 확인했습니다.

- mainimg div 태그를 maintext div 태그 위로 위치 시켜 보겠습니다.

        <div id='mainimg'>Main image
            <img src="../static/img/main/main_img.jpg" alt="MainImage">
        </div>
        <div id='maintext'>Welcome to My PortFolio</div>
        <div id="mainsubtext">
            <p>Breath</p>
            <p>- Everything will be made by me.</p>
        </div>

- maintext 뒤로 이동하였네요.

 

- 이제 태그 이동없이 z-index값을 주어 이동시켜 보겠습니다.

- maintext z-index 값으로 2 / mainimg z-index 값으로 1를 줍니다.

#maintext {
    position: absolute;
    top: 345px;
    left: 240px;
    font-size: 60px;
    color: #f41f56;
    font-weight: 700;
    border: 1px solid gray;
    z-index: 2;
}

#mainimg {
    width: 600px;
    height: 526px;
    position: absolute;
    top: 112px;
    left: 610px;
    border: 1px solid gray;
    z-index: 1;
}

- 마찬가지로 잘 이동 되었음을 확인 할 수 있습니다.

 

  3. 레이아웃 완성  

- 이제 border 값과 필요없는 텍스트들을 제거해서 전체적인 레이아웃을 확인하고 완성하겠습니다.

- 원하는 모습으로 잘 나온것 같습니다.

- 하지만 조금 아쉽습니다.

- 왼쪽 여백과 오른쪽 여백이 맞지 않습니다.

-mainimg div를 왼쪽으로 이동시켜 main 오른쪽부분으로 맞추겠습니다.

-main 가로 크기는 1440px이고 mainimg 가로크기는 600px 입니다. 

- left 값으로 1440px - 600px = 840px값을 지정해 줍니다.

#mainimg {
    width: 600px;
    height: 526px;
    position: absolute;
    top: 112px;
    left: 840px;
    z-index: 1;
}

 

- 기존에 left 값은 610px 이였습니다. 230px만큼 이동 하였습니다.

- maintext 와 mainsubtext 의 left 값을 230px 만큼 더해 줍니다.

#maintext {
    position: absolute;
    top: 345px;
    left: 470px;
    font-size: 60px;
    color: #f41f56;
    font-weight: 700;
    z-index: 2;
}

#mainsubtext {
    position: absolute;
    top:460px;
    left:470px;
    width : 230px;
}

- 이제 완성 되었습니다. 

- 다음 포스팅에는 Nav항목에 a태그들을 추가해 보겠습니다.

728x90
728x90

  Main Text  

- 웹사이트에 처음 접속하게 되면 먼저 보이는 페이지인 index.html 의 가운데 부분에 인사말 또는 웹사이트 방문객에게 전하는 가장 큰 메세지를 MainText에 넣을 생각입니다.

- 저는 'Welcome to My PortFolio'라는 문구와 함께 Main Sub Text 를 추가해 'Breath - Everything will be made by me.'라는 문구를 넣어 주었습니다.

- 각 단계별로 진행해 보겠습니다.

 

 

  단계  

1. index.html 파일에 텍스트 추가

2. Main Text 폰트 스타일 변경

3. Main Text 위치 변경

4. Main Sub Text 추가  

5. Main Sub Text 스타일 지정  

 

  1. index.html 파일에 텍스트 추가  

- maintext div에 'Welcome to My PortFolio' 텍스트를 추가합니다.

<div id='maintext'>Welcome to My PortFolio</div>

- 텍스트가 들어 간 모습입니다.

 

  2. Main Text 폰트 스타일 변경  

- html 자체에 폰트 스타일을 적용시켰 놨기 때문에 다른 폰트를 사용하는 게 아니면 따로 font-family를 지정할 필요는 없습니다.

- font 색상과 크기를 지정합니다.

- 폰트의 색상은 color / 크기는 font-size로 조절 할 수 있습니다.

- 기존에 지정한 width값과 height값을 해제합니다.

- 먼저 포토샵을 통해 색상과 크기와 스타일을 확인 합니다.

 

- 폰트 사이즈는 60px입니다.

- 색상 코드는 #f41f56 입니다.

 

- 폰트 스타일은 bold입니다. bold의 font-wight 는 700 입니다.

- 이 값들을 css에 적용 시킵니다.

#maintext {
    position: absolute;
    top: 50%;
    left: 40%;
    transform: translate(-50%, -50%);
    font-size: 60px;
    color: #f41f56;
    font-weight: 700;
    border: 1px solid gray;
}

 

  3. Main Text 위치 변경  

- MainText 의 위치는 이전에 가운데 정렬 시킨 후 왼쪽으로 조금 이동한 상태 입니다.

- 조금더 정확한 위치 지정을 위해서 기존에 있는 top / left 값을 수정해 주겠습니다.

- 먼저 어디에 위치해 있는지 확인해 보겠습니다.

 

- transform을 삭제합니다.

- propeties의 w값을 보면 240px입니다.

- main div 기준으로 240px만큼 우측으로 이동해 있습니다.

- 높이는 가운데로 맞추기 위해 nav의 top값을 구하기 위한 방법을 이용합니다.

- main 높이 /2 - maintext 높이 /2 - 50 = 345px 값이 나옵니다.

- 위 값들을 적용합니다.

#maintext {
    position: absolute;
    top: 345px;
    left: 240px;
    font-size: 60px;
    color: #f41f56;
    font-weight: 700;
    border: 1px solid gray;
}

 

  4. Main Sub Text 추가  

- Main Sub Text 를 maintext div 아래에 추가해 줍니다.

        <div id="mainsubtext">
            Breath
            <br>
            - Everything will be made by me.
        </div>

- 계획했던 디자인을 확인하면 'Breath'와 'Every...' 두 문구의 스타일이 다르다는 것을 알 수 있습니다.

- 각각 <p> 태그로 감싸주고 css에서 각각 스타일을 지정해 주겠습니다.

        <div id="mainsubtext">
            <p>Breath</p>
            <p>- Everything will be made by me.</p>
        </div>

  5. Main Sub Text 스타일 지정  

- Main Sub Text에 먼저 border 값을 지정해서 위치와 크기를 좀 더 눈에 띄게 확인해보겠습니다.

#mainsubtext {
    border: 1px solid gray;
}

- mainsubtext div의 높이는 적절하게 지정된 듯 보이지만 가로길이가 main의 가로 길이 만큼 지정되었습니다.

- 먼저 폰트 사이즈를 지정한 후에 width 값을 지정해서 가로 길이를 맞춰줍니다.

- 폰트 사이즈를 각각 지정하기 위해서 :nth-child()를 사용합니다.

- 먼저 각 폰트의 사이즈를 확인합니다.

- 'Breath' 는 30px 입니다.

 

- 'Every...' 은 15px입니다.

- 위 값들을 적용 시킵니다.

#mainsubtext > p:nth-child(1){
    font-size: 30px;
}
#mainsubtext > p:nth-child(2){
    font-size: 15px;
}

- 선택자와 자식 선택자를 이용애 p태그를 지정하고 :nth-child()를 통해서 각각 스타일을 따로 지정합니다.

- 여기서 문제는 <p> 에 margin 값이 기본적으로 적용 되어 있습니다.

- margin 값이 아래 위로 지정되어 있습니다.

- <p>자체에 margin 값을 0으로 지정하겠습니다.

p {
    margin: 0;
}

 

- margin 값이 0으로 바뀌면서 두 문구의 간격이 변화 하였습니다.

- 이제 width 값을 확인하고 지정해 줍니다.

- width 값이 230px입니다.

#mainsubtext {
    width : 230px;
    border: 1px solid gray;
}

- width 값을 주었더니 sidebar밑으로 이동해 버렸습니다.

- position 값을 주어서 위치를 조정합니다.

 

 

  6. Main Sub Text 위치 지정  

- position 값으로 absolute를 지정합니다.

#mainsubtext {
    position: absolute;
    width : 230px;
    border: 1px solid gray;
}

- main 텍스트 때문에 살짝 아래에 위치하지만 다시 위로 올라왔습니다.

- 이제 top / left 값을 지정합니다.

- 먼저 이동해야 하는 위치를 확인해 보겠습니다.

- top은 452px / left 는 240px 입니다. 452px는 이쁘지 않습니다. 460px로 지정해 보겠습니다.

#mainsubtext {
    position: absolute;
    top:460px;
    left:240px;
    width : 230px;
    border: 1px solid gray;
}

- 지정된 위치에 잘 이동했습니다.

- 다음 포스팅에서는 Main image를 추가해서 완성해보겠습니다.

728x90
728x90
728x90

+ Recent posts