728x90
728x90

  웹 페이지   

- 웹사이트에서 초기 Home 화면과 메뉴에 있는 버튼이나 텍스트를 클릭하면 이동하여 나타나는 웹페이지들등 다양한 컨텐츠 들이 있습니다.

- 현재 제작하고 있는 포트폴리오 웹사이트의 경우 Home / About / Portfolio / Blog / Contact 카테고리가 있습니다.

- Blog는 hiio.tistory.com 블로그로 링크가 걸려 있습니다.

- 나머지 카테고리에 해당하는 웹페이지를 제작해 줘야합니다.

- 이번 포스팅에서는 About 페이지 제작을 시작해 보겠습니다.

 

  About 페이지 레이아웃 구성  

- About 페이지는 layout.html 을 상속받아 제작됩니다.

- main 태그 안에 about 페이지의 구성 내용들이 들어가게 됩니다.

- 먼저, About 페이지를 어떻게 구성할지 생각 해 보고 , 레이아웃을 구성해봅니다.

- 저는 아래의 이미지 처럼 구성할 계획입니다.

 

 

 

- 제 사진과 함께 좌우명 / 간단한 소개글 / 제 스킬에 대한 프로그레스 바가 들어 갑니다. 

- 각 컨텐츠들이 들어갈 태그들을 추가 하고 크기와 위치를 먼저 지정해 보겠습니다.

- 아래의 단계에 따라 진행해 보겠습니다.

 

  단계  

1. 태그 추가

2. 컨텐츠 크기와 위치 지정

3. aboutimg 크기와 위치

4. myname크기와 위치

5. moto크기와 위치

6. introduce크기와 위치

7. myskills크기와 위치

8. 문제 해결 - css값 수정

 

1. 태그 추가

- 어떤 태그와 선택자를 사용 해야할지 레이아웃 구성을 통해 확인해 보겠습니다.

1. 사진 이미지가 들어가는 img 태그 => div #aboutimg

2. 이름이 들어가는 div 태그 => div #myname

3. 좌우명이 들어가는 div 태그 => div #moto

4. 간단한 소개들이 들어가는 div 태그 => div #introduce

5. 내가 사용가능한 스킬 프로그레스 바 div 태그 => dic #myskill

 

- 이제 about.html 에 각 태그들을 추가해 줍니다.

{% extends 'layout.html' %}
{% block content %}
<div id="aboutimg">aboutimg</div>
<div id="myname">myname</div>
<div id="moto">moto</div>
<div id="introduce">introduce</div>
<div id="myskills">myskills</div>
{% endblock %}

  2. 컨텐츠 크기와 위치 지정  

- 앞선 포스팅에서 했던 방법과 같이 먼저 각 태그들의 css에 border 값을 주겠습니다.

/* about page*/

#aboutimg{
    border:2px solid red;
}
#myname{
    border:2px solid red;
}
#moto{
    border:2px solid red;
}
#introduce{
    border:2px solid red;
}
#myskills{
    border:2px solid red;
}

- 이제 aboutimg 부터 myskill 까지 크기와 위치를 지정해 주겠습니다.

- 그전에 각 태그들의 css position 속성값을 absolute로 지정해 주겠습니다.

#aboutimg{
    position : absolute;
    border:2px solid red;
}
#myname{
    position : absolute;
    border:2px solid red;
}
#moto{
    position : absolute;
    border:2px solid red;
}
#introduce{
    position : absolute;
    border:2px solid red;
}
#myskills{
    position : absolute;
    border:2px solid red;
}


  3. aboutimg 크기와 위치  

- aboutimg 크기와 위치를 먼저 지정해 주겠습니다.

- 레이아웃 구성 계획에서 어디에 위치하고 어느정도 크기를 가지고 있는지 확인해 보겠습니다.

 

- 위치는 top 150px / left 260px 에 위치해 있습니다.

- 위 값을 적용합니다.

 

#aboutimg {
    position: absolute;
    top: 150px;
    left: 260px;
    border: 2px solid red;
}

- 크기를 확인해 보겠습니다.

- 크기는 width 375px / height 500px 입니다.

- 위 값을 적용 시킵니다.

 

#aboutimg {
    position: absolute;
    top: 150px;
    left: 260px;
    width: 375px;
    height: 500px;
    border: 2px solid red;
}

  4. myname 크기와 위치  

- 위 방법과 마찬가지로 크기와 위치를 확인 후 css 값을 적용 시켜 보겠습니다.

위치

- 위치는 top 680px / left 260px 입니다.

- 크기는 width 380px / height 60px 입니다.

 

#myname {
    position: absolute;
    top:680px;
    left: 260px;
    width: 380px;
    height: 60px;
    border: 2px solid red;
}

  5. moto 크기와 위치  

- moto 크기와 위치를 확인합니다.

 

- 위치는 top 150px / left 730px 입니다.

- 크기는 width 600px / height 205px 입니다.

 

#moto {
    position: absolute;
    top: 150px;
    left: 730px;
    width: 600px;
    height: 205px;
    border: 2px solid red;
}

  6. introduce 크기와 위치  

- introduce 크기와 위치를 확인합니다.

]

- 위치는 top 440px / left 730px 입니다.

- 크기는 width 600px / height 210px 입니다.

#introduce {
    position: absolute;
    top: 440px;
    left:730px;
    width: 600px;
    height: 210px;
    border: 2px solid red;
}

 

  7. myskills 크기와 위치  

- myskills 크기와 위치를 확인합니다.

 

- 위치는 top 740px / left 730px 입니다.

- 크기는 width 600px / height 540px 입니다.

 

#myskills {
    position: absolute;
    top:740px;
    left:730px;
    width: 600px;
    height: 540px;
    border: 2px solid red;
}

 

- 각 컨테츠들을 모두 크기를 지정해 주고 위치 시켰습니다.

- 하지만 문제가 하나 생겼습니다.

- 무슨 문제 일까요?

- footer에 boreder 값을 주고 about 페이지를 다시 살펴보겠습니다.

- myskills 하단으로 footer가 오지 않고, myskills가 footer를 벗어나 버렸습니다.

- 왜 그럴까요?

- footer 는 main 하단으로 오게끔 지정되어 있습니다.

- main 의 높이는 850px로 고정해놨습니다.

- about 페이지에 필요한 높이가 850px을 넘어서 버려서 문제가 발생했습니다.

- 그럼 이 문제를 해결해야 겠습니다.

 

  8. 문제 해결 - css값 수정  

- 위 문제를 해결하기위해 main 의 높이 값을 900px로 고정 시키지 않고, 컨텐츠들의 값들에 따라 동적으로 높이가 지정되게 하면 좋을거 같습니다.

- height 값으로 아무런 값을 주지 않아 보겠습니다.

#main {
    margin: 0 auto;
    position: relative;
    width: 1440px;
}

- main에 높이 값이 없어 그 하단에 붙어 있는 footer가 header밑으로 와버렸습니다.

- 이 방법은 아닌것 같습니다.

- 이번에는 height 값으로 100%를 줘보겠습니다.

- height 값 100% 로 지정하기 위해서는 html 과 body height 값에 100% 지정되있어야 합니다.

html,body{
	height: 100%;
}


#main {
    margin : 0 auto;
    position: relative;
    width: 1440px;
    height: 100%;
}

-footer 부분이 밑으로 내려갔습니다.

- 다른 방법으로는 main안에 컨텐츠들을 감싸는 div 를 추가 하고 px로 높이를 고정시킨후 main의 높이 값으로 auto를 지정하는 방법이 있습니다.

- 다양한 방법들이 있지만, 제가 계획한 레이아웃에서는 footer부분이 크게 중요하지 않으므로 100%를 지정하는 방법을 사용하겠습니다.

- 추후 문제 발생시 수정 해 보겠습니다.

- 다음 포스팅에서는 각 태그들 안에 이미지와 텍스트들을 추가 해 보겠습니다.

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
728x90

+ Recent posts