프레임셋 문서 구조 - by. UXKM
- Publishing
- HTML
- HTML 문서구조
- 프레임셋 문서 구조
요약 설명
프레임셋(frameset)은 HTML4에서 사용되던 문서 분할 방식으로,
하나의 브라우저 창 안에 여러 개의 HTML 문서를 나누어 동시에 표시하기 위해 사용되었습니다.
<frameset>
요소는 <body>
를 대체하며,
<frame>
태그를 통해 각 영역에 다른 문서를 로드합니다.
하지만 프레임셋은 접근성 저하, 검색엔진 비호환, 모바일 미지원, 복잡한 유지보수 등의 이유로
HTML5에서 공식적으로 폐지(deprecated) 되었으며, 더 이상 사용이 권장되지 않습니다.
현대 웹 개발에서는 <iframe>
이나 컴포넌트 기반 SPA 구조,
CSS 레이아웃 기법(Flexbox, Grid) 등이 대체 기술로 사용됩니다.
주요 특징
-
문서 분할
한 페이지를 여러 개의 영역(프레임)으로 분할하여 각각 다른 HTML 문서를 표시합니다.
-
독립적 로딩
각 프레임은 개별 URL을 가지며, 독립적으로 로드되어 콘텐츠를 보여줍니다.
-
<body> 대체
<frameset>
요소는 <body>
요소를 대체하며 동시에 사용할 수 없습니다.
-
링크 타깃 지정
프레임 간 상호작용을 위해 <a target="프레임이름">
형식을 사용하여 특정 프레임에 링크를 열 수 있습니다.
기본 구조
cols
또는 rows
속성을 사용하여 프레임을 수직 또는 수평으로 분할할 수 있으며,
각 <frame>
요소에는 개별 HTML 파일을 지정하여 콘텐츠를 불러옵니다.
HTML5 에서 프레임셋이 폐지된 이유
접근성 문제 (Accessibility Issues)
-
스크린 리더 지원 부족
프레임은 서로 독립적인 문서로 구성되어 있기 때문에, 보조 기술(예: 스크린 리더)은 전체 페이지 구조를 인식하기 어렵습니다.
-
프레임 간 문맥 전달 실패
사용자 입장에서는 프레임이 논리적으로 연결되어 있지만,
보조기기는 이를 별개의 페이지로 해석하여 내용 간 흐름을 이해하지 못합니다.
-
키보드 포커스 제어 어려움
프레임 내부로 포커스를 이동시키는 것이 까다롭고 예측 불가능하여 키보드 사용자에 불리합니다.
사용자 경험 저하 (UX Issues)
-
뒤로 가기 버튼 오류
프레임 내 링크 클릭 시 주소(URL)는 변하지 않아,
사용자가 브라우저의 ‘뒤로 가기’를 눌러도 원래 페이지로 돌아가지 않습니다.
-
스크롤 혼란
프레임마다 스크롤이 생기면, 전체 페이지가 아닌 부분 스크롤로 인해 사용자가 혼란을 느끼기 쉽습니다.
-
모바일 대응 불가
프레임셋은 고정형 레이아웃에 기반하기 때문에,
반응형 웹 디자인에 적합하지 않으며 모바일 브라우저와의 호환성도 매우 낮습니다.
검색 엔진 최적화(SEO)에 불리
-
프레임 내부 문서 별도 인식
검색 엔진은 프레임 안의 콘텐츠를 별도의 문서로 인덱싱하거나 전혀 인식하지 못할 수 있습니다.
-
문서 구조 파악 실패
메인 페이지 자체에는 내용이 없고 프레임만 존재하므로,
크롤러가 페이지의 실질적 주제나 콘텐츠를 파악하지 못합니다.
유지보수성과 개발 효율성 저하
-
복잡한 문서 구조
단일 페이지 안에 여러 개의 HTML 파일을 로드하므로, 수정 시 여러 파일을 동시에 수정해야 하는 불편함이 있습니다.
-
프레임 간 상호작용 어려움
JavaScript로 프레임 간 통신을 하려면
parent
, top
, frames[]
등의 접근 방식이 필요하여 코드가 복잡하고 취약해집니다.
-
페이지 단위 관리 어려움
프레임 기반 문서는 페이지 단위로 분리되어 있어서, 라우팅·분석·로그 추적이 불편합니다.
대체 기술의 등장
-
<iframe>
인라인 프레임(<iframe>
)으로 문서 내의 특정 영역에 외부 콘텐츠를 삽입할 수 있도록 해줍니다.
보통 광고, 외부 위젯, 지도, 동영상 삽입 등 특정 목적에 국한되어 사용됩니다.
-
SPA (Single Page Application)
Vue, React, Angular와 같은 프레임워크는 DOM을 직접 조작하지 않고,
데이터 상태 변화에 따라 동적으로 콘텐츠를 렌더링하는 방식으로 동작합니다.
-
CSS Flexbox, Grid
프레임 분할을 사용하지 않더라도, 고정형 또는 반응형 레이아웃을 CSS를 활용하여 충분히 구현할 수 있습니다.