프로그래밍, 코딩, 컴퓨터/html, css, js

HTML Iframe(아이프레임) 사용법

마이데일리 2023. 6. 20. 09:29
반응형

HTML iframe(아이프레임) 는 웹 개발자들이 다른 웹페이지의 내용을 다른 페이지 안에서 보여줄 기능입니다. 비디오, 지도, 소셜 미디어 피드 또는 기타 유형의 외부 콘텐츠를 표시하려는 경우, iframe는 웹 사이트에 원활한 통합을 제공합니다. HTML Iframe(아이프레임) 사용법 및 기본 구조부터 고급 기술까지 자세히 살펴보겠습니다. 

 

[목차]
1. HTML Iframe(아이프레임) 이란?
2. 시작하기 - 기본 iframe 구조
3. iframe 사용자 지정
4. 반응형 iframe 만들기
5. iframe 로드 및 오류 이벤트 처리
6. 상위 페이지와 하위 페이지 간의 통신 제어
7. HTML Iframe(아이프레임) 전체코드
8. 결론 및 의견

 

 

1. HTML Iframe(아이프레임) 이란?

ifram은 웹페이지 내에서 외부 콘텐츠를 표시할 수 있는 사각형 영역을 만드는 HTML 요소입니다. 재생되는 콘텐츠를 페이지의 나머지 부분으로부터 격리시켜 캡슐화된 환경을 제공하므로, iframe은 콘텐츠를 정의하는 "src" 속성을 지정하는 기본 구조를 가지고 있습니다.

 

2. 시작하기 - 기본 iframe 구조

기본 iframe 구조를 만드는 것으로 시작하겠습니다. 다음 코드 스니펫을 HTML 문서에 삽입합니다.

1
<iframe src="<https://www.example.com>"></iframe>
cs

이 예제에는 src 속성이 "https://www.example.com"으로 설정된 iframe 요소가 있습니다. 이렇게 하면 웹페이지의 iframe 내에 지정된 URL의 콘텐츠가 표시됩니다.

 

 

3. iframe 사용자 지정

iframe의 모양과 동작을 사용자 지정하기 위해 추가 특성을 적용할 수 있습니다. 이전 코드 스니펫을 다음과 같이 수정해 보겠습니다.

1
2
<iframe src="<https://www.example.com>" width="500" height="300" frameborder="0"></iframe>
 
cs

여기에 iframe의 크기를 픽셀 단위로 지정하기 위해 width 및 height 속성을 추가했습니다. frameborder="0" 속성은 iframe 주변의 기본 테두리를 제거합니다. 원하는 모양과 느낌을 얻기 위해 다양한 값으로 자유롭게 실험해 보십시오.

 

 

4. 반응형 iframe 만들기

iframe이 다양한 화면 크기와 기기에 맞게 조정되도록 CSS와 관련 단위를 사용할 수 있습니다. 다음과 같이 코드를 업데이트합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<style>
  .responsive-iframe {
    position: relative;
    padding-bottom: 56.25%;
    height: 0;
    overflow: hidden;
  }
 
  .responsive-iframe iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }
</style>
 
<div class="responsive-iframe">
  <iframe src="<https://www.example.com>" frameborder="0"></iframe>
</div>
 
cs

이 예에서는 "responsive-iframe" 클래스를 사용하여 <div> 컨테이너에 iframe을 래핑했습니다. CSS 코드는 반응형 종횡비를 컨테이너에 적용하여 iframe이 비율을 유지하면서 사용 가능한 공간에 적응하도록 합니다.

 

 

5. iframe 로드 및 오류 이벤트 처리

iframe 로드 프로세스 중 또는 오류 발생 시 더 나은 사용자 피드백을 제공하기 위해 JavaScript를 활용할 수 있습니다. 다음과 같이 코드를 업데이트합니다.

1
2
3
4
5
6
7
8
9
10
11
12
<script>
  function handleLoad() {
    console.log("Iframe loaded successfully");
  }
 
  function handleError() {
    console.log("An error occurred while loading the iframe");
  }
</script>
 
<iframe src="<https://www.example.com>" frameborder="0" onload="handleLoad()" onerror="handleError()"></iframe>
 
cs

여기에는 iframe이 성공적으로 로드되거나 오류가 발생할 때 각각 호출되는 두 개의 JavaScript 함수인 handleLoad() 및 handleError()가 추가되었습니다. 요구 사항에 따라 적절한 메시지를 표시하거나 특정 작업을 수행하도록 기능을 자유롭게 수정하십시오.

6. 상위 페이지와 하위 페이지 간의 통신 제어

상위 페이지와 iframe 내의 콘텐츠 간의 통신을 설정하기 위해 postMessage 메서드를 활용할 수 있습니다. 다음과 같이 코드를 업데이트합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
<script>
  function receiveMessage(event) {
    if (event.origin !== "<https://www.example.com>"return// Verify the origin of the message
 
    console.log("Message received: "event.data);
    // Perform actions based on the received message
  }
 
  window.addEventListener("message", receiveMessage, false);
</script>
 
<iframe src="<https://www.example.com>" frameborder="0"></iframe>
 
cs

이 예에서 receiveMessage() 함수는 iframe의 콘텐츠에서 보낸 메시지를 수신합니다. 신뢰할 수 있는 소스에서 온 것인지 확인하기 위해 'event.origin'을 사용하여 메시지의 출처를 확인합니다. 특정 데이터를 처리하고 요구 사항에 따라 적절한 작업을 수행하도록 함수를 수정할 수 있습니다.

 

 

7. HTML Iframe(아이프레임) 전체코드

반응형 iframe과 이벤트 처리를 구현한 HTML 문서입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!DOCTYPE html>
<html>
<head>
  <style>
    .responsive-iframe {
      position: relative;
      padding-bottom: 56.25%;
      height: 0;
      overflow: hidden;
    }
  
    .responsive-iframe iframe {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
    }
  </style>
</head>
<body>
  <div class="responsive-iframe">
    <iframe src="https://chat.openai.com/" width="500" height="300" frameborder="0" onload="handleLoad()" onerror="handleError()"></iframe>
  </div>
 
  <script>
    function handleLoad() {
      console.log("Iframe loaded successfully");
    }
 
    function handleError() {
      console.log("An error occurred while loading the iframe");
    }
 
    function receiveMessage(event) {
      if (event.origin !== "https://www.example.com"return;
 
      console.log("Message received: "event.data);
      // Perform actions based on the received message
    }
 
    window.addEventListener("message", receiveMessage, false);
  </script>
</body>
</html>
 
cs

실행화면

  1. CSS 스타일링: CSS 코드는 반응형 iframe을 위한 스타일을 정의합니다. .responsive-iframe 클래스는 position을 relative로, padding-bottom을 56.25%로 (16:9의 비율을 유지하기 위함), 그리고 overflow를 hidden으로 설정합니다. .responsive-iframe iframe 선택자는 iframe을 absolute로 위치시키고 width와 height를 100%로 지정합니다.
  2. HTML 구조: "class" 속성이 "responsive-iframe"인 <div> 요소는 iframe을 감싸는 컨테이너 역할을 합니다. 이를 통해 iframe이 다양한 화면 크기에 대응하면서도 비율을 유지할 수 있습니다.
  3. iframe 요소: div 컨테이너 내부에 <iframe> 요소를 사용하여 콘텐츠를 임베드합니다. src 속성은 소스 URL을 지정하며, 이 예제에서는 "https://chat.openai.com/"로 설정되어 있습니다. **width**와 height 속성은 iframe의 크기를 결정합니다. frameborder="0" 속성은 iframe 주변의 기본 테두리를 제거합니다. **onload**과 onerror 속성은 각각 iframe 로드와 오류 이벤트를 처리하는 이벤트 핸들러입니다.
  4. JavaScript 함수: handleLoad() 함수는 iframe이 성공적으로 로드되었을 때 호출됩니다. 이 예제에서는 콘솔에 로드 성공 메시지를 기록합니다.

handleError() 함수는 iframe 로드 중 오류가 발생했을 때 호출됩니다. 콘솔에 오류 메시지를 기록합니다.

receiveMessage() 함수는 message 이벤트의 이벤트 핸들러입니다. postMessage 메서드를 통해 iframe 내용에서 전송된 메시지를 수신합니다. 이 코드에서는 메시지의 출처를 확인하고 수신된 메시지를 콘솔에 기록합니다. 받은 메시지에 기반하여 특정 작업을 수행하기 위해 이 함수를 수정할 수 있습니다.

  1. 이벤트 리스너: window.addEventListener() 메서드는 message 이벤트에 대한 receiveMessage() 함수를 이벤트 리스너로 추가합니다. 이를 통해 부모 페이지와 iframe 내용 간의 통신이 가능해집니다.

이 코드는 반응형 iframe, iframe 로딩 및 오류 이벤트 처리, 그리고 부모 페이지와 iframe 내용 간의 통신을 구현한 예제입니다. 소스 URL을 원하는 URL로 변경하고 코드를 사용자의 요구에 맞게 수정할 수 있습니다.

 

 

8. 결론 및 의견

HTML iframe은 외부 콘텐츠를 포함하고 웹 사이트의 기능을 향상할 수 있는 기능 제공합니다. iframe 구현, 모양 사용자 지정, 응답성 보장, 이벤트 처리 및 포함된 콘텐츠와의 통신 설정에 대한 방법을 알아봤습니다. HTML Iframe(아이프레임) 사용법 필요에 맞게 잘 사용하시길 바랍니다. 

 

 

[관련글]

[html, css, js] - HTML5 란? 세부 기능 설명

 

HTML5 란? 세부 기능 설명

HTML5는 웹 개발에 혁명을 일으키며 많은 새로운 기능들을 도입하여 현대적이고 동적인 웹 애플리케이션을 구축할 수 있도록 지원합니다. HTML5는 이전 버전인 HTML4, XHTML 등의 단점을 보완하며, 새

2toy.tistory.com

[html, css, js] - HTML 이메일 뉴스레터 디자인

 

HTML 이메일 뉴스레터 디자인

디지털 커뮤니케이션의 세계에서 뉴스레터는 계속해서 기업과 조직이 청중과 소통할 수 있는 강력한 도구입니다. 따라서, 뉴스레터를 디자인할 때는 HTML 이메일 마크업 기술을 신중하게 고려해

2toy.tistory.com

[html, css, js] - CSS 란? 색상, 배경, 반응형 디자인

 

CSS 란? 색상, 배경, 반응형 디자인

CSS(Cascading Style Sheets)는 일반 HTML 문서를 시각적으로 놀랍고 매력적인 웹 페이지로 변환하는 데 중요한 역할을 합니다. CSS는 개발자가 웹 콘텐츠의 프레젠테이션 및 레이아웃을 제어할 수 있도록

2toy.tistory.com

[html, css, js] - CSS 레이아웃, Content, Padding, Border, Margin

 

CSS 레이아웃, Content, Padding, Border, Margin

CSS 레이아웃은 웹 페이지에서 요소의 구조, 크기 및 위치를 정의하는 웹 개발의 기본 개념입니다. 상자 모델을 이해하는 것은 잘 디자인되고 반응이 빠른 레이아웃을 만드는 데 중요합니다. 이

2toy.tistory.com

[html, css, js] - CSS grid 그리드 기초 및 활용 방법

 

CSS grid 그리드 기초 및 활용 방법

CSS Grid는 개발자가 정교한 그리드 기반 디자인을 만들 수 있는 강력한 레이아웃 시스템입니다. 이 블로그 게시물에서는 CSS 그리드의 기본 사항을 살펴보고 그리드 레이아웃을 만드는 방법을 시

2toy.tistory.com

반응형