럿고의 개발 노트

[2020년 1월 사이드 프로젝트] [groom][웹퍼블리싱 실습] 웹 표준 사이트 만들기(동영상강의) 본문

Project Note

[2020년 1월 사이드 프로젝트] [groom][웹퍼블리싱 실습] 웹 표준 사이트 만들기(동영상강의)

KimSeYun 2020. 1. 6. 13:55

[groom][웹퍼블리싱 실습] 웹 표준 사이트 만들기

강의 소개

1. Layout01

  • layout01 소스코드

  • HTML 요소(Content Element)

    • meta, self-closing, block, inline으로 분류
    • block, inline 두개의 구조를 구분을 잘 해야 함.
    • block 구조는 박스라고 생각하면 되며, inline 구조는 텍스트라고 생각하면 쉬움.
    • block 구조는 위에서 아래로 태그들이 쌓이는 것이라고 생각하면 됨.
    • inline 구조는 왼쪽에서 오른쪽으로 배치된다고 생각하면 됨.
  • div 태그

    • 문서의 섹션을 만들거나 영역을 나눌때 사용
    • 시맨틱한 태그의 활용이 절적하지 않은 경우에 사용함.
    • block 요소를 그룹화 한다고 생각하면 좋음.
  • float 속성

    • block 요소의 정렬 상태를 설정
    • none(기본값), left, right 속성값을 가지고 있음.
    • float을 쓴 블록요소는 height값을 0으로 인식하기 때문에 깨지는 현상이 발생
      • 가장 기초적인 해결 방법은 깨진 블록 요소에 float:left를 똑같이 주는 방법이다.
  • margin 속성

    • 바깥쪽 여백을 설정
    • 속성값 중에 auto를 이용하면 가운데 정렬을 할 수 있음
  • text-transform 속성

    • 텍스트를 대문자나 소문자로 변경
    • uppercase, lowercase, capitalize(첫글자만 대문자) 3개의 속성값이 존재
  • text-align 속성

    • 텍스트 정렬 방식을 설정
  • line-height

    • 문장과 문장 사이의 간격을 설정
    • 텍스트가 한줄일때, 세로 가운데 정렬을 하기 위해 감싸고 있는 블록의 높이값과 똑같이 즐때 사용
    • 한줄일때만 가능하며, 두줄 이상일 경우에는 세로 가운데 정렬이 안됨

2. layout02

  • layout02 소스코드

  • clear 속성

    • float요소의 성질을 차단
    • float을 쓴 블록요소는 height값을 0으로 인식하기 때문에 깨지는 현상이 발생했는데, 그걸 해결할 수 있는 방법중 하나

3. layout03

4. layout04

5. layout05

  • layout05 소스코드

  • * 선택자

    • 모든 선택자에게 같은 값을 넣어줌
    • 모든 태그들은 각자 가지고 있는 고유 속성들이 있음. 그 속성들을 초기화 시킬때 사용함.(예를 들면, margin / padding)
    • 그러나 전체 선택자는 실무에서 잘 사용하지 않음. 그냥 있다는 것만 알고 계시면 좋음.
  • 부모와 자식의 속성값이 똑같다면, 생략이 가능함.(중복코딩 피하기!)

    • 예를들어 부모의 높이가 100px이고, 자식의 높이가 100px이면, 자식 높이는 생략 가능
  • width값의 기본값은 100%이기때문에 생략가능

6. layout06

  • layout06 소스코드

  • inherit 속성값

    • 부모의 속성값을 상속받는다는 의미
  • 코드 간략화

    • 최대한 코드가 중복되는 것들은 하나의 클래스를 생성해서 모아두는 것이 좋음

7. layout07

  • layout07 소스코드

  • 주석을 적어주면서, 남이 코드를 봤을때 최대한 이해를 도와야 하며, 선택자명을 잘 적어준다면 주석도 최소화 할 수 있음.

8. layout08

  • layout08 소스코드

  • 파일질라

  • Intelli J 웹서버 접근(Remote Host) -> 사용법 차후 포스팅

  • !doctype html

    • html5 버전에 대해 웹 브라우저에게 알려주는 것
    • html 태그 앞에 먼저 선언해야 함.
  • html 태그

    • 웹 문서의 최상위 요소 문서의 루트를 나타내며, 다른 모든 요소들은 html 태그의 자식 요소이여야 함.
    • 화면 판독에 필요한 언어를 설정해야 하며, 이 기능이 없으면 화면 판독기가 운영체제에 언어를 기본언어로 설정하여 잘못된 언어를 표현할 수도 있음
    • lang 속성으로 언어를 설정합니다. (한국어 "ko", 영어 "en")
  • head 태그

    • 제목과 스크립트, 스타일 시트, 메타 정보 등을 제공
    • 화면에 보이지 않는 정보들을 넣음
  • meta 태그

    • 웹 문서에 대한 정보를 제공
    • author(제작자), charset(언어셋), description(사이트에 대한 설명), keywords(사이트에 대한 키워드) 등등에 대해 정의
    • 자세한 내용은 위의 링크에서 확인
  • link 태그

    • 외부 파일을 연결할 때 설정
    • 보통 CSS를 연결할 때 사용함.
    • 외부 스크립트 파일을 연결할때는 <script> 태그를 사용함.(헷갈리지 말것!)

9. layout9

10. 스킵메뉴

  • 포트폴리오 소스코드

  • 웹 접근성은 모든 사람이 정보통신 기기나 서비스를 손쉽게 활용할 수 있게 하는 것이 목적이다.

  • 우리나라는 2013년 웹 접근성이 의무화 됨.

  • 데스크톱 웹사이트뿐만 아니라 모바일 웹사이트도 웹접근성 지침이 모두 존재

  • 웹표준 및 웹접근성 관련 참고사이트

  • 웹접근성에 따라 스킵메뉴를 만들어 줘야 함. (tab key를 누르면, 스킵메뉴가 보임)

  • 링크값에 클래스값은 먹히지 않지만, 아이디 값은 사용 가능합니다.(해당 태그로 이동할려고 할때) 따라서 아이디는 항상 중복이 되지 않도록 사용하는 것이 좋습니다.

  • position 속성

    • 요소의 위치를 설정합니다.
    • static : 기본값
    • absolute : 절대 위치
    • relative : 상대 위치
    • fixed : 고정 위치
    • 참고자료
  • <a> 태그

    • 하이퍼 링크를 정의합니다.
    • 인라인 구조 중 하나입니다.
    • a(nchor)는 뜻으로 닻이라는 뜻입니다.
  • text-decoration 속성

    • 글자 라인 속성을 정의합니다.
    • 밑줄(underline)이나 취소선(line-through) 등을 적용 시킵니다.
  • :hover 선택자

    • 링크 위에 마우스를 올려 놓았을 경우
  • :active 선택자

    • 링크가 활성화되었을 경우
  • :focus 선택자

    • 사용자가 요소를 클릭하거나 탭하거나 키보드의 Tap 키로 요소를 선택할때

11. 헤더 배경 & 메뉴

  • 포트폴리오 소스코드

  • 상대경로 vs 절대경로

    • 절대경로란 웹페이지나 파일이 가지고 있는 고유한 경로를 말한다.
    • 상대경로란 현재 위치한 곳을 기준으로 해서 경로를 정하는 것이다.
      • / : 루트
      • ./ : 현재 위치
      • ../ : 현재 위치의 상단 폴더
  • background : url()

    • 주소를 설정하여 이미지를 보여줍니다.
    • 처음에 이미지가 반복되어 있습니다.
  • background-repeat

    • background-img의 반복 여부를 설정
    • repeat : x축과 y축으로 반복 설정
    • repeat-x : x축으로 반복 설정
    • repeat-y : y축으로 반복 설정
    • no-repeat : 반복하지 않음
  • background-position

    • background-img의 위치 영역을 설정
  • background

    • background가 붙은 모든 속성값을 한번에 정의 할 수 있습니다.
  • padding 속성

    • 안쪽 여백을 설정
    • 순서대로 4개를 적으면, 위쪽, 오른쪽, 아래쪽, 왼쪽 순으로 적을수 있음
    • inline구조의 padding값은 위아래는 적용되지 않고 양옆만 적용됩니다.
  • display 속성

    • 요소의 성질을 정의함.
    • inline을 block을 block을 inline으로 서로 변경 가능합니다.
    • inline-block : 인라인 성질 + 블록 성질
    • inline, block 속성값 말고도 많은 속성값이 존재함.
  • 부모와 자식 관계로 해서 CSS 선택자를 적는 것이 CSS를 봐도 구조를 알 수 있기 때문에 훨씬 더 좋음

12. 헤더 타이틀 & 웹 폰트

  • 포트폴리오 소스코드

  • font-family

    • 폰트 종류를 설정
    • 폰트명이 한글이거나 여러 단어인 경우는 큰따옴표("")로 설정
    • 쉼표(,)를 통해 여러개의 폰트를 설정 가능합니다.
    • 가장 먼저 쓴 폰트부터 적용이 되며, 폰트가 설치가 되어 있지 않는다면 다음 적은 폰트로 넘어갑니다.
    • 속성값에 있는 폰트가 모두 없다면 브라우저 기본 폰트로 설정이 됩니다.
  • 웹폰트

    • 사용자가 가지고 있지 않은 폰트를 웹페이지에서 사용 할 수 있는 방법
    • 구글에서 제공하는 무료 웹폰트 서비스 google fonts 등이 있습니다.
  • <br> 태그

    • 줄바꿈할때 사용합니다.
  • font-weight: normal

    • 폰트 두깨를 설정하는데, 기본값으로 설정한다는 의미

13. 헤더 아이콘 수정

  • 포트폴리오 소스코드

  • 이미지를 표현하는 방법

    1. img 태그로 표현(의미가 있을 때)
    2. background 속성으로 표현(의미가 없을 때)
    3. 최근 웹사이트는 background 속성을 이용하여 이미지를 표현하며, 가상으로 대체 문자를 만들어줌(IR 효과)
      왜냐하면 웹 접근성을 만족시켜야 하기 때문에 인데, 왜 background 속성을 사용하는 이유는 이미지 스프라이트를 사용하여 서버 요청을 최소화 하기 위해서입니다.
  • IR효과 태그

/* 의미있는 이미지의 대체 텍스트를 제공하는 경우*/
. ir_pm {
    display: block;
    overflow: hidden;
    font-size: 0;
    line-height: 0;
    text-indent: -9999px;
}

/* 의미있는 이미지의 대체 텍스트로 이미지가 없어도 대체 텍스트를 보여주고자 할 때 */
. ir_wa {
    display: block;
    overflow: hidden;
    position: relative;
    z-index: -1;
    width: 100%;
    height: 100%;
}

/* 대체 텍스트가 아닌 접근성을 위한 숨김 텍스트를 제공 할 때 */
.ir_su {
    overflow: hidden;
    position: absolute;
    width: 0;
    height: 0;
    line-height: 0;
    text-indent: -9999px;
}
  • z-index

    • 요소의 위치가 겹칠 경우 순서를 정의
    • 음수도 설정 가능
    • 99999까지만 설정 가능
    • z-index를 적용하지 않은 경우 CSS 우선순위에 따라 나중에 설정한 속성이 위로 올라옴
  • text-indent

    • 문단 들여쓰기 속성 설정
  • overflow

    • 지정한 영역에 요소들이 벗어났을 때 속성을 설정
    • hidden값은 값을 안보이게 하는 것
  • Web Developer 크롬 확장 프로그램

    • 유효성 검사하는 프로그램

14. 전체 메뉴 수정

  • 포트폴리오 소스코드

  • ol 태그

    • Order List로써 순서가 있는 목록형 태그
  • li 태그

    • List Item으로 목록의 항목을 나타냄
  • list-style 속성

    • 목록 스타일 속성을 설정
    • type(유형), position(위치), image(이미지)를 설정
  • '>' 선택자

    • 자식선택자로, 첫번째 자식만 선택함
  • ' ' 선택자

    • 하위 선택자로 모든 자식을 선택함
  • float: left로 인한 영역깨짐(height : 0) 방지법

    1. 깨지는 영역에 똑같이 float: left를 사용
      • 모든 박스에 float: left를 사용하게 되기 때문에 권장하지 않습니다.
    2. float의 성징을 차단하는 clear: both 사용
      • 박스 구조가 복잡해졌을때 어떤 영역이 깨졌는지 찾기 어렵기 때문에 사용하는데 권장하지 않습니다.
    3. float을 사용한 상위박스한테 overflow: hidden을 사용
      • 100%좋지는 않지만, 현재는 우리 기준으로 제일 많이 사용함
      • 내가 지정한 영역외에는 안보이게 된다보니, height: 0이 안됨
      • 그러나, 2단메뉴를 사용할때는 사용을 하지 못함
    4. clearfix를 사용
      -clearfix란?
      • 가장 좋은 방법!
  • :last-child 선택

    • ie9부터 사용 가능
    • 마지막 자신만 선택

15. 전체 타이틀

  • 포트폴리오 소스코드

  • position : absolute;

    • 항상 기준점이 필요하기 때문에, 기준점이 되는 곳에 position: relative를 적어줘야함.
  • letter-spacing

    • 글자 사이의 간격을 설정

16. 전체 배너

17. 컨텐츠 레이아웃

18. 게시판 1

  • 포트폴리오 소스코드

  • 한줄효과 CSS 속성

    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;  
  • a링크에 title을 이용하여 접근성을 위해 적어두는것이 좋음

    • 마우스 올려놓을시, 창으로 title에 적은 글이 나옴.

19. 게시판 2

20. 게시판 3

21. 마우스오버 효과 1

  • 포트폴리오 소스코드

  • em 태그

    • 텍스트를 강조하는 데 사용
    • 시각적으로 기울임꼴로 표시가 됩니다.
  • strong 태그

    • 텍스트의 중요성, 심각성, 긴급성의 의미를 가지고 있으며 텍스트는 시각적으로 굵게 표현
  • visibility 속성

    • 요소를 보이지 않게 정의함
    • visible(기본값) / hidden(보이지 않게 함(영역은 유지)), collapse(테이블 요소를 보이지 않게 하며 영역 제거)

22. 마우스오버 효과 2

  • 포트폴리오 소스코드

  • 미리 만들어놓은 구성요소를 재사용 하는 것이 좋음. 그러나 margin이나 padding같은 경우를 다르게 줘야 할 경우가 있을 수 있음.
    그럴때는 reset.css에 미리 클래스를 만들어 놓는 것이 줗음 그러면 그 클래스만 넣으면 margin이 적용되기 때문이다.

  • !important

    • CSS는 같은 속성을 여러번 정의했을때 우선순위에 따라 값이 적용됩니다.

    • 혹시 가장 높은 우선순위로 속성을 적용시키고 싶다면,

      property(속성): value(속성값) !important

      처럼 적어주면 된다.

23. 탭메뉴

  • 포트폴리오 소스코드

  • 콘텐츠 요소를 보이지 않게 하는 방법

    • display:none -- display: block ==> 영역 제거
    • visibility: hidden -- visibility: visible ==> 영역은 유지
    • opacity: 0 -- opacity: 1 (영역 유지)
    • width:0; height:0; overflow:hidden (영역 제어 가능)
  • border가 위아래로 2개씩 있다면, 한줄로 보이게 하는 방법 중 하나는 위치에 맞게 margin을 -1px을 주는 방법이다.

24. 게시판 4

25. 갤러리

26. 로그인

  • 포트폴리오 소스코드

  • form 태그

    • 웹 서버에 정보를 제공하는 유형을 정의합니다.
    • action속성과 method 속성이 중요합니다.
    • action속성이란 폼 양식이 제출될 때 데이터가 전달 혹은 받을 경로를 설정합니다.
    • method속성이란 전송 방식을 설정하며 get방식과 post방식이 있습니다.
  • fieldset 태그

    • 폼 요소의 그룹 내부 영역을 설정합니다.
    • 폼 요소의 여러 컨트롤과 label을 그룹화 하는데 사용합니다.
  • legend 태그

    • fieldset 요소의 영역 제목을 정의합니다.
  • input 태그

  • label 태그

    • input 요소의 제목을 설정하며 태그를 서로 연결합니다.
  • vertical-align 속성

    • 상하 정렬 방식을 설정합니다.
    • inline구조에서만 적용이 되며, 블럭 구조에서는 정렬이 되지 않습니다.
    • 글씨와 이미지 및 글씨와 input의 정렬상태가 맞지 않는다면, 이미지 요소 및 input에게 vertical-align을 주어야 합니다.

27. 팝업

28. 푸터 & W3C 수정

29. 전체 메뉴 스크립트

  • 포트폴리오 소스코드

  • jQuery 란?

    • 자바스크립트 라이브러리를 이용해 만든 언어로 자바스크립트를 좀 더 효율적이고 쉽게 이용할 수 있도록 제작된 라이브러리입니다.
  • 이용방법(CDN 방식)

    • jQuery Google CDN
    • 위의 사이트에서 버전에 맞게 script를 추가해주면 됩니다.
  • script 태그 사용시 type을 지정해야 하는데, HTML5부터는 생략이 가능합니다.

  • intelli J jQuery 자동완성 사용

  • event.preventDefault()

  • jQuery Selectors

    • jQuery 요소 선택자는 이름, 클래스, 유형, 속성, 속성 값 등을 기반으로 HTML 요소를 선택합니다.
    • 달러 기호화 괄호로 시작합니다.
    • 문법 : $()
  • click 이벤트

    • 요소를 클릭하면 click 이벤트를 발생시킵니다.
  • css()

    • css의 속성 값을 반환하기 위해 사용하는 구문입니다.
    • css("속성", "속성값") 형태로 사용합니다.
  • show & hide

    • show() 메소드는 HTML 요소를 표시 하는 메소드입니다.
    • hide() 메소드는 HTML 요소를 숨기는 메소드입니다.
    • 둘다 매개 변수는 speed(속도)와 callback(메소드 완료 후에 실행될 함수)를 가집니다.
  • fadeIn()

    • 요소에 대한 불투명도를 설정하여 페이딩 효과로 점차 변화시킵니다.
  • slideDown & slideUp & slideToggle()

    • slideDown()메소드는 요소를 아래로 슬라이드 하는데 사용합니다.
    • 매개 변수는 speed(속도)와 callback(슬라이딩이 완료된 후에 실행될 함수)를 가집니다.
  • toggle()

    • hide와 show 메소드를 전환하는 메소드입니다.
    • 요소가 숨겨져 있으면 show를 실행하며, 요소가 보이면 hide를 실행합니다.
  • slideToggle()

    • slideUp과 slideDown 사이트를 전환하는 메소드입니다.
    • 요소가 숨겨져 있으면 slideDown이 실행되며 요소가 표시되어 있으면 slideUp을 실행합니다.
  • toggleClass

    • 선택 요소에 클래스 이름을 추가하거나 제거할 수 있도록 전환합니다.
  • 숨겨져 있는 태그를 보여주게 하는 방법

    $("선택자").css("display", "block");
    $("선택자").show();
    $("선택자").fadeIn();
    $("선택자").slideDown();
    $("선택자").toggle();
    $("선택자").slideToggle(200);
    $("선택자").toggleClass("on");

30. 배너 스크립트

  • 포트폴리오 소스코드

  • slick 홈페이지

  • slick 사용법

    1. slick을 다운받아 프로젝트에 추가합니다.(slick.min.js 파일과 slick.css 파일 추가)

    2. css와 javascript파일을 추가하세요.(jquery도 필요합니다.)

    3. HTML markup을 설정합니다.

      <div class="your-class">
      <div>your content</div>
      <div>your content</div>
      <div>your content</div>
      </div>
    4. jQuery를 작성합니다.

      $(document).ready(function(){
      $('.your-class').slick({
       setting-name: setting-value
      });
      });
  • 코드에서 사용한 속성값

    • infinite : true / false 값을 가지며, 루프를 무한으로 작동할지를 설정
    • slidesToshow : 한번에 슬라이드 몇개를 보여줄지 설정
    • slidesToScroll : 한번에 스크롤 할 슬라이드 수
    • autoplay : true / false 값을 가지며, 슬라이드 자동 재생 활성화
    • autoplaySpeed : 자동 재생시 변경 시간
    • dots : 현재 슬라이드 표시기를 보여줄 지 확인

31. 탭메뉴 스크립트

  • 포트폴리오 소스코드

  • jQuery - chain

    • 액션이나 메소드를 함께 연결할 수 있는 기능입니다.
    • 동일한 요소에 한번에 여러 jQuery 명령을 하나씩 실행할 수 있습니다.
  • find()

    • 섡택 요소의 자식 요소를 리턴하는 메소드
  • parent()

    • 선택 요소에서 부모 요소를 리턴하는 메소드
  • addClass()

    • 선택 요소에서 클래스 이름을 추가하는 메소드
  • removeClass()

    • 선택 요소에서 클래스 이름을 제거하는 메소드
  • focus()

    • 요소에 포커스가 있을 때 발생합니다.
  • focus()준 이유는 웹표준을 지키기위해입니다. tab을 클릭했을때 공지사항1 버튼 -> 공지사항 1,2,3 -> 공지사항 2 -> 공지사항2 1,2,3...

  • siblings()

    • 선택 요소의 모든 형제 요소를 반환합니다.

갤러리 스크립트

  • 포트폴리오 소스코드

  • slick 홈페이지

  • 사용한 slick 옵션

    • fade : 페이드 활성화
    • pauseOnHover : hover시 자동 실행 일시 중지
    • arrows : 다음, 이전 화살표 사용 여부
    • infinite : 무한 루프 여부
    • autoplay : 자동 재생 여부
    • speed : 재생 속도
    • slidesToShow : 한 번에 표시할 수 있는 슬라이드 수 설정
  • slick 버튼 연결

    • Method 이용하여 버튼에 연결 가능
    • slickPlay : 자동재생
    • slickPause : 일시정지
    • slickNext : 다음
    • slickPrev : 이전
$(".play").click(function () {
    $(".gallery_img").slick("slickPlay");
});

$(".pause").click(function () {
    $(".gallery_img").slick("slickPause");
});

$(".prev").click(function () {
    $(".gallery_img").slick("slickPrev");
});

$(".next").click(function () {
    $(".gallery_img").slick("slickNext");
});

33. 레이어 팝업

box-shadow

34. 윈도우 팝업

window.open
- 브라우저 창 또는 새 탭을 여는 메소드입니다.
- window.open("파일명", "팝업이름", "옵션설정");
- 옵션 : left(왼쪽 위치), top(위쪽 위치), width(넓이), height(높이), status(상태 바 여부), toolbar(툴바 설정), location(주소필드 설정), menubar(메뉴 바 설정), scrollbars(스크롤 바 설정), fullscreen(전체화면 여부 설정)

35. 라이트 박스

  • lightGallery Homepage

  • 사용 방법

    1. lightGallery 다운로드

    2. script / css 추가

      <script src="js/lightgallery.min.js"></script>
      <script src="js/lightgallery-all.min.js"></script>
      
      <link rel="stylesheet" href="css/lightgallery.css">
    3. mark up 추가

      <div id="lightgallery">
      <a href="img/img1.jpg">
         <img src="img/thumb1.jpg" />
      </a>
      <a href="img/img2.jpg">
         <img src="img/thumb2.jpg" />
      </a>
      ...
      </div>
    4. jQuery로 plugin Call

       $(document).ready(function() {
           $("#lightgallery").lightGallery(); 
       });
  • 사용한 기능

    • thumbnail : 갤러리 썸네일 사용 여부
    • autoplay : 갤러리 자동 재생 여부
    • pause : 자동 전환 사이간 시간 설정
    • progressBar : 자동 실행 진행 표시줄 여부

36. 마무리

후기

  • 퍼블리셔 관련 강의를 처음 들었는데, 재미도 있었고 너무 즐겁게 들은 강의였다.

  • 총 4개의 강의로 이루어져 있으며 하나의 강의를 1월간 열심히 들어서 끝났지만, 꾸준히 못들은 감도 있어서 그 점이 아쉬웠다.

  • 다음 강의는 반응형 강의인데, 이번 강의보다 더 효율적으로 들어볼 생각이다.

  • 긴 강의 수고해주신 강의자 분께 감사드립니다.

Comments