본문으로 건너뛰기
버전: 4.5.2.5-onprem

코드 에디터

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

빠른 참조

코드 요소간편 설정 설정사용자 정의 가능참고 사항
.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 코드를 로드합니다. 코드 구조를 이해하면 목표로 하는 수정을 할 수 있습니다.

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">Please enter the content</div>
  • 간편 설정 설정: 내용
  • 사용자 정의 가능: 텍스트 콘텐츠, 색상, 글꼴 크기, 가시성
  • 위치: 주요 UI 컨테이너 내부

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

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

푸터 정보

<div class="nf-vwr-info">Refreshing the page, going back, or closing the popup and reconnecting may reset your waiting time.</div>
<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-event-url 속성 값 (리디렉션 URL용)
  • <html> 태그의 lang 속성 (언어용)
  • <title> 태그 콘텐츠
  • <link rel="icon"> href 속성 (파비콘용)

⚠️ 주의하여 수정

요소 ID:

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

클래스 이름:

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

❌ 수정 금지

중요한 요소 ID:

  • id="nf-vwr-cancel"

중요한 속성:

  • data-nf-event-url 속성 이름 (버튼 기능에 필요)
  • 동적 콘텐츠 컨테이너의 요소 구조

일반적인 사용자 정의 예제

제목 텍스트 및 스타일 변경

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

요소 숨기기

방법 1: CSS Display

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

방법 2: HTML 주석

<!-- <div class="nf-vwr-description">Please enter the content</div> -->

색상 변경

배경 색상:

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

주요 UI 배경:

.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-event-url="https://example.com">Continue</button>

버튼 스타일링:

.nf-vwr-cancel {
background-color: #ff0000; /* 빨간색 배경 */
color: #ffffff; /* 흰색 텍스트 */
opacity: 0.9; /* 약간 투명 */
border-radius: 12px; /* 더 둥글게 */
}

버튼 URL:

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

배경 이미지 추가

배경 이미지:

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

이미지 1:

.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 클래스 추가/제거 또는 인라인 스타일 수정
  3. 직접 스타일 수정이 아닌 CSS 클래스를 사용하여 스타일링

예제 - 시간 기반 스타일링:

<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 클래스 및 인라인 스타일 수정 가능
  • ✅ 조건부 로직 추가 가능
  • ⚠️ 변경 사항이 핵심 기능을 손상시키지 않는지 확인
  • ⚠️ 다양한 조건에서 테스트

사례 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. HTML 콘텐츠: ID가 없는 요소의 텍스트 콘텐츠 수정 가능
  3. HTML 속성: 안전한 속성 수정 가능 (data-nf-event-url, lang, title, href)
  4. 리소스 추가: 글꼴, 스타일시트 등을 위한 <link> 태그 추가 가능
  5. 스크립트 추가: 추가 기능을 위한 사용자 정의 <script> 태그 추가 가능
  6. 요소 추가: 새로운 HTML 요소 추가 가능 (주의 - 레이아웃에 영향을 줄 수 있음)

⚠️ 제한된 작업

  1. 요소 ID: nf-vwr-*로 시작하는 ID를 수정하거나 제거하지 마세요
  2. 필수 속성: data-nf-event-url 속성 이름 제거 금지
  3. 핵심 애니메이션: 기존 @keyframes 수정 금지 (있는 경우 marquee, entering)
  4. 요소 구조: 동적 콘텐츠 컨테이너의 구조 수정 시 주의

❌ 금지된 작업

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

베스트 프랙티스

코드 구성

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

미리보기 모니터링

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

안전 가이드라인

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

중요

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

사후 대기실 사용자 정의

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