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

  jQuary 적용하기  

- 각 스킬들의 게이지 크기를 각각 적용 시키기 위해 Jquery를 사용하기로 했습니다.

- jQuary 를 설치하는 방법은 js파일을 다운로드하여 웹 디렉토리안에 저장하거나 CDN 방법이 있습니다.

- 저는 다운로드하여 디렉토리에 저장한 후 사용하기로 했습니다.

- jQuary는 아래의 링크를 통해 접속하면 받을 수 있습니다.

jquery.com/

 

jQuery

What is jQuery? jQuery is a fast, small, and feature-rich JavaScript library. It makes things like HTML document traversal and manipulation, event handling, animation, and Ajax much simpler with an easy-to-use API that works across a multitude of browsers.

jquery.com

- 다운로드 받은 파일을 static > js 디렉토리안에 넣어 줍니다.

- <head> 태그 안에 아래의 명령어로 js 파일을 적용 시킵니다.

<script src='../static/js/jquery-3.5.1.min.js'></script>

  jQuary 적용 확인   

- static > js 디렉토리에 common.js 파일을 생성해서 간단한 예제코드로 잘 적용 되었는지 확인해 보겠습니다.

- common.js를 index.html에 불러 옵니다.

{% extends 'layout.html' %}
{% block content %}
<script src='../static/js/common.js'></script>
<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 %}

- common.js 파일 안에 아래의 명령어를 입력해 index페이지에 접속시 알림창이 나오도록 합니다.

$(document).ready(function(){
    alert("Hello World");
})

- index페이지에 접속 합니다.

- 알림창이 나온 것 을 확인 할 수 있습니다.

- 이제 jQuary를 이용해서 프로그레스 바를 완성 시켜 보겠습니다.

 

  프로그레스바 - 게이지 - jQuery 코드 작성  

  게이지 크기 지정  

- 모든 스킬들의 프로그레스바 게이지들을 span태그로 만들어지고 class = "gauge" 로 정의 되어 있습니다.

- span.gauge 의 속성 per의 값은 게이지의 크기값을 가지고 있습니다.

<span class="gauge"  per="95">
</span>

- about.html 의 스킬들의 per값을 각각 지정해 줍니다.

- jQuery 선택자로 gauge 를 선택 합니다.

- 이때 모든 span.gauge에 css를 적용하기 위해서 each() 함수를 사용하고 이 안에 funtion(){} 을 사용합니다.

- 각각의 span.gauge를 선택 하기 위해서 $(this)를 사용합니다.

- $(this)로 선택된 태그의 속성 per의 값을 가져옵니다.

- 속성값을 변수에 저장하고 css()를 사용해서 width 값을 지정해줍니다.

$(document).ready(function () {
    $('.gauge').each(function () {
        var $this = $(this);
        var per = $this.attr('per');
        $this.css('width', per + "%");
    });
});

- 이제 확인해 보겠습니다.

- 각 속성값에 맞게 들어 크기가 변했습니다.

- 이제 animation / 애니메이션을 적용 시켜 보겠습니다.

  jQuery 애니메이션(Animation) 적용  

- about 페이지 접속시 게이지가 정해놓은 퍼센트 만큼 차츰 커지는 애니메이션을 적용시키려고 합니다.

- 먼저 게이지의 시작점을 잡아주기 위해 css 파일에 지정해놓은 span.gauge의 width 값을 10%로 변경합니다.

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

- common.js 에서 css()부분을 삭제하고 animation()을 사용하겠습니다.

- $this를 사용하여 태그들을 선택하고 각 태그들의 per 속성값을 width값으로 지정해서 animation을 적용합니다.

$(document).ready(function () {
    $('.gauge').each(function () {
        var $this = $(this);
        var per = $this.attr('per');
        $this.animate({
            width: per + "%"
        });
    });
});

- 잘 적용 되었는지 확인해 보겠습니다.

- gif 파일이라 조금 끊겨 보이지만 웹에서는 잘 작동 하고 있습니다.

- about 페이지가 완겅 되었습니다.

- 다음포스팅부터 Portfolio 페이지를 진행해 보겠습니다.

728x90
728x90

  프로그레스바 progress bar  

- 프로젝트의 진행 정도나 내 스킬 숙련도를 나타내기 위한 방법으로 프로그레스바 progress bar를 넣어주려고 합니다.

 

  span 태그 추가  

- 프로그레스 바를 만들기 위해 span.progressbar태그와 추가적으로 이 태그 안에 span.guage 태그를 만들어 줍니다.

        <span class="progressbar">
            <span class="gauge">
                gauge
            </span>
        </span>

 

  css 스타일 추가  

- css 에서 값을 지정해 주겠습니다.

- span.gauge의 속성은 display를 inline-block 으로 만들고 width 값을 숙련도에 맞게 줍니다. Python 에는 95%를 주었습니다.

- 높이 값은 span.progressbar의 높이와 똑같이 줍니다.

- background-color #3abff7 색상 코드를 입력해 줍니다.

- 게이지의 크디가 잘 보이기 위해 span.progressbar 의 백그라운드 색상코드 값으로 #d6d3d3을 주고 border값을 삭제 하겠습니다.

 

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

#myskills > .skill > .progressbar > .gauge {
    display: inline-block;
    width: 95%;
    height: 21px;
    background-color: #3abff7;
}

 

- span 의 모양이 사각형입니다.

- 모서리 부분을 둥글게 만들어 줘야 합니다.

- span.progreebar 와 span.gauge 에 border-radius 값으로 10px;을 지정해 주겠습니다.

#myskills > .skill > .progressbar {
    display: inline-block;
    width: 520px;
    height: 21px;
    border: 3px solid blue;
    border-radius: 10px;
}

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

- 이제 각 스킬들이 들어 가는 부분에 span.gauge들을 추가해 주겠습니다.

- 모두 잘 적용 되었습니다.

- 그런데 각 수치 마다 게이지의 크기가 달라져야 합니다.

- css nth-child 나 선택자를 통해서 정해 줄 수 있지만, 코드가 너무 길어 질거 같습니다.

- JavaScipt 를 통해서 지정해 주면 좋을것 같습니다.

- 이부분은 다음 포스팅에서 구현해 보도록 하고,  css animation 효과를 적용 시켜보겠습니다.

 

728x90
728x90

  이미지 / 텍스트 추가  

- 이번 포스팅에서는 저번 포스팅에서 추가 한 about 페이지에 추가한 div 태그들안에 컨텐츠들을 채워넣어보겠습니다.

- 이미지 추가는 img 태그를 사용하고, 텍스트는 span 또는 p 태그를 이용해 보겠습니다.

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

 

  단계  

1. about 페이지 - aboutimg 추가 

2. myname 텍스트 추가

3. moto 텍스트 추가

4. introduce 텍스트 추가

5. myskills 텍스트 추가

 

  1. about 페이지 - aboutimg 추가  

- about 페이지에 이미지를 추가해 보겠습니다.

- 사용할 이미지는 아래의 이미지입니다.

- 먼저 div #aboutimg 안에 img 태그를 추가하고, 이미지 경로를 지정해 줍니다.

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

- 대체 문자로는 'aboutimg'를 입력해 주겠습니다.

<div id="aboutimg">aboutimg
    <img src="../static/img/about/Aboutimg.jpg" alt="aboutimg">
</div>

- 범위를 벗어 났네요.

- css 에서 자식 선택자로 img 를 선택한 후 max_width 를 100%로 지정해 줍니다.

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

- 잘 들어 갔네요!!

 

  2. myname 텍스트 추가  

- 이제 이미지 아래에 이름을 넣어줘야합니다.

- div #myname 태그 안에 span 태그를 추가하고 텍스트로 'Hun Chang Cho'를 입려합니다.

<div id="myname">
    <span>Hun Chang Cho</span>    
</div>

- 이제 span을 선택해서 css를 적용시킵니다.

- 우선, 폰트 크기와 스타일을 확인합니다.

- 폰트 사이트는 30px, 스타일은 Medium 입니다.

- Medium의 font-weight 값은 500 입니다.

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

  3. moto 텍스트 추가  

- moto부분은 어떻게 구성되어있는지 확인해 보겠습니다.

- 총 6개의 단어가 들어가 있고, 폰트사이즈는 모두 똑같지만 왼쪽과 오른쪽 단어들의 스타일이 다릅니다.

- 왼쪽 오른쪽으로 그룹핑을 하거나 , 가로의 2단어들을 그룹핑 할 수 있습니다.

- 스타일이 다르게 지정되는 것을 생각하면 왼쪽 오른쪽으로 그룹핑을 하는게 좋아보입니다.

- 왼쪽 오른쪽 그룹핑을 하면 2개의 태그만 추가해서 사용할 수 있을 것 같지만, 저는 각 단어들을 span 태그로 감싼후 왼쪽 단어들의 class 를 .moto-left-text / 오른쪽 단어들의 class를 .moto-right-text로 지정해 주어 div #moto안에 태그들을 추가한 후 텍스트를 입력하겠습니다.

 

<div id="moto">
    <span class="moto-left-text">
        Ingenious
    </span>
    <span class="moto-right-text">
        Creativity
    </span>
    <span class="moto-left-text">
        Fast
    </span>
    <span class="moto-right-text">
        Adaptability
    </span>
    <span class="moto-left-text">
        Future
    </span>
    <span class="moto-right-text">
        Possibilities
    </span>
</div>

-이제 각 텍스트들의 css를 적용시켜 주겠습니다.

- 먼저 div #moto에 폰트 사이즈 값을 주어서 모든 span 텍스트들에게 적용시킵니다.

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

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

- 이제 스타일을 지정해 줍니다.

- 왼쪽 텍스트 그룹은 Regular입니다. 따로 수정할 필요가 없습니다.

- 오른쪽 텍스트 그룹은 Bold 입니다. Bold의 font-weight 값은 700입니다.

- 자식 선택자로 .moto-right-text 를 선택해 값을 적용합니다.

#moto > .moto-right-text {
    font-weight: 700
}

- 잘 적용 되었네요. 

- 이제 span에 width 값들을 주어 각 텍스트들을 위치 시킵니다.

- 우선 span에 border값을 줘서 확인해 보겠습니다.

- 각 span의 크기를 얼마를 지정해야 할지 확인해 봅니다.

- 왼쪽 텍스트 그룹의 크기가 280px입니다. 

- div #moto 의 가로의 크기가 600px이므로 오른쪽 텍스트 그룹의 크기는 600px -280px = 320px입니다.

- div #moto 안에 위의 이미지 처럼 정렬하기 위해 각 그룹의 크기를 10px만큼 감소시킨 270px / 310px 로 지정합니다.

- span 에 가로와 높이 값을 주기위해 display 값을 inline-block로 지정합니다.

 

#moto > .moto-left-text {
    display: inline-block;
    width: 270px;
    border: 2px solid blue;    
}
#moto > .moto-right-text {
    display: inline-block;
    font-weight: 700;
    width: 310px;
    border: 2px solid blue; 
}

 

- 각 텍스트들의 상하 간격을 주어야 합니다.

- 가운데 Fast 와 Adaptability에만 상하 margin 값을 top과 bottom 에 주면 됩니다.

- Fast 와 Adaptability span 태그에 margin class를 추가 합니다.

	<span class="moto-left-text margin">
        Fast
    </span>
    <span class="moto-right-text margin">
        Adaptability
    </span>

- css에서 자식 선택자로 margin 클래스를 선택해 margin 값을 top 과 bottom 에 각각 25px을 지정합니다.

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

- 간격이 알맞게 들어 갔네요.

 

  4. introduce 텍스트 추가  

- introduce는 저에 대한 간단한 소개가 들어 갑니다.

 

- 소개 제목 부분과 소개 내용이 들어 갑니다.

- div #introduce 안에 소개 제목 텍스트가 들어갈 span 태그와 소개내용이 들어갈 p태그를 추가하고, 텍스트를 입력해 주겠습니다.

<div id="introduce">
    <span>Still Growing</span>
    <p>-My name is Hun Chang Cho, who dreams of becoming a full-stack developer and is growing.
        I am working on projects related to Python and ML / DL, and I am also working on projects and learning related to Web.</p>
</div>

- 소개 제목 부분의 폰트 사이즈와 스타일을 확인해 css에 적용합니다.

- 폰트 사이즈는 30px / 스타일은 Bold , font-weight 700 입니다.

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

- 소개 내용 부분의 폰트 사이즈와 스타일을 확인해 css에 적용합니다.

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

#introduce > p{
    font-size: 20px;
}

- 소개 내용 부분의 글자들의 간격이 너무 좁아 보입니다. 

- letter-spacing 값으로 1px을 지정합니다.

- line-height 값으로 35px을 지정합니다.

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

- 다음으로는 소개 제목과 소개내용에 간격을 줍니다.

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

  5. myskills 텍스트 추가  

- 마지막으로 myskills 부분에 텍스트를 추가해 보겠습니다.

- My Skills 라는 제목과 각 skill에 해당하는 텍스트들 그리고 숙련정도를 나타내는 텍스트가 있습니다.

- 그리고 프로그레그바는 div태그를 이용해서 만들어 보겠습니다.

- 추가해야할 태그는 제목이 들어가는 span .title 태그 / skill 이름이 들어가는 span .skillname 태그 / 숙련정도가 들어가는 span .skillper 태그 / 프로그레스바를 만들 span.progressbar 태그 입니다. 

- span.skillname / span.skillper / span.progressbar 태그들을 div .skill 태그로 감싸주겠습니다.

- 위 태그들을 div #myskills 태그 안에 추가 하고 텍스트들을 입력합니다.

- 스킬종류가 6개이므로 div .skill이 6개 필요합니다.

- 우선은 , 1개추가해 스타일까지 지정하고 나머지를 추가하겠습니다.

 

<div id="myskills">
    <span class="title">My Skills</span>
    <div class="skill">
        <span class="skillname">Python</span>
        <span class="progressbar">progressbar</span>
        <span class="skillper">skillper</span>
    </div>
</div>

- 제목 부분부터 css를 적용 스켜 줍니다.

- 폰트 사이즈는 30px / 스타일은 Medium font-weight 값은 500 입니다.

- span display값을 inline-block으로 바꿔 줍니다.

- span.title이 span.title 하단에 40px만큼 간격을 가지고 떨어져 있습니다.

- span.title에 margin-bottom 값을 지정해 줍니다.

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

 

 

- 간격을 span.title margin 을 통해서 지정한 이유는 div.skill은 여러개를 추가해 반복적으로 사용됩니다. 이 태그에 margin값을 주게되면 모두 적용 되므로 편리함을 위해 span.title에 지정해 주었습니다.

- 다음으로는 div .skill 태그의 크기와 위치를 지정해 줍니다.

- 가로 크기는 div. myskills 크기와 동일한 600px입니다.

 

#myskills > .skill{
    width: 600px;
    border:3px solid blue;
}

- span.skillname의 폰트크기를 지정해주고 display 를 inline-block으로 만들어 줍니다.

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

- span.skillname 하단으로 span.progressbar 와 span.skillper가 10px 간격으로 위치합니다.

- margin-bottom 10px값을 적용합니다.

- 가로 크기를 300px 만큼 지정해 줍니다.

 

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

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

- 크기는 가로 520px , 높이 21px 로 지정해 줍니다.

 

#myskills > .skill > .progressbar {
    display: inline-block;
    width: 520px;
    height: 21px;
    border: 3px solid blue;
}

- span.skillper 의 폰트 사이즈와 크기를 지정해 주겠습니다.

- 우선 display inline block으로 지정하고, font-size 15px / 스타일은 Thin font-weight 100 입니다.

- 크기는 가로 60px 높이 21px 로 지정해 주겠습니다.

- text-align 으로 텍스트를 center로 정렬합니다.

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

 

 

- 어느정도 위치가 잡힌것 같습니다.

- 이제 div.skill을 5개 추가해 줍니다.

- 그리고 span.skillname 과 span.skillper 텍스트를 수정해 주겠습니다.

<div id="myskills">
    <span class="title">My Skills</span>
    <div class="skill">
        <span class="skillname">Python</span>
        <span class="progressbar">progressbar</span>
        <span class="skillper">95%</span>
    </div>
    
    <div class="skill">
        <span class="skillname">ML</span>
        <span class="progressbar">progressbar</span>
        <span class="skillper">80%</span>
    </div>
    
    <div class="skill">
        <span class="skillname">DL</span>
        <span class="progressbar">progressbar</span>
        <span class="skillper">70%</span>
    </div>
    
    <div class="skill">
        <span class="skillname">HTML</span>
        <span class="progressbar">progressbar</span>
        <span class="skillper">90%</span>
    </div>
    
    <div class="skill">
        <span class="skillname">CSS</span>
        <span class="progressbar">progressbar</span>
        <span class="skillper">80%</span>
    </div>
    
    <div class="skill">
        <span class="skillname">JavaScript</span>
        <span class="progressbar">progressbar</span>
        <span class="skillper">55%</span>
    </div>
</div>

- div.skill 들 마다 간격을 줍니다.

- margin-bottom을 추가해 값으로 10px을 지정합니다.

- 마지막 div.skill은 margin-bottom 값이 필요하지 않으므로 :nth-last-child()로 margin-bottom 값을 없애 줍니다.

#myskills > .skill {
    float: left;
    width: 600px;
    margin-bottom: 10px;
    border: 3px solid blue;
}
#myskills > .skill:nth-last-child(1){
    margin-bottom: 0;
}

- 마지막으로 span.progressbar를 제외하고 border를 삭제 후 확인해 보겠습니다.

- 잘 되었네요!!!

 

- 다음에는 progress bar를 만들고 animation을 적용 시켜 보겠습니다.

728x90
728x90
728x90

+ Recent posts