mir.pe (일반/어두운 화면)
최근 수정 시각 : 2024-11-03 19:30:14

프레임(HTML 태그)

iframe에서 넘어옴
파일:Framing Link 예제.png
개드립넷
1. 개요2. 장점3. 단점
3.1. 프레임 구조의 장점이 묻혀버린 이유
4. HTML5 규격에서 제외되다5. iframe6. 관련 문서

1. 개요

{{{#!syntax xml
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>Frameset Example</title>
</head>
<frameset rows="15%,*" border="0">
<frame src="top.html" name="top" scrolling="no" noresize>
<frameset rows="1*" cols="15%, *" border="0">
<frame src="left.html" name="left" scrolling="yes" noresize>
<frame src="main.html" name="main" scrolling="yes" noresize>
</frameset>
<noframes>
<p>이 페이지를 보려면, 프레임을 볼 수 있는 브라우저가 필요합니다.</p>
</noframes>
</frameset>
</html>
}}}
1번 줄은 프레임셋을 위한 HTML 4.01의 DTD다. DTD의 개념이 보급되지 않던 시절에는 이것이 생략되고 바로 <html>부터 시작하는 경우가 많았다. 어쨌든 대략 아래와 같은 모양으로 나타난다.
Frameset Example
top.html
left.html main.html

이런 식으로 복수의 웹 페이지가 구획별로 나뉘어서 동시에 표시되게 하는 태그이다. 물론 위의 그림은 진짜 프레임이 아니라 대충 테이블로 모양만 구현해 놓은 것이다.

w3schools.com의 프레임 태그 관련 설명

1990년대에서 2000년대 사이 인터넷에서 개인 홈페이지 열풍이 불어 우후죽순처럼 수많은 개인 홈페이지가 쏟아져 나오던 시절이 있었는데 당시 많은 홈페이지가 이런 형태로 되어 있었다. 이를테면 위쪽이나 왼쪽을 조금 잘라내 메뉴 부분으로 쓰고 나머지 부분에 내용이 나오게 하는 식이었는데 이를 위해 메뉴 부분용 HTML 문서를 따로 만들어 놓고 그 메뉴용 문서에 사이트맵을 링크해서 썼다.

지금은 사라졌지만 엔하위키 미러의 1999년 버전( 아카이브)도 그 당시의 풍조를 재현하여 프레임 형태로 만들어져 있었다. 다만, 이쪽은 진짜 프레임 태그를 쓴 건 아니고 <div> 태그와 CSS를 이용하여 프레임처럼 보이게 흉내를 낸 것이다.

이런 특성 때문에 만약에 프레임이 가리키는 문서가 순환 참조면 인셉션마냥 프레임이 무한히 반복되는 현상이 일어나지 않을까 생각될지도 모르겠지만 브라우저에서 이런 경우가 생길 것을 대비하여 반복되지 않게 하거나 반복되더라도 몇 번째에서 중지되는 처리를 하고 있다.

2. 장점

이 방식은 다음과 같은 장점이 있어 그 당시 많이 쓰였다.

3. 단점

그러나 단점도 있었는데, 프레임이 지원되지 않는 브라우저에서는 당연히 표시할 수 없었다. 이런 경우를 대비해 <noframes> 태그가 있다고는 하나 프레임 미지원시 나오는 메시지를 표시하기 위한 태그일 뿐이다. 즉, 프레임이 지원되지 않는 브라우저를 배려하려면 아예 노프레임 페이지를 따로 만들어야 하지만, 그렇게 하느니 아예 처음부터 노프레임으로 만드는 게 낫다.

당시는 프레임이 지원되는 브라우저가 많이 보급된 상황이니 이 문제는 차치하고 넘어가더라도, 또 다른 문제로 이 구조가 접근성과 사용성에 부정적인 영향을 미친다는 지적이 있었다. 프레임 구조로 복수의 페이지를 한 화면에 나타낸다는 것은 곧 한 화면에 표시될 페이지가 둘로 쪼개진다는 것을 의미하기에, 그로 인해 따라오는 다음과 같은 문제들이 있다. 그 외에도 프레임 구조가 갖는 비효율성은 많다. 결정적으로 프레임 구조가 가지고 있던 장점도 CSS jQuery 등의 등장으로 인해 거의 묻혀버렸다.

3.1. 프레임 구조의 장점이 묻혀버린 이유

저 위의 '장점' 섹션에 서술한 장점을 반박하는 형식으로 작성되었다.

4. HTML5 규격에서 제외되다

이러한 이유로 W3C에서는 프레임 구조의 사용을 지양할 것을 권고하면서 프레임 구조로 된 웹 사이트는 점점 줄어드는 추세로 돌아섰고 HTML5 규격에는 아예 빠져버렸다. 다만 아직 프레임 구조로 된 웹 사이트들이 남아있기 때문에 브라우저에는 여전히 지원하고 있다. 구글에 '이 페이지를 보려면 프레임을 볼 수 있는 브라우저가 필요합니다'라고 검색해 봐도 꽤 나온다(...).

하지만 이런 사이트들을 들어가 보면 높은 확률로 오래 전에 만든 사이트들이고, 오늘날에는 프레임 구조가 거의 사장된 상태라 장래에는 웹 브라우저에서도 프레임셋 태그(<frame>, <frameset>, <noframes>)를 아예 지원하지 않게 될 수도 있다.

이미 폐기된 태그를 브라우저에서 지원 중단시킨 선례가 존재한다. <basefont> 태그가 그 예. 말 그대로 페이지에서 기본으로 표시될 글꼴을 지정하는 태그였는데 사용 빈도가 그다지 높지 않았고 CSS가 보급된 이후로는 점점 사장되어 갔다. Internet Explorer에서는 9을 끝으로 지원이 중단되어 버렸고 다른 웹 브라우저도 마찬가지로 지원을 중단하면서 현재 어느 브라우저에서도 <basefont> 태그를 지원하지 않는다.

5. iframe

iframe은 inline frame의 줄임말이다. <iframe>은 문서 전체가 프레임인 게 아니라 문서 안에 박스형으로 프레임을 넣을 때 쓴다. 이 태그 HTML5에서도 계속 지원된다. 물론 iframe도 남용하면 웹 접근성이 저하되는 건 똑같다.
<iframe
src="https://www.facebook.com/plugins/video.php?href=https://www.facebook.com/mbckpopshow/videos/3354735674627506"
width="560" height="314" scrolling="no" frameborder="0" allowfullscreen="true"
allow="clipboard-write; encrypted-media; picture-in-picture; web-share"
sandbox="allow-same-origin allow-popups allow-scripts">
</iframe>
}}}
{{{#!html
<iframe src="https://www.facebook.com/plugins/video.php?href=https://www.facebook.com/mbckpopshow/videos/3354735674627506" width="560" height="314" scrolling="no" frameborder="0" allowfullscreen="true" allow="clipboard-write; encrypted-media; picture-in-picture; web-share" sandbox="allow-same-origin allow-popups allow-scripts"></iframe>
</iframe>}}}
이런 식으로 영상 등을 첨부할 수 있다.

Safari에서는 실제 지정된 영역에 상관 없이 <iframe>내용 전부를 뿌리는 문제가 있다. 특히 가로가 좁은 iPhone에서 이 문제가 두드러진다. 이 때문에 Safari 한정으로 <iframe>을 다른 블록 태그로 감싸줘야 하는 등 예외 처리를 해 줘야 한다.

6. 관련 문서



[1] 구글 크롬의 경우 프레임 구조로 된 페이지에서 마우스 오른쪽 버튼을 눌러 보면 '페이지 소스 보기'와 '프레임 소스 보기'가 따로 나오는데 페이지 소스 보기를 하면 프레임 구조의 소스가 나오고 프레임 소스 보기를 하면 그 프레임 안에 있는 페이지의 소스가 나온다. [2] 나모 웹에디터로 만든 페이지에서 발견되는 현상이다. 물론 소스 코드를 고쳐서 바꿀 수 있다. [3] 악성코드나 통신 도중의 HTTP 요청 변조로 인해 본래 페이지와 유사하게 만든 가짜 페이지로 끌여들여 개인정보를 빼내는 수법 [4] 하나라도 https로 안 해놨다면 경고를 띄우거나 로딩 요청을 씹어버린다. [5] HTML5에서는 deprecated 되어서 CSS로 대체하는 것이 원칙이나, YouTube를 포함한 대부분의 사이트에서는 아직까지도 널리 사용되고 있다. [6] 네이버 스마트에디터 2.0 버전은 이 태그를 날려버리는 버그가 있어서 네이버에 올린 유튜브 영상은 전체화면으로 전환할 수 없다. 스마트에디터 ONE은 이런 버그가 없지만 기존에 작성한 글들은 여전히 전체화면이 안 된다.

파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는
문서의 r53
, 번 문단
에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
문서의 r53 ( 이전 역사)
문서의 r177 ( 이전 역사)

분류