728x90
728x90

  Footer  

- Footer부분은 웹사이트의 가장 하단에 위치하고 있습니다.

- 웹사이트의 중요하고 우선순위가 높은 컨텐츠들은 보통 상단이나 사이드에 위치해 있습니다.

- 그만큼 Footer부분은 작은 폰트사이즈로 링크만 제공되어 왔습니다.

- 하지만 이제는 웹사이트의 디자인이나 레이아웃에 맞게 끔 footer에도 많은 정보가 담기기도 하고, 기능이 변화하고 있습니다.

- 또 하지만, 제가 원하는 디장인에서 Footer부분은 아주 작은 영역에 불과 하기 때문에 그리 중요하지는 않습니다.

- 아주 간단한 텍스트만 추가 하면 됩니다.

 

  텍스트 추가 및 크기/ 위치 지정  

- footer에 들어갈 컨텐츠들이 많다면 footer페이지를 따로 분리하면 좋겠지만, 텍스트만 들어가므로 layout.html 페이지에서 바로 진행합니다.

- footer태그 안에 ©2020 Hiio.  All rights Reserved. 라는 텍스트를 span에 감싸서 추가해 줍니다.

    <footer>
        <span>
            ©2020 Hiio.  All rights Reserved.
        </span>
    </footer>

 

- footer 의 스타일을 지정해 주겠습니다.

- text-align center / line-heght 50px 지정해 줍니다.

- 그리고 thin10선택자를 만들어 font-size 10px / font-weight 100으로 지정해준후 footer 안의 span class를 thin10으로 지정해 줍니다.

 

 

 

  문제 와 해결  

- 사실 위 과정 되로 진행 하게 되면 문제가 발생합니다.

- main 안에 있는 컨텐츠들의 높이가 반영되지 않아 main 높이값으로 지정해 준 height 100%만 반영되고, 그 밑에 footer가 오게 되어 height 100%를 넘어가는 높이는 footer에 겹쳐서 보여지게 됩니다.

- 이를 해결하기 위해 #about 태그를 추가해 about 컨텐츠들을 감싸줍니다.

- #about / #portfolio / #sidebar / #contact 의 값들을 아래의 코드처럼 수정해 줍니다.

- 이 후 각 컨텐츠들에게 지정해준 left / top 값을 수정하고 float left 와 margin 값을 통해서 위치를 조정해 줍니다.

- 아래의 코드는 위의 내용을 반영한 코드입니다.

 

html,
body {
    font-family: 'Noto Sans KR', sans-serif;
    height: 100%;
}

header {
    width: 100%;
    height: 50px;
}

footer {
    float: left;
    width: 100%;
    height: 50px;
    text-align: center;
    line-height: 50px;
    
}


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


#sidebar {
    position: relative;
    float: left;
    width: 200px;
    margin-top: 150px;
}

nav {
    width: 200px;
    top: 175px;
}

ul {
    list-style: none;
    padding-left: 0px;
}

#sidebarul {
    padding-left: 65px;

}

li {
    font-size: 20px;
    width: 135px;
    height: 20px;
    padding-top: 30px;
    padding-bottom: 30px;
    font-weight: 100;
}

#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;
}

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

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

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

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

/* about page*/
#about {
    position: relative;
    float: left;
    width: 1240px;
}


#aboutimg {
    float: left;
    margin-left: 60px;
    width: 375px;
    height: 500px;
}

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

#myname {
    width: 380px;
    height: 60px;
}

#myname > span {
    font-size: 30px;
    font-weight: 500;
}

#moto {
    float: left;
    margin-left: 100px;
    left: 730px;
    width: 600px;
    height: 205px;
    font-size: 50px;
}

#moto > .moto-left-text {
    display: inline-block;
    width: 270px;
}

#moto > .moto-right-text {
    display: inline-block;
    font-weight: 700;
    width: 310px;
}

#moto > .margin {
    margin-top: 25px;
    margin-bottom: 25px;
}

#introduce {
    float: left;
    margin-left: 100px;
    margin-top: 80px;
    width: 600px;
    height: 210px;
}

#introduce > span {
    font-size: 30px;
    font-weight: 700;
}

#introduce > p {
    font-size: 20px;
    letter-spacing: 1px;
    line-height: 35px;
    margin-top: 50px;
}

#myskills {
    float: left;
    margin-left: 100px;
    margin-top: 80px;
    width: 600px;
    height: 540px;
}

#myskills > .title {
    display: inline-block;
    font-size: 30px;
    font-weight: 500;
    margin-bottom: 40px;
}

#myskills > .skill {
    float: left;
    width: 600px;
    margin-bottom: 10px;
}

#myskills > .skill:nth-last-child(1) {
    margin-bottom: 0;
}

#myskills > .skill > .skillname {
    display: inline-block;
    width: 300px;
    font-size: 20px;
    font-weight: 500;
    margin-bottom: 10px;
}

#myskills > .skill > .progressbar {
    display: inline-block;
    width: 520px;
    height: 21px;
    background-color: #d6d3d3;
    border-radius: 10px;
}

#myskills > .skill > .progressbar > .gauge {
    display: inline-block;
    width: 10%;
    height: 21px;
    background-color: #3abff7;
    border-radius: 10px;
    transition: 1s linear;
}

#myskills > .skill > .skillper {
    display: inline-block;
    width: 60px;
    height: 21px;
    text-align: center;
    font-size: 15px;
    font-weight: 100;
}


/* portfolio */
#portfolio {
    position: relative;
    float: left;
    width: 1240px;
}

#portfolio > .title {
    font-size: 60px;
    font-weight: 900;
    text-align: center;
}

#portfolio > .content {
    float: left;
    margin-top: 50px;
    width: 1240px;
}

#portfolio > .content > .image {
    float: left;
    width: 500px;
    margin-left: 60px;
}

#portfolio > .content > .image > img {
    max-width: 100%;

}

#portfolio > .content > .textcontent {
    float: left;
    width: 680px;
}

#portfolio > .content > .textcontent > .subtitle {
    font-size: 35px;
    font-weight: 400;
    text-align: center;
}

#portfolio > .content > .textcontent > .subtitle > span {
    padding: 10px;
    color: white;
    background-color: black;
    display: inline-block;
}

#portfolio > .content > .textcontent > .subdescription {
    font-size: 20px;
    font-weight: 100;
    margin-top: 40px;
    text-align: center;

}

#portfolio > .content > .textcontent > .subdescription > span {
    display: inline-block;
    width: 500px;
    text-align: left;
}

#portfolio > .content > .textcontent > .sublink {
    font-size: 25px;
    font-weight: 300;
    margin-top: 30px;
    text-align: center;
}

#portfolio > .content > .textcontent > .sublink > span {
    display: inline-block;
    width: 500px;
    text-align: left;
}

/* contact */

#contact {
    position: relative;
    float: left;
    width: 1240px;
}

#contact > .contactinfo {
    float: left;
    margin-left: 50px;
    margin-top: -50px;
    width: 350px;
    height: 900px;
    background-color: #eeeeee;
}

#contact > .contactinfo > .title {
    font-size: 60px;
    font-weight: 900;
    margin-top: 50px;
    margin-bottom: 50px;
    text-align: center;
}

#contact > .contactinfo > span {
    display: inline-block;
    width: 100%;
    height: 10px;
    background-color: white;
}


#contact > .contactinfo > .inquiries > span {
    display: inline-block;
    width: 320px;
    margin-top: 50px;
    margin-left: 30px;
}


#contact > .contactform {
    float: left;
    width: 840px;
    height: 850px;
}

#contact > .contactform > form {
    width: 540px;
    margin-left: 150px;
    margin-top: 100px;
}

#contact > .contactform > form > label {
    display: inline-block;
    width: 150px;
    height: 30px;
    font-size: 30px;
    font-weight: 300;
    vertical-align: top;
    margin-top: 54px;


}

#contact > .contactform > form > input {
    width: 370px;
    height: 30px;
    margin-top: 50px;
    border: 3px solid black;
}

#contact > .contactform > form > #msg {
    height: 90px;
}

/*font-style*/

.subtitle {
    font-size: 30px;
    font-weight: 400;
}

.thin10{
    font-size: 10px;
    font-weight: 100;
}

.thin20 {
    font-size: 20px;
    font-weight: 100;
}

- 처음 계획을 하면서 이부분을 신경 쓰지 않는다면 진행 과정중에서 수정을 해야할 일들이 생기게 됩니다.

- 다음 포스팅에서는 jQuery를 통해 기능들을 추가해 보면서 , 디자인을 하나씩 수정해 나가는 과정을 진행해 보겠습니다.

728x90
728x90

  Contact 페이지 컨텐츠 추가   

- 이전 포스팅에서 contact 페이지의 레이아웃을 구성하고 form 태그 안의 label 태그와 input 태그의 스타일과 크기,위치를 지정해줬습니다.

- 이번 포스팅에서는 div.contactinfo의 title과 iquirise 부분을 추가 하여 contact 페이지를 완성 시켜 보겠습니다.

 

  단계  

1. div.title 크기 위치 지정

2. span 추가 및 구분선 만들기

3. div.inquiries 크기 위치 지정

 

 

1. div.title 크기 위치 지정  

- div.title의 크기와 위치 / 폰트 크기와 스타일을 지정해 주겠습니다.

 

- div. title의 폰트 크기와 스타일은 font-size : 60px , font-weight : 900 입니다.

- div.contactinfo가 상단으로 50px 만큼 올라가 있기 때문에 div.title을 50px만큼 내려줘야합니다.

- margin-top 값으로 50px만큼 지정합니다.

- 가운데 정렬 시키기 위해 text-align 값으로 center를 지정하고 , 아래쪽에 간격을 주기위해 margin-bottom 값으로 50px 만큼 지정합니다.

 

#contact > .contactinfo > .title {
    font-size: 60px;
    font-weight: 900;
    margin-top: 50px;
    margin-bottom: 50px;
    text-align: center;
    background-color: skyblue;
}

- 타이틀 완성 !!

  2 span 추가 및 구분선 만들기

- div.title밑으로 흰색 구분선이 있습니다.

 

- div.title의 border-bottom 값을 주어서 만들수도 있지만, span태그를 추가 해서 만들어 보겠습니다.

- div.title 과 div.inquiries 사이에 span태그를 추가해 줍니다.

 

	<div class="title">
            Contact
        </div>
        <span></span>
        <div class="inquiries">
            Inquiries
        </div>

- span을 display: inline-block으로 만들고 width 값으로 100% , height 값으로 10px , background-color값을 white로 지정합니다.

 

#contact > .contactinfo > span{
    display: inline-block;
    width: 100%;
    height: 10px;
    background-color: white;
}

 

- 구분선이 생겼습니다.!!

 

  3. div.inquiries 크기 위치 지정  

- 이제 마지막으로 div.inquiries의 크기와 위치를 지정해주고 텍스트를 추가해 준 뒤 스타일을 지정해 보겠습니다.

 

 

- div.inquiries의 크기를 우선 지정해 주겠습니다.

- 가로 크기값으로 100%를 지정하고 background-color값으로 skyblue를 줘서 확인해 보겠습니다.

 

- Inquiries에 들어갈 컨텐츠들을 확인해 보고 div.inquiries 안에 태그들과 텍스트들을 추가해 주겠습니다.

- 들어가는 컨텐츠들은 3부분으로 나뉩니다. 

- 각각 텍스트가 들어갈 span태그를 3개 추가해주고 텍스트들을 넣어 주겠습니다.

- 첫번째에 들어가는 텍스트인 Inquiries의 스타일만 다르고 나머지는 똑같습니다.

- span들 사이에 간격을 주기 위해 margin-top 값으로 50px을 margin-left 값으로 30px만큼줍니다.

- span을 display : inline-block으로 만들고 가로크기 값으로 320px을 지정한뒤 font-size : 20px / font-weight : 100을 지정해 줍니다.

#contact > .contactinfo > .inquiries> span{
    display: inline-block;
    width: 320px;
    font-size: 20px;
    font-weight: 100;
    margin-top:50px;
    margin-left: 30px;
}

 

 

 

 

- css에서 첫번째 span만 nth-child를 이용해 스타일을 변경할 수 있지만, 항상 텍스트들을 추가할때마나 span값을 지정하는 방법은 너무 귀찮아 질 수도 있습니다. font스타일에 해당하는 값들을 지정해놓은 css스타일을 미리 만들어두고 , class를 지정하여 사용하면 편리할 것 같습니다.

- div.contactinfo > span의 css값들중 font에 해당하는 부분들을 우선 삭제 처리합니다.

- css에 .subtitle이라는 선택자를 만들어 font-size : 30px, font-weight: 400을 지정하고 첫번째 span에 class값으로 subtitle을 지정합니다

- 다음으로 .thin20이라는 선택자를 만들고 font-size:20px;, font-weight:100을 지정하여 2번째 , 3번째 span에 class 값으로 thin20을 지정합니다.

 

#contact > .contactinfo > .inquiries>span{
    display: inline-block;
    width: 320px;
    margin-top:50px;
    margin-left: 30px;
}


/*font-style*/

.subtitle{
    font-size: 30px;
    font-weight: 400;
}

.thin20{
    font-size: 20px;
    font-weight: 100;
}

 

 

- 잘 적용 된 모습입니다.

- 전체적인 페이지의 모습을 확인해 보겠습니다.

 

 

 

- 완성!!

- 이로서 contact 페이지도 완성 되었습니다.

- 다음 포스팅에서는 footer부분을 진행해 보겠습니다.

728x90
728x90

  Contact 페이지  

- Contact 페이지는 웹사이트 방문자가 저에게 메세지를 보내는 기능을 하는 곳입니다.

- 직접적으로 E-mail을 보낼수 있지만, Contact 페이지를 통해서도 보낼 수 있습니다.

- 먼저 Contact 페이지의 구성을 살펴보겠습니다.

- Contact 페이지는 크게 제목 / 필요 정보 / 그리고 메세지를 보낼 수 있는 form 부분으로 나누어져 있습니ㅏㄷ.

- form 은 Name / E-mail / subject / Message로 나뉘어져 있습니다.

- 아래의 단계에 따라 먼저 Contact 페이지의 레이아웃을 구현해 보겠습니다.

 

  단계  

1. contact.html 태그 추가

2. div#contact 크기 및 위치 지정

3. div.contactinfo 크기및 위치 지정

4. div.contactform 크기및 위치지정

5. form 태그 크기및 위치지정

6. label / input 태그 크기와 위치 지정

 

 

 

  1. contact.html 태그 추가  

- contact.html 에 필요한 태그를 추가 해 주겠습니다.

- contact 페이지는 아래의 그림과 같이 크게 2부분으로 나뉩니다.

 

- div#contact 태그를 추가해 주고 각 부분에 해당하는 태그를 하위태그로 추가합니다.

- 좌측 부분은 div.contactinfo 로 우측부분을 div.contactform 으로 추가 해 줍니다.

- 좌측에 해당하는 div.contactinfo 에 들어가는 컨텐츠들을 살펴보겠습니다.

 

 

- div.contactinfo 에는 div.title 과 div.inquiries 2가지 태그가 필요합니다.

- 우측 부분인 div.contactform 부분은 메세지를 보내기위한 양식을 작성하는 부분입니다.

- form 태그와 label / input태그가 필요함으로 추가해줍니다.

 

{% extends 'layout.html' %}
{% block content %}
<div id="contact">
    <div class="contactinfo">
        <div class="title">
            Title
        </div>
        <div class="inquiries">
            Inquiries
        </div>
    </div>
    <div class="contactform">
        <form action="">
            <label for="">Name</label>
            <input type="text">
            <label for="">E-mail</label>
            <input type="text">
            <label for="">Subject</label>
            <input type="text">
            <label for="">Message</label>
            <input type="text">
        </form>
    </div>
</div>
{% endblock %}

 

  2. div#contact 크기 및 위치 지정  

- contact 페이지에 들어가는 컨텐츠들을 감싸고 있는 div#contact 페이지의 크기와 위치를 먼저 지정해 주겠습니다.

- 먼저 현재 div#contact의 크기와 위치를 살펴 보겠습니다.

- portfolio 를 만들때와 같이 div#contact 의 가로 크기가 1440px로 되어 있습니다.

- position 값으로 absolute / left 값으로 200px을 지정합니다.

- div#contact의 가로 크기를 1240px로 지정해 줍니다.

- height 값으로는 850px을 지정하겠습니다.

 

/* contact */

#contact{
    position: absolute;
    left: 200px;
    width:1240px;
    height: 900px;
    border:1px solid red;
}

 

  3. div.contactinfo 크기및 위치 지정  

- 좌측에 위차한 div.contactinfo의 크기와 위치 스타일을 지정해주겠습니다.

 

- div.contactinfo의 계획을 한 이미지를 보면 사이드바와 간격이 50px만큼 있습니다.

- margin- left값으로 50px 만큼 지정합니다.

- 그리고 가로크기는 350px입니다.

- 높이를 보면 header 부분과 까지 침범해 900px 만큼 지정되어있습니다.

- 높이를 900px만큼 높이를 지정해주고, margin-top 값으로 -50px만큼 지정해 주겠습니다.

- background-color 값으로 색상코드 #eeeeee을 지정합니다.

#contact > .contactinfo{
    margin-left:50px;
    margin-top:-50px;
    width: 350px;
    height: 900px;
    background-color: #eeeeee;
}

 

- div.contactform 부분이 div.contactinfo 부분 밑으로 정렬 되어있습니다.

- float 값으로 left를 지정해서 정렬 시켜 줍니다.

- 잘 적용된 모습입니다.

 

  4. div.contactform 크기및 위치지정  

- div.contactform의 위치와 크기를 지정해 주겠습니다.

- float 값으로 left를 지정해 주어서 정렬시켜 위치를 정해 줍니다.

- 가로 크기는 1240px에서 div.contactinfo의 크기 400px을 제외한 840px입니다.

- 높이는 850px을 지정해주고, 확인을 위해 background-color로 skyblue를 지정해 주겠습니다.

#contact > .contactform{
    float: left;
    width: 840px;
    height: 850px;
    background-color: skyblue;
}

 

  5. form 태그 크기및 위치지정  

- 이제 form 태그의 위치와 크기를 지정해 보겠습니다.

- form 태그는 좌측에 150px만큼 간격이 존재합니다. margin-left 값으로 150px; 만큼 지정합니다.

- 가로의 크기는 540px 입니다.

- 위치는 상단에서 100px만큼 떨어져 있습니다. margin-top값으로 100px; 만큼 지정해 줍니다.

- div.contactform 의 바탕색을 삭제하고 form 태그에 적용 시켜 확인해 보겠습니다.

 

- 위치를 Name 텍스트에 맞춰서 하지 않는 이유는 form 태그안에 위치한 label과 input 태그들이 각각 간격이 존재 하기 때문에 그 크기만큼을 생각해서 위치를 잡아 줬습니다.

- 높이는 따로 지정하지 않고 자식 태그들에 해당하는 컨텐츠들의 높이만큼 자동으로 조절 되도록 합니다.

 

  6. label / input 태그 크기와 위치 지정  

- form 태그 안에 있는 label / input 태그의 위치와 크기 스타일을 지정해 주겠습니다.

 

 

- label 의 display 값을 inline-block으로 지정합니다.

- label 의 가로 크기는 150px입니다. input 의 가로크기는 form 가로크기 540px 에서 label가로크기를 제외한 390px입니다. 하지만 input 태그는 border 값을 가지고 있으므로 390px보다 작게 설정하여 370px만큼 지정합니다.

- label 과 input 의 높이를 30px 만큼 지정합니다.

- input 태그의 border 값을 3px solid black으로 지정합니다.

- label 의 폰트 사이즈를 30px 로 지정하고 font-weight 를 300으로 지정합니다.

- label 의 vertical-align 값으로 top / margin-top 값으로 54 px을 지정해 lebel / input 태그사이에 간격을 맞추고 텍스트들을 input태그에 맞춰 정렬 시켜 줍니다.

- Message 부분의 input 태그의 높이를 지정하기위해 id를 msg로 지정해 주고 높이값으로 90px을 지정해 주겠습니다.

 

#contact > .contactform > form > label {
    display: inline-block;
    width: 150px;
    height: 30px;
    font-size: 30px;
    font-weight: 300;
    vertical-align: top;
    margin-top:54px;
    
    
}

#contact > .contactform > form > input {
    width: 370px;
    height: 30px;
    margin-top: 50px;
    border: 3px solid black;
}
#contact > .contactform > form > #msg{
    height: 90px;
}

- 잘 적용 된 모습입니다.

- 진행해보면서 느끼는 거지만 디자인은 참 어려운것 같습니다.

- 다음 포스팅에서는 나머지 컨텐츠들을 완성시켜 contact페이지도 완료하겠습니다.

728x90
728x90

  컨텐츠 채우기  

- 이번 포스팅에서는 portfolio 페이지에 들어갈 image 와 text content 내용을 채워 보겠습니다.

- 우선 1개의 content를 채운뒤 나머지 content들을 추가하는 방식으로 진행합니다.

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

 

  단계  

1. image 추가 

2. text Content 채우기

3. content 태그 추가 

4. CSS 수정

 

 

  1.image 추가  

- subimage 태그 안에 img태그를 추가합니다. 

- 경로는 static > img > portfolio 디렉토리 안에 Trading_predict_price.png 를 지정해 줍니다.

- 대체 문자로는 ' 주식가격예측'을 넣어 줍니다.

        <div class="image">
            <img src="../static/img/portfolio/Trading_predict_price.png" alt="주식가격예측">
        </div>

 

- img 태그의 max-width 값으로 100% 를 지정해 줍니다.

#portfolio > .content > .image > img {
    max-width: 100%;

}

  2. text Content 채우기  

- subtitle / subdescription / sublink 에 들어갈 문구들을 각 태그들의 span 안에 넣어 줍니다.

        <div class="textcontent">
            <div class="subtitle">
                <span>
                    Stock price prediction model
                </span>
            </div>
            <div class="subdescription">
                <span>
                    -The domestic stock price prediction model using Keras and Tensorflow trains RNN and LSTM neural network model with time series data to predict the next price according to period
                </span>
            </div>
            <div class="sublink">
                <span>
                    Link - https://github.com
                </span>
            </div>
        </div>

- link 부분은 우선 임의로 넣어 놨습니다.

- 이부분을 a태그로 감싸 주겠습니다.

                <span>
                   <a href="">
                       Link - https://github.com
                   </a>
                </span>

- 잘 들어 갔네요.

 

  3. content 태그 추가  

- 이제 만들어 놓은 content태그를 복사하여 2개 더 추가 해주고 안에 있는 내용을 수정해 줍니다.

 

    <div class="content">

        <div class="image">
            <img src="../static/img/portfolio/Trading_predict_price.png" alt="주식가격예측">
        </div>
        <div class="textcontent">
            <div class="subtitle">
                <span>
                    Stock price prediction model
                </span>
            </div>
            <div class="subdescription">
                <span>
                    -The domestic stock price prediction model using Keras and Tensorflow trains RNN and LSTM neural network model with time series data to predict the next price according to period
                </span>
            </div>
            <div class="sublink">
                <span>
                    <a href="">
                        Link - https://github.com
                    </a>
                </span>
            </div>
        </div>
    </div>

    <div class="content">

        <div class="image">
            <img src="../static/img/portfolio/oil_price_korea.jpg" alt="국내주요소가격분석">
        </div>
        <div class="textcontent">
            <div class="subtitle">
                <span>
                    Oil price analysis
                </span>
            </div>
            <div class="subdescription">
                <span>
                -Analyzing the status of domestic gas stations and analyzing prices by region, visualization through a map library, receiving and analyzing changes in oil prices as data, and conducting visualization and preparatory work for distribution
                </span>
            </div>
            <div class="sublink">
                <span>
                    <a href="">
                        Link - https://github.com
                    </a>
                </span>
            </div>
        </div>
    </div>

    <div class="content">

        <div class="image">
            <img src="../static/img/portfolio/feature_impotance%20Chart.png" alt="중요특성분석">
        </div>
        <div class="textcontent">
            <div class="subtitle">
                <span>
                    ML model Features Analysis
                </span>
            </div>
            <div class="subdescription">
                <span>
                    -Analysis and visualization of the importance of learning and feature_importances along with the analysis of fearures to learn machine learning and the data set required for learning
                </span>
            </div>
            <div class="sublink">
                <span>
                    <a href="">
                        Link - https://github.com
                    </a>
                </span>
            </div>
        </div>
    </div>

- 내용은 잘 들어 갔지만 , 컨텐츠들이 정렬 되지 않았습니다.

- CSS를 몇가지 수정하고 정렬시켜야 합니다.

 

  4. CSS 수정  

- 우선 content들을 정렬 시켜 보겠습니다.

- 정렬이 되지 않은 이유는 content의 높이가 자식 태그들의 높이들 만큼 반영 되지 않았습니다.

- image 와 textcontent가 float값이 지정 되어 있기 때문에 붕 떠있는 상태와 같습니다.

- 해결방법은 몇가지가 있지만 저는 image와 textcontent의 부모 태그인 content태그에 float 값으로 left를 주어서 해결하겠습니다.

 

#portfolio > .content {
    float: left;
    margin-top: 50px;
    width: 1240px;
}

- 이제 잘 정렬 되엇습니다.

- 다음으로 image 부분과 sidebar 부분에 간격을 60px만큼 주겠습니다.

- margin-left 값으로 60px만큼 지정하고 textcontent의 width 값을 60px만큼 감소 시킨 680px로 수정합니다.

#portfolio > .content > .image {
    float: left;
    width: 500px;
    margin-left: 60px;
}

#portfolio > .content > .textcontent {
    float: left;
    width: 680px;
}

 

- 잘 만들어 졌습니다!!

- Js 나 서버 측에서 작업물의 개수만큼 자동으로 content를 만들어 보여주면 좋을것 같습니다.

- 위와 같은 기능들은 우선 페이지들의 레이아웃을 완성 시킨 후 진행해 보도록 하겠습니다.

- 다음 포스팅에서는 마지막 페이지인 contact 페이지를 진행해 보겠습니다.

728x90
728x90

  Portfolio 페이지  

- 이제 Portfolio 페이지를 완성할 차례입니다.

- Portfolio 페이지는 그동안 제가 해온 작업물들에 대한 소개와 이미지 그리고 링크 등이 들어 갑니다.

- 기본적인 레이아웃 작업을 우선적으로 진행하고, 이후에 JavaScript를 통해 기능을 추가해 보겠습니다.

- Portfolio 레이아웃 구성을 위한 작업물등중 3가지를 선택했습니다.

- 이 작업물들을 통해서 레이아웃을 구성했습니다.

- Portfolio 페이지의 타이틀이 가장 상단에 들어갑니다.

- 그 밑으로 이미지가 좌측에 텍스트들이 우측에 배치 됩니다.

- 텍스트는 작업물 제목 / 소개 / 링크로 구성되어있습니다.

- 이제 아래의 단계에 따라 기본적인 레이아웃을 구성해 보겠습니다.

 

  단계  

1. portfolio.html 태그 추가

2. portfolio 크기 및 위치 지정

3.portfolio title 위치와 크기 지정

4. content 크기와 위치 지정

5. image와 textcontent 크기와 위치 지정

6. textcontent 태그 추가 및 위치 크기 지정  

1. portfolio.html 태그 추가

- portfolio.html에 필요한 태그들을 추가 해주겠습니다.

- 먼저 id 가 portfolio 인 div태그를 추가해 줍니다.

{% extends 'layout.html' %}
{% block content %}
<div id="portfolio">
</div>
{% endblock %}

- 이 태그안에 컨텐츠들을 추가 해 주겠습니다.

- 먼저 #portfolio > .title을 추가 해 주겠습니다.

{% extends 'layout.html' %}
{% block content %}
<div id="portfolio">
    <div class="title">
        portfolio
    </div>
</div>
{% endblock %}

- div.title 하단에 이미지와 텍스트들이 들어갈 클래스가 content인 div 태그를 우선 1개 추가 해 줍니다.

{% extends 'layout.html' %}
{% block content %}
<div id="portfolio">
    <div class="title">
        portfolio
    </div>
    <div class="content">
        content
    </div>
</div>
{% endblock %}

- div.content안에 이미지가 들어갈 div.image와 div.textcontent 태그를 추가해 주겠습니다.

{% extends 'layout.html' %}
{% block content %}
<div id="portfolio">
    <div class="title">
        portfolio
    </div>
    <div class="content">
        content
        <div class="image">
            img
        </div>
        <div class="textcontent">
            text
        </div>
    </div>
</div>
{% endblock %}

- 기본적인 태그들을 추가해 주었습니다.

- 다음 단계를 진행하면서 필요한 태그들을 추가해 주겠습니다.

 

  2. portfolio크기 및 위치 지정  

- 먼저 div#portfolio 의 크기와 위치를 지정해 주겠습니다.

- div#portfolio에 border 값을 주어서 지금 지정된 위치와 크기를 확인합니다.

#portfolio{
    border:1px solid red;
}

 

 

- 현재 main의 가로 크기 만큼 div#portfolio 가로크기가 지정되어있고, 높이는 폰트 사이즈의 높이 합 만큼 지정되어있습니다.

- 가로 크기를 main가로크기 - 사이드바 가로크기 / 1440px - 200px = 1240px

- 이제 position 값으로 absolute를 지정해 주고 left값으로 200px을 지정해 줍니다.

#portfolio{
    position: absolute;
    left: 200px;
    width: 1240px;
    height: auto;
    border:1px solid red;
}

 

  3.portfolio title 위치와 크기 지정  

- Portfolio페이지의 제목에 해당하는 div.title의 위치와 크기를 지정해 주겠습니다.

- div.titile에 border 값을 지정해 주어서 정확한 위치와 크기를 확인해 보겠습니다.

 

- width 값으로 100%를 지정합니다.

- div.title안에는 Portfolio 라는 폰트가 지정되어 들어 갑니다.

- 폰트 사이즈와 폰트 스타일을 적용 시켜 주겠습니다.

 

- 폰트 사이즈는 60px / 스타일은 black font-weight은 900을 지정해 줍니다.

- Text-align 값으로 center를 지정해 줘서 가운데 정렬 시켜 줍니다.

 

#portfolio > .title{
    font-size: 60px;
    font-weight: 900;
    text-align: center;
    border: 1px solid red;
}

  4. content 크기와 위치 지정  

- div.content의 지금 크기와 위치를 확인합니다.

-

- 계획 레이아웃을 보면 title과 content , content들 사이에 간격이 50px만큼 존재랍니다.

- div.content에 margin-top 값으로 50px만큼 지정해 줍니다.

- width 값으로는 div.portfolio와 같은 값이 1240px을 지정해 줍니다.

 

#portfolio > .content{
    margin-top: 50px;
    width: 1240px;
    border: 1px solid red;    
}

- 간격이 생겼습니다.

 

  5. image와 textcontent 크기와 위치 지정  

- 이제 content 안에 들어가있는 div.image 와 div.textcontent를 진행해 보겠습니다.

- content에 들어가는 이미지와 텍스트의 크기는 각 포트폴리오 작업물마다 상이합니다.

- 그래서 이미지의 가로의 크기를 고정 시켜주고 text가 들어갈 곳의 가로크기를 고정시켜 줍니다.

- float값을 left로 지정합니다.

#portfolio > .content > .image {
    float: left;
    width: 500px;
    border: 1px solid red;
}

#portfolio > .content > .textcontent {
    float: left;
    width: 730px;
    border: 1px solid red;
}

- 우선은 border 크기가 있어 textcontent 의 가로 크기를 730px 로 지정해 주었습니다. 후에 740px로 변경합니다.

  6. textcontent 태그 추가 및 위치 크기 지정  

- 이제 textcontent 안에 들어갈 subcontents 들의 태그들을 추가 해 주겠습니다.

- 안에 들어갈 subcontents들은 작업물의 제목 - subtitle / 소개내용 -subdescription / 링크 주소 - sublink 입니다.

- div.textcontent 안에 추가 해 주겠습니다.

        <div class="textcontent">
            <div class="subtitle">
                subtitle
            </div>
            <div class="subdesciption">
                subdescription
            </div>
            <div class="sublink">
                sublink
            </div>
        </div>

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

 

- 폰트 사이즈는 35px / 폰트 스타일은 regular 400 입니다.

- 그리고 가운데 정렬 시켜 줍니다.

#portfolio > .content > .textcontent > .subtitle {
    font-size: 35px;
    font-weight: 400;
    text-align: center;
    border: 1px solid red;
}

- subtitle들을 보면 모두 검은색 바탕에 흰색 글자색을 가지고 있고 상하좌우 여백을 가지고 있습니다.

- subtile문구를 span으로 감싸주고 display값으로 inline-block으로 지정합니다.

-padding 값으로 10px을 지정하고 color 값을 white / background-color 값을 black으로 지정합니다.

 

            <div class="subtitle">
                <span>
                    subtitle
                </span>
            </div>
#portfolio > .content > .textcontent > .subtitle>span{
    padding: 10px;
    color: white;
    background-color: black;
    display: inline-block;
    border: 1px solid blue;
}

- 다음으로 subdescription 부분을 진행해 보겠습니다.

- 먼저 폰트에대한 정보를 확인합니다.

- 폰트 사이즈는 20px / 폰트 스타일은 thin 100 입니다.

#portfolio > .content > .textcontent > .subdescription {
    font-size: 20px;
    font-weight: 100;
    border: 1px solid red;
}

- subtitle 과 subdescription 사이에 간견이 40px만큼 존재합니다. margin-top 값으로 40px를 지정해 주겠습니다.

#portfolio > .content > .textcontent > .subdescription {
    font-size: 20px;
    font-weight: 100;
    margin-top: 40px;
    border: 1px solid red;
}

- 다시 subdecription을 가운데 정렬 시키고, span으로 감싸줍니다.

#portfolio > .content > .textcontent > .subdescription {
    font-size: 20px;
    font-weight: 100;
    margin-top: 40px;
    text-align: center;
    border: 1px solid red;
}

 

- 마지막으로 sublink를 진행해 주겠습니다.

- 폰트 사이즈는 25px 스타일은 Light 300 입니다.

- 폰트에 대한 값들을 지정해 주고 가운데 정렬 시킨후 span값으로 감싸줍니다.

#portfolio > .content > .textcontent > .sublink {
    font-size: 25px;
    font-weight: 300;
    margin-top: 30px;
    text-align: center;
    border: 1px solid red;
}

- subdescription 과 sublink의 span을 display : inline-block으로 지정한후 width 값으로 500px을 지정합니다.

- text-aligh을 left 시켜서 두곳을 정렬 시켜 줍니다.

#portfolio > .content > .textcontent > .subdescription > span {
    display: inline-block;
    width: 500px;
    text-align: left;
    border: 1px solid blue;
}

#portfolio > .content > .textcontent > .sublink > span {
    display: inline-block;
    width: 500px;
    text-align: left;
    border: 1px solid blue;
}

 

- 다음에는 contents들에 해당하는 이미지와 텍스트들을 삽입해 보겠습니다.

728x90
728x90
728x90

+ Recent posts