찾다
웹 프론트엔드H5 튜토리얼HTML5의 대화 상자 요소에 대한 자세한 설명(코드 예)

이 문서는 HTML5의 대화 상자 요소에 대한 자세한 설명(코드 예제)을 제공합니다. 이는 특정 참조 값을 가지고 있으므로 도움이 될 수 있습니다.

대화 상자(모달 상자, 플로팅 레이어라고도 함)는 웹 프로젝트에서 사용자 상호 작용의 중요한 부분입니다. 가장 일반적인 상자는 js의 alert(), verify()이지만 이 대화 상자는 프레임이 아름답지 않고 스타일을 맞춤화할 수 없기 때문에 개발 과정에서 일반적으로 자신의 필요에 따라 휠을 제작하거나 타사를 사용합니다. alert(),confirm(),但是这个对话框的不美观,也不能自定义样式,所以在开发的过程中,一般根据自己自己的需求造轮子或者使用第三方的。

对话框的组成

常见的弹出框形式:

位置:屏幕的左上角,右上角,左下角,右下角,垂直居中等

大小:定宽定高,定宽不定高,不定宽不定高等

开发中的对话框形式就是位置和大小随机组合的一种情况。

但是有一种情况(不定宽高的垂直居中)不易实现(可以使用display:table或css3的translate或flex实现),具体可参考水平垂直居中布局

上面的对话框包含内容的容器,还有一个是对话框下面的遮罩层(mask),遮罩层是用户触发弹出框后,形成的一个对话框与页面主体的分割图层,它的存在可以给用户一个更明显的视觉差效果,同时也起到避免用户触发对话框后的其他不必要的页面主体操作,从而产生更有的用户体验。

存在问题

虽然,有很多对话框的轮子供我们选择,但是我们面临着各种各样的问题。

  • 到底选择哪一种对话框(对于有选择综合症的人来说一个头疼的问题)

  • 可用性(api的简单与否,是否依赖了其他第三方的库)

  • 可扩展性

  • 浏览器的兼容性支持

那么,有没有一个简单的方法来做做一个对话框呢?当然有,我们可以使用HTML5的 dialog 元素。

HTML5(dialog)

<dialog>
    <h2 id="Hello-world"> Hello world.</h2>
</dialog>

很简单,我们使用上面的代码就可以做一个弹出内容为‘Hello world.’ 的对话框。

控制对话框的显示/隐藏也很容易,添加 open 属性表示显示,去除为隐藏。当然,我们也可以通过DOM接口来控制 dialog 的显隐(show(), close())

对话框下面的遮罩层,我们可以使用 ::backgrop 伪元素,而它的激活,我们需要使用 showModal() 这个DOM的API,::backgrop 的特性是它的位置在dialog之下,在任何 z-index 之上。

使用 showModal() 不仅可以让遮罩层显示,dialog容器也显示,所以用到 ::backdrop 的时候,可以用 showModal() 代替 show() 这个API;如果按键盘 ESC 键将关闭弹出层,当然你一可以使用 close() 这个DOM API。

我们可以设置 ::backdrop 这个图层为半透明图层,代码如下:

dialog::backdrop {
  background-color: rgba(0, 0, 0, 0.75);
}

除了我们常见的提示信息的弹出层外,还有一类比较使用的是带表单的弹出层。

带表单的弹出层

我们可以使用HTML5的dialog元素结合form元素来做这些弹出层吗?

答:可以

我们怎么做才能让form元素和dialog元素紧密的结合起来呢?

答:我们只需要在dialog元素中添加 method="dialog" 这个属性即可,这样就可以将button元素的属性 value

대화상자 구성

일반적인 팝업 상자 형태:

위치: 왼쪽 위 모서리, 오른쪽 위 모서리, 왼쪽 아래 모서리, 화면 오른쪽 아래 모서리, 세로 중앙 등

크기: 고정 너비 및 고정 높이, 고정 너비 및 고정 높이, 가변 너비와 높이가 가변적입니다. 개발 중인 대화 상자 양식은 위치와 크기의 임의 조합입니다.

하지만 구현하기 쉽지 않은 상황(가변 너비와 높이의 수직 센터링)이 있습니다(display:table 또는 CSS3의 번역 또는 flex를 사용할 수 있음). 자세한 내용은 수평 및 수직 센터링 레이아웃을 참조하세요

위의 대화 상자에는 콘텐츠에 대한 컨테이너가 포함되어 있으며 대화 상자 아래에 마스크 레이어가 있습니다. 마스크 레이어는 사용자가 팝업 상자를 트리거한 후 대화 상자와 메인 페이지를 구분하는 레이어입니다. 사용자에게 더욱 확실한 시각적 차이 효과를 제공하고 사용자가 대화 상자를 트리거한 후 다른 불필요한 페이지 기본 작업을 방지하여 더 나은 사용자 경험을 제공합니다. 🎜🎜문제가 있습니다🎜🎜선택할 수 있는 대화 바퀴가 많지만, 우리는 다양한 문제에 직면합니다. 🎜
  • 🎜어떤 대화 상자를 선택할지(선택 증후군이 있는 사람에게는 골치 아픈 문제)🎜
  • 🎜사용성(API가 간단한지 여부, 다른 타사 라이브러리에 의존하는지 여부)🎜
  • 🎜Extensibility🎜
  • 🎜브라우저 호환성 지원🎜
🎜그러면 간단한 방법이 있습니까? 대화 상자를 만들까? 물론 HTML5의 dialog 요소를 사용할 수 있습니다. 🎜🎜HTML5(dialog)🎜
<dialog>
  <form>
    <p>确定 or 取消</p>
    <button>确定</button>
    <button>取消</button>
  </form>
</dialog>

<script>
    var dialog = document.querySelector(&#39;dialog&#39;)
    dialog.showModal()
    dialog.addEventListener(&#39;close&#39;, function(event) {
        console.log(dialog.returnValue)
    })
</script>
🎜위 코드를 사용하면 'Hello world.'라는 내용의 팝업 대화 상자를 만들 수 있습니다. 🎜🎜대화 상자의 표시/숨기기를 제어하는 ​​것도 쉽습니다. open 속성을 ​​추가하면 표시되고, 제거하면 숨겨집니다. 물론 DOM 인터페이스를 통해 dialog의 가시성(show(), close())을 제어할 수도 있습니다. 대화 상자 아래 마스크 레이어의 경우 ::backgrop을 사용할 수 있습니다. 의사 요소를 활성화하려면 showModal()의 DOM API를 사용해야 합니다. ::backgrop의 특징은 위치가 다음과 같다는 것입니다. 대화상자 아래의 z-index 위에 있습니다. 🎜🎜showModal()을 사용하면 마스크 레이어뿐만 아니라 대화 상자 컨테이너도 표시할 수 있으므로 ::backdrop을 사용할 때 showModal()을 사용할 수 있습니다. show() API를 대체합니다. 키보드의 ESC 키를 누르면 팝업 레이어가 닫힙니다. 물론 를 사용할 수 있습니다. >close() 이 DOM API입니다. 🎜🎜::backdrop을 반투명 레이어로 설정할 수 있습니다. 코드는 다음과 같습니다. 🎜
var dialog = document.querySelector(&#39;dialog&#39;)
dialog.showModal()
dialog.addEventListener(&#39;close&#39;, function(event) {
  alert(dialog.returnValue)
})
🎜 프롬프트 정보가 포함된 일반적인 팝업 레이어 외에도 유형이 있습니다. 양식으로. 🎜🎜양식이 포함된 팝업 레이어🎜🎜양식 요소와 결합된 HTML5 대화 상자 요소를 사용하여 이러한 팝업 레이어를 만들 수 있나요? 🎜🎜답변: 예🎜🎜양식 요소와 대화 상자 요소를 어떻게 밀접하게 결합할 수 있나요? 🎜🎜답변: method="dialog" 속성을 ​​대화 상자 요소에 추가하기만 하면 버튼 요소의 value 속성 값이 전달될 수 있습니다. 대화 상자 요소에. 🎜
<dialog>
  <form method="dialog">
    <p>确定 or 取消</p>
    <button type="submit" value="yes">确定</button>
    <button type="submit" value="no">取消</button>
  </form></dialog>
🎜demo🎜
dialog::backdrop {  background: rgba(0, 0, 0, 0.6)
}
rrreeerrreee🎜브라우저 호환성🎜🎜비교적으로 사용하기 쉬운 HTML5이지만 아직 호환성 문제가 남아 있습니다. Firefox에서는 실험적인 기능이지만 IE, Edge, Safari에서는 더 잘 지원됩니다. 잘 지원하지 않고, iOS도 지원하지 않고, 안드로이드도 잘 지원하지 않습니다. 안드로이드 6 이상에서만 지원됩니다. 자세한 내용은 caniuse🎜🎜를 참조하세요. 그러면 이전 버전의 브라우저도 HTML5 대화 상자를 지원할 수 있나요? 우선 우리가 생각하는 것은 es6의 새로운 기능을 지원하는 babel-polyfill처럼 대화 상자를 지원하는 폴리필이 있는지 여부입니다. 실제로 다양한 버전의 vue와 a11y-dialog를 제공하는 오픈 소스 프로젝트가 있습니다. 각각 반응한다. 🎜🎜🎜

위 내용은 HTML5의 대화 상자 요소에 대한 자세한 설명(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 segmentfault思否에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
H5 코드 예제 : 실제 응용 프로그램 및 튜토리얼H5 코드 예제 : 실제 응용 프로그램 및 튜토리얼Apr 25, 2025 am 12:10 AM

H5는 다양한 새로운 기능과 기능을 제공하여 프론트 엔드 개발 기능을 크게 향상시킵니다. 1. 멀티미디어 지원 : 미디어를 포함하고 요소를 포함하여 플러그인이 필요하지 않습니다. 2. 캔버스 : 요소를 사용하여 2D 그래픽 및 애니메이션을 동적으로 렌더링합니다. 3. 로컬 스토리지 : LocalStorage 및 SessionStorage를 통해 지속적인 데이터 저장을 구현하여 사용자 경험을 향상시킵니다.

H5와 HTML5 사이의 연결 : 유사성과 차이H5와 HTML5 사이의 연결 : 유사성과 차이Apr 24, 2025 am 12:01 AM

H5 및 HTML5는 다른 개념입니다. HTML5는 새로운 요소 및 API를 포함하는 HTML의 버전입니다. H5는 HTML5를 기반으로 한 모바일 애플리케이션 개발 프레임 워크입니다. HTML5는 브라우저를 통해 코드를 구문 분석하고 렌더링하는 반면 H5 응용 프로그램은 컨테이너를 실행하고 JavaScript를 통해 기본 코드와 상호 작용해야합니다.

H5 코드의 빌딩 블록 : 주요 요소 및 그 목적H5 코드의 빌딩 블록 : 주요 요소 및 그 목적Apr 23, 2025 am 12:09 AM

HTML5의 주요 요소에는 최신 웹 페이지를 작성하는 데 사용되는 ,,,,, 등이 포함됩니다. 1. 헤드 컨텐츠 정의, 2. 링크를 탐색하는 데 사용됩니다. 3. 독립 기사의 내용을 나타내고, 4. 페이지 내용을 구성하고, 5. 사이드 바 컨텐츠 표시, 6. 바닥 글을 정의하면, 이러한 요소는 웹 페이지의 구조와 기능을 향상시킵니다.

HTML5 및 H5 : 일반적인 사용법 이해HTML5 및 H5 : 일반적인 사용법 이해Apr 22, 2025 am 12:01 AM

HTML5와 H5 사이에는 차이가 없으며, 이는 HTML5의 약어입니다. 1.HTML5는 HTML의 다섯 번째 버전으로 웹 페이지의 멀티미디어 및 대화식 기능을 향상시킵니다. 2.H5는 종종 HTML5 기반 모바일 웹 페이지 또는 응용 프로그램을 참조하는 데 사용되며 다양한 모바일 장치에 적합합니다.

HTML5 : 현대 웹의 빌딩 블록 (H5)HTML5 : 현대 웹의 빌딩 블록 (H5)Apr 21, 2025 am 12:05 AM

HTML5는 W3C에 의해 표준화 된 하이퍼 텍스트 마크 업 언어의 최신 버전입니다. HTML5는 새로운 시맨틱 태그, 멀티미디어 지원 및 양식 향상을 도입하여 웹 구조, 사용자 경험 및 SEO 효과를 개선합니다. HTML5는 웹 페이지 구조를 더 명확하게하고 SEO 효과를 더 좋게하기 위해, 등 등과 같은 새로운 시맨틱 태그를 소개합니다. HTML5는 멀티미디어 요소를 지원하며 타사 플러그인이 필요하지 않으므로 사용자 경험을 향상시키고 속도를로드합니다. HTML5는 양식 함수를 향상시키고 사용자 경험을 향상시키고 양식 검증 효율성을 향상시키는 새로운 입력 유형을 도입합니다.

H5 코드 : 깨끗하고 효율적인 html5 작성H5 코드 : 깨끗하고 효율적인 html5 작성Apr 20, 2025 am 12:06 AM

깨끗하고 효율적인 HTML5 코드를 작성하는 방법은 무엇입니까? 답은 태그, 구조화 된 코드, 성능 최적화 및 일반적인 실수를 피함으로써 일반적인 실수를 피하는 것입니다. 1. 코드 가독성 및 SEO 효과를 향상시키기 위해 시맨틱 태그 등을 사용하십시오. 2. 적절한 계약과 의견을 사용하여 코드를 구성하고 읽을 수 있도록하십시오. 3. CDN 및 압축 코드를 사용하여 불필요한 태그를 줄임으로써 성능을 최적화합니다. 4. 태그가 닫히지 않은 것과 같은 일반적인 실수를 피하고 코드의 유효성을 확인하십시오.

H5 : 웹에서 사용자 경험을 향상시키는 방법H5 : 웹에서 사용자 경험을 향상시키는 방법Apr 19, 2025 am 12:08 AM

H5는 멀티미디어 지원, 오프라인 스토리지 및 성능 최적화로 웹 사용자 경험을 향상시킵니다. 1) 멀티미디어 지원 : H5 및 요소는 개발을 단순화하고 사용자 경험을 향상시킵니다. 2) 오프라인 스토리지 : WebStorage 및 IndexedDB는 오프라인으로 사용하여 경험을 향상시킵니다. 3) 성능 최적화 : 웹 워즈 및 요소는 성능을 최적화하여 대역폭 소비를 줄입니다.

H5 코드 해체 : 태그, 요소 및 속성H5 코드 해체 : 태그, 요소 및 속성Apr 18, 2025 am 12:06 AM

HTML5 코드는 태그, 요소 및 속성으로 구성됩니다. 1. 태그는 컨텐츠 유형을 정의하고 다음과 같은 각도 브래킷으로 둘러싸여 있습니다. 2. 요소는 컨텐츠와 같은 시작 태그, 내용 및 엔드 태그로 구성됩니다. 3. 속성 시작 태그에서 키 값 쌍을 정의하고 기능을 향상시킵니다. 웹 구조를 구축하기위한 기본 단위입니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경