[개발일지-1] 웹개발 1주차

남승희·2022년 7월 2일
0

웹개발 종합반 1주차 강의를 수강했다. 이번주엔 강의를 끊어서 듣다보니 내용흐름이 끊겨서 숙제하는데 조금 힘들었던 것 같다. HTML과 CSS의 기초와 JAVASCRIPT의 개요에 대해서 수업을 들었다.

파이썬도 공부해야하는데 강의를 듣다보니까 아직 초반인데 뒤죽박죽 될 것 같은 느낌이 들어서 강의에 집중해야 될 것 같다.

HTML , CSS 기본 내용

(1) HTML은 뼈대, CSS는 꾸미기!
(2) HTML 기초
HTML은 크게 Head와 Body로 구성된다. head 안에는 페이지의 속성정보를, body 안에는 페이지 내용 정보를 담는다.
(3) css 기초
head ~ /head 안에 style ~ /style로 공간을 만들어 작성한다. class를 가리킬 떄는 앞에 .을 붙이고 .myclass {} 로 써줘야한다.

배경관련
background-color
background-image
background-size

사이즈
width
height

폰트
font-size
font-weight
font-family
color

간격
margin
padding

기본적으로 쓰이는 것에는 이런 것들이 있다.

(4) 만들어둔 로그인 화면을 가운데로 가져오려면 : width를 주고 margin:auto를 사용하자
(5) 폰트입히기 : 구글 웹폰트 이용
(6) 주석처리하고싶은 라인들을 선택해서 ctrl + / 입력
(7) css 파일을 분리해서 저장해두었다가 쓸 수도 있다.
(8) 부트스트랩 활용하기!

생애 최고의 영화 사이트 만들기

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

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
        integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
        crossorigin="anonymous"></script>

    <title>스파르타코딩클럽 | 부트스트랩 연습하기</title>
    <link href="https://fonts.googleapis.com/css2?family=Gowun+Dodum&display=swap" rel="stylesheet">

    <style>
        * {
            font-family: 'Gowun Dodum', sans-serif;
        }
        .mytitle {
            background-color : green;

            height:250px;
            width : 100%;

            background-image : linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)),url("https://movie-phinf.pstatic.net/20210715_95/1626338192428gTnJl_JPEG/movie_image.jpg");
            background-position: center;
            background-size:cover;

            color : white;

            display : flex;
            flex-direction : column;
            justify-content : center;
            align-items: center;
        }
        .mytitle > button {
            width : 200px;
            height: 50px;

            background-color: transparent;
            color : white;

            border-radius: 50px;
            border : 1px solid white;

            margin-top : 10px;


        }

        .mytitle > button:hover {
            border : 2px solid white;
        }
        .mycomment {
            color : gray;

        }

        .wrap {
            max-width : 1200px;
            width : 95%;
            margin : 20px auto 0px auto
        }

        .mypost {
            max-width : 500px;
            width : 95%;
            margin: 20px auto 0px auto;

            box-shadow: 0px 0px 3px 0px;
            padding : 20px;
        }
        .mybtn {
            display: flex;
            flex-direction: row;
            align-items: center;
            justify-content: center;

            margin-top : 20px;

        }
        .mybtn > button {
            margin-right : 10px;
        }
    </style>
   
</head>

<body>
<div class="mytitle">
    <h1>내 생애 최고의 영화들</h1>
    <button>영화 기록하기⭐</button>
</div>
<div class = "mypost">
    <div class="form-floating mb-3">
        <input type="email" class="form-control" id="floatingInput" placeholder="name@example.com">
        <label for="floatingInput">영화url</label>
    </div>
    <div class="input-group mb-3">
        <label class="input-group-text" for="inputGroupSelect01">별점</label>
        <select class="form-select" id="inputGroupSelect01">
            <option selected>***선택하기***</option>
            <option value="1"></option>
            <option value="2">⭐⭐</option>
            <option value="3">⭐⭐⭐</option>
            <option value="4">⭐⭐⭐⭐</option>
            <option value="5">⭐⭐⭐⭐⭐</option>
        </select>
    </div>
    <div class="form-floating">
        <textarea class="form-control" placeholder="Leave a comment here" id="floatingTextarea"></textarea>
        <label for="floatingTextarea">코멘트</label>
    </div>
    <div class = "mybtn">
        <button type="button" class="btn btn-dark">기록하기</button>
        <button type="button" class="btn btn-outline-dark">닫기</button>
    </div>
</div>
<div class="wrap">
    <div class="row row-cols-1 row-cols-md-4 g-4">
        <div class="col">
            <div class="card">
                <img src="https://movie-phinf.pstatic.net/20210728_221/1627440327667GyoYj_JPEG/movie_image.jpg"
                     class="card-img-top" alt="...">
                <div class="card-body">
                    <h5 class="card-title">여기에 제목</h5>
                    <p class="card-text">여기엔 내용.</p>
                    <p>⭐⭐⭐</p>
                    <p class="mycomment">여기에 코멘트</p>
                </div>
            </div>
        </div>
        <div class="col">
            <div class="card">
                <img src="https://movie-phinf.pstatic.net/20210728_221/1627440327667GyoYj_JPEG/movie_image.jpg"
                     class="card-img-top" alt="...">
                <div class="card-body">
                    <h5 class="card-title">여기에 제목</h5>
                    <p class="card-text">여기엔 내용.</p>
                    <p>⭐⭐⭐</p>
                    <p class="mycomment">여기에 코멘트</p>
                </div>
            </div>
        </div>
        <div class="col">
            <div class="card">
                <img src="https://movie-phinf.pstatic.net/20210728_221/1627440327667GyoYj_JPEG/movie_image.jpg"
                     class="card-img-top" alt="...">
                <div class="card-body">
                    <h5 class="card-title">여기에 제목</h5>
                    <p class="card-text">여기엔 내용.</p>
                    <p>⭐⭐⭐</p>
                    <p class="mycomment">여기에 코멘트</p>
                </div>
            </div>
        </div>
        <div class="col">
            <div class="card">
                <img src="https://movie-phinf.pstatic.net/20210728_221/1627440327667GyoYj_JPEG/movie_image.jpg"
                     class="card-img-top" alt="...">
                <div class="card-body">
                    <h5 class="card-title">여기에 제목</h5>
                    <p class="card-text">여기엔 내용.</p>
                    <p>⭐⭐⭐</p>
                    <p class="mycomment">여기에 코멘트</p>
                </div>
            </div>
        </div>
    </div>
</div>
</body>

</html>
  • body안에 div를 만들어서 내용 구성을 만들고, head 밑에 style을 만들어서 각 구성에 대한 꾸미기 코드를 짠다.

Javascript 맛보기

자바스크립트는 프로그래밍 언어 중 하나로, 브라우저가 알아들을 수 있는 언어이다. 파이썬, 자바 같은 언어를 써도 되지만 이미 만들어진 표준으로서 존재하는 언어이므로 브라우저에는 javacrip를 사용한다.

1) 어떻게 쓰이는지?

 function hey() {
  alert('안녕!');
  }

라는 코드를 head안에 script 로 공간을 만들어 작성한다.
그리고, 버튼에 함수를 연결한다. 버튼을 누르면 함수가 불린다.

<button onclick="hey()">영화 기록하기</button>

2) 기초문법

  • 크롬 개발자 도구에서 console 탭에 작성한다.
  • let으로 변수선언

(1) 리스트 : 순서를 지켜서 가지고 있는 형태

let a_list = []  // 리스트를 선언. 변수 이름은 역시 아무렇게나 가능!

// 또는,

let b_list = [1,2,'hey',3] // 로 선언 가능

b_list[1] // 2 를 출력
b_list[2] // 'hey'를 출력

// 리스트에 요소 넣기
b_list.push('헤이')
b_list // [1, 2, "hey", 3, "헤이"] 를 출력

// 리스트의 길이 구하기
b_list.length // 5를 출력

(2) 딕셔너리 : key-value의 묶음

let a_dict = {}  // 딕셔너리 선언. 변수 이름은 역시 아무렇게나 가능!

// 또는,

let b_dict = {'name':'Bob','age':21} // 로 선언 가능
b_dict['name'] // 'Bob'을 출력
b_dict['age'] // 21을 출력

b_dict['height'] = 180 // 딕셔너리에 키:밸류 넣기
b_dict // {name: "Bob", age: 21, height: 180}을 출력

(3) 리스트와 딕셔너리의 조합

names = [{'name':'bob','age':20},{'name':'carry','age':38}]

// names[0]['name']의 값은? 'bob'
// names[1]['name']의 값은? 'carry'

new_name = {'name':'john','age':7}
names.push(new_name)

// names의 값은? [{'name':'bob','age':20},{'name':'carry','age':38},{'name':'john','age':7}]
// names[2]['name']의 값은? 'john'

(4) 함수

// 만들기
function 함수이름(필요한 변수들) {
	내릴 명령들을 순차적으로 작성
}
// 사용하기
함수이름(필요한 변수들);
// 두 숫자를 입력받으면 더한 결과를 돌려주는 함수
function sum(num1, num2) {
	console.log('숫자', num1, num2);
	return num1 + num2;
}

sum(3, 5); // 8
sum(4, -1); // 3

(5) 조건문

function is_adult(age){
	if(age > 20){
		alert('성인이에요')
	} else if (age > 10) {
		alert('청소년이에요')
	} else {
		alert('10살 이하!')
	}
}

is_adult(12)

(6) 반복문

for (let i = 0; i < 100; i++) {
	console.log(i);
}
for (1. 시작조건; 2. 반복조건; 3. 더하기) {
	4. 매번실행
}

1 -> 2체크하고 -> (괜찮으면) -> 4 -> 3
-> 2체크하고 -> (괜찮으면) -> 4 -> 3
-> 2체크하고 -> (괜찮으면) -> 4 -> 3
-> 2체크하고 -> (괜찮으면) -> 4 -> 3

와 같은 순서로 실행됩니다.
i가 증가하다가 반복조건에 맞지 않으면, 반복을 종료하고 빠져나옵니다.
for (let i = 0 ; i < scores.length ; i++) {
	if (scores[i]['score'] < 70) {
		console.log(scores[i]['name']);
	}
}

// 이렇게 하면 점수가 70점 미만인 사람들의 이름만 출력할 수도 있습니다.

대망의 1주차 숙제


이런 화면을 나 스스로 구성해야했는데 보자마자 순간 머리가 뒤죽박죽 혼란스러웠다. 하지만 코드를 외워서 쓰지 않고 미리 만들어둔 코드를 순서에 맞춰서 잘 짜면 되는 것이었기 떄문에 차근차근해보니 할만했다.

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

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
        integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
        crossorigin="anonymous"></script>

    <title>헤이즈 팬명록</title>
    <link href="https://fonts.googleapis.com/css2?family=Black+Han+Sans&family=Nanum+Brush+Script&family=Nanum+Myeongjo&family=Noto+Serif+KR:wght@200&display=swap" rel="stylesheet">

    <style>
        * {
            font-family: 'Nanum Brush Script', cursive;
        }
        .mytitle {
            height:250px;
            width : 100%;

            background-image : linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)),url("http://newsimg.hankookilbo.com/2017/10/11/201710111154214799_1.jpg");
            background-position: center;
            background-size:cover;

            color : white;

            display : flex;
            flex-direction : column;
            justify-content : center;
            align-items: center;
        }
        .mypost {
            max-width : 500px;
            width : 95%;
            margin: 20px auto 0px auto;

            box-shadow: 0px 0px 3px 0px;
            padding : 20px;
        }
        .card {
            max-width : 500px;
            width : 95%;
            margin : 20px auto 20px auto
        }
        .mybtn {
            margin-top : 20px;
        }
        .mycards {
            width : 95%
            max-width : 500px;
            margin : auto;
        }
        .mycards > .card {
            margin-top : 10px;
            margin-bottom : 10px;
        }
    </style>
</head>

<body>
    <div class="mytitle">
        <h1>헤이즈 팬명록</h1>
    </div>
    <div class="mypost">
        <div class="form-floating mb-3">
            <input type="email" class="form-control" id="floatingInput" placeholder="name@example.com">
            <label for="floatingInput">닉네임</label>
        </div>
        <div class="form-floating">
            <textarea class="form-control" placeholder="Leave a comment here" id="floatingTextarea"></textarea>
            <label for="floatingTextarea">응원댓글</label>
        </div>
        <div class="mybtn">
            <button type="button" class="btn btn-dark">응원 남기기</button>
        </div>
    </div>
    <div class="mycards">
        <div class="card">
            <div class="card-body">
                <blockquote class="blockquote mb-0">
                    <p>새로운 앨범 멋져요!</p>
                    <footer class="blockquote-footer">호빵맨</footer>
                </blockquote>
            </div>
        </div>
        <div class="card">
            <div class="card-body">
                <blockquote class="blockquote mb-0">
                    <p>새로운 앨범 멋져요!</p>
                    <footer class="blockquote-footer">호빵맨</footer>
                </blockquote>
            </div>
        </div>
        <div class="card">
            <div class="card-body">
                <blockquote class="blockquote mb-0">
                    <p>새로운 앨범 멋져요!</p>
                    <footer class="blockquote-footer">호빵맨</footer>
                </blockquote>
            </div>
        </div>
    </div>



</body>


</html>

난 헤이즈의 노래를 좋아하기 떄문에 헤이즈 팬명록으로 만들어보았다. card를 mycards로 엮는게 막혔다 ㅠㅠ 여러개 card의 class가 card 라는 똑같은 이름으로 정의되면 안될 것 같다고 생각했기 때문이다. 숙제 해설 강의를 보고 mycards로 묶어서 각각 card라고 정의해도 괜찮다는 것을 확인하고, 적용해보았는데 깔끔하게 만들어졌다. 다만 폰트가 가독성이 좀 떨어지는 것 같다 ㅎㅎ

http://localhost:63342/frontend/homework.html?_ijt=9mqcmkmqep32rs7p9g2umveot9&_ij_reload=RELOAD_ON_SAVE

이렇게 1주차 수업이 끝났다. SQL에 비하면 뭔가 많은 내용이 휘몰아친 느낌이다.
다음주 수업이 기대가 되면서도 뭔가 두렵기도 하다 ㅎㅎ

profile
조금씩 발전하는 (자기)개발자!

0개의 댓글