모바일 광고 컨테이너 오버플로우 – 하우스 광고 RTL/LTR 레이아웃 불일치
안녕하세요
Horizon 테마와 공식 House Ads 플러그인을 사용 중이며, Discourse 디자인 시스템과 호환되는 CSS 변수와 레이아웃 규칙을 사용하여 광고를 스타일링하는 사용자 정의 컴포넌트를 만들었습니다.
문제: 모바일에서 광고 컨테이너가 뷰포트에서 벗어나는 문제 (LTR 및 RTL 모두 발생)
- 테마: Horizon (기본 테마나 Material等其他 테마에서는 재현되지 않음)
- 플러그인: House Ads + 사용자 정의 컴포넌트
- 기기: 모바일
- 동작:
- **사이트 언어 = 영어 (LTR)**인 경우 →
.ad-container의 왼쪽 가장자리가 잘림 (왼쪽으로 오버플로우). - **사이트 언어 = 페르시아어/아랍어 (RTL)**인 경우 → 오른쪽 가장자리가 잘림 (오른쪽으로 오버플로우).
- **사이트 언어 = 영어 (LTR)**인 경우 →
- 기대되는 동작: 광고 카드가 뷰포트 안에 완전히 포함되어 포스트 콘텐츠 너비에 맞춰 중앙 정렬되거나 정렬되어야 합니다.
제 CSS 코드:
요약
:root {
/* Core colors */
--ad-bg: var(--secondary);
--ad-border: var(--highlight);
--ad-text: var(--primary);
/* Label */
--ad-label-bg: var(--highlight);
--ad-label-text: var(--danger);
}
.house-creative {
margin-left: 0 !important;
}
.house-creative a.between-posts-ad {
display: block;
text-decoration: none;
color: inherit;
background-color: transparent;
font-family: inherit;
}
/* ===============================
Card Container
=============================== */
.house-creative .ad-container {
direction: rtl !important;
text-align: center !important;
margin-bottom: 20px;
padding: 10px 5px;
max-width: calc(#{$topic-avatar-width} + #{$topic-body-width} + (#{$topic-body-width-padding} * 2)); background-color: var(--ad-bg);
border: 2px solid var(--ad-border);
border-radius: 10px;
box-sizing: border-box;
line-height: 1.7;
color: var(--ad-text);
transition:
background-color 0.3s ease,
border-color 0.3s ease,
box-shadow 0.3s ease,
transform 0.2s ease;
}
.house-creative a.between-posts-ad:hover .ad-container {
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
}
.house-creative .ad-label {
display: inline-block;
text-align: center;
margin-bottom: 6px;
padding: 4px 12px;
font-size: 0.85em;
font-weight: 700;
text-transform: uppercase;
background-color: var(--ad-label-bg);
color: var(--ad-label-text);
border-radius: 999px;
}
.house-creative .ad-container .ad-text {
margin: 0;
font-size: 1rem;
line-height: 1.9;
color: var(--ad-text);
direction: rtl ;
text-align: center !important ;
unicode-bidi: isolate;
}
@media (max-width: 480px) {
.house-creative .ad-container {
direction: rtl !important;
text-align: center !important;
padding: 16px 12px;
width: 100%;
max-width: 100%;
}
}
