728x90
728x90
https://docs.github.com/ko/pages/getting-started-with-github-pages/creating-a-github-pages-site

 

github pages를 사용하기 위해서는 3가지가 필요합니다.

1. git

2. github repo

3. gh-pages

먼저 https://git-scm.com/downloads 에서 파일을 다운로드 받아 설치해 줍니다.

 

 

 

 

github에 회원가입 후 접속하면 repository를 만들 수 있습니다.

 

New 버튼을 클릭하면 repository 생성 페이지로 이동하게 되고, 필요한 내용을 작성합니다.

github pages를 사용하기 위해서 repository는 <username>.github.io 의 이름을 가져야하고, public으로 만들어줘야 합니다.

 

 

 

 

git 초기화 후 원격 레포지토리를 등록해 줍니다.

git init
git remote add origin "https://github.com/hongsamhc2/hongsamhc2.github.io.git"

gh-pages 를 이용해 배포를 진행하기위해서 설치해 줍니다.

npm install gh-pages --save-dev

package.json 의 scripts 부분에 명령어를 추가해 줍니다.

    "deploy": "gh-pages -d build",
    "predeploy": "npm run build"​

이제 npm run deploy를 실행하면 build 후에 생성된 파일들이 원격 레포지토리 gh-pages 브랜치에 반영되게 됩니다.

 

npm run deploy

github의 settings 탭에서 pages로 들어갑니다.

Branch 섹션에서 gh-pages를 선택하고 save해 줍니다.

 

원격 레포지토리에 코드를 올리고 실제 사이트에 반영되기 위해서는  조금 시간이 필요합니다.

이제 https://hongsamhc2.github.io/ 에 접속하면 build된 코드가 반영된것을 볼 수 있습니다.

728x90
728x90

React 개발환경을 구성하는 방법은 webpack + babel 부터 하나씩 하나씩 하는 방법도 있으나, 그냥 CRA ( create-react-app) 을 해서 리액트 프로젝트에 필요한 부분을 만들어 주자

npx create-react-app <프로젝트명>
https://create-react-app.dev/

공식 사이트로 접속을 하면 필요한 Document들을 보고 따라해 볼 수 있다. 

추가적으로 --template 인자를 통해서 원하는 template 프로젝트를 만들수 있는데, typescript,pwa등등 나는 이번에는 pwa로 한번 포트폴리오 프로젝트를 시작해 보려고 한다.

npx create-react-app <프로젝트명> --template cra-template-pwa
PWA (Progressive Web App) 프로그레시브 웹 앱
웹 앱과 네이티브 앱의 장점을 모두 제공하는 진보된 형태의 웹 애플리케이션 개발
Google I/O 2016에서 처음 소개
오프라인에서 동작설치가 가능쉬운 동기화푸시 알림, 등을 만족해야한다.
출처 - https://developer.mozilla.org/ko/docs/Web/Progressive_web_apps/Introduction

설치가 쭉쭉쭉 되고, 완료되면

위와 같이 디렉토리와 파일들이 생성된 걸 볼 수 있다.

--template cra-template-pwa로 생성된 프로젝트와 기본 cra와 다른점 중 하나는 service-worker 의 유무이다.

pwa에 관련된 포스팅이 아니므로 우선 넘어가기로 하고, 정상적으로 실행이 되는지 npm run start를 해보자.

 

npm run start

정상적으로 잘 실행이 된다 !!! 야호

 

 

728x90
728x90

블로그 작성을 중단한지 엄청 오래 된거 같다. 

직장 생활도 하고 개인적인 시간도 보내고, 공부도 하고 많은 일들이 있었다.

그러다가 문득 블로그를 다시 써봐야한다는 생각이 들었고, 그런김에 포트폴리오 사이트를 리뉴얼하는 제작기를 시작으로 차근차근 하나씩 작성해 보고자 한다.

 

포트폴리오는 React를 통해서 Github Page를 이용해 배포를 하고, 포트폴리오에 들어갈 프로젝트나 시연 Demo를 위한 초간단 서버를 네이버 클라우드를 통해서 배포해보고자 한다.

퀄리티는 어떨지 모르겠지만, 차근히 하나씩 다시 해봐야지 

 

728x90
728x90

  Main 컨텐츠  

- 이번 포스팅에서는 index 페이지에 있는 텍스트와 이미지 컨텐츠들을 수정하여 반응형 웹에 적용되도록 해보겠습니다.

 

  Index 페이지 태그 추가   

- index 페이지에 있는 컨텐츠들을 감싸주는 index 클래스 태그를 추가 시켜 줍니다.

<div id='index' class="move">

    <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>
</div>

  Index 페이지 - CSS 수정  

- 기존에 있는 index 페이지의 css를 수정해 주겠습니다.

#main {
    float: left;
    width: 100%;
    position: relative;
}

 

#index {
    height: calc(100vh - 100px);
    float: left;
    position: relative;
    width: 80vw;
    left: 20vw;
}

#index {
    height: calc(100vh - 100px);
    float: left;
    position: relative;
    width: 80vw;
    left: 20vw;
}

#maintext {
    position: absolute;
    top: 50%;
    left: 10vw;
    transform: translate(0, -50%);
    font-size: 8vw;
    color: #f41f56;
    font-weight: 700;
    z-index: 2;
}

#mainsubtext {
    position: absolute;
    top: calc(50% + 13vw);
    left: calc(10vw);
    transform: translate(0, -50%);
    z-index: 2;
}

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

#mainsubtext > p:nth-child(2) {
    font-size: 1.5vw;
    margin-top: 1vw;
}

#mainimg {
    position: absolute;
    float: left;
    top: 50vh;
    left: 60vw;
    transform: translate(-50%, -50%);
    width: 45vw;
    z-index: 1;
}

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

 

 

 

 

 

 

 

 

 

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

- 다음 포스팅에서는 about 페이지를 수정해 보겠습니다.

 

728x90
728x90

  반응형 웹  (Responsive Web)  

- 반응형 웹은 디바이스의 종류에 따라 웹페이지의 크기가 자동으로 변경되는 것을 말합니다.

- 지금 제작하고 있는 포트폴리오 웹사이트의 경우 크기가 고정되어 있어, 모바일이나 태블릿 환경에서는 웹페이지가 잘리게 됩니다.

 

- 기존의 css코드를 %, vw, vh 등을 사용해서 media query (미디어 쿼리)를 사용해서 반응형으로 수정해 보겠습니다.

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

 

  단계  

1. media.css 링크 / 태그 추가

2. 전체 페이지 크기 수정

3. 사이드 바 수정

4.사이드바 - 미디어 쿼리  

5.사이드바 - jQeury

6.사이드바 - css 수정

  1. media.css 링크  

- 미디어 쿼리를 사용하는 법은 간단합니다.

@media (max-width:1440px) {
 	/* css 코드 */
}

- 각 디바이스의 크기와 미디어 쿼리의 분기점은 구글에 media queries breakpoint 로 검색하면 알 수 있습니다.

- 제가 사용할 분기점들의 목록은 아래의 링크를 참고 하여 가져왔습니다.

 

devfacts.com/media-queries-breakpoints-2020/

 

Media Queries Breakpoints For Responsive Design In 2020 - DevFacts

Learn how to write Media Queries Breakpoints for your web applications.Here you can find standared media qurie breakpoints in 2020.

devfacts.com

- css 파일에 위 코드를 추가해 주면 됩니다.

- 기존의 css파일에 추가해 줘도 되지만, media.css파일을 만들어 추가 해 주겠습니다.

- layout.html 에 <link>를 사용해 추가 해 주겠습니다.

- 모바일 환경에도 잘 적용 시키기 위해 <head>에 <meta<meta name="viewport"> 를 추가해주겠습니다.

<meta name="viewport" content="width=device-width, initial-scale=1.0">

- 반응형 웹을 만들때는 모바일 기기에 맞춰 시작해 PC환경으로 크기를 맞추는 방법과 이 방법을 역으로 진행할 수 있습니다.

- 저는 PC환경에서 웹 페이지를 만든 후 max-width를 사용해 모바일 기기로 점점 페이지의 크기를 줄이는 방법을 이용해 보겠습니다.

 

  2. 전체 페이지 크기 수정  

- 우선 기존의 페이지를 수정해 보겠습니다.

 

- 웹페이지의 컨텐츠들이 들어가는 main에 border크기를 지정해 현재 페이지가 어떻게 되어있는지 확인해 보겠습니다.

 

#main {
    margin: 0 auto;
    position: relative;
    width: 1440px;
    border:2px solid red;
}

- main이 박스 형태가 아닙니다. 높이 값이 지정되어 있지 않아 height가 0이라서 그렇습니다.

- main을 가운데 정렬 시켜 주기위해 margin :0 auto를 사용했습니다.

- 이제 main의 margin값을 삭제하고, 가로크기를 브라우저의 크기에 맞춰 주기 위해 100%를 설정한뒤 왼쪽으로 정렬 시켜 주겠습니다.

 

 

#main {
    float: left;
    position: relative;
    width: 100%;
}

 

- main 크기가 변경 되면서 안에 있는 컨텐츠 들이 위치가 변경 되었습니다.

- 이제 하나씩 수정을 해 보겠습니다.

 

  3. 사이드 바 수정  

 

- 먼저 각 페이지에 공통 적으로 들어가는 사이드 바을 수정해 주겠습니다.

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

- magin 값을 삭제 처리 합니다.

- 다른 컨텐츠들은 차후에 진행하므로 우선은 사이드바에 초점을 맞춰 진행해 보겠습니다.

- 사이드 바의 크기는 고정되어 있기때문에 브라우저의 크기가 줄어들어도 크기나 위치가 변하지 않습니다.

- 미디어 쿼리 분기점을 통해서 브라우저의 크기가 줄어들게 되면 사이드바의 디자인이 변경되게 해줍니다.

- 크기가 1024px 미만이 되면 사이드바가 왼쪽으로 사라지고 메뉴 탭이 생기도록 하겠습니다.

 

  4.사이드바 - 미디어 쿼리  

- 미디어 쿼리를 만들기 전에 태그 추가와 css수정을 해줘야합니다.

- layout.html에 nav태그 밑에 div.menu 태그를 추가 해 줍니다.

<div class="menu">
	<span>
		Menu
	</span>
</div>

- #sidebar의 width와 height를 삭제해주고 display : flex를 추가합니다.

- display flex를 추가하면 부모의 높이가 자식들에 의해 지정되면 높이가 지정되지 않은 자식들의 높이는 부모의 높이에 자동으로 지정되게 됩니다.

#sidebar {
    position: absolute;
    float: left;
    display: flex;
}

- 이제 .menu와 .menu>span스타일을 아래의 코드처럼 지정해 주겠습니다.

 

.menu {
    float: left;
    width: 30px;
    height: inherit;
    background-color: lightgray;
}

.menu > span{
    display: inline-block;
    position: relative;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%) rotate(270deg);
    
}

 

 

- Menu 부분이 새로 생겼네요.

- 이제 브라우저의 크기가 변경되면 Menu가 생기고 사라지게 해주겠습니다.

- 우선은 .menu에 display:none;을 추가해 줍니다.

.menu {
    float: left;
    width: 30px;
    height: inherit;
    background-color: lightgray;
    display: none;
}

- media.css에 max-width:1023.99px 인 분기점을 만들어 줍니다.

 

@media (max-width:1023px) {
    
}

- 중가로 안에 css 코드를 작성해 주면 됩니다.

- 선택자로 .menu 선택한 후 display:block을 추가합니다.

@media (max-width:1023px) {
    
    .menu{
        display: block;
    }
}

 

- 가로의 크기에 따라 변하는 것을 볼 수 있습니다.

- 이제 크기가 줄어 들면 사이드바의 nav부분이 왼쪽으로 사라지게 만들어 줍니다.

- 미디어 쿼리 #sidebar에 아래의 코드를 추가해 줍니다.

 

@media (max-width:1023px) {
    #sidebar{
        left: -200px;
    }
    .menu{
        display: block;
    }
}

 

- 이제 .menu 를 클릭하면 사이드 바가 나오게 만들어 주기위해 js파일에 코드를 추가해 주겠습니다.

 

  5. 사이드바 - jQuery  

- common.js에 click을 이용해 Menu클릭시 사이드바가 나타나겠끔 해줍니다.

$('.menu').click(function(){
        
       $('#sidebar').css({
           'left':'0'
       }) 
        
        
    });

- .menu 클릭시 #sidebar 의 left값을 0으로 만들어 주면 sidebar의 위치가 바뀌면서 나타나게 됩니다.

- 다시 .menu 클릭시 사라져야 합니다.

- 위 기능을 추가하기 위해 .menu의 class 에 show를 추가 해 줍니다.

- 그리고 jQuery 코드를 아래와 같이 수정해 줍니다.

$(document).on("click",".show",function () {
        $('#sidebar').css({
            'transition':'0.8s',
            'left': '0'
        });
        $('.menu').removeClass('show');
        $('.menu').addClass('hide');
        $('.menu').empty();
        $('.menu').append('<span>Close<span>');

    });
    
    $(document).on("click",".hide",function () {
        $('#sidebar').css({
            'transition':'0.8s',
            'left': '-200px'
        });
        $('.menu').removeClass('hide');
        $('.menu').addClass('show');
        $('.menu').empty();
        $('.menu').append('<span>Menu<span>');

    });

- 동적으로 생성된 선택자를 클릭하면 작동이 안할 경우가 있습니다.

- 이때 .click 이 아닌 $(document).on("click",선택자,function(){})을 사용하면 해결됩니다.

- show를 클릭하면 사이드바가 나타나고, show class를 삭제 hide를 추가하고 Menu 텍스트를 Close로 바꿔 줍니다.

- 사이드바를 닫을때는 반대로 작동합니다.

 

  6. 사이드바 - css 수정  

- 사이드 바의 Menu / Close 부분이 썩 마음에 들지 않습니다.

- css를 수정해 스타일을 바꿔주겠습니다.

- Menu / Close 텍스트 클릭시 nav사 나타나게 하기 위해서 .menu 에 추가해줬던 show hide를 span으로 옯겨 주기위해서 코드들을 아래와 같이 수정합니다.

 

- layout.html

            <div class="menu">
                <span class="show">
                    Menu
                </span>
            </div>

- common.js

$(document).on("click", ".show", function () {
        $('#sidebar').css({
            'left': '0'
        });
        $('.move').css({
            'left': '30vw'
        });
        $('.menu').empty();
        $('.menu').append('<span class="hide">Close<span>');

    });

    $(document).on("click", ".hide", function () {

        $('#sidebar').css({
            'left': '-200px'
        });
        $('.move').css({
            'left': '18vw'
        });
        $('.menu').empty();
        $('.menu').append('<span class="show">Menu<span>');

    });

    $(window).resize(function () {
        var width = $(window).width();
        if (width >= 1024) {
            $('#sidebar').css({
                'left': '0'
            });
            $('.menu').css({
               'display':'none'
            });
        } else {
            $('#sidebar').css({
                'left': '-200px'
                
            });
            $('.menu').css({
               'display':'block' 
            });
        }
    });

 

- style.css

#sidebar {
    float: left;
    display: flex;
    position: fixed;
    top: 50vh;
    transform: translate(0, -50%);
    z-index: 10;
}

nav {
    float: left;
    width: 200px;
    transition: 0.4s linear;
}

.menu {
    float: left;
    width: 3vw;
    height: inherit;
    display: none;
}

.menu > span {
    display: inline-block;
    position: relative;
    top: 50%;
    left: 50%;
    color: white;
    background-color: black;
    text-align: center;
    width: 12vw;
    height: 4vw;
    font-size: 2vw;
    line-height: 4vw;
    letter-spacing: 0.3vw;
    transform: translate(-50%, -50%) rotate(270deg);
    cursor: pointer;
}

 

- 사이드바의 스타일과 기능을 추가 해줬습니다.

- 다음 포스팅에서는 index 페이지에 있는 이미지와 텍스트 content를 수정해 주겠습니다.

728x90
728x90
728x90

+ Recent posts