티스토리 뷰

반응형

<audio>

속성
- autoplay: 준비되면 바로 재생

- controls: 제어 메뉴를 표시

- loop: 재생이 끝나면 다시 처음부터 재생

- preload: 페이지가 로드될 때 파일을 로드할지의 지정, 값: none, metadata(기본값), auto

- src: 콘텐츠 url

- muted: 음소거 여부

예제

<body>
    <audio src="https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3" 
            controls
            autoplay
            loop
            muted
            preload="auto"></audio>
</body>

 

<video>

속성
- autoplay: 준비되면 바로 재생 ☞ 요즘은 대부분의 브라우저에서 muted 속성을 같이 사용해야 작동한다.

- controls: 제어 메뉴를 표시

- crossorigin: 가져오기가 cors를 사용하여 수행되어야 하는지 여부, 동일한 출처인지 확인하는 속성, 잘 사용 안 함

- loop: 재생이 끝나면 다시 처음부터 재생

- muted: 음소거 여부

- poster: 동영상 썸 내일 이미지 URL

- preload: 페이지가 로드될 때 파일을 로드할지의 지정, 얼마나 미리 불러올 건지, none, metadata(기본값), auto

- src: 콘텐츠 url

- width: 동영상 가로나비

- height: 동영상 세로 너비

예제

<body>
    <video src="https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.webm"
            controls
            muted
            loop
            poster="./images/heropy.png"
            ></video>
</body>

 

<figure>, <figcaption>

브라우저 입장에서는 텍스트와 이미지에 대한 부가적인 설명 등을 연결되어있다는 것을 알려주기 위한 태그
사용자보다는 브라우저, 검색엔진, 정보통신 보조기 기이 이런 구조를 확인한다. 

 figure: 이미지나 삽화, 도표 등의 영역을 설정

figcaption: 포함되어 이미지나 삽화 등의 설명을 표시

<body>
    <figure>
        <img src="./images/heropy.png" alt="HEROPY">
        <figcaption>HEROPY 이미지 입니다</figcaption>
    </figure>
</body>

 

<iframe>

다른 HTML 페이지를 현재 페이지에 삽입(중첩된 브라우저 콘텍스트(프레임)를 표시)
☞ sandbox속성처럼, 사용 간에 보안상의 문제가 발생할 수 있기 때문에 신중할 필요가 있다.

속성
- name: 프레임의 이름

- src: 포함할 문서의 url

- width: 프레임의 가로나비

- height: 프레임의 세로 너비

- allowfullscreen: 전체 화면 모드 사용 여부

- frameborder: 프레임 테두리 사용 여부, 0, 1(기본값), 대게는 0으로 없앤다.

- sandbox: 보안을 위한 읽기 전용으로 삽입, 다 막고 아래의 값들로 사용할 것들을 지정.
allow-from: 양식 제출 가능, allow-script: 스크립트 실행 가능, allow-same-origin: 같은 출처(도메인)의 리소스 사용 가능

 

예제 1

<body>
    <p>우리 페이지야!</p>
    <img src="./images/heropy.png" alt="HEROPY">
    <iframe src="https://tistory.com"
    frameborder="0"
    width="70%"
    height="400px"
    style="border: 4px solid red"
    sandbox></iframe>
</body>

 

예제 2

<body>
    <iframe width="1280" height="720" src="https://www.youtube.com/embed/CfPxlb8-ZQ0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</body>

 

<canvas>

canvas API이나 WebGL API를 사용하여 그래픽이나 애니메이션을 랜더링, 영역을 설정해서
☞ javascript로 그린다. html, css는 안된다.

속성
- width: 가로나비

- height: 세로 너비

예제

<body>
    <canvas id="canvas" width="200" height="150"></canvas>
    <script>
        const cavas = document.getElementById('canvas');
        const ctx = canvas.getContext('2d');
        ctx.fillStyle = 'rgb(200, 0, 0)';
        ctx.fillRect(10, 10, 50, 50);
        ctx.fillStyle = 'rgba(0, 0, 200, 0.5)';
        ctx.fillRect(30, 30, 50, 50);
    </script>
</body>

 

<script>

스크립트 코드를 문서에 포함하거나 참조(외부 스크립트), 자바스크립트를 가지고 오는 코드

속성
- async: 스크립트의 비동기적 실행 여부, src속성 필수, 직접적으로 이 속성을 사용할 경우는 거의 없다.
비동기적? 순차적으로 실행하는 게 아니라 뛰어넘거나 중간에 바뀌는 것

- crossorigin: 별도의 도메인을 사용하는 사이트(CORS)의 오류 로깅을 허용하기 위해 사용

- defer: 문서 파싱(구문 분석) 후 작동 여부, src속성 필수

- src: 참조할 외부 스크립트 url, 포함된 스크립트 코드는 무시됨

- type: MIME 타입, text/javascript(기본값이 자바스크립트이기 때문에 사용할 필요가 없다)

예제 1

- index.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>studying</title>
    <link rel="stylesheet" href="./main.css">
    <script src="./js/main.js"></script>
</head>
<body>
    <div id="my-name" src=>HEROPY!</div>

</body>
</html>

- main.js

const myName = document.getElementById('my-name');
console.log(myName.innerText);

main.js내의 코드가 body내에 id="my-name"이라는 div코드가 있음에도 불구하고 코드를 읽어오지 못한다.
왜냐하면 head태그 내의 script코드가 body태그 내의 div코드 이전에 실행되기 때문이다. 

- index.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>studying</title>
    <link rel="stylesheet" href="./main.css">
</head>
<body>
    <div id="my-name" src=>HEROPY!</div>

    <script src="./js/main.js"></script>
</body>
</html>

 

script태그를 body태그의 맨 아래로 이동할 경우 정상적으로 작동하는 것을 볼 수 있다.

 

- index.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>studying</title>
    <link rel="stylesheet" href="./main.css">
    <script src="./js/main.js" defer></script>
</head>
<body>
    <div id="my-name" src=>HEROPY!</div>
</body>
</html>

script태그를 head태그 내에 그대로 두고 defer라는 속성만 추가했을 경우에도 정상적으로 작동한다.
잘 작동하는 이유는 문서를 다~~ 파싱 한 후에 작동하기 때문이다.

※ 위의 두 가지 경우처럼 물리적으로 script태그를 맨 아래에 두거나, defer 속성을 사용하기도 한다.

 

예제 2

<body>
    <div id="my-name" src=>HEROPY!</div>
    <script>
        console.log('안녕하세요~')
    </script>
</body>

정상적으로 콘솔의 내용이 출력된다.

 

<body>
    <div id="my-name" src=>HEROPY!</div>
    <script src="js/main.js">
        console.log('안녕하세요~')
    </script>
</body>

script태그에 src속성을 추가하니깐 console.log코드가 무시된다. 즉, src속성을 사용하면 script내의 코드들은 무시된다.

 

<noscript>

스크립트를 지원하지 않는 경우에 삽입할 HTML을 정의. 
자바스크립트가 동작하지 않는 브라우저에서는 이런 내용을 실행해주세요~~ 이런 느낌.

-index.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>studying</title>
    <link rel="stylesheet" href="./main.css">
</head>
<body>
    안녕하세요!
    <noscript>
        자바스크립트가 실행하지 않아요.
    </noscript>
</body>
</html>

 

- noscript.html

<!DOCTYPE html>
<html lang="kr">
<head>
    <meta charset="UTF-8">
    <title>No script</title>
</head>
<body>
    <iframe src="./index.html" frameborder="0" style="border: 4px solid red; sandbox"></iframe>
</body>
</html>

 

iframe와 속성 sandbox를 통해서 스크립트를 의도적으로 막았다. 즉, 스크립트가 실행되지 않는 환경을 만들었다.
그렇게 되면 자바스크립트가 실행되지 않아서 <noscript> 태그 내의 부분이 출력된다.

 

반응형
댓글
공지사항