html 5) Study 2

[웹코딩 가이드] 홈

이제 웹 코딩을 배우기 위한 긴 여정을 시작합니다.. diagram-arrow-down

Web 표준html로 웹사이트 틀을 만들고, Css로 꾸며주고, Javascript로 동작시키는데.. 이것들은 각각 분리하여 작성되어야 나중에라도, 누구라도,, 알아보기 쉽고 유지 관리에도 도움이 된다!


이 페이지는 html 코딩 입문자를 위한 기초 가이드입니다만, html/Css, Javascript 등의 웹 프로그래밍 전반에 걸쳐 본격적으로 학습하고자 한다면; 문서를 찬찬히 살펴보시기를 권합니다..


이미지 다루기

여기서는 웹문서에 이미지를 삽입하는 기본 방식을 간략히 살펴봅니다. 이미지 전반에 관련된 포괄적, 심층적 이해가 필요하신 분은 문서를 참조하십시오..

이미지 삽입하기
<img> 태그는 문서에 이미지 소스 를 삽입하는데, 닫는 태그는 없다. 여기서 alt 속성은 이미지 설명 인데, 스크린리더기는 이 값을 읽어 사용자에게 이미지에 관해 알려주기에 항시 넣어주는 것이 좋다!

이미지 소스가 없음 ㅡㅡ;

                                    
                                        
                                    
                                

위 코드에서는 src에 적합한 이미지 소스가 없으므로 alt 속성에 주어진 값으로 대신 표시해주고 있다 아니라면; 없는 이미지를 찾는다고 몇 분간 더 버벅댈 수도 있습니다 ㅡㅡ;


* cf) alt 속성값에 빈 문자열("")이라도 넣어주는 것은; 예컨대, 단순한 장식용 이미지인 경우, 스크린리더기 등의 비시각적 브라우저에게는 이미지가 컨텐츠의 중요 부분이 아니므로 렌더링을 하지 않아도 된다는 의미로 전달되며, 나아가 이미지를 복사 & 붙여넣기할 때나 이미지 링크를 나열할 때도 alt 속성에 들어있는 값을 사용하므로 SEO 차원에서도 유익하다!

이미지의 너비(width)와 높이(height)를 (실제 크기로)넣어주고, alt 속성으로 (공란일지라도)대체 텍스트를 설정해주면; 브라우저는 네트워크 오류나 컨텐츠 차단, 죽은 링크 등의 이유로 이미지를 표시할 수 없는 경우에 툴팁으로 표시해준다 이는 브라우저가 좀 더 빠르게 내려받도록 하는데도 도움이 되므로 웹사이트 최적화를 위해서도 유익하다!

꼭 넣어주세요 ^^

                                    
                                        
                                    
                                

title 속성은 대부분의 태그에서 사용할 수 있지만, <img> 태그의 alt 속성을 대체하여 사용하는 것은 좋지 않다 - 이 속성으로 추가 정보를 제공할 수는 있겠지만, 꼭 알려야하는 중요한 정보라면; alt 속성을 사용해야 한다!


* cf) widthheight 속성을 써서 이미지의 크기를 지정해주는 것은 좋은 일이지만, 이미지의 크기를 조정하는 데 사용하는 것은 좋지 않다 - 이미지 편집도구를 써서 미리 올바른 크기로 조정하여 삽입해주는 것이 (다운로드 속도를 높이고 이미지 왜곡을 방지한다는 점에서)최선이고, 불가피하게 이미지의 크기를 조정해야 한다면; Css 스타일시트를 써서 설정해주는 것이 좋다!

➥ 더미 이미지 삽입하기

코딩 중 임시로 Lorem으로 더미 문장을 넣어주는 것처럼, 더미 이미지를 넣어서 확인하면서 코딩해나가야 할 경우가 있는데.. 이런 경우에는, 에서 빌려올 수 있습니다. 간단히, 가로x세로 크기만 넣어주면 됩니다:

꼭 넣어주세요 ^^ 꼭 넣어주세요 ^^

                                        
                                            
                                        
                                    

위에서 보듯이, 텍스트 로 표시해줄 수도 있습니다만, 아쉽게도 한글은 지원되지 않는군요 ㅡㅡ; 그외에도 몇가지 추가적인 사용법들이 있지만, 그건 스스로 찾아가서 확인해보십시오..


진짜 이미지가 필요하시면; 등 무료(및 유료) 이미지들을 제공하는 사이트들을 들러 보십시오.. 한편, 구글 에서는 사용자 인터페이스 디자인의 표준을 제시하는 동시에 폰트, 아이콘, 이미지 등 수많은 오픈소스(및 코드)를 제공하고 있으니 한번 들러 보십시오..

이미지맵 작성하기
<map>(& <area>) 태그는 을 정의한다. 이미지 맵을 작성하려면; 먼저, <img> 태그에서 이미지 소스 와 함께 사용할 맵이름 을 지정해주고, 이어서 <map> 태그 안에서 그 맵이름 을 써서 <area> 태그로 이미지맵 영역들을 만들어주면 된다
                                    
                                        
                                    
                                

<area> 태그에서는 맵의 모양(shape)과 좌표 영역(cords)을 지정한다

  • shape="rect" cords="x1,y1, x2,y2" 사각형의 좌상단 모서리 (x1, y1) 좌표와 우하단 모서리 (x2, y2) 좌표
  • shape="circle" cords="x,y,r" 원의 중심점 좌표(x, y)와 반지름(r)
  • shape="poly" cords="x1,y1, x2,y2, .., xn,yn[, x1,y1]" 다각형의 각 꼭지점 좌표들 좌표값은 이미지의 좌상단 꼭지점을 기준으로 하는 px 단위임
400x200 이미지
                                    
                                        
                                    
                                

마우스 포인터를 위 그림 위에서 움직이면서 풍선 도움말을 확인하십시오. 위 코드에서는 href 속성값을 비워두었지만, 필요하다면; 저 각각의 영역들에 웹문서 등을 링크해줄 수 있습니다 여기서는 이미 알고 있는 사각형의 크기를 기준으로 각 영역의 범위를 지정해주었지만, 이미지 편집 프로그램을 이용하면 특정(모양에 맞추어진) 영역 좌표를 확인하여 설정해줄 수도 있습니다!

Webp 이미지

는 웹에서 이미지에 우수한 무손실 및 손실 압축, 알파 채널을 제공하는 최신 이미지 형식이다

웹문서에 Webp 이미지 삽입하기
Webp 이미지는 기본적으로 <picture>(& <source>) 요소와 함께 사용한다
[ Webp 이미지 사용법 ]
                                        
                                            
                                        
                                    

최신 브라우저들은 대부분 Webp 이미지를 기본 지원하고 있으니, 일반 이미지를 넣어줄 때와 같은 방식으로 사용해도 됩니다: <img src="image.webp" width="400" height="200" alt="Webp image">


bmp, jpgpng 등의 이미지 파일을 Webp로 변환하면; 이미지 왜곡도 거의 없이, 최대 10분지 1 정도까지도 용량이 줄어듭니다. 많은 Webp 변환기가 있으니 적당한거 찾아서 Webp로 변환하여 사용하면 됩니다. 제가 권한다면; 가 사용하기 편합니다 - 온라인 변환기들도 많지만.. 이넘은 그냥 다운받아 실행파일 클릭하고, 이미지(들) 선택하여 넣어준 뒤 클릭 두번이면 곧바로 일 끝납니다 ^^

반응형 이미지

고해상도 이미지는 다운로드 시 시간상 지체 문제가 있을 수 있고, 기기간 화면 크기 및 가로/세로 방향에 따른 편차나 (텍스트를 포함한 이미지의 경우)축소 시 텍스트 내용을 알아보기 어려울 수 있다는 점 등의 문제가 발생할 수 있다 - 이러한 문제들을 해결하기 위해 나온 것이 바로 기법이다!

반응형 이미지
1-1. 동일한 이미지를 기기에 따라 더 크게 또는 더 작게 표시하고 싶을 때, <img> 태그의 srcsetsizes 속성을 이용하면; 화면 너비에 맞추어 서로 다른 이미지 파일을 지정해줄 수 있다: 이미지는 콤마로 구분하여 실제 크기별로(480w, 800w 등) 복수로 나열하는데, 브라우저는 먼저 기기 너비를 확인한 뒤, sizes의 미디어 조건에 맞는 srcset 이미지 파일을 찾아서 불러온다
[ img 요소의 srcset 속성 (1) ]
                                        
                                            <img
                                                srcset="img-480w.jpg 480w, img-800w.jpg 800w" ← 480w, 800w는 이미지의 (렌더링을 변경하기 위해 Css를 적용하지 않은)실제 px 너비를 의미한다
                                                sizes="(max-width: 600px) 480px, 800px" ← (뷰포트 너비가 600px 이하면); 480px 크기로, 그 이상이면; 800px 크기로 표시하라
                                                src="img-800w.jpg" ← 브라우저에서 위 코드들이 지원되지 않는다면; 여기로 온다!
                                                alt=""
                                            />
                                        
                                    

sizes의 슬롯 너비에서, 절대너비(480px)를 제공하는 대신 뷰포트에 대한 상대너비(예컨대, 50vw)로 제공할 수는 있지만 %는 사용할 수 없다!

1-2. 가령, (뷰포트 크기가 거의 동일한)스마트폰만을 대상으로 한다고 가정하면; sizes 속성없이 srcset 속성만 사용하여 브라우저가 적절한 해상도의 이미지를 선택하도록 할 수도 있다
[ img 요소의 srcset 속성 (2) ]
                                        
                                            
                                        
                                    

이미지의 크기를 Css에서 img { width: 320px; }로 정의하였다고 가정할 때, 접속한 디바이스의 디스플레이 해상도가 각 Css 픽셀당 디바이스 픽셀이 1개인 경우 1x, 2개 이상이라면 2x에 해당하는 이미지가 로드된다!

2. 다른 방식으로는, <picture>(와 <source>) 태그를 써서 이미지를 삽입할 수도 있다: 가령, 데스크톱에는 전체 장면을 보여주는 가로 이미지를, 모바일에는 주요 부분만 확대하여 보여주는 세로 이미지를 제공하는 등 다양한 기기 및 레이아웃에 맞게 잘린 이미지를 제공하려는 경우이다
[ picture(& source) 사용하기 ]
                                        
                                            
                                        
                                    

위에서 <img> 요소는 맨 밑에 배치되어야 하며, 해상도를 더 세분화하고자 한다면; <source> 태그를 필요한만큼 추가해주면 된다!

➥ 이미지 '지연 로딩' ?

웹브라우저가 시작되면 Css와 javaScript가 해석되기 전에 이미지가 먼저 로딩되는데, 이러한 작동 메커니즘은 반응형 이미지에는 도움이 되지 않고, 도리어 역효과가 날 수도 있기에 반응형 이미지를 위해서는 Css나 JavaScript보다는 html을 활용할 필요성이 생겨난다!

웹페이지 중간에 너무 큰 이미지가 포함된 경우, <img> 요소에서 지연로딩 속성값(loading= "lazy")을 주면; 이미지가 뷰포트에 들어올 '가능성'(이는 브라우저가 알아서 판단한다!)이 있을 때까지 이미지 로딩이 지연되며, 이는 다른 급한 작업에 먼저 자원을 할당하게 하여 성능상의 이점을 가져올 수 있다 이제 사용자가 화면을 스크롤하기 시작하면; 그 거리가 좁혀지고, 자바스크립트가 비활성화되면; 이 속성값은 자동으로 기본값으로 되돌려진다!

Svg 이미지

Svg 이미지는 XML 텍스트 파일로 정의하기에 손실이나 품질 저하 없이 모든 크기에서 렌더링이 가능하며, 검색과 색인 및 압축도 가능하다. 또한, Svg 파일은 브라우저에서 캐시할 수 있으므로 페이지 내 여러 곳에서 사용하는 경우라면; 로딩 속도 측면에서도 유리하다!

Svg 이미지 삽입하기
html 5)에서는 <img> 태그로 Svg 이미지를 불러들일 수 있는데, src, alt 속성과 함께 widthheight 속성도 반드시 필요하다: 부트스트랩 로고
                                    
                                        
                                    
                                

<img> 요소에서 Svg 이미지를 사용할 때; 스크린리더기 등이 Svg 이미지를 인식하지 못하고 건너뛸수 있기에 role= "img" 속성을 넣어줄 필요가 있다. 반면, 단순한 장식용 이미지일 뿐이라면; (그냥 건너뛰라고)role= "none" 속성을 넣어줄 수도 있다!


* cf) Svg 이미지를 지원하지 못하는 브라우저에 대응하기 위해서 srcset 속성을 추가해줄 수도 있다:

                                    
                                        
                                    
                                

Svg를 지원하는 브라우저에서는 image.svg 파일을 불러오고, 미지원 브라우저에서는 기본 image.png 파일을 불러와서 보여주게 된다!

➥ Raster 대 Vector 이미지

위치와 색상을 구성하는 픽셀 격자들로 이루어지는 Raster 이미지(JPEG, PNG, GIF)와는 달리, 알고리즘으로 꼭지점과 선, 색을 구성하는 Vector 이미지(SVG)는 용량이 적고 확대 시에도 화질이 떨어지지 않아 반응형 웹사이트에 적합하며, Css로 스타일을 지정하고 DOM이나 JavaScript에서 조작하는 것이 가능하기에 다양하게 활용할 수 있다!

인라인 SVG 작성하기
인라인 를 쓰면; Css 스타일 설정이 가능하고, 소스 코드 자체를 수정할 수도 있다. 나아가, <a> .. </a> 요소로 감싸서 간단히 하이퍼링크를 만들 수도 있다
<svg> 태그로 인라인 Svg 이미지를 작성할 수 있는데(내부 컨텐츠는 위에서 아래로 순차적으로 렌더링된다), widthheight, xmlns 속성도 반드시 필요하다. fillstroke 속성은 SVG 도형이나 텍스트, 그라디언트 및 패턴의 색을 설정한다:
                                    
                                        
                                    
                                

Svg 문서의 좌상단 모서리는 x, y 좌표 (0, 0)이 되며, 한 지점의 위치는 좌상단 모서리에서 시작하는 px 단위(x축 양수는 오른쪽 방향, y축 양수는 아래쪽 방향)이다: <rect x="0" y="0" width="200" height="100" fill="red"> 좌상단 모서리에서 시작하는 너비 200px, 높이 100px의 사각형을 그리고, 내부는 red 색으로 채워라

                                    
                                        
                                    
                                
                                    
                                        
                                    
                                

기본적으로 Svg 문서의 1px 은 출력장치의 1px 에 매핑된다. - 곧, 사용자 단위와 화면 단위는 1:1의 비율로 동작한다. 지금 SVG 캔버스 전체 크기는 200 x 200 (px)이다. 그러나 viewBox 속성을 사용하여 (0, 0) 좌표에서 시작하는 100 x 100 Svg 이미지를 200 x 200 화면에 표시하고, 100 x 100 영역을 효과적으로 확대하여 이미지를 두 배 크기로 표시할 수 있게 된다!

[ 사용자 좌표계: 사용자 단위와 뷰포트 단위의 매핑 ]
                                                    
                                                        
                                                    
                                                

viewBox 속성은 사용자 공간에서 SVG 뷰포트의 시작 위치(min-x min-y)와 크기(width height)를 정의한다(값은 쉼표나 콤마로 구분한다). 그 결과, SVG 요소의 뷰포트(브라우저의 뷰포트가 아니다!) 경계에 매핑된 사각형의 사용자 공간이 생성되는 것이다!

아래에서 Svg 기본 도형들을 간단히 살펴봅니다만.. Svg 이미지는 직접 만들기보다는(너무 어렵고 힘듭니다 ㅡㅡ;), 대개 같은 벡터그래픽 프로그램으로 만들어씁니다

<rect> 요소는 시작 지점(x, y), 너비와 높이(width, height) 및 사각형 둥근 꼭지점의 x, y 방향으로의 반지름(rx, ry)으로 정의된 Svg 사각형을 그려준다:

                                                    
                                                        
                                                    
                                                

시작 지점(x, y), 너비와 높이(width, height) 등을 바꾸어가면서 감을 잡아보십시오..

<circle> 요소는 원의 중심 좌표(cx, cy)와 반지름 길이(r)로 정의된 Svg 원을 그려준다:

                                                    
                                                        
                                                    
                                                

시작 지점 및 반지름 값을 바꿔줌으로써 간단히 반달 모양으로도 되고, 구멍난 원도 만들어지는군요 ^^

<ellipse> 요소는 원의 중심 좌표(cx, cy)와 x, y 방면으로의 길이(rx, ry)로 정의된 Svg 타원을 그려준다:

                                                    
                                                        
                                                    
                                                

여기서는, 두 타원을 같은 지점에서 출발시킴으로써 겹쳐봤습니다 <svg> 요소의 내부 컨텐츠는 위에서 아래로 순차적으로 렌더링된다는 점 기억하세요!

<line> 요소는 선의 시작점(x1, y1)과 종단점(x2, y2) 좌표로 정의된 Svg 직선을 그려준다:

                                                    
                                                        
                                                    
                                                

<polyline> 요소는 연결된 직선들의 그룹으로서, 그 직선들의 모든 포인트는 points 속성 하나에 포함된다. 한편, 닫힌 다각형은 그저 첫 포인트와 마지막 포인트 지점을 같은 값으로 설정해주는 것만으로 만들어진다:

                                                    
                                                        
                                                    
                                                

각 포인트는 반드시 (x, y) 좌표를 가져야하며 공백이나 쉼표, 줄바꿈 등으로 서로 구분된다 곧, 포인트 목록 (0, 0), (1, 1)은 0 0 1 1이나 0 0, 1 1로 표기해준다!

미디어 다루기

미디어 삽입 시 보통 오디오 파일에는 <audio>, 비디오 파일에는 <video> 태그를 사용하는데, <source> 태그와 함께 사용하여 여러 미디어 파일을 지정해줌으로써 다양한 브라우저에 대응하도록 해주는 것이 바람직하다!

미디어 삽입하기
아래 코드는 비디오 삽입의 기본 예인데, (위에서 아래로 순차적으로 내려가면서)<video> 태그 안의 어느 한 <source> 태그 및 맨 아래 배치한 대체 텍스트가 실행되면 나머지는 실행되지 않는다
[ 비디오 삽입 기본 사용법 ]
                                        
                                            
                                        
                                    

type= "video/mp4" 정보를 지정하는데, 이 미디어타입 정보는 반드시 넣어주는 것이 좋다!

여타 비디오 옵션들

<video> 요소의 속성에서 controls 옵션은 컨트롤 막대를 표시하는데, 그 모양은 각각의 브라우저별 규격에 따라 서로 다르다

그밖에 autoplay(자동재생), loop(반복재생), muted(음소거) 등이 있는데.. 꼭 필요한 경우가 아니라면; 기본값(자동재생 안함, 반복재생 안함, 음소거 상태)으로 두는 것이 좋다!

나아가, (재생 직전 표시하는)스플래시 화면이나 광고 화면으로 쓸 수 있는 poster= "포스터 이미지", 대용량 파일의 버퍼링 여부를 설정하는 preload= "none/metadata"(기본값인 auto 는 미리 다운로드하며, metadata 는 메타 데이터만 미리 다운로드한다) 속성도 설정해줄 수 있다

<audio> 태그는 widthheight, poster 속성이 없다는 점만 제외하면, <video> 태그와 비슷하게 사용한다 - 그저 controls 속성을 넣어주는 것만으로 충분하다
                                    
                                        
                                    
                                
자막 및 캡션 넣기
html 5)에서는 기본적으로 .srt 자막 파일을 지원하지만 모든 브라우저에서 공통적으로 지원하는 자막 파일은 .vtt인데, 안에 자막 내용과 시간을 담고 있다. 자막 파일(.vtt)을 연결할 때는 태그를 쓰는데, kind 속성에서 subtitles(자막) 및 captions(캡션) 여부를 지정해줄 수 있다
                                    
                                        
                                    
                                

kind 속성의 captions 값은 주로 음향효과 및 기타 관련 오디오 정보가 포함된 스크립트 작성 및 번역에 사용한다!

[ WebVTT 자막 작성하기 ]
                                        
                                            
                                        
                                    
                                        
                                            00:11.000 --> 00:13.000 vertical:rl // 시작시간 --> 종료시간
                                            <v Roger Bingham>We are in New York City

                                            00:13.000 --> 00:16.000
                                            <v Roger Bingham>We're actually at the Lucern Hotel, just down the street

                                            00:16.000 --> 00:18.000
                                            <v Roger Bingham>from the American Museum of Natural History

                                            .. 
                                        
                                    

폼 작성하기

에 입력한 정보는 웹서버로 보내지고, 웹서버에서는 웹프로그램을 통해 폼을 처리한 뒤 그 결과를 받아 다시 브라우저로 돌려주게 된다

입력폼 작성하기
<form> 태그 안에서 <fieldset> 태그는 폼 요소를 하나의 구역으로 묶고 외곽선을 그려주는데, 바로 아래서 <legend> 태그로 제목을 붙여주면 스크린리더기 등에 도움이 된다
상품 크기 선택
                                                    
                                                        
                                                    
                                                

라디오 버튼은 항시 <fieldset> 요소로 묶어주는 것이 좋습니다!

<label>과 <input>를 함께 사용하여 입력 항목을 만들면 화면 낭독기 등을 위해서도 도움이 되고, 라디오 버튼이나 체크박스 등에서 텍스트 터치로 선택이 가능해지며, 나아가 Css로 꾸며줄 수도 있다

                                    
                                        
                                    
                                

<input> 입력필드의 모양은 브라우저마다 각각 차별성이 있고, 그래서 <input>만 아니라 폼 관련 태그들은 대개 스타일시트를 통해 (각 사이트에 맞추어 미리 설정해둔)독자적인 초기값을 사용하게 된다. 또한, input type="타입"에서는 브라우저 차원에서 각 타입 에 따르는 유효성 체크도 함께 이루어진다!

hidden 필드는 주로 (화면상의 폼에는 보이지 않되)폼을 서버로 전송할 때 서버로 함께 전송되는 요소(예컨대, 사용자에게 굳이 보여줄 필요가 없지만 관리자가 알아야 하는 것 - id 중복여부 확인 등의 처리 정보)에 사용된다

텍스트 입력필드 value초기값 으로 보여줄 내용이며, size보여줄 문자 수, minlength/maxlength입력 문자 수의 최소/최대 제한이다

password 필드는 입력하는 내용이 화면에 표시되지 않고 *표 등으로 보여진다는 점만 제외하면 text 타입과 같다 당연지사지만.. password 필드에서 value 속성은 사용할 수 없다!

검색상자 등 정보에 맞게 분화된 텍스트 필드들 multiple 옵션은 복수 입력을 가능하도록 한다

숫자 입력상자/슬라이드 숫자막대: min/max 옵션으로 최소/최대값 을 제한해줄 수 있고, step 옵션으로 값 사이의 간격을 설정해줄 수 있다 브라우저에 따라서 각기 다른 모습으로 표시되기도 한다!

라디오 버튼(하나만 선택 가능), 체크박스(복수 선택 가능) 각 항목들 중 하나에 checked 옵션값을 주어 기본값으로 선택해둘 수도 있고, 함께 묶인 라디오 버튼들의 이름은 반드시 같아야 한다!

색상 선택상자 기본색상 값은 16진수여야 하며 색이름은 사용할 수 없다!

날짜 입력필드

날짜(및 시각) 입력필드 time(23:59), datetime(2019-01-01T23:59), datetime-local(2019-01-01T23:59)

파일 다운로드 대화상자 창을 만드는데, multiple 옵션은 복수 선택을 가능하도록 한다 참고로, 브라우저에서 파일 선택이나 찾아보기 등의 버튼이 표시되는데.. 클릭하여 파일을 선택하면 파일이 첨부된다!

폼 전송버튼/리셋버튼/이미지버튼

단순버튼 자체 기능은 없고, 단지 스크립트로 연결해주는 역할만 수행한다. 하지만, 이보다는 <button> 태그를 쓰는 것이 좋다!

                                                    
                                                        
                                                    
                                                

<button> 태그를 사용하는 경우에는 화면낭독기에 이 곳에 버튼이 있다는 것이 명확히 전달되고, 또한 이 버튼에는 컨텐츠를 포함할 수도 있기에 아이콘을 추가하거나 Css를 이용해 원하는 형태로 꾸미는 것도 가능해진다!

  • autofocus // 해당 필드로 입력 커서를 옮겨줌
  • placeholder= "입력 메시지" // 입력란에 힌트를 표시하고 있다가 그 필드를 클릭하면 내용이 사라지고 입력이 시작된다
  • autocomplete // 입력시 자동완성 기능 사용
  • size= "크기" // 해당 필드의 물리적 크기, 또는 보여줄 글자수 지정
  • readonly // 읽기 전용 필드로 지정
  • required // 필수 입력 필드로 지정
  • disabled // 입력 필드로의 진입을 불가하게 한다 textarea 필드에 약관 등을 넣어 읽기만 하도록 할 때 등..
텍스트 입력영역
<textarea>는 (게시판에서 게시물을 입력하거나 회원가입 양식에서 사용자 약관을 표시하는 등의)텍스트 입력 영역을 만드는데, 옵션으로 지정한 글자수라인수 보다 더 커지면 스크롤 막대가 생겨난다
                                    
                                        
                                    
                                

이 영역 안은 <pre> .. </pre>에서와 같은 방식으로 작동된다!

드롭다운 목록
<select>(목록 범위) 및 <option>(목록 항목들)은 드롭다운 목록을 만드는데, <option> 항목들은 <optgroup label="그룹명"> .. </optgroup> 식으로 서로 다른 그룹별로 묶어줄 수도 있다
                                    
                                        
                                    
                                

multiple 옵션값은 [Ctrl] 키와의 조합으로 복수 선택이 가능하도록 한다!

상태표시바 작성하기
<progress>는 작업의 현재 진척 상황을 보여주는 색상 막대를, <meter>는 전체에서 차지하는 비중을 나타내는 색상 막대를 만든다
                                    
                                        
                                    
                                

참고로, 자바스크립트를 이용하면 움직이는 진행 상황을 나타낼 수 있는데.. 관련 플러그인을 쓰면 멋진 모양의 스타일리시한 막대바들을 쉽게 만들 수 있습니다!


html에서의 Form은 이 정도만 알아도 됩니다. 다 다루자면 열배 정도의 분량은 더 필요하지먄; 실제로는 대개 부트스트랩을 쓰거나, 폼 관련 라이브러리를 가져다 쓰는 것이 일반적입니다 html Table 또한 마찬가지입니다

테이블 작성하기

행/열 로 구성된 데이터 집합으로서 표 형식의 데이터인데, 열/행이라는 형식 면에서는 Microsoft Excel을 생각하시면 됩니다 - 모양 면에서는, Word나 Hwp에서 '표 작성'하는 것과 같군요..

표 작성의 기본
<table> 태그 안에서 <tr> 태그로 각 을 만들고, <th>(제목 셀: 셀 중앙에 굵게 표시된다) 및 <td> 태그(<tbody> 영역)로 을 만들어 그 안에 내용을 넣어준다. 나아가, <table> 태그 안에서 <thead>, <tbody>, <tfoot>로 테이블을 구성하면 화면 낭독기 등에 표의 구조를 알려줄 수 있으며, Css를 써서 서로 다른 스타일을 적용시키거나 스크립트를 써서 본문 부분만 스크롤되도록 하는 등의 활용이 가능해진다!
1. <td>나 <th> 태그(가로 행) 안에서는 colspan= "개수" 속성으로 열 방향으로, rowspan= "개수" 속성으로 행 방향으로 열 및 행을 합쳐줄 수 있다 제목이 길어 축약이 필요하다면; 제목 행인 <th> 태그에서 abbr 속성을 사용하면 된다!
2. <colgroup>(과 <col>) 태그(세로 열)는 열 스타일을 정의하는데, <caption> 태그 뒤, <tr> 및 <td> 태그 전에 사용되어 <col> 태그를 넣은 순서대로 한 열에 있는 모든 셀에 같은 스타일을 적용하는데, 하나의 <col>만 넣으면 첫번째 열에만 적용되며, <col> 태그의 span 속성을 이용해 둘 이상의 열을 함께 묶어줄 수도 있다 단, <thead>와 <tfoot>는 제외한 <tbody>에만 적용된다!
3. 표에 제목을 달아주려면; <table> 태그 시작 부분에 작성해주면 되고, <figure> 태그로 <table> 태그를 둘러싼 뒤 <figcaption> 태그로 <table> 태그의 바깥쪽 바로 위나 밑에 표 설명을 배치해줄 수도 있다
표 제목: <caption>은 table 태그 시작 부분에 넣어준다
thead: th 1 thead: th 2 thead: th 3 thead: th 4
tbody 1행 td 2->행 방향으로 합침: rowspan=2 td 3 td 4
tbody 2행 td 3->열 방향으로 합침: colspan=2
tbody 3행 td 2 td 3 td 4
tfoot: th 1 tfoot: th 2 tfoot: th 3 tfoot: th 4
* 표 설명: <figcaption>은 <figure> 태그 안에서 맨 위나 맨 밑에 붙여줄 수 있다
                                                    
                                                        
                                                    
                                                

위 코드에서 <thead>나 <tfoot> 내부 <th scope="row/col"> .. </th> 부분은 이 th가 행의 제목(row)인지, 열의 제목(col)인지를 스크린리더기 등에 알려주는 역할을 합니다

                                                    
                                                        table, th, td {
                                                            padding: 15px;
                                                            border: 1px solid #000000; border-collapse: collapse;
                                                        } th, td { width: 120px; }

                                                        thead, tfoot { background: #eeeeee; }
                                                    
                                                

부트스트랩의 Css를 사용하는 경우; html 기본 표 스타일과 그 모양 및 형태에서 많은 부분 다르니 참고하십시오 - 부트스트랩에서는 부트스트랩 자체 규격으로 표 스타일을 재정의해서 사용하는 때문입니다(이 테이블 또한 그렇습니다!)

테이블에서 셀의 너비나 높이는 표의 크기 및 셀 안의 내용에 맞추어 자동 설정된다. 하지만, Css의 width, height, padding 속성을 써서 셀의 너비와 높이, 여백을 수동으로 지정해줄 수도 있다

  • caption-side: top/bottom; // 캡션의 배치위치 - 캡션은 <table> 바로 아래서 쓰여 표 위(top)나 아래(bottom) 중앙에 표 제목을 달아준다 캡션은 접근성을 위해 달아주는 것이 좋지만, 외관상 문제가 된다면; Css를 써서 보이지않게 해줄 수도 있다!
  • border-collapse: separate/collapse; // Css로 표의 테두리를 표시하는 경우 표 테두리와 셀 테두리를 각각 지정하게 되는데, 이 때 collapse 값을 넣어서 표와 셀의 테두리간 겹치는 부분을 하나로 합쳐줄 수 있다
  • border-spacing: 수평거리[ 수직거리]; // 테이블 테두리와 셀 테두리가 분리되어 있는 경우; 인접한 셀 테두리간 거리를 지정한다 수평/수직 같은 값으로 하나만 주거나 수평거리 수직거리 각각 줄 수도 있다
  • empty-cells: show/hide; // 빈 셀의 테두리를 그리지 않고 비워줄 때 사용한다
  • text-align: left/center/right; // 셀 안에서 내용물의 수평 정렬을 지정한다
  • vertical-align: top/middle/bottom/baseline; // 셀 안에서 내용물의 수직 정렬을 지정한다 baseline은 셀의 기준선에 내용의 기준선을 맞춘다
  • table-layout: fixed; // 셀의 너비를 고정한다

Anchor-JS

플러그인은 기존 페이지 컨텐츠에 깊은 앵커 링크를 추가한다

깊은 앵커링크
Anchor-JS 플러그인을 사용하기 위해서는; 먼저, CDN 링크 및 초기화 작업이 필요한데, Anchor-JS는 딥 링크하려는 요소를 타겟팅하기 위해 Css 선택자를 사용하는 복수의 메서드 또한 제공한다:
[ AnchorJS CDN 링크 및 초기화 ]
                                        
                                            <script src="https://cdn.jsdelivr.net/npm/anchor-js/anchor.min.js"></script>

                                            <script>
                                                /* 1. 달리 타겟팅을 설정하지 않는 기본 초기화 설정 */
                                                anchors.add(); // 'h2, h3, h4, h5, h6'의 기본 선택자로 대체된다

                                                /* 2. 혹은, 딥 링크하려는 요소를 타겟팅하기 위해 아래와 같은 방식으로 사용할 수도 있다 */
                                                anchors.add('h1'); // 페이지의 모든 h1 요소에 앵커 추가
                                                anchors.add('.anchored'); // .anchored 클래스가 할당된 요소에 앵커 추가
                                            </script>
                                        
                                    

기본 앵커 문자(§)는 언제든 아래와 같은 옵션을 추가하여 다른 유니코드 문자로 변경해줄 수 있다:

                                    
                                        
                                    
                                
                                    
                                        var anchors= new AnchorJS() // 앵커의 인스턴스 생성
                                        anchors.options= {
                                            icon: '⇅', // AnchorJS 기본 앵커 문자 변경
                                        }
                                        anchors.add('[data-anchor]') // data-anchor 속성이 주어진 요소에 앵커를 추가한다
                                    
                                

여기 커서를 올리면; 바로 아래에, 위에서 변경해준 앵커 문자가 나타납니다. 나타난 앵커 문자에 클릭도 해보세요..

딥 앵커 옵션 설정
1. Deep Anchor는 각각의 옵션을 통해 앵커 표시 위치를 변경해주거나, 언제 앵커를 보일 것인지 등을 설정해줄 수 있다. 또는, anchors.options= { .. }로 한번에 설정해줄 수도 있다:
[ Anchor-JS 옵션 설정 ]
                                        
                                            anchors.options.placement= 'left' // 앵커를 앞쪽에 배치한다 ← 기본값: right
                                            anchors.options.visible= 'always' // 앵커를 항상 보인다 ← 기본값: hover 시
                                        
                                    
                                        
                                            var anchors= new AnchorJS()
                                            anchors.options= { /* 모든 옵션들을 한번에 지정한다 */
                                                icon: '⇅',
                                                titleText: '위로 이동..', /* 옵션을 추가할 때는 ,로 구분해주어야 한다! */
                                            };
                                            anchors.add('article > dl') // article 바로 아래 모든 dl 요소

                                            anchors.options= { // 앵커 추가
                                                visible: 'always', icon: '#'
                                            };
                                            anchors.add('article > dl > dt') // article 바로 아래 모든 dl의 바로 밑 단계 dt 요소
                                        
                                    

위 코드는 이 웹문서 전체에 적용된 딥 앵커 설정입니다. 확인해보세요..

2. 고정 내비게이션바가 있는 페이지에서는 연결하려는 제목을 가릴 수 있는데, 이를 방지하기 위해 Css의 :: 선택자를 써서 약간의 사용자 지정 스타일을 지정하여 대상 제목에 여백을 추가해줄 수 있다:
                                    
                                        /* 1. 의사 요소를 만들어 고정 내비게이션 바의 높이로 만들어줌으로써 링크 위의 위치로 점프하도록해준다 */
                                        :target::before {
                                            content: "";
                                            display: block; height: 80px; width: 1px;
                                            margin-top: -80px;
                                        }

                                        /* 2. 또는, 아래처럼 새로운 scroll-margin-top 속성을 사용할 수도 있다
                                        - 단, 브라우저에 따라서는, 이 방식을 지원하지 않을 수도 있다! */
                                        :target { scroll-margin-top: 80px; }
                                    
                                

* cf) AnchorJS에는 (점프 탐색 등)탐색을 동적으로 생성하는 메서드가 포함되어 있지 않다. 그럼에도, AnchorJS는 모든 앵커 요소목록(anchors.elements)을 노출하며, 이러한 방식으로 외부 코드는 요소를 조회하고 이를 사용하여 탐색을 생성할 수 있게 된다. 또한, 미리 정의된 ID를 가진 정적 내비게이션과 함께 AnchorJS를 사용할 수도 있다. 어떤 경우에는, heading 요소 대신 기존의 섹션 ID에 연결할 수도 있는데, AnchorJS에 data-anchor-id= 속성을 사용하여 이 작업을 수행하도록 지시할 수 있다:

                                    
                                        
                                    
                                
                                    
                                        <script>
                                            anchors.add('h3');
                                        </script>
                                    
                                

Flatpickr

는 가볍고 강력한 순수 자바스크립트 날짜/시간 피커이다

날짜/시간 피커: Flatpickr
Flatpickr를 사용하기 위해서는; 먼저, Css 링크 및 스크립트 소스를 불러와야 한다. 이어서, 스크립트 초기화 작업 또한 필요하다:
[ Flatpickr CDN 링크 및 스크립트 소스 ]
                                        
                                            <link href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css" rel="stylesheet">

                                            <script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>
                                        
                                    
                                    
                                        
                                    
                                
                                    
                                        /* 기본 플랫피커 초기화 */
                                        const fp= flatpickr("#FlatpickrInput", {}); // flatpickr
                                    
                                
                                    
                                        
                                    
                                
                                    
                                        /* 시간 피커 옵션 설정 */
                                        const fp1= flatpickr("#FlatpickrInput1", {
                                            enableTime: true, noCalendar: true, dateFormat: "H:i"
                                        });
                                    
                                
                                    
                                        
                                    
                                
                                    
                                        /* 날짜 & 시간 피커 옵션 설정 */
                                        const fp2= document.querySelector(".myFlatpickrs");
                                        const fp3= flatpickr(fp2, {
                                            enableTime: true, dateFormat: "Y-m-d H:i"
                                        });
                                    
                                

여기서는 간단한 기본 예만 들었지만.. 그밖에 다양한 고급 사용법들은 공식 사이트로 가서 살펴보십시오..

DropZone 업로더

는 웹사이트에서 드롭된 파일을 쉽게 처리할 수 있도록 해주는 순수 자바스크립트 라이브러리이다

드롭죤 업로더
1. 드롭죤 업로더 플러그인을 사용하려면; 먼저 Dropzone Css 및 스크립트를 CDN으로 링크한 뒤 스크립트를 초기화해주어야 한다:
[ Dropzone Css 및 스크립트 CDN 링크 ]
                                        
                                            <link href="https://unpkg.com/dropzone@6.0.0-beta.1/dist/dropzone.css" rel="stylesheet" type="text/css" />

                                            <script src="https://unpkg.com/dropzone@6.0.0-beta.1/dist/dropzone-min.js"></script>
                                        
                                    
2. 이어서 사용할 form 요소를 만들어주면; Dropzone은 .dropzone 클래스가 있는 모든 양식요소를 찾아 자동으로 첨부하고 드롭한 파일을 지정된 속성에 업로드한다:
                                    
                                        
                                    
                                

* cf) 다음과 같이, Dropzone에 옵션을 추가해줄 수도 있다

                                    
                                        <form action="/target" class="dropzone" id="my-dropzone"></form>

                                        <script>
                                            Dropzone.options.myDropzone= { // id명은 camelCase 방식으로 작성해주어야 한다!
                                                // 설정하려는 옵션들..
                                            }
                                        </script>
                                    
                                

스크립트에서는 html에서의 id명(id= "my-dropzone")을 (-이 있다면; 제거하고)camelCase 방식으로 변경해주어야 한다!

Quill Editor

는 최신 웹용으로 제작된 무료 오픈 소스 WYSIWYG 텍스트 편집기로서, 모듈식 아키텍처와 표현력 있는 API를 통해 모든 요구 사항에 맞게 완벽하게 사용자 지정할 수 있다!

퀼 에디터
1. 퀼 에디터를 사용하려면; 먼저 Quill Css 및 스크립트를 CDN으로 링크하고 스크립트를 초기화해주어야 한다:
[ Quill Editor CDN 링크 및 스크립트 초기화 ]
                                        
                                            <link href="https://cdn.jsdelivr.net/npm/quill@2.0.3/dist/quill.snow.css" rel="stylesheet" />

                                            <script src="https://cdn.jsdelivr.net/npm/quill@2.0.3/dist/quill.js"></script>
                                            <script>
                                                const quille= new Quill('#editor', {
                                                    theme: 'snow' // 'snow' 테마로 초기화 ← 부동 도구모음 테마인 'bubble'도 있음
                                                });
                                            </script>
                                        
                                    
2. 다음, 퀼 에디터용 컨테이너만 만들어주면 된다:
                                    
                                        <div id="editor">
                                            마음껏 적어보세요.. 끝입니다, 간단하지요?
                                        </div>
                                    
                                
마음껏 적어보세요.. 끝입니다, 간단하지요? 하지만, 실제로는.. Quill 에디터는 이보다 훨씬 더 풍부하고 방대하니.. 관련 상세 내용들은 Quill-js 공식사이트로 가서 살펴보십시오..

플로팅 오브젝트

사용자정의 Css 플로팅 오브젝트

플로팅 오브젝트
플로팅 오브젝트는 미묘하게 떠다니는 물체를 페이지에 추가하는데, 컨테이너와 개체 수를 정의하고 내부에 적절한 개수의 빈 <span> 태그만 추가하면 그 이후는 자동으로 작동한다 - 크기와 불투명도, 방향 및 스피드 등은 랜덤이다!
                                    
                                        
                                    
                                
                                    
                                        .floating-objects {
                                            position: absolute; top: 0; left: -20px; right: 0;
                                            width: calc(100% + 20px); height: 100%;
                                            overflow: hidden;
                                        } .floating-objects span {
                                            position: absolute;
                                            display: block; width: 20px; height: 20px;
                                            background-color: #232323;
                                        }
                                    
                                

이 페이지의 맨 위 헤더에서 떠다니고 있는 넘들입니다.. 기본 형태는 사각형이지만 클래스나 사용자 정의 스타일을 써서 쉽게 변경할 수 있습니다!

Loaders.css

플러그인은 웹페이지 로딩 시, 움직이는 짧고 작은 애니메이션을 보여주는 순수 Css 로딩 애니메이션이다 프리로더 예 1 , 프리로더 예 2 ,

프리로더 애니메이션
먼저, loaders.css 소스 링크를 필요로 하며, 이어서 <body> 바로 다음에 컨테이너 요소를 만들어 애니메이션 종류를 지정해준다. 다음, 컨테이너 요소 안에 필요한만큼 적절한 수의 빈 <div> 블록을 만들어주면 된다 그 개수에 따라 모양 및 움직임이 미세하게 달라진다! Css 로딩 애니메이션
[ loaders.css 사용하기 ]
                                        
                                            
                                        
                                    

<body> 태그 바로 뒤에 프리로더 컴포넌트를 추가하여 프리로더를 활성화하는데, 애니메이션이나 카운트다운 등 다른 모든 구성요소는 프리로더가 멈춘 이후 작동을 시작하게 된다!

[ 사용자정의 옵션 설정하기 ]
                                        
                                            /* 로더 크기 변경하기: 트랜스폼 Scale 추가 */
                                            .loader-inner {
                                                transform: scale(0.5, 0.5);
                                            }

                                            /* 텍스트색 및 배경색 변경하기: 자식 div 요소에 스타일 추가 */
                                            .ball-pulse > div {
                                                color: #fff; background: #516643;
                                            }
                                        
                                    

타이핑 텍스트

플러그인은

타이핑 텍스트
Typed.js 플러그인을 사용하려면; 먼저, CDN 링크가 필요하고, 타이핑칠 내용은 <span data-typed-text= "['내용 1', '내용 2', ..]"></span> 식으로 넣어주면 된다
                                    
                                        <!-- Typed.js 스크립트 CDN 링크 -->
                                        <script src="https://unpkg.com/typed.js@3.0.0/dist/typed.umd.js"></script>
                                    
                                
                                    
                                        
                                    
                                
1. 웹페이지 안에 직접 내용을 배치하는 방식과는 달리, 곧바로 스크립트에서 문자열 형태로 넣어줄 수도 있다:

남산은 서라벌의 진산(鎭山)이다: 북의 금오봉(金鰲峰, 468m)과 남의 고위봉(高位峰, 494m)을 중심으로 동서 너비 4km, 남북 길이 10km의 타원형으로, 한 마리의 거북이 서라벌 깊숙이 들어와 엎드린 형상이다. 골은 깊고 능선은 변화무쌍하여 기암괴석이 만물상을 이루었으니 작으면서도 큰 산이다..

                                    
                                        
                                    
                                
                                    
                                        <script>
                                            var typed= new Typed('#namsan_typing', {
                                                stringsElement: '#typed-strings', typeSpeed: 150,
                                            });
                                        </script>
                                    
                                
2. 문자열의 배열 형태로 넣어줄 수도 있다:

                                    
                                        <span id="array_element"></span>
                                    
                                
                                    
                                        var typed2= new Typed('#array_element', {
                                            strings: ['첫번째 문장입니다.. ^10000', '두번째 문장입니다..', '세번째 문장입니다..'], typeSpeed: 150,
                                        });
                                    
                                

위 코드에서 '첫번째 문장 ^10000'10000ms(= 10초)간 일시 중지한 뒤 다음으로 지나가도록 설정해준 것이다!

3. data-typed로 컴포넌트를 초기화하고, data-options=".."로 문자열을 정의하여 기본 설정값을 사용하거나 재정의할 수도 있다:
                                    
                                        
                                    
                                

기본 설정된 초기값은 다음과 같다: "startDelay":1000, "typeSpeed":100, "backSpeed":50, "backDelay":1000, "loop":true


* cf) Css 애니메이션은 Javascript에서 초기화할 때 빌드된다. 그러나 다음과 같이 사용자 정의해줄 수도 있다:

                                    
                                        /* Cursor */
                                        .typed-cursor { .. }

                                        /* If fade out option is set */
                                        .typed-fade-out { .. }
                                    
                                

카운트 업/다운

순수 Javascript 라이브러인 는 카운트업 애니메이션을 신속히 만들 수 있도록 해준다

카운트 Up
Count Up 플러그인을 사용하기 위해서는 먼저, 스크립트 소스를 필요로 하며, data-countup= 속성을 가진 요소가 뷰포트에 보여진 이후 카운팅을 시작한다
[ CountUp.js 스크립트 소스 ]
                                        
                                            <script src="vendors/countup/countUp.umd.js"></script>                                    
                                        
                                    

0

                                    
                                        
                                    
                                
                                    
                                        var countupInit = function countupInit() {
                                            if (window.countUp) {
                                                var countups = document.querySelectorAll('[data-countup]');
                                                countups.forEach(function (node) {
                                                    var _utils$getData = utils.getData(node, 'countup'),
                                                        endValue = _utils$getData.endValue,
                                                        options = _objectWithoutProperties(_utils$getData, _excluded);
                                            
                                                    var playCountUpTriggerd = false;
                                            
                                                    var countUP = function countUP() {
                                                        if (utils.isElementIntoView(node) && !playCountUpTriggerd) {
                                                            var countUp = new window.countUp.CountUp(node, endValue, _objectSpread({
                                                                duration: 3,
                                                                useEasing: false
                                                            }, options));
                                                
                                                            if (!countUp.error) {
                                                                countUp.start();
                                                            } else {
                                                                console.error(countUp.error);
                                                            }
                                                
                                                            playCountUpTriggerd = true;
                                                        }
                                                    };
                                            
                                                    countUP();
                                                        window.addEventListener('scroll', function () {
                                                        return countUP();
                                                    });
                                                });
                                            }
                                        };                                                          
                                    
                                
카운트 Down
아래 사용자정의 Count Down 스크립트는 data-countdown= 속성을 가진 요소가 뷰포트에 보여진 이후, 현재로부터 남은 시간을 카운팅한다

                                    
                                        
                                    
                                
                                    
                                        
                                    
                                

카운트 다운

사용자정의 Css 스타일 countdown 스크립트

카운트 다운
아래 Css 사용자정의 카운트 다운 스크립트는 data-countdown= 속성을 가진 요소가 뷰포트에 보여진 이후, 현재로부터 남은 시간을 카운팅한다:

                                    
                                        
                                    
                                
                                    
                                        
                                    
                                

Disqus 댓글게시판

를 이용하면 쉽게 자신의 웹사이트에 게시판을 달아줄 수 있는데, Disqus 게시판을 등록하기 전에.. 먼저 Disqus 도움말 문서를 찬찬히 살펴보시기를 권합니다.. 작은 웹사이트라면; 게시판에 Disqus 광고가 포함되고, 게시판을 편집할 수도 없지만.. 그래도 돈(현재 월 20달러 ㅡㅡ;)은 안드는 [Free Version]을 선택하시면 됩니다

웹사이트에 Disqus 게시판 달기
자신의 웹사이트에 Disqus 게시판을 삽입하려면; 먼저, Disqus에 접속하여 몇 단계의 질문들에 답하면서(메일주소와 비밀번호, 웹사이트 주소가 필요함) 웹사이트 등록 및 사용자 프로필 설정을 마칩니다 Website Name: 부분에는 '숏네임'(= Disqus에서의 포럼)을 넣어주어야 하는데, 이는 Disqus에서의 자기 게시판 ID라고 보면 됩니다

* cf) 숏네임 shortname 은 Disqus 사이트에 할당된 고유 식별자로서, 사이트에 게시된 모든 댓글은 이 이름으로 참조된다 - 숏네임은 Disqus에 자신의 사이트 댓글과 Disqus 관리자에서 지정한 설정만 불러오도록 지시하는데, Disqus에서 댓글을 관리하려면 자신의 웹사이트를 등록하고 등록한 숏네임을 사용하여 웹사이트에 Disqus를 설치해야 한다

1. 제대로 진행되면.. 웹사이트 설정 단계로 들어가서 자신의 플랫폼을 선택해줍니다: 워드프레스 등의 특정 플랫폼으로 구축한 사이트라면; 해당 플랫폼을 선택해주면 되고, (이 [소소한 이야기] 사이트처럼)html만으로 직접 만든 웹사이트라면; 맨 아래 있는 Universal Code 를 선택하시면 됩니다
2. 다음, 자신의 웹문서에서 게시판을 넣어줄 위치에 아래 코드를 넣어줍니다: 아래 스크립트 코드에서 ShortName 에는 위 단계에서 넣어준 Website Name: 이름을 넣어주면 되는데, Disqus에서의 자기 게시판 ID라고 보면 됩니다
[ Disqus 게시판 스크립트 코드 ]
                                        
                                            <div id="disqus_thread"></div>

                                            <script>
                                                (function() { // 이 스크립트는 수정할 수 없습니다!
                                                    var d= document, s= d.createElement('script');

                                                    // 'ShortName'에는 자신의 숏네임을 넣어주십시오!
                                                    s.src= 'https://ShortName.disqus.com/embed.js';
                                                    s.setAttribute('data-timestamp', +new Date());
                                                    (d.head || d.body).appendChild(s);
                                                }) ();
                                            </script>

                                            <noscript>
                                                Please enable JavaScript to view the
                                                <a href="https://disqus.com/?ref_noscript" rel="nofollow">
                                                    comments powered by Disqus.
                                                </a>
                                            </noscript>
                                        
                                    

Disqus 환경변수 disqus_config() { .. } 함수 내에 추가되며, 숏네임은 예외로 하단에 추가된다:

                                                
                                                    /* ---
                                                        권장 환경변수: 아래 섹션을 편집하고 댓글을 삭제하여 플랫폼이나 CMS의 동적 값을 삽입하세요
                                                    */
                                                    var disqus_config= function () {
                                                        this.page.url= '현재 페이지의 URL ← 절대 URL';
                                                        this.page.identifier= '현재 페이지의 식별자 ← 문자열 또는 숫자';
                                                        this.page.title= '현재 페이지의 제목';
                                                    };

                                                    (function() { // 이 스크립트는 수정할 수 없습니다!
                                                        var d= document, s= d.createElement('script');

                                                        s.src= 'https://ShortName.disqus.com/embed.js'; // 'ShortName'에는 자신의 숏네임을 넣어주십시오!
                                                        s.setAttribute('data-timestamp', +new Date());
                                                        (d.head || d.body).appendChild(s);
                                                    }) ();
                                                
                                            

Plugin Etc..

여타 플러그인 라이브러리들

여타 플러그인 라이브러리들
플러그인은 이미지가 로드되었는 지를 감지하는데, 아래 스크립트 CDN 링크를 포함시켜주어야 한다:
                                    
                                        <script src="https://unpkg.com/imagesloaded@5/imagesloaded.pkgd.min.js"></script>
                                    
                                
마이크로 체크 플러그인은 types, regexps, presence, time 등을 확인한다:
                                    
                                        <script src="vendors/is/is.min.js"></script>
                                    
                                
플러그인은 모듈성, 성능 및 추가 기능을 제공하는 최신 JavaScript 라이브러리로서, 배열과 객체, 문자열, 숫자 등으로 작업할 때의 번거로움을 덜어주어 JavaScript를 더 쉽게 작성할 수 있다:
                                    
                                        <script src="vendors/lodash/lodash.min.js"></script>
                                        
                                        <script src="https://cdn.jsdelivr.net/npm/lodash@4.18.1/lodash.min.js"></script>
                                    
                                
➥ Css 3) 플로팅 오브젝트

플로팅 오브젝트는 미묘하게 떠다니는 물체를 페이지에 추가하는데, 컨테이너와 개체 수를 정의하고 내부에 적절한 개수의 빈 <span> 태그만 추가하면 그 이후는 자동으로 작동한다 - 크기와 불투명도, 방향 및 스피드 등은 랜덤이다!

[ 플로팅 오브젝트 ]
                                        
                                            
                                        
                                    
                                        
                                            .floating-objects {
                                                position: absolute; top: 0; left: -20px; right: 0;
                                                width: calc(100% + 20px); height: 100%;
                                                overflow: hidden;
                                            } .floating-objects span {
                                                position: absolute;
                                                display: block; width: 20px; height: 20px;
                                                background-color: #232323;
                                            }
                                        
                                    

이 페이지의 맨 위 헤더에서 떠다니고 있는 넘들입니다.. 기본 형태는 사각형이지만 클래스나 사용자 정의 스타일을 써서 쉽게 변경할 수 있습니다!

wave