<div class="event-benefit-template"> <!-- 구독 기획전의 경우 event-benefit-template--subscribe 클래스 추가 필요 -->
<link rel="stylesheet" href="/kr/event/promotions/css/common-v2--centered-mobile-view.css"> <!-- [전체 공통] 필수 -->
<link rel="stylesheet" href="/kr/event/2026/03/test--pages/css/content.css"> <!-- 개별 페이지에 필요할 경우 추가 -->
<div class="main-kv">
<!-- KV가 영상인 경우 -->
<!-- <div class="c-responsive-video j-responsive-video main-kv__video"
style="--img-ratio-mo: 360 / 640;
--poster-mo: url('https://images.unsplash.com/photo-1699277203232-6e6a243bee01?q=80&w=1740&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D');">
<video class="c-responsive-video__element" autoplay muted loop playsinline preload title="영상 제목" src="https://videos.pexels.com/video-files/10171433/10171433-uhd_2560_1440_25fps.mp4" aria-describedby="kv-video-description">
</video>
<div class="blind" id="kv-video-description">
<p>영상에 대한 묘사 내용</p>
</div>
</div> -->
<!-- // KV가 영상인 경우 -->
<!-- KV가 이미지인 경우 -->
<!-- <img class="main-kv__img" src="/kr/event/2026/03/test--pages/resources/img_kv_mo.png" alt="">
<div class="blind">
<h1>이벤트 제목</h1>
<p>이벤트 내용</p>
</div> -->
<!-- // KV가 이미지인 경우 -->
</div>
<div class="c-tab c-tab--main-switch c-tab--1depth c-tab--1depth-type01" data-tab-type="switch" data-tab-content="main-switch-content">
<div class="c-tab__inner">
<ul role="tablist" class="c-tab__list">
<li class="c-tab__item active"><button type="button" role="tab" class="c-tab__button" data-target="main-switch-tab-01">버튼명01</button></li>
<li class="c-tab__item"><button type="button" role="tab" class="c-tab__button" data-target="main-switch-tab-02">버튼명02</button></li>
</ul>
</div>
</div>
<div id="main-switch-content" class="c-tab__content">
<div role="tabpanel" class="c-tab__panel" tabindex="0">
<!-- 앵커 탭만 있는 있는 경우 -->
<div class="c-tab c-tab--main-sticky c-tab--1depth c-tab--1depth-type01" data-tab-type="scroll" data-tab-content="main-sticky-content-01">
<div class="c-tab__inner">
<ul role="tablist" class="c-tab__list">
<li role="presentation" class="c-tab__item active">
<a href="#" role="tab" class="c-tab__button" data-target="test--01" data-contents="test--01 상단탭">
<span class="c-tab__button-text">test--01</span>
</a>
</li>
<li role="presentation" class="c-tab__item">
<a href="#" role="tab" class="c-tab__button" data-target="test--02" data-contents="test--02 상단탭">
<span class="c-tab__button-text">test--02</span>
</a>
</li>
</ul>
</div>
</div>
<div id="main-sticky-content-01" class="c-tab__content">
<div role="tabpanel" class="c-tab__panel" tabindex="0">
<!-- 탭 없는 경우 -->
<section>
<article class="l-article 필요한 경우 유니크 한 클래스 추가">
<div class="l-article__inner">
<div class="c-title c-title--normal">
<div class="c-title__eyebrow">아이브로우</div>
<h2 class="c-title__main">영역 제목</h2>
</div>
<div class="l-article__content-wrap">
<div class="l-article__content">
<div class="l-article__box"></div>
<div class="l-article__box"></div>
</div>
<div class="l-article__content"></div>
<div class="l-article__content"></div>
</div>
</div>
</article>
<article class="l-article 필요한 경우 유니크 한 클래스 추가">
<div class="l-article__inner">
<div class="c-title c-title--normal">
<div class="c-title__eyebrow">아이브로우</div>
<h2 class="c-title__main">영역 제목</h2>
</div>
<div class="l-article__content-wrap">
<div class="l-article__content">
<div class="l-article__box"></div>
<div class="l-article__box"></div>
</div>
<div class="l-article__content"></div>
<div class="l-article__content"></div>
</div>
</div>
</article>
</section>
<!-- // 탭 없는 경우 -->
</div>
<div role="tabpanel" class="c-tab__panel" tabindex="0">
<section>
<article class="l-article 필요한 경우 유니크 한 클래스 추가">
<div class="l-article__inner">
<div class="c-title c-title--normal">
<div class="c-title__eyebrow">아이브로우</div>
<h2 class="c-title__main">영역 제목</h2>
</div>
<div class="l-article__content-wrap">
<div class="l-article__content">
<div class="l-article__box"></div>
<div class="l-article__box"></div>
</div>
<div class="l-article__content"></div>
<div class="l-article__content"></div>
</div>
</div>
</article>
</section>
</div>
</div>
<!-- // 앵커 탭만 있는 있는 경우 -->
</div>
<div role="tabpanel" class="c-tab__panel" tabindex="0">
<div class="c-tab c-tab--main-sticky c-tab--1depth c-tab--1depth-type01" data-tab-type="scroll" data-tab-content="main-sticky-content-02">
<div class="c-tab__inner">
<ul role="tablist" class="c-tab__list">
<li role="presentation" class="c-tab__item active">
<a href="#" role="tab" class="c-tab__button" data-target="test--03" data-contents="test--03 상단탭">
<span class="c-tab__button-text">test--03</span>
</a>
</li>
<li role="presentation" class="c-tab__item">
<a href="#" role="tab" class="c-tab__button" data-target="test--04" data-contents="test--04 상단탭">
<span class="c-tab__button-text">test--04</span>
</a>
</li>
</ul>
</div>
</div>
<div id="main-sticky-content-02" class="c-tab__content">
<div role="tabpanel" class="c-tab__panel" tabindex="0">
<section>
<article class="l-article 필요한 경우 유니크 한 클래스 추가">
<div class="l-article__inner">
<div class="c-title c-title--normal">
<div class="c-title__eyebrow">아이브로우</div>
<h2 class="c-title__main">영역 제목</h2>
</div>
<div class="l-article__content-wrap">
<div class="l-article__content">
<div class="l-article__box"></div>
<div class="l-article__box"></div>
</div>
<div class="l-article__content"></div>
<div class="l-article__content"></div>
</div>
</div>
</article>
</section>
</div>
<div role="tabpanel" class="c-tab__panel" tabindex="0">
<section>
<article class="l-article 필요한 경우 유니크 한 클래스 추가">
<div class="l-article__inner">
<div class="c-title c-title--normal">
<div class="c-title__eyebrow">아이브로우</div>
<h2 class="c-title__main">영역 제목</h2>
</div>
<div class="l-article__content-wrap">
<div class="l-article__content">
<div class="l-article__box"></div>
<div class="l-article__box"></div>
</div>
<div class="l-article__content"></div>
<div class="l-article__content"></div>
</div>
</div>
</article>
</section>
</div>
</div>
</div>
</div>
<script src="/kr/event/promotions/js/common.js"></script> <!-- [전체 공통] 필수 -->
<script src="/kr/event/2026/03/test--pages/js/content.js"></script> <!-- 개별 페이지에 필요할 경우 추가 -->
<script src="/kr/event/promotions/js/product-api-v2.js"></script> <!-- [전체 공통] 가전 API 기능 있는 경우 만 넣기 -->
<script src="/kr/event/promotions/js/ranking-api.js"></script> <!-- [전체 공통] 가전 베스트 랭킹 API 기능 있는 경우 만 넣기 -->
<script src="/kr/event/promotions/js/home-style-api.js"></script> <!-- [전체 공통] 홈스타일 제품 API 기능 있는 경우 만 넣기 -->
<script src="/kr/event/promotions/js/home-style-ranking-api.js"></script> <!-- [전체 공통] 홈스타일 베스트 랭킹 API 기능 있는 경우 만 넣기 -->
<script src="/kr/event/promotions/js/home-style-time-deal-api.js"></script> <!-- [전체 공통] 홈스타일 타임딜 API 기능 있는 경우 만 넣기 -->
<script src="/kr/event/promotions/js/tab.js"></script> <!-- [전체 공통] 탭 기능 있는 경우 만 넣기 -->
</div>
영상에 대한 묘사 내용
모바일 일원화 신규 템플릿/컴포넌트 활용 안내
- common-v2.css -> common-v2--centered-mobile-view.css 변경한 것 제외하고는 기존 디자인 3.0 공통 소스는 동일함.
-
html : PE00880001-template-v2--centered-mobile-view.html 원본 코드를 활용해야 오류를 방지할 수 있음. 브라우저 > 개발자 화면으로 소스 복사시 js에서 DOM에 추가한 소스로 인해 오류 발생 확률 높음.
CSS : BEM 방식 철학을 기본으로 Atomic 방식을 혼합한 Hybrid 방식. 들여쓰기 작업시 BEM 기준에 따라 가능한 depth를 깊게 처리하지 않아야 수정시 업무 효율이 높으며, 상쇄할 때 번거롭지 않음.
JS : jquery를 사용하지 않으며, 객체/클래스/임포트 방식을 혼용하고 있음. 스크립트 순서는 반드시 지켜야 오류가 나지 않음. - html에 'test--'로 시작하는 문자열은 이곳 템플릿 페이지에서만 임시로 사용하는 것으로 실제 개별 페이지에서는 다르게 설정해야함.
-
아래 녹색으로 표시한 신규 템플릿을 기준으로 반영함. 템플릿이 계속 수정되고 있어 러프하게 템플릿 코드를 작성할 수 밖에 없는 상황임(2026.03.25 기준).
개별 페이지 작업시 폰트/간격 등 이상한 부분이 있으면 개별적으로 CSS 예외처리하지 말고 관련 수정 요청이 오면 템플릿 기준으로 작업 했다고 전달하면 됨.
- content-v2--centered-mobile-view.css, content-v2--centered-mobile-view.js 파일은 여기서만 사용되는 소스 이므로 개별 페이지에서 해당 경로 제거해야함.
- api 스크립트 파일들 중 사용하지 않는 것은 제거해야함.
- 작업시 가능한 공통 영역에 있는 소스 넣어야 중앙에서 컨트롤 가능함.
- 가능한 여기서 제공하는 코드를 활용하여 작업해야 전체 공통 소스(common.js, common-v2--centered-mobile-view.css, -api.js 등)에서 컨트롤(접근성 등) 가능하며,
보완할 부분은 요청 주시거나 아래 ace-common-work 브랜치에서 수정 후 커밋 내용에 상세히 기재 하면됨. 단, 우리가 담당하는 모든 페이지 공통 소스이므로 수정시 주의 필요함.
commit 히스토리에서 템플릿 수정되고 있는 상황 확인 가능함. - 피벗 LGE.COM git > ace-common-work에서 템플릿 소스 관리하고 있으며 상세 내용은 README.md 내용 참고.
- 템플릿 소스를 계속 보완하고 있어서 최신 템플릿을 적용할 수 있도록, 자주 Pull 하여 소스를 최신화 해야함.
단독 구매 혜택
- 임직원/계열사 페이지는 payment-benefits 요소에 data-group-members 속성 추가
카카오톡 친구 전용 특별 할인 쿠폰 혜택
- kakao-friend-coupon 요소에 data-black-theme 속성 있으면 검은 테마 반영
구독 기본 혜택
가전 구독이 좋은 이유
가전 구독이 좋은 이유 2번 타입
멤버십 포인트로 월 요금 납부하기 방법
레이아웃 - 전체 틀
- 기본적인 마크업 구조 (shift + 마우스휠로 가로 스크롤 가능)
- 구독 기획전의 경우 .event-benefit-template 요소에 event-benefit-template--subscribe 클래스 추가 필요.
.l-article__inner 요소의 상하 여백이 다른 페이지와 차별화 됨(2026. 04. 02 디자인팀에서 확인).
같은 아티클 영역이 서로 붙어 있으면, 둘 중 하나의 여백은 제거 해야됨(서로 간의 상하 여백 합은 40px). - 앵커 탭만 있는 있는 경우 : '앵커 탭만 있는 있는 경우' 주석 부분만 떼어내서 .main-kv 바로 아래에 붙여 사용.
- 탭 자체가 없는경우 : '탭 없는 경우' 주석 부분만 떼어내서 .main-kv 바로 아래에 붙여 사용.
- .l-article__inner 요소에 l-article__inner--mo-gutter 클래스 추가 : 양쪽 기본 여백이 생김.
- .l-article__content 요소에 l-article__content-wrap 추가하여 article 내 content들 간의 여백 설정 하기.
- 'test--' 로 시작하는 문자열은 의미 있는 것으로 변경 필요. 템플릿 페이지에서만 사용되는 문자열이라 개별 페이지 작업시 변경 필요.
- 상하 여백 규칙 - 추후에 변경될 가능성 있음. (26.03.26 템플릿 기준)
Space Pattern
부피감에 따른 계층적 간격 정의 가이드
ScaleSizeVisual PreviewUsage & Target ClassXL (Extra Large)32pxArticle 상하 여백.l-article__innerL (Large)28px탭 버튼(.c-button--box)과 콘텐츠 사이내부적으로 자동 처리M (Medium)20px일반 콘텐츠(카드-카드) 사이.l-article__content-wrapS (Small)12px타이틀과 콘텐츠 사이.l-article__innerXS (Extra Small)12px부피감 있는 레이블과 컴포넌트 사이.l-article__contentTiny8px작은 레이블과 리스트 시작점 사이.l-article__boxMicro2px타이틀과 아이브로우 사이.c-title--normal
레이아웃 - 콘텐츠 구조적 위계에 따른 마크업 예시
- 디자인 가이드(2026. 03. 27 기준) : 아이브로우 글씨 색(기본 : #777, 다크 모드 : #a7a7a7)
메인 타이틀01
서브 타이틀01
[제목]
- aaaaaa
- aaaaaa
[제목]
- aaa
- aaa
레이아웃 - 일반 탭 안에 제품 API
- 많이 사용하는 레이아웃 형태
<div class="l-tab">
<div class="c-tab c-tab--3depth c-tab--3depth-type01" data-tab-type="switch" data-tab-content="test--gasdf4312123sdg">
<div class="c-tab__inner">
<ul role="tablist" class="c-tab__list" data-active-scroll-center>
<li class="c-tab__item active"><button type="button" role="tab" class="c-tab__button">버튼01</button></li>
<li class="c-tab__item"><button type="button" role="tab" class="c-tab__button">버튼02</button></li>
</ul>
</div>
</div>
<div id="test--gasdf4312123sdg" class="c-tab__content">
<div role="tabpanel" class="c-tab__panel active" tabindex="0">
<div class="c-product">
<ul class="c-product__list c-product__list--one-time-purchase">
<li class="c-product__item">
<!-- 태깅 넣을 곳 -->
</span>
</li>
</ul>
</div>
</div>
<div role="tabpanel" class="c-tab__panel" tabindex="0">
<ul class="c-product__list c-product__list--one-time-purchase">
<li class="c-product__item">
<!-- 태깅 넣을 곳 -->
</span>
</li>
</ul>
</div>
</div>
</div>
Tab
- .c-tab 요소에 있는 클래스(c-tab--1depth, c-tab--1depth-type01 ...)를 추가하여 탭 스타일을 설정할 수 있음.
- 총 4가지 타입이 있음.
Title
- 디자인 가이드(2026. 03. 31 기준) :
타이틀 정렬 : 기본 중앙 / USP 좌측 - c-title--left 클래스 추가 : 왼쪽 정렬
메인 타이틀
서브 타이틀
메인 타이틀
서브 타이틀
Coupon, Button
- 디자인 가이드(2026. 03. 31 기준) : .c-button--box는 무조건 너비 350px, 상단 여백 32px
리스트 - 기본
- 로그인 후 마이페이지 > 보유 관리에서 제품 등록 필수 관리에서 제품 등록 필수 제품 관리에서 제품 등록 필수
- 포토리뷰 작성 시 100자 이상, 제품 사진(동영상) 1장 이상 업로드 필수
- 사진 도용 및 부적절한 사진 업로드 시 경품 지급 대상 제외
- 리뷰 이벤트 모델별 1인 1회 한정 지급
- 기타 리뷰 이벤트 중복 적용 불가
- 구매하신 LGE.COM 회원 계정으로 적립
유의사항
- 기본 펼침 상태 : .c-toggle에 on 클래스 추가
[첫 구독 최대 10만P 유의사항]
- 이미 구독을 하고 있더라도 LGE.COM 첫 구독 고객이라면
- 멤버십 포인트 지급 (1개 제품 구독 시)
[가전 연계 할인 유의사항]
- 멤버십 포인트를 제외한 실 결제금액이 100만원 이상인 주문을 보유한 경우 대상 (기간 합산이 아닌 단일 주문 내 실 결제 금액 대상, 소모품 제외)
- 정수기 청약 시 최근 1년 이내, 그 외 제품 청약 시 전월 1월부터 현재까지 배송 완료된 주문만을 대상으로 함
[첫 구독 최대 10만P 유의사항]
- 이미 구독을 하고 있더라도 LGE.COM 첫 구독 고객이라면
- 멤버십 포인트 지급 (1개 제품 구독 시)
[가전 연계 할인 유의사항]
- 멤버십 포인트를 제외한 실 결제금액이 100만원 이상인 주문을 보유한 경우 대상 (기간 합산이 아닌 단일 주문 내 실 결제 금액 대상, 소모품 제외)
- 정수기 청약 시 최근 1년 이내, 그 외 제품 청약 시 전월 1월부터 현재까지 배송 완료된 주문만을 대상으로 함
혜택 영역
- 일반적으로 아래 마크업 그대로 활용하면 되고
.c-custom-accordion__area--fade 높이값, .c-custom-accordion__area--fade::after에 linear-gradient 설정 개별 처리 필요함.
content.css의 .test--rgsdfgwer413 참고 - .c-custom-accordion 요소에 data-accordion-toggle="true" 속성 있어야함.
- 접근성 고려하여 버튼 열 때 .c-custom-accordion__area--fade 요소의 상단에 초점 이동 되도록 처리함.
- [data-expand-scroll-dest], [data-expand-scroll-target] 요소에 scroll-margin-top 값 넣어서 스크롤 이동 위치 잡음.
- 더 많은 옵션에 대한 설명은 기능 탭 > '특정 영역들을 펼치는 기능 - 공통' 확인 필요.
서브 타이틀01
서브 타이틀02
- Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum odit voluptatem earum error obcaecati excepturi voluptatibus enim quod voluptas repudiandae nesciunt, modi, suscipit tempora
- Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum odit voluptatem earum error obcaecati excepturi voluptatibus enim quod voluptas repudiandae nesciunt, modi, suscipit tempora
영상 처리 방법
- 페이지 로드 시 썸네일이 먼저 노출되어 빈화면이 보이지 않도록 처리 함. 인 앱 브라우저에서도 기본 video UI 노출되지 않는 방법임.
- 작업 편의상 직접 --img-ratio-mo, --poster-mo 변수를 사용하여 크기와 썸네일 이미지를 지정할 수 있음.
- 다음 비디오 속성은 필수 : playsinline, preload, title, aria-describedby
- 필수 클래스 : c-responsive-video j-responsive-video
유틸리티
여백
| Class Syntax | Description | Property Target |
|---|---|---|
margin-{dir}--{dev}{val}
|
Margin 규칙
m (Mo) 뷰포트 너비 390px 기준 vw 연산.
|
margin-top
margin-right
margin-bottom
margin-left
|
padding-{dir}--{dev}{val}
|
Padding 규칙
Margin과 동일한 규칙(방향, 디바이스, 값)을 따릅니다. |
padding-top
padding-right
padding-bottom
padding-left
|
표시 / 숨김
| Class Name | Description | CSS Rule |
|---|---|---|
hidden-all |
ALL 모든 디바이스에서 숨김 | display: none !important |
레이아웃 헬퍼 등
| Class Name | Description |
|---|---|
relative-area |
position: relative; 적용.자식 요소를 absolute로 배치할 때 기준점이 되는 부모 컨테이너로 사용합니다. |
c-font--primary-active-red |
● 강조 텍스트 색상 적용 |
dark-mode |
.article, .tooltip-box 요소에 dark-mode 클래스 추가시 어두운 테마로 변경. 적용 대상은 아래와 같음.
|
c-custom-scrollbar |
PC에서 가로 스크롤 있는 경우 (예 : 탭 버튼) 추가하여 가로 스크롤바 스타일 적용 및 드래그 기능(PV.pcMouseDrag) 자동 적용. |
탭 - 전체 공통
- data-target 속성값은 반드시 고유해야 하며, URL의 tab 파라미터에 사용됨.
앵커 탭 - 공통
- [필수] .c-tab 요소에 data-tab-type="scroll" 존재
- [필수] data-tab-content 속성값은 반드시 고유해야 하며, 연결될 .c-tab__content 요소의 id와 일치
앵커 탭 - .c-tab--main-sticky
- 페이지 최상위에 존재 (.c-tab--main-switch가 있으면 바로 하위에 존재)
앵커 탭 - article 내에 추가로 존재
- 특정 영역 예를들면, l-article 요소 안에 앵커탭이 존재해야 될 경우 아래 예시와 같이 사용.
- 해당 탭에 대한 URL 생성해야 되다면, '특정 영역으로 스크롤 이동하는 URL 생성' 문서 참고
일반 탭(switching, 탭 인 탭) - 공통
- [필수] .c-tab 요소에 data-tab-type="switch" 존재
- [필수] data-tab-content 속성값은 반드시 고유해야 하며, 연결될 .c-tab__content 요소의 id와 일치해야 합니다.
- [선택] .c-tab__item 클릭 시 해당 요소의 data-custom-anchor 값과 일치하는 ID를 가진 영역으로 스크롤 이동하는 기능 추가
예시 : 현재 페이지에 있는 API 탭 버튼에 적용됨.(data-custom-anchor="#test--api-switching-position")
일반 탭(switching, 탭 인 탭) - .c-tab--main-switch
- 페이지 최상위에 존재하는 일반 탭
일반 탭(switching, 탭 인 탭) - 라운드 형태
- 가로 스크롤 필요한 경우 .l-article__inner 요소에 l-article__inner--mo-gutter 클래스는 없어야함.
- 스크롤이 있는 .tab__list 요소에 data-active-scroll-center 속성을 추가하면 탭이 활성화될 때 해당 탭이 가운데로 이동함.
- 정렬 기준은 아래와 같음.
기본 중앙 정렬 영역 초과 시 좌정렬 (탭 스와이프), 단 USP에서는 좌정렬 - 탭 버튼 왼쪽 정렬 : .c-tab__list에 c-tab__list--left 클래스 추가
일반 탭(switching, 탭 인 탭) - 중첩
- 아래와 같이 기존 탭 마크업을 중첩되게 처리하면 됨.
- (2026. 03. 27 기준) 아래 닷 형태 탭 버튼은 디자인 템플릿에 없어 임시로 추가.
스와이퍼 슬라이드 - 공통 사항
- 개별 js에서 호출 필요.(예시 : content-v2.js > PV.SwiperManager 참고)
- 디자인 가이드(2026. 03. 31 기준) : 디자인에 pagenation 사용되면 양 옆 navigation 사용 금지
- 접근성 고려하여 가능한 무한 슬라이드는 지양하는 것이 좋음.
즉, 일시정지/재생 버튼(.c-swiper__play-and-stop-button-wrap 요소)은 가급적 사용하지 않아야함. - 활성화된 슬라이드의 비디오 리셋 후 자동 재생 필요한 경우 .swiper-container-wrap 요소에 data-video-auto-reset="true" 추가
-
전체 공통소스(lg.common.js 5095번째 줄)에서 개입하는 웹 접근성 처리 로직 모두 제거(swiper-ally-custom 클래스 추가하여 상쇄함.) 후 커스텀 처리 함.
이유 : 신규 템플릿 UI가 닷컴 슬라이드 형태와 달라서 PC/MO에서 초점 이동에 문제가 있었음. - 주요 접근성 커스텀 처리 내용
- 화면에 완전히 보이는 슬라이드에만 초점 이동이 되도록 처리(화면에 걸쳐 있는 슬라이드는 초점 이동 제외)
- 자동 재생의 포함된 경우 접근성 문제로 컨트롤이 가장 먼저 초점 잡히도록 처리 함.
스와이퍼 슬라이드 - 탭 버튼과 슬라이드 연동 형태
- width, aspect-ratio 값을 추가해야 모바일에서 레이아웃이 깨지는 현상이 발생하지 않음.
- 자동 재생/일시 정지 버튼 구현 안되어 있음.
- 기본적으로 화면에서 사라진 영상은 초기화 처리 됨(영상 URL 끝에 #t=1.5 와 같은 값이 있는 경우 해당 값 기준으로 초기화 됨).
- 활성화된 슬라이드의 비디오 리셋 후 자동 재생 필요한 경우 .synced-tab-slider 요소에 data-video-auto-reset="true" 추가
- 슬라이드 안에 비디오가 꽉 찰 경우 --full-video-height-pc, --full-video-height-mo 값 추가 필요하며,
.c-responsive-video를 absolute로 띄울 경우 해당 속성 지우고 높이 값 따로 설정하기 - data-slides-loop : 슬라이드 무한 반복 여부
- data-slides-per-view : PC에서 한 화면에 보이는 슬라이드 개수
- data-slides-per-view-mo : 모바일에서 한 화면에 보이는 슬라이드 개수
- data-column-gap : PC에서 슬라이드 간 간격
- data-column-gap-mo : 모바일에서 슬라이드 간 간격 (vw 단위 사용 가능)
특정 버튼 클릭시 원하는 영역으로 스크롤 이동 및 특정 행위 추가
- 버튼에 있는 data-scroll-trigger와 이동할 영역에 있는 data-scroll-destination를 연결하면 버튼 클릭시 해당 영역으로 이동.
- PV.initScrollTriggers는 개별 페이지에서 호출.
- 구체적인 사용법은 common.js > initScrollTriggers 함수 작동 원리 이해 필요함.
토글 - 통 이미지 형태
- 기본 펼침 상태 : .c-img-accordion 요소에 c-img-accordion--open 클래스 추가
토글 - 트리거 버튼 유지되는 이미지 형태
- c-toggle--img-only 클래스 추가
- --close-height에 각각 설정하여 높이 조절 필요
특정 영역들을 펼치는 기능 - 공통
- .c-custom-accordion__area 요소에 data-use-a11y="false"가 있으면 해당 요소는 마우스/키보드 등으로 접근할 수 있음.
- 펼쳤을 때 원하는 위치로 스크롤 이동하는 방법 :
.c-custom-accordion__btn : data-expand-scroll-target 속성값 지정.
스크롤 이동하려는 요소 : data-expand-scroll-dest 속성값 지정하고 해당 요소에 아래와 같이 CSS 스크롤 위치 값 개별 조정 필요.
scroll-margin-top: calc(var(--header-height) + var(--sticky-main-switch-height) + var(--sticky-main-sticky-height));
Q&A
-
답변 고객님의 가전 구독 계약 기간 중 아래와 같은 상황에서 요금 외 추가 비용이 발생할 수 있습니다.
1. 설치 시: 기본 설치비는 면제이나, 특수 타공이 필요한 제품의 경우에는 추가 설치비가 발생할 수 있습니다.(제품군: 정수기, 식기세척기, 전기레인지, 에어컨)
2. 이전 설치 시: 이전 설치 필요 시 철거비, 운송비, 재설치비가 발생할 수 있습니다.(제품마다 이전 설치 가능 여부 및 비용이 상이하므로 이전 설치 접수 시 콜센터로 문의 부탁드립니다)
-
답변 고객님의 가전 구독 계약 기간 중 아래와 같은 상황에서 요금 외 추가 비용이 발생할 수 있습니다.
-
답변 2. 이전 설치 시: 이전 설치 필요 시 철거비, 운송비, 재설치비가 발생할 수 있습니다.(제품마다 이전 설치 가능 여부 및 비용이 상이하므로 이전 설치 접수 시 콜센터로 문의 부탁드립니다)
모달 및 튤팁 (26.03.26 디자인 템플릿에 없어 임시 반영)
- LG 닷컴 사이트 전체 공통 소스(lg.common.js) 활용하고 있음.
구매 금액대별 멤버십 포인트
3월 25일부터 다운 가능합니다
멤버십 포인트 활용 방법
- 멤버십 포인트는 LG전자 홈페이인트는 LG전자 홈페이지 인트는 LG전자 홈페이지 인트는 LG전자 홈페이지지에서
- 멤버십 포인트는 LG전자 홈페이인트는 LG전자 홈페이지 인트는 LG전자 홈페이지 인트는 LG전자 홈페이지지에서
특정 영역으로 스크롤 이동하는 URL 생성 방법
- 사용 방법은 scrollToElementFromUrl 함수 jsDOC 참고 바라며, 아래 사용 예시 참고.
- 일반적인 형태 예시
- 기본 형태 : 요소에 data-scroll-target="test--reqw123" 추가 후 URL 끝에 ?scroll-target=test--reqw123 추가
- 탭 활성화 : .c-tab__button에 data-scroll-target="switch-tab-2depth-content-02" 추가 후 URL 끝에 ?scroll-target=switch-tab-2depth-content-02 추가
- 2depth sticky 영역 URL 생성 : URL에 ?scroll-target-custom=test--2depth-area-01 추가시 해당 영역으로 스크롤 이동. content.js > PV.scrollToElementFromUrl 참고.
- 스크롤하기 전에 특정 행위 추가 : URL에 ?scroll-normal-product=MD09951827 추가시 해당 제품으로 스크롤 이동. content.js > PV.scrollToElementFromUrl 참고.
타이머
- 타이머는 디자인 컴포넌트가 없어서 개별적으로 스타일 구현 필요
- 특가 종료까지
플로팅 버튼
- 우측 하단 플로팅 버튼 스타일 참고. js로 처리한 것은 없음.
- 우측 하단에 있는 AI 버튼 위에 위치 되도록 설정
- iOS/AOS 웹/앱 모두 체크 완료
일시불/구독 제품군 - 일반(타임딜 포함)
- product-api-v2.js 파일 필요. 실시간 반영이 아닌 새로고침해야 변경 사항 확인 가능.
- 제품 카드 안에 버튼 2~3개 인 경우(예: 일반배관/매립배관 또는 스탠드형/벽걸이형(일반)/벽걸이형(벽밀착)), 제품 카드 안에 하나가 품절되면 남아 있는 제품 정보가 자동 반영되도록 처리
- 구독 제품에서 구독 케어 서비스는 자동으로 반영되도록 처리
- 일시불/구독 제품 URL은 API에 있는 정보 끌어와서 자동 반영되도록 처리
- 강제 품절 처리는 FORCE_SOLD_OUT_MD_IDS 변수 사용 관련된 로직이 있으나 개별 페이지에 반영되도록 개선 필요.
- 타임딜 제품 - 재고 수량/ 품절 로직은 퍼블 안내서 > 타임딜 제품 재고 수량/품절 처리 로직 분석 참고
- 로컬 환경에서 직접 테스트할 수 있음. #useMockData 값을 true, mockDatabase 값이 더미 데이터 적용.
- 더보기 기능 활용시 개별 js 파일에서 PV.initializeSequentialLoadMore(고유한 클래스명, 보여질 제품수) 호출.
예) PV.initializeSequentialLoadMore('j-api-product-view-more', 8); - 제품 카드 커스텀 가능한 영역 필요시 .c-product__custom-container 추가하여 작업. 해당 영역 위치 이동은 CSS order 속성 활용 필요.
- 할인율 배지는 0%이면 존재 의미가 없으므로 나오지 않게 처리 함.
일시불 제품 : 큰 세로형
일시불 제품 : 작은 세로형
구독 제품 : 큰 세로형
-
LG 퓨리케어 오브제컬렉션 정수기(맞춤 lite, 냉온정) 제품바로가기
- 첫구독 10만P
- 12개월 반값할인
- 프로모션 한정 10만P
- 리뷰 시 3만P 추가
- 멤버십 5만P
구독 제품 : 작은 세로형
-
LG QNED TV (스탠드형) 제품바로가기
LG QNED TV (스탠드형) 제품바로가기스탠드형 LG QNED TV 벽걸이형(일반) 제품바로가기벽걸이형(일반) LG QNED TV 벽걸이형(벽밀착) 제품바로가기벽걸이형(벽밀착)
- 첫구독 10만P
- 12개월 반값할인
- 프로모션 한정 10만P
- 리뷰 시 3만P 추가
- 멤버십 5만P
개별 커스텀 가능한 영역 -
LG 퓨리케어 오브제컬렉션 얼음정수기 제품바로가기
- 첫구독 10만P
- 12개월 반값할인
- 프로모션 한정 10만P
- 리뷰 시 3만P 추가
- 멤버십 5만P
-
LG 퓨리케어 오브제컬렉션 정수기(맞춤 출수, 냉온정) 제품바로가기
- 첫구독 10만P
- 12개월 반값할인
- 프로모션 한정 10만P
- 리뷰 시 3만P 추가
- 멤버십 5만P
-
LG 퓨리케어 오브제컬렉션 얼음정수기 제품바로가기
- 첫구독 10만P
- 12개월 반값할인
- 프로모션 한정 10만P
- 리뷰 시 3만P 추가
- 멤버십 5만P
가로형
타임딜 제품 (data-prdvalue 값을 타임딜 진행중인 MDID로 변경 필요)
번들 할인 제품
- 4월 통프(ALL NEW 세일)에서 활용하기 위해 2026.04.05 추가.
- 2026.04.02 최초 작업 요청 왔으며, 2026.04.06 기준 관련 API 명세는 아래와 같음.
- pdp 내, 노출되는 번들 제품만이 리턴
- obsOriginalPrice - 원가 / obsSellingPrice - 판매가 / bundleDiscountPrice - 번들 적용된 할인가 / bundleDiscountAmount - 제품의 번들 할인액 / modelStatusCode - 품절 상태(ACTIVE일 경우 정상) / smallImageAddr - 제품 이미지 경로
일시불/구독 제품군 - 랭킹
- prod 환경에서만 확인할 수 있음.
- ranking-api.js 필요. 실시간 반영이 아닌 새로고침해야 변경 사항 확인 가능.
- content.js > handleRankingApiLoaded 함수 필요.
- 더보기 버튼 누르고 다른 페이지로 이동 후 다시 뒤로가기로 돌아왔을 때 더보기 버튼 활성화 로직 필요시 content.js > j-normal-ha-best-ranking-more-btn-clicked, j-normal-subscription-best-ranking-more-btn-clicked 관련 코드 참고하여 작업 필요.
- 로컬 환경에서 직접 테스트할 수 있음. #useMockData 값을 true, MOCK_DATA 값이 더미 데이터 적용.
- template 태그를 활용하여 javascript와 html 관심사 분리
가전제품
구독 제품
홈스타일 제품 - 일반
- prod 환경에서만 확인할 수 있음.
- 2025. 12. 12 LG HOME WEEK 앵콜 빅프로모션에 최초로 적용됨.
- home-style-api.js 필요. 실시간 반영이 아닌 새로고침해야 변경 사항 확인 가능.
- 기본 일시불/구독 제품 API의 마크업과 스타일을 대부분을 동일하게 활용했고 스크립트도 유사한 형태로 반영함.
- c-product__custom-container 영역 추가하여 개별 커스텀 가능.
큰 세로형
-
캄포미니 4인소파 카우치형_아이보리 제품바로가기
개별 커스텀 가능한 영역
작은 세로형
가로형
홈스타일 제품 - 랭킹
- prod 환경에서만 확인할 수 있음.
- 2026. 2. 2 엘지닷 빅프로모션에 최초로 적용됨.
- home-style-ranking-api.js 파일 필요 필요. 실시간 반영이 아닌 새로고침해야 변경 사항 확인 가능.
- content.js > handleHomeStyleRankingApiLoaded 함수 필요
- 더보기 버튼 누르고 다른 페이지로 이동 후 다시 뒤로가기로 돌아왔을 때 더보기 버튼 활성화 로직 필요시 content.js > homeStyleBestRankingMoreClicked 관련 코드 참고
- 기본 일시불/구독 제품 API의 마크업과 스타일을 대부분 동일하게 활용함.
홈스타일 제품 - 타임딜
- prod 환경에서만 확인할 수 있음.
- home-style-time-deal-api.js 파일 필요. 실시간 반영이 아닌 새로고침해야 변경 사항 확인 가능.
- 해당 API 활용되는 페이지: https://homestyle.lge.co.kr/time-sale
- API 명세서는 CNS측으로 부터 전달 받은 /doc/home-style-time-deal-and-best-ranking-api-doc.md 파일 참고
- 기본 일시불/구독 제품 API의 마크업과 스타일을 대부분을 동일하게 활용함.




















.jpg)








