목차
对话框的组成
存在问题
HTML5(dialog)
带表单的弹出层
웹 프론트엔드 H5 튜토리얼 HTML5의 대화 상자 요소에 대한 자세한 설명(코드 예)

HTML5의 대화 상자 요소에 대한 자세한 설명(코드 예)

Oct 13, 2018 pm 02:51 PM
css3 html5

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

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

对话框的组成

常见的弹出框形式:

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

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

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

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

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

存在问题

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

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

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

  • 可扩展性

  • 浏览器的兼容性支持

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

HTML5(dialog)

<dialog open>
    <h2> 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 method="dialog">
    <p>确定 or 取消</p>
    <button type="submit" value="yes">确定</button>
    <button type="submit" value="no">取消</button>
  </form>
</dialog>

<script>
    var dialog = document.querySelector('dialog')
    dialog.showModal()
    dialog.addEventListener('close', 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

HTML의 테이블 테두리 HTML의 테이블 테두리 Sep 04, 2024 pm 04:49 PM

HTML의 테이블 테두리 안내. 여기에서는 HTML의 테이블 테두리 예제를 사용하여 테이블 테두리를 정의하는 여러 가지 방법을 논의합니다.

HTML의 중첩 테이블 HTML의 중첩 테이블 Sep 04, 2024 pm 04:49 PM

HTML의 Nested Table에 대한 안내입니다. 여기에서는 각 예와 함께 테이블 내에 테이블을 만드는 방법을 설명합니다.

HTML 여백-왼쪽 HTML 여백-왼쪽 Sep 04, 2024 pm 04:48 PM

HTML 여백-왼쪽 안내. 여기에서는 HTML margin-left에 대한 간략한 개요와 코드 구현과 함께 예제를 논의합니다.

HTML 테이블 레이아웃 HTML 테이블 레이아웃 Sep 04, 2024 pm 04:54 PM

HTML 테이블 레이아웃 안내. 여기에서는 HTML 테이블 레이아웃의 값에 대해 예제 및 출력 n 세부 사항과 함께 논의합니다.

HTML에서 텍스트 이동 HTML에서 텍스트 이동 Sep 04, 2024 pm 04:45 PM

HTML에서 텍스트 이동 안내. 여기서는 Marquee 태그가 구문과 함께 작동하는 방식과 구현할 예제에 대해 소개합니다.

HTML 정렬 목록 HTML 정렬 목록 Sep 04, 2024 pm 04:43 PM

HTML 순서 목록에 대한 안내입니다. 여기서는 HTML Ordered 목록 및 유형에 대한 소개와 각각의 예에 대해서도 설명합니다.

HTML 온클릭 버튼 HTML 온클릭 버튼 Sep 04, 2024 pm 04:49 PM

HTML onclick 버튼에 대한 안내입니다. 여기에서는 각각의 소개, 작업, 예제 및 다양한 이벤트의 onclick 이벤트에 대해 설명합니다.

HTML 입력 자리 표시자 HTML 입력 자리 표시자 Sep 04, 2024 pm 04:54 PM

HTML 입력 자리 표시자 안내. 여기서는 코드 및 출력과 함께 HTML 입력 자리 표시자의 예를 논의합니다.

See all articles