본문으로 건너뛰기
버전: 4.6.1

코드 에디터

코드 에디터는 사후 대기실 디자인에 대한 완전한 제어가 필요한 사용자를 위한 고급 편집 기능을 제공합니다. 이 문서는 코드 에디터에서 코드 수정이 미리보기에 어떤 영향을 미치는지, 그리고 변경 사항이 실시간으로 어떻게 반영되는지 설명합니다.

빠른 참조

코드 요소간편 설정 설정사용자 정의 가능참고 사항
.nf-vwr-background배경 이미지✅ 예배경 색상/이미지, 패딩
.nf-vwr-image3이미지 3 (주요 UI 배경)✅ 예배경 색상/이미지, 패딩, 테두리 반경
.nf-vwr-image1이미지 1✅ 예배경 이미지, 크기, 위치
.nf-vwr-image2이미지 2✅ 예배경 이미지, 크기, 위치
.nf-vwr-title제목✅ 예텍스트, 색상, 글꼴 크기, 가시성
.nf-vwr-description내용✅ 예텍스트, 색상, 글꼴 크기, 가시성
#nf-vwr-cancel추천 이벤트 버튼 (닫기 버튼)✅ 예텍스트, 색상, 불투명도, URL 속성
요소 ID (예: nf-vwr-*)-수정 금지시스템 기능에 필요
클래스 이름 (예: nf-vwr-*)-⚠️ 주의일부 클래스는 시스템에서 사용됨

개요

코드 에디터를 사용하면 코드 형식(HTML/CSS)으로 디자인 속성을 직접 수정하여 사용자 정의에 최대한의 유연성을 제공할 수 있습니다. 모든 코드 변경 사항은 미리보기 영역에 즉시 반영되어 수정 결과를 실시간으로 확인할 수 있습니다.

코드 에디터 접근

에디터 모드로 전환

코드 에디터에 접근하려면:

  1. 간편 설정에서 간편 설정에서 에디터 모드로 전환
  2. 코드 편집을 위한 코드 에디터가 사용 가능해짐
  3. 간편 설정 설정에서 생성된 코드가 자동으로 로드됨
에디터 모드 제한

에디터 모드(코드 에디터)에 들어가면 간편 설정이 비활성화됩니다. 에디터 모드에서 간편 설정 모드로 돌아갈 수 있지만, 간편 설정 모드로 다시 전환하면 에디터 모드에서 입력한 모든 사용자 정의 코드가 자동으로 재설정되고 손실됩니다.

코드 구조 개요

코드 에디터는 간편 설정에서 구성된 설정에 해당하는 HTML/CSS 코드를 로드합니다. 코드 구조를 이해하면 목표로 하는 수정을 할 수 있습니다.

CSS 변수 시스템

새로운 코드 구조는 :root에 정의된 CSS 사용자 정의 속성(변수)을 광범위하게 사용하여 중앙화된 스타일 제어를 제공합니다. 모든 디자인 속성은 이러한 변수를 통해 제어되므로 일관된 외관을 쉽게 사용자 정의할 수 있습니다.

주요 CSS 변수:

  • --nf-main-*: 메인 테마 색상 및 글꼴
  • --nf-title-*: 제목 스타일 옵션
  • --nf-desc-*: 내용 스타일 옵션
  • --nf-image1-*, --nf-image2-*, --nf-image3-*: 이미지 표시 및 스타일
  • --nf-bg-*: 배경 색상 및 이미지
  • --nf-close-*: 닫기 버튼 스타일
  • --nf-*-display: 가시성 제어 (block, none, flex, grid 등)

CSS 변수의 장점:

  • 중앙화된 제어: :root의 값을 변경하여 관련된 모든 요소를 업데이트
  • 쉬운 테마 변경: 변수를 수정하여 일관된 색상 체계 생성
  • 동적 업데이트: JavaScript를 통해 변수를 변경하여 런타임 사용자 정의 가능

HTML 구조 매핑

HTML 구조는 다음과 같이 간편 설정 설정에 매핑됩니다:

배경 레이어

<div class="nf-vwr-background">
  • 간편 설정 설정: 배경 이미지
  • 사용자 정의 가능: 배경 색상 (background-color), 배경 이미지 (background-image), 패딩
  • 위치: 전체 화면 배경 (주요 UI 요소 외부)

주요 UI 컨테이너

<div class="nf-vwr-image3">
  • 간편 설정 설정: 이미지 3 (주요 UI 요소 배경)
  • 사용자 정의 가능: 배경 색상/이미지, 패딩, 테두리 반경, 너비, 최대 너비
  • 위치: 주요 사후 대기실 UI 컨테이너

이미지

<div class="nf-vwr-image1"></div>
<div class="nf-vwr-image2"></div>
  • 간편 설정 설정: 이미지 1, 이미지 2
  • 사용자 정의 가능: 배경 이미지 URL, 크기, 위치, 가시성 (display: none 사용)
  • 위치: 주요 UI 컨테이너 내부

제목

<div class="nf-vwr-title">Please enter the title</div>
  • 간편 설정 설정: 제목
  • 사용자 정의 가능: 텍스트 콘텐츠, 색상, 글꼴 크기, 글꼴 두께, 가시성
  • 위치: 주요 UI 컨테이너 내부

내용

<div class="nf-vwr-description nf-vwr-pause-hidden">내용을 입력해주세요.</div>
  • 간편 설정 설정: 내용
  • 사용자 정의 가능: 텍스트 콘텐츠, 색상, 글꼴 크기, 가시성
  • 위치: 주요 UI 컨테이너 내부
  • 참고: nf-vwr-pause-hidden 클래스는 시스템에서 일시정지 상태 관리에 사용될 수 있습니다

추천 이벤트 버튼 (닫기 버튼)

<button id="nf-vwr-cancel" class="nf-vwr-cancel" data-nf-cancel-url="">
<span>닫기</span>
</button>
  • 간편 설정 설정: 추천 이벤트 버튼 (닫기 버튼) 동작
  • 사용자 정의 가능:
    • 버튼 텍스트 (<span> 태그 내부)
    • 색상 (background-color, color, border-color)
    • 불투명도
    • URL 속성 (data-nf-cancel-url="")
  • ⚠️ 중요:
    • 요소 ID (id="nf-vwr-cancel")를 수정하지 마세요
    • data-nf-cancel-url 속성을 제거하지 마세요 (리디렉션 기능에 필요)
    • 참고: 사후 대기실은 data-nf-cancel-url 속성을 사용합니다

푸터 정보

<div class="nf-vwr-copyright">Powered by <strong>NetFUNNEL</strong> | © STCLab Inc.</div>
  • 간편 설정 설정: 푸터 텍스트 (색상 사용자 정의를 통해)
  • 사용자 정의 가능: 텍스트 콘텐츠, 색상, 글꼴 크기, 가시성
  • 위치: 주요 UI 컨테이너 내부

안전한 사용자 정의 영역

✅ 수정 가능

CSS 속성:

  • 색상 (color, background-color)
  • 글꼴 속성 (font-size, font-weight, font-family)
  • 간격 (padding, margin, gap)
  • 레이아웃 (display, flex-direction, align-items, justify-content)
  • 크기 조정 (width, max-width, min-width, height)
  • 시각 효과 (border-radius, opacity, box-shadow)
  • 배경 이미지 (background-image, background-size, background-position)

HTML 콘텐츠:

  • ID가 없는 요소의 텍스트 콘텐츠 (예: .nf-vwr-title, .nf-vwr-description)
  • 버튼 텍스트 (예: "Close")
  • 푸터 텍스트

HTML 속성:

  • data-nf-cancel-url 속성 값 (리디렉션 URL용)
  • <html> 태그의 lang 속성 (언어용)
  • <title> 태그 콘텐츠
  • <link rel="icon"> href 속성 (파비콘용)

CSS 변수:

  • :root의 모든 --nf-* CSS 사용자 정의 속성 수정 가능
  • 변수 값은 색상, 글꼴, 간격, 가시성을 제어합니다

⚠️ 주의하여 수정

요소 ID:

  • id="nf-vwr-*"가 있는 모든 요소는 시스템에서 사용됩니다
  • ID를 수정하면 기능이 손상됩니다
  • 규칙: 요소 ID를 변경하거나 제거하지 마세요

클래스 이름:

  • 일부 클래스는 시스템에서 참조될 수 있습니다
  • 규칙: 확실하지 않으면 저장하기 전에 미리보기에서 변경 사항을 테스트하세요

❌ 수정 금지

중요한 요소 ID:

  • id="nf-vwr-cancel"

중요한 속성:

  • data-nf-cancel-url 속성 이름 (버튼 기능에 필요)
  • 동적 콘텐츠 컨테이너의 요소 구조
  • :root의 CSS 변수 이름 (변수 이름 변경 시 기능이 손상됨)

일반적인 사용자 정의 예제

제목 텍스트 및 스타일 변경

방법 1: CSS 변수 사용 (권장)

:root {
--nf-title-color: #ff0000; /* 제목 색상 변경 */
--nf-title-font-size: 28px; /* 글꼴 크기 증가 */
}

방법 2: 직접 CSS 오버라이드

.nf-vwr-title {
color: #ff0000; /* 제목 색상 변경 */
font-size: 28px; /* 글꼴 크기 증가 */
font-weight: 700; /* 더 굵게 */
}
<div class="nf-vwr-title">Thank You for Waiting</div>

요소 숨기기

방법 1: CSS 변수 사용 (권장)

:root {
--nf-desc-display: none; /* 내용 숨기기 */
}

방법 2: CSS Display

.nf-vwr-description {
display: none; /* 내용 숨기기 */
}

방법 3: HTML 주석

<!-- <div class="nf-vwr-description nf-vwr-pause-hidden">내용을 입력해주세요.</div> -->

색상 변경

CSS 변수 사용 (권장):

:root {
/* 배경 색상 */
--nf-bg-color: #1a1a1a; /* 어두운 배경 */
--nf-image3-bg-color: #ffffff; /* 흰색 주요 UI 배경 */

/* 텍스트 색상 */
--nf-title-color: #3354ff; /* 파란색 제목 */
--nf-desc-color: #666666; /* 회색 내용 */
}

직접 CSS 오버라이드:

.nf-vwr-background {
background-color: #1a1a1a; /* 어두운 배경 */
}

.nf-vwr-image3 {
background-color: #ffffff; /* 흰색 배경 */
}

.nf-vwr-title {
color: #3354ff; /* 파란색 제목 */
}

.nf-vwr-description {
color: #666666; /* 회색 내용 */
}

버튼 수정

버튼 텍스트:

<button id="nf-vwr-cancel" class="nf-vwr-cancel" data-nf-cancel-url="https://example.com">
<span>Continue</span>
</button>

버튼 스타일링 (CSS 변수 사용):

:root {
--nf-close-bg-color: #ff0000; /* 빨간색 배경 */
--nf-close-text-color: #ffffff; /* 흰색 텍스트 */
--nf-close-border-color: #cc0000; /* 더 어두운 빨간색 테두리 */
}

버튼 스타일링 (직접 CSS):

.nf-vwr-cancel {
background-color: #ff0000; /* 빨간색 배경 */
color: #ffffff; /* 흰색 텍스트 */
border-color: #cc0000; /* 더 어두운 빨간색 테두리 */
border-radius: 12px; /* 더 둥글게 */
}

버튼 URL:

<button id="nf-vwr-cancel" class="nf-vwr-cancel" data-nf-cancel-url="https://yoursite.com/home">
<span>Close</span>
</button>

배경 이미지 추가

CSS 변수 사용 (권장):

:root {
--nf-bg-url: url('https://example.com/background.jpg');
--nf-image1-url: url('https://example.com/image1.png');
--nf-image2-url: url('https://example.com/image2.png');
--nf-image3-url: url('https://example.com/image3.png');
}

직접 CSS 오버라이드:

.nf-vwr-background {
background-image: url('https://example.com/background.jpg');
background-size: cover;
background-position: center;
}

.nf-vwr-image1 {
background-image: url('https://example.com/image1.png');
background-size: contain;
}

고급 프로그래밍 사례

사례 1: 동적 언어 전환

시나리오: 사용자 로케일에 따라 다른 언어로 사후 대기실 표시.

구현:

  1. 사용자 로케일 감지 (브라우저 언어, URL 매개변수 등)
  2. JavaScript를 사용하여 텍스트 콘텐츠를 동적으로 수정
  3. 필요한 경우 언어별 글꼴에 대한 CSS 업데이트

예제:

// 로케일 감지 및 텍스트 업데이트
const locale = navigator.language || 'en';
const translations = {
'en': { title: 'Thank You for Waiting', description: 'Enjoy the event!' },
'ko': { title: '대기해 주셔서 감사합니다', description: '이벤트를 즐겨보세요!' },
'ja': { title: 'お待ちいただきありがとうございます', description: 'イベントをお楽しみください' }
};

const title = document.querySelector('.nf-vwr-title');
const description = document.querySelector('.nf-vwr-description');
title.textContent = translations[locale]?.title || translations['en'].title;
description.textContent = translations[locale]?.description || translations['en'].description;

규칙:

  • ✅ ID가 없는 요소의 텍스트 콘텐츠 수정 가능
  • ✅ 동적 콘텐츠를 위한 JavaScript 추가 가능
  • ❌ 요소 ID 수정 금지
  • ⚠️ 다양한 로케일에서 철저히 테스트

사례 2: 사용자 정의 자산 추가

시나리오: 사용자 정의 글꼴, 이미지 또는 기타 자산 로드.

구현:

  1. 외부 리소스에 대해 <head><link> 태그 추가
  2. 이미지에 대해 CSS에서 url() 사용
  3. 자산이 접근 가능한지 확인 (CORS, HTTPS)

예제 - 사용자 정의 글꼴:

<head>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet">
</head>
.nf-vwr-title {
font-family: 'Roboto', sans-serif;
}

예제 - 사용자 정의 이미지:

.nf-vwr-image1 {
background-image: url('https://cdn.example.com/custom-image.png');
}

규칙:

  • <head><link> 태그 추가 가능
  • ✅ CSS url()에서 외부 URL 사용 가능
  • ⚠️ 자산이 접근 가능한지 확인 (CORS 활성화, HTTPS)
  • ⚠️ 로딩 성능 고려

사례 3: 사용자 정의 로직 추가

시나리오: 향상된 기능을 위한 사용자 정의 JavaScript 추가.

구현:

  1. </body> 태그 앞에 <script> 태그 추가
  2. 기존 요소 ID를 사용하여 대기실 요소와 상호 작용
  3. NetFUNNEL의 핵심 기능을 재정의하지 마세요

예제 - 사용자 정의 분석:

<body>
<!-- ... 기존 코드 ... -->

<script>
// 사용자 정의 분석 추적
document.getElementById('nf-vwr-cancel').addEventListener('click', function() {
// 추천 이벤트 버튼 (닫기 버튼) 클릭 추적
console.log('Close button clicked');
// 분석 서비스로 전송
});
</script>
</body>

규칙:

  • ✅ 사용자 정의 <script> 태그 추가 가능
  • ✅ 기존 요소에 이벤트 리스너 추가 가능
  • ❌ 필수 요소 ID 제거 또는 수정 금지
  • ⚠️ 호환성을 보장하기 위해 철저히 테스트

사례 4: 조건부 스타일링

시나리오: 조건(시간대, 사용자 유형 등)에 따라 다른 스타일 적용.

구현:

  1. JavaScript를 사용하여 조건 감지
  2. CSS 변수 수정 또는 CSS 클래스 추가/제거
  3. CSS 변수는 중앙화된 제어와 더 나은 성능을 제공합니다

예제 - 시간 기반 스타일링 (CSS 변수 사용):

<script>
const hour = new Date().getHours();
const root = document.documentElement;

if (hour >= 6 && hour < 18) {
// 라이트 모드
root.style.setProperty('--nf-bg-color', '#f0f0f0');
root.style.setProperty('--nf-image3-bg-color', '#ffffff');
root.style.setProperty('--nf-title-color', '#2F3033');
} else {
// 다크 모드
root.style.setProperty('--nf-bg-color', '#1a1a1a');
root.style.setProperty('--nf-image3-bg-color', '#2a2a2a');
root.style.setProperty('--nf-title-color', '#ffffff');
}
</script>

예제 - 직접 스타일 수정:

<script>
const hour = new Date().getHours();
const background = document.querySelector('.nf-vwr-background');

if (hour >= 6 && hour < 18) {
background.style.backgroundColor = '#f0f0f0'; // 라이트 모드
} else {
background.style.backgroundColor = '#1a1a1a'; // 다크 모드
}
</script>

규칙:

  • ✅ JavaScript를 통해 CSS 변수 수정 가능 (권장)
  • ✅ JavaScript를 통해 CSS 클래스 및 인라인 스타일 수정 가능
  • ✅ 조건부 로직 추가 가능
  • ⚠️ 변경 사항이 핵심 기능을 손상시키지 않는지 확인
  • ⚠️ 다양한 조건에서 테스트

사례 5: 사용자 정의 애니메이션

시나리오: 사용자 정의 애니메이션 또는 전환 추가.

구현:

  1. CSS에서 @keyframes 정의
  2. 요소에 애니메이션 적용
  3. 기존 애니메이션과 간섭하지 않는지 확인

예제:

@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}

.nf-vwr-title {
animation: fadeIn 1s ease-in;
}

규칙:

  • ✅ 사용자 정의 @keyframes 추가 가능
  • ✅ CSS 애니메이션 추가 가능
  • ⚠️ 기존 @keyframes 수정 금지 (있는 경우 marquee, entering)
  • ⚠️ 애니메이션 성능 테스트

프로그래밍 규칙 요약

✅ 허용된 작업

  1. CSS 수정: 모든 CSS 속성 수정 가능 (색상, 글꼴, 간격, 레이아웃 등)
  2. CSS 변수: :root의 모든 --nf-* CSS 사용자 정의 속성 수정 가능 (중앙화된 스타일링)
  3. HTML 콘텐츠: ID가 없는 요소의 텍스트 콘텐츠 수정 가능 (<span> 태그 내부 텍스트 포함)
  4. HTML 속성: 안전한 속성 수정 가능 (data-nf-cancel-url, lang, title, href)
  5. 리소스 추가: 글꼴, 스타일시트 등을 위한 <link> 태그 추가 가능
  6. 스크립트 추가: 추가 기능을 위한 사용자 정의 <script> 태그 추가 가능
  7. 요소 추가: 새로운 HTML 요소 추가 가능 (주의 - 레이아웃에 영향을 줄 수 있음)

⚠️ 제한된 작업

  1. 요소 ID: nf-vwr-*로 시작하는 ID를 수정하거나 제거하지 마세요
  2. 필수 속성: data-nf-cancel-url 속성 이름 제거 금지
  3. CSS 변수 이름: CSS 변수 이름 수정 금지 (예: --nf-title-color), 값만 수정 가능
  4. 핵심 애니메이션: 기존 @keyframes 수정 금지 (있는 경우 marquee, entering)
  5. 요소 구조: 동적 콘텐츠 컨테이너의 구조 수정 시 주의
  6. 시스템 클래스: nf-vwr-pause-hidden과 같은 시스템에서 사용하는 클래스 주의

❌ 금지된 작업

  1. 필수 요소 제거: ID가 있는 요소 제거 금지
  2. 기능 손상: 대기실 기능을 손상시키는 변경 금지
  3. 보안 위험: 보안 위험을 초래하는 스크립트 추가 금지

베스트 프랙티스

코드 구성

  • 주석 사용: 사용자 정의 섹션을 식별하기 위한 주석 추가
  • 구조 유지: 코드를 체계적이고 읽기 쉽게 유지
  • 점진적 테스트: 작은 변경을 하고 자주 테스트

미리보기 모니터링

  • 각 변경 후 확인: 각 수정 후 미리보기에서 변경 사항 확인
  • 다양한 시나리오 테스트: 미리보기 컨트롤을 사용하여 다양한 해상도에서 테스트
  • 기능 검증: 모든 대화형 요소가 올바르게 작동하는지 확인

안전 가이드라인

  • 코드 백업: 주요 변경 전에 코드 백업 저장
  • 철저한 테스트: 수정 후 모든 기능 테스트
  • 변경 사항 문서화: 수정된 내용과 이유에 대한 메모 유지

중요

주요 변경을 하기 전에 항상 코드를 백업하세요. 간편 설정 모드로 재설정한 후에는 코드 변경 사항을 복구할 수 없습니다.

사후 대기실 사용자 정의

사후 대기실은 사전 대기실과 일반 대기실보다 간단하며, 감사 메시지와 이벤트 추천에 중점을 둡니다. 핵심 기능을 유지하면서 모든 시각적 요소를 사용자 정의할 수 있습니다.