웹 개발/웹개발종합

웹 개발의 기초 1

개발자명백 2023. 2. 13. 17:19

웹은 기본적으로 HTML, CSS, JavaScript로 구성됩니다.

 

HTML은 뼈대를,

CSS는 꾸미기를,

JavaScript는 동작을 담당합니다.

 

브라우저는 웹을 기반으로한 컨텐츠를 열람하기위한 소프트웨어로서 사용자에게 HTML 문서와 그림, 멀티미디어 파일을 보여줍니다. 

 

 

1. HTML의 기초

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>스파르타코딩클럽 | HTML 기초</title>
</head>

<body>
    <!-- 구역을 나누는 태그들 -->
    <div>나는 구역을 나누죠</div>
    <p>나는 문단이에요</p>
    <ul>
        <li> bullet point!1 </li>
        <li> bullet point!2 </li>
    </ul>

    <!-- 구역 내 콘텐츠 태그들 -->
    <h1>h1은 제목을 나타내는 태그입니다. 페이지마다 하나씩 꼭 써주는 게 좋아요. 그래야 구글 검색이 잘 되거든요.</h1>
    <h2>h2는 소제목입니다.</h2>
    <h3>h3~h6도 각자의 역할이 있죠. 비중은 작지만..</h3>
    <hr>
    span 태그입니다: 특정 <span style="color:red">글자</span>를 꾸밀 때 써요
    <hr>
    a 태그입니다: <a href="http://naver.com/"> 하이퍼링크 </a>
    <hr>
    img 태그입니다: <img src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png" />
    <hr>
    input 태그입니다: <input type="text" />
    <hr>
    button 태그입니다: <button> 버튼입니다</button>
    <hr>
    textarea 태그입니다: <textarea>나는 무엇일까요?</textarea>
</body>

</html>

 

2. CSS 기초

CSS는 Cascading StyleSheet라고 합니다. HTML 태그는 부모-자식 구조 혹은 트리 구조를 가지는데 부모 노드에 적용된 CSS는 자식 노드에 적용이 되기 때문에 붙여진 이름입니다. 

 

CSS는 head 태그 내 style 태그에서 작성합니다. 

 

배경 관련 CSS : background-color, background-image, background-size
사이즈 관련 CSS : width, height, max-width
폰트 관련 CSS : font-size, font-weight, font-family, color
간격 관련 CSS : margin, padding
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>스파르타코딩클럽 | 로그인페이지</title>
    <style>
        .mytitle {
            color: white;
            width: 300px;
            height: 200px;
            background-image: url('https://www.ancient-origins.net/sites/default/files/field/image/Agesilaus-II-cover.jpg');
            background-position: center;
            background-size: cover;
            
            border-radius: 10px;
            text-align: center;
            padding-top: 40px;
            margin: auto;
        }
    </style>
</head>

<body>
    <div class="mytitle">
        <h1>로그인 페이지</h1>
        <h5>아이디, 비밀번호를 입력해주세요</h5>
    </div>
    <div>
        <p>
            ID: <input type="text" />
        </p>
        <p>
            PW: <input type="password" />
        </p>
    </div>
    <button>로그인하기</button>
</body>
</body>

</html>

 

3. 구글 폰트 적용하기 

구글 웹 폰트 링크 : https://fonts.google.com/?subset=korean  

헤드 태그 안에 링크 태그를 복사하고 CSS를 복사해 스타일 태그에 붙여넣기를 합니다. 

<!-- HTML에 이 부분을 추가하고 -->
<link href="https://fonts.googleapis.com/css2?family=Jua&display=swap" rel="stylesheet">
/* CSS에 이 부분을 추가하면 완성! */
* {
	font-family: 'Jua', sans-serif;
}

 

4. 주석달기 

파이참의 경우 Ctrl + / 를 활용합니다. 

 

5. CSS 파일 분리

<!-- style.css 파일을 같은 폴더에 만들고, head 태그에서 불러오기 -->
<link rel="stylesheet" type="text/css" href = "(css파일이름).css">

 

6. 부트스트랩

부트스트랩 링크 : https://getbootstrap.com/docs/5.0/getting-started/introduction/  

부트스트랩을 활용해 나만의 영화 페이지 만들기

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

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

    <!--bootstrap CDN-->
    <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://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
            integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
            crossorigin="anonymous"></script>

    <!--jQuery google CDN-->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

    <title>스파르타코딩클럽 | 부트스트랩 연습하기</title>

    <!--Google font CDN-->
    <link href="https://fonts.googleapis.com/css2?family=Gowun+Dodum&display=swap" rel="stylesheet">
    <style>
        * {
            font-family: 'Gowun Dodum', sans-serif;
        }

        .mytitle {
            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-size: cover;
            background-position: center;

            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: 1px solid white;
            border-radius: 50px;

            margin-top: 10px;
        }

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

        .mycomment {
            color: gray;
        }

        .wrap {
            width: 80%;
            margin: 20px auto 0px auto;
        }

        .mypost {
            max-width: 500px;
            width: 95%;

            margin: 20px auto 0px auto;
            padding: 20px;

            box-shadow: 0px 0px 3px 0px gray;
        }

        .mybtn{
            display: flex;
            flex-direction: row;
            align-items: center;
            justify-content: center;

            margin-top: 10px;
        }

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

<body>
<!--Title-->
<div class="mytitle">
    <h1>내 생애 최고의 영화들</h1>
    <button>영화 기록하기</button>
</div>

<!--Posting Box-->
<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>

<!--CARD-->
<div class="wrap">
    <div class="row row-cols-1 row-cols-md-4 g-4">
        <div class="col">
            <div class="card h-100">
                <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 h-100">
                <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 h-100">
                <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 h-100">
                <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>

 

7. Javascript 기초

모든 인터넷의 브라우저는 자바스크립트를 표준으로 사용합니다. 

script 태그는 곧 우클릭->개발자도구->console과 동일합니다. script에 정의된 자바스크립트 함수들을 console에서 호출해서 사용할 수 있습니다.

변수, 자료형, 함수, 조건문, 반복문
변수 : let을 통해 선언합니다. ex) let a = 3, let first_name = '최'
자료형 : 배열은 여러 데이터를 저장합니다. 딕셔너리는 key-value의 구조로 데이터를 저장합니다.  ex) let a_list = ['수박', '참외', 배'], a.push('감'), let a_dict = {'name' : 'bob', 'age' : 27 }, a_dict['name'],  a_dict['height'] = 180
함수 : 정해진 동작을 수행합니다. 스크립트 안에 작성되며 콘솔창에서 호출할 수 있습니다.  ex) function sum(a, b) { alert(a + b); console.log(a + b); return a + b; }
조건문 : if (조건) { 실행할 내용 } else { 실행할 내용 } 의 형태로 작성합니다.
반복문 : for(let i = 0; i < a_list.length; i++) { console.log(a_list[i] } 의 형태로 작성합니다.