Plug-ins

여기서는 웹사이트 구축에 꼭 필요한 오픈소스 플러그인들 몇가지 간략히 소개합니다

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

특정 플러그인을 사용하려면; 해당 플러그인에서 요구하는 방식대로 CDN으로 링크해주거나, 또는 소스 파일을 다운받아 가칭 /plugins 폴더에 넣어주고 스크립트로 연결해주면; 이제 이 플러그인의 모든 기능을 html 문서에서 불러올 수 있다!

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>
                                        
                                    

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

[ Anchor-JS 옵션 변경 ]
                                        
                                            
                                        
                                    
                                        
                                            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; }
                                    
                                
3. 블로그의 최근 게시물 페이지, 또는 지정된 태그가 있는 모든 게시물의 페이지와 같이 컨텐츠가 변경된 페이지가 있는 것이 일반적이고.. 그러한 페이지에 앵커를 추가하면 컨텐츠가 해당 페이지를 떠날 때 링크가 끊어질수 있으므로 문제가 될 수 있다. 이를 방지하려면; 해당 앵커가 항상 게시물의 영구 링크 URL을 가리키도록 하는 base 옵션을 사용할 수 있다:
                                    
                                        // Note: you can often get the permalink url from your site's backend
                                        anchors.options.base= "/2019/1/03/my-post";
                                        anchors.add();

                                        // Anchor url before: "#conclusion"
                                        // Anchor url after: "/2019/1/03/my-post#conclusion"
                                    
                                
4. AnchorJS에는 (점프 탐색 등)탐색을 동적으로 생성하는 메서드가 포함되어 있지 않다. 그럼에도, AnchorJS는 모든 앵커 요소목록(anchors.elements)을 노출하며, 이러한 방식으로 외부 코드는 요소를 조회하고 이를 사용하여 탐색을 생성할 수 있게 된다. 또한, 미리 정의된 ID를 가진 정적 내비게이션과 함께 AnchorJS를 사용할 수도 있다. 어떤 경우에는, heading 요소 대신 기존의 섹션 ID에 연결할 수도 있는데, AnchorJS에 data-anchor-id= 속성을 사용하여 이 작업을 수행하도록 지시할 수 있다:
                                    
                                        
                                    
                                
                                    
                                        <script>
                                            anchors.add('h3');
                                        </script>
                                    
                                
5. 한 페이지에 각각 고유한 디자인이 있는 여러 앵커 세트를 가질 수도 있는데, 단지 AnchorJS 객체의 고유한 인스턴스를 만들기만 하면 된다. 또는, 원하는 옵션으로 인스턴스를 사전 설정할 수도 있다:
                                    
                                        var sidebarAnchors= new AnchorJS();
                                        anchors.add('.main h2'); // The default instance.
                                        sidebarAnchors.add('.sidebar h2'); // The new instance.
                                    
                                
                                    
                                        var sidebarAnchors= new AnchorJS({
                                            placement: 'left', icon: '¶'
                                        });
                                        sidebarAnchors.add('.sidebar h2');
                                    
                                

AOS Animation

을 쓰면; 웹문서의 어느 곳에서든 스크롤 애니메이션을 적용할 수 있다!

AOS 시작하기
AOS Animation을 사용하기 위해서는; 먼저, Css 및 스크립트 CDN 링크와 초기화가 필요하다. 이어서, data-aos= "애니메이션 종류"로 원하는 애니메이션을 지정하고, data-aos-delay= "대기시간"(시작 전 대기 시간), data-aos-duration= "지속시간"(시작 이후 지속 시간: 0 ~ 3000 밀리초, 단계는 50) 등.. 여타 속성들을 추가해줄 수 있다:
[ A-os CDN 링크, 스크립트 소스 및 초기화 ]
                                        
                                            <!-- Aos Css CDN 링크 -->
                                            <link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet">

                                            <!-- Aos 스크립트 링크 및 초기화 -->
                                            <script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
                                            <script>
                                                AOS.init(); // Aos 초기화
                                            </script>
                                        
                                    

                                    
                                        
                                    
                                

data-aos-easing= "Easing 종류" // 기본값: ease

                                    
                                        
                                    
                                

data-aos-offset= "오프셋 거리" // 원래 트리거 지점으로부터의 거리(단위: px)

                                    
                                        
                                    
                                

data-aos= "flip-left/right"

                                    
                                        
                                    
                                

data-aos= "flip-up/down"

                                    
                                        
                                    
                                

data-aos= "zoom-in/out"

                                    
                                        
                                    
                                

data-aos= "slide-left/right"

                                    
                                        
                                    
                                

data-aos= "slide-up/down"

                                    
                                        
                                    
                                

Parallax 스크롤

플러그인은 배경 이미지, 비디오 및 인라인 요소에 대해 부드러운 시차 스크롤링 효과를 준다!

부드러운 시차 스크롤링
패럴랙스 스크롤을 사용하기 위해서는 먼저 CDN 링크 및 초기화를 필요로 한다:
[ Parallax Css 및 스크립트 CDN 링크 ]
                                        
                                            <head>
                                                <!-- Parallax Css 링크 -->
                                                <link href="https://cdn.jsdelivr.net/npm/jarallax@2.2.1/dist/jarallax.min.css" rel="stylesheet">
                                            </head>

                                            <body>
                                                ..

                                                <!-- Parallax 스크립트 및 초기화 -->
                                                <script src="vendors/rellax/rellax.min.js"></script>
                                                <script>
                                                    var rellaxInit= function rellaxInit() { // 패럴랙스 초기화
                                                        return window.Rellax && new window.Rellax('[data-parallax]', {})
                                                    }
                                                </script>
                                            </body>
                                        
                                    

스트립트 초기화는 스크립트 정의를 통한 방식과 html에서 data- 속성을 이용하는 방식이 있다:

[ 스트립트 초기화 ]
                                        
                                            /* 1. 스크립트 정의를 통한 초기화 */
                                            jarallax(document.querySelectorAll('.jarallax'), {
                                                speed: 0.2,
                                            }
                                        
                                    
                                        
                                            
                                        
                                    
[ html 코드 작성 예: Background Image Parallax ]
                                        
                                            
                                        
                                    
스크롤링 옵션 설정
1. data-rellax-speed(양수 및 음수 가능) 속성을 사용하여 .rellax 요소의 속도를 기본값(-2)이 아닌 다른 값으로 설정해줄 수 있다:
                                    
                                        
                                    
                                
2. 시차 요소를 중앙에 배치하는 센터링을 구현하는데는 전역 옵션이나 특정 요소에서 설정해줄 수 있다:
                                    
                                        
                                    
                                
3. 수평 패럴렉스는 기본적으로 비활성화되어 있지만, horizontal: true 값을 전달하여 활성화할 수 있다 이 기능은 파노라마 스타일의 웹사이트에서 사용하기 적당한데, 수직 스크롤링과 동시에 작동하므로 이를 원하지 않는다면; vertical: false 값도 함께 전달해주면 된다!
                                    
                                        var rellax= new Rellax('.rellax', {
                                            horizontal: true; vertical: false
                                        });
                                    
                                
4. 기본적으로 패럴랙스 요소의 위치는 <body>의 스크롤 지점을 통해 결정되는데, 래퍼에 설정 블록의 속성을 전달하여 Rellax가 대신 해당 요소를 감시하도록 할 수 있다:
                                    
                                        //Set wrapper to .custom-element instead of the body
                                        var rellax= new Rellax('.rellax', {
                                            wrapper: '.custom-element'
                                        });
                                    
                                
패럴랙스 백그라운드
패럴랙스 백그라운드는 부모(또는, 형제) 요소에서 data-parallax 속성과 .bg-holder 클래스를 사용하는데, html 5 비디오나 유튜브 비디오 배경 또한 같은 방식으로 사용할 수 있다:

패럴랙스 백그라운드 이미지

                                                    
                                                        
                                                    
                                                
                                                    
                                                        .bg-holder {
                                                            position: absolute; top: 0; left: 0; width: 100%; min-height: 100%;
                                                            background-size: cover; background-position: center; background-repeat: no-repeat;
                                                            overflow: hidden;
                                                            z-index: 0;
                                                        } .bg-holder .bg-video {
                                                            display: block;
                                                            position: absolute; top: 0; left: 0; height: 100%; min-width: 100%;
                                                            object-fit: cover;
                                                            z-index: -1;
                                                        } .bg-holder .bg-youtube {
                                                            position: absolute !important;
                                                            top: 0; left: 0; height: 100%; width: 100%;
                                                        }
                                                    
                                                

Parallax Video Background

                                                    
                                                        
                                                    
                                                

Loaders.css

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

프리로더 애니메이션
먼저, loaders.css 소스 링크를 필요로 하며, 이어서 <body> 바로 다음에 컨테이너 요소를 만들어 애니메이션 종류를 지정해준다. 다음, 컨테이너 요소 안에 필요한만큼 적절한 수의 빈 <div> 블록을 만들어주면 된다:
[ loaders.css 사용하기 ]
                                        
                                            
                                        
                                    

빈 <div>는 필요한 만큼 적절한 개수로 넣어주면 된다 그 개수에 따라 모양 및 움직임이 미세하게 달라진다!

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

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

loader.css


<body> 태그 바로 뒤에 프리로더 컴포넌트를 추가하여 프리로더를 활성화하는데, 애니메이션이나 카운트다운 등 다른 모든 구성요소는 프리로더가 멈춘 이후 작동을 시작하게 된다: 이 사용자정의 프리로더 는 페이지가 로딩될 때 작은 애니메이션 움직임을 보여준다..

쿠키 공지창

플러그인은 방문한 사용자에게 쿠키가 사용됨을 알려주는 가벼운 쿠키 동의 메시지이다!

쿠키 공지: Osano Cookie
Osano Cookie 플러그인은 Toast 팝업으로 알림 내용을 표시하는데, .notice 요소에 data-options 옵션을 전달하여 그 동작을 제어할 수 있고, 다음과 같은 옵션들을 추가해줄 수 있다:
  • autoShow:false // 페이지 로딩시 자동으로 알림을 표시할 것인가 여부? 기본값: true
  • autoShowDelay:0 // 알림 표시 전 대기 시간(밀리초)
  • ShowOnce:false // 알림을 처음 한번만 보여줄 것인가? 기본값: true
  • cookieExpireTime:7200000 // 쿠키 만료시간(밀리초) 사용자가 [닫기]나 [확인] 버튼을 누른 이후부터 카운트가 시작된다!
                                    
                                        
                                    
                                

이 페이지의 좌하단에 나타나는 쿠키 알림창입니다..

수학수식 입력기

은 수학 표기를 기술하고 그 구조와 내용을 담고 있는 XML 마크업 언어인데, 이를 써서 직접 수식을 작성하는 것은 만만치 않으므로, html 문서에 수학 관련 수식들을 넣으려면; 수식 입력기 라이브러리를 쓰는 것이 보다 쉽다!

수식 입력하기: Equation 에디터
Equation 에디터를 사용하려면; 먼저 관련 Css 및 스크립트를 CDN으로 링크하고 스크립트를 초기화해준 뒤, 에디터용 컨테이너를 만들어주어야 한다
[ Equation Editor 사용법 ]
                                        
                                            <!-- Css 및 스크립트 CDN 링크 -->
                                            <link rel="stylesheet" href="https://editor.codecogs.com/eqneditor.css"/>

                                            <script src="https://editor.codecogs.com/eqneditor.api.min.js"></script>
                                        
                                    
                                        
                                            /* 스크립트 초기화 코드 */
                                            window.onload= function() {
                                                text_area= EqEditor.TextArea.link('latexInput')
                                                .addOutput(new EqEditor.Output('output'))
                                                .addHistoryMenu(new EqEditor.History('history'));

                                                EqEditor.Toolbar.link('toolbar').addTextArea(text_area);
                                            }
                                        
                                    
                                    
                                        
                                    
                                
1. 위 컨테이너에서 작성된 수식 기호는 웹문서에 직접 이미지로 복사해 넣으면 되지만, html에 삽입하기 위한 latex 플러그인도 함께 설치해주는 것이 보다 유익하다:
                                    
                                        <!-- 작성된 기호를 html에 삽입하기 위한 latex 플러그인 -->
                                        <script src="http://latex.codecogs.com/latexit.js"></script>
                                    
                                
2. 이제, 수식을 삽입할 html 문서에서.. 아래와 같이 <div> 및 <span> 등의 html 요소를 작성해주고, 위 컨테이너에서 작성된 수식 코드를 이 안에 복사해주면 된다:
                                    
                                        <div lang="latex">2^{3}</div>
                                    
                                

Equation 에디터 예

Quill Editor

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

위지위그 에디터 Quill
Quill.js를 사용하려면; 먼저 Quill Css 및 스크립트를 CDN으로 링크하고 스크립트를 초기화한다. 다음, 에디터용 컨테이너만 만들어주면 된다:
[ Quill Editor 사용하기 ]
                                        
                                            <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>
                                        
                                    
마음껏 적어보세요..
                                    
                                        <div id="editor">
                                            마음껏 적어보세요..
                                        </div>
                                    
                                

끝입니다, 간단하지요?


실제로는, Quill 에디터는 이보다 훨씬 더 풍부하고 방대하니.. 관련 상세 내용들은 Quill-js 공식사이트로 가서 살펴보시길 권합니다..

Full Calendar

는 모듈식으로 구성된, 풀사이즈의 드래그 & 드롭 순수 자바스크립트 이벤트 달력이다!

풀 카렌다
Full Calendar 플러그인을 사용하기 위해서는; 먼저, 스크립트 소스 및 초기화가 필요하고, 다음에는 그저 간단한 코드 한 줄이면 달력을 삽입할 수 있다: <div id= "calendar"></div> 더 필요하면; 풀카렌다 매뉴얼을 참조하여 폼나게 꾸며보십시오..
[ 풀 카렌다 사용하기 ]
                                        
                                            <body>
                                                <div id="calendar" class="mb-5"></div>

                                                <script src='https://cdn.jsdelivr.net/npm/fullcalendar@6.1.15/index.global.min.js'></script>
                                                <script>
                                                    document.addEventListener('DOMContentLoaded', function() {
                                                        var calendarEl= document.getElementById('calendar')
                                                        var calendar= new FullCalendar.Calendar(calendarEl, {
                                                            initialView: 'dayGridMonth'
                                                        });
                                                        calendar.render()
                                                    });
                                                </script>
                                            </body>
                                        
                                    

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"
                                        });
                                    
                                

여기서는 간단한 기본 예만 들었지만.. 그밖에 다양한 고급 사용법들은 공식 사이트로 가서 살펴보십시오.. 다만, 플러그인들을 제대로 사용하려면; 자바스크립트의 기본은 좀 알아야합니다 ㅡㅡ;

List-JS 테이블

는 작고 보이지 않으며 단순하지만 일반 HTML 목록, 표 또는 기타 항목에 검색, 정렬, 필터 및 유연성을 추가하는 강력하고 빠른 순수 자바스크립트 라이브러리이다!

List.js 테이블
List.js를 사용하기 위해서는; 먼저, 스크립트 소스를 불러온 뒤, 매우 간단한 템플릿으로 리스트 목록을 만들어줄 수 있다:
[ List.js 스크립트 소스 ]
                                        
                                            <script src="vendors/listjs.js"></script>
                                        
                                    
                                        
                                            
                                        
                                    
                                        
                                            
                                        
                                    
    • Kim

      경주

                                        
                                            
                                        
                                    
                                        
                                            var options2= {
                                                valueNames: ['name', 'city']
                                            };
                                            var hackerList2= new List('hacker-list2', options2);
    
                                            hackerList2.add({ name:'Lee', city:'울산' });
                                        
                                    

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

    DropZone Uploader

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

    드롭죤 업로더
    드롭죤 업로더 플러그인을 사용하려면; 먼저 Dropzone Css 및 스크립트를 CDN으로 링크하고 스크립트를 초기화하고, 이어서 사용할 form 요소를 만들어주면; Dropzone은 .dropzone 클래스가 있는 모든 양식요소를 찾아 자동으로 첨부하고 드롭한 파일을 지정된 속성에 업로드한다:
    [ 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>
                                            
                                        
                                        
                                            
                                        
                                    

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

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

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

    Counter

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

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

                                        
                                            
                                        
                                    
                                        
                                            
                                        
                                    
    2. 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();
                                                        });
                                                    });
                                                }
                                            };                                                          
                                        
                                    

    타이핑 텍스트

    타이핑 텍스트
    Typed.js를 사용하려면; 먼저, CDN 링크가 필요하고, 타이핑칠 내용은 <span data-typed-text= "['내용 1', '내용 2', ..]"></span> 식으로 넣어주면 된다:
                                        
                                            <!-- Typed.js 스크립트 CDN 링크 -->
                                            <script src="https://unpkg.com/typed.js@2.1.0/dist/typed.umd.js">
                                        
                                    
                                        
                                            
                                        
                                    
    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초)간 일시 중지한 뒤 다음으로 지나가도록 설정해준 것이다!


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

                                        
                                            
                                        
                                    

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


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

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

    Prism.js

    는 웹 문서에 html, Css, Script 코드를 삽입하기 위한 플러그인 라이브러리이다!

    프리즘
    Prism.js 라이브러리를 사용하기 위해서는 먼저, Css 링크 및 스크립트 소스를 필요로 하는데, 아래 기본 방식 외에도 다양한 사용법들이 있으니 필요해지면; 찾아가서 살펴보십시오..
    [ Prism Css 링크 및 스크립트 소스 ]
                                            
                                                <link href="vendors/prism.css" rel="stylesheet" />
                                                ..
                                                <script src="vendors/prism/prism.js"></script>
                                            
                                        

    이 html 코드를 담은 박스가 바로 프리즘 Css 및 Script 소스에다 약간의 사용자정의 Css를 추가하여 작성한 것입니다!

    Plugin Etc

    여타 플러그인 유틸리티들
    웹사이트를 꾸며주는 각종 플러그인 라이브러리들:
    서식 있는 텍스트 편집을 위한 가장 인기 있는 JavaScript 라이브러리
    이미지가 로드된 시점 감지
    마이크로 체크 플러그인. types, regexps, presence, time 등 확인
    모듈성, 성능 및 추가 기능을 제공하는 최신 JavaScript 라이브러리
    JavaScript를 위한 풍부하고 강력한 템플릿 언어
    워크플로우를 자동화하고 향상시키는 JavaScript 툴킷
    wave