新的 HTML <dialog> 标签:绝对改变游戏规则

有了新的 <dialog> 标记,前端开发将从此不同...

❌之前:

看看我创建一个对话框要花费多少功夫👇。仅 CSS 就有近 20 行:

6bb717261eeb0211646d34d4a0e2f2bb.png

这还只是用于对话框功能的 CSS,它看起来仍然非常基本:

deb8f7862a1ffd76cd1a127c50f60a9c.gif

但是,使用新的 <dialog> 标签又如何呢?

✅ 现在:
<button id="open">Open</button>
<dialog id="dialog">
  ⚡ Lighting strikes the earth 44 times every second!
  ⚡ 闪电每秒击中地球44次!
</dialog>

JS:

const dialog = document.getElementById('dialog');
const open = document.getElementById('open');

open.addEventListener('click', () => {
  dialog.showModal();
});

我们甚至可以使用 show() 方法来显示非模式对话框--没有背景,干扰较少:

const dialog = document.getElementById('dialog');
const open = document.getElementById('open');

open.addEventListener('click', () => {
  // ✅ show() 方法
  dialog.show();
});

d89b35fcb16c9eb404738b1ae24d1b90.gif

对话框一直是强力吸引用户注意力并向其传递信息的有力方式。

3cde4c63561d87776a0a4230ed57aa0e.png

从 Material Design 到 Fluent Design,它一直是每个用户界面设计系统的主打功能。

但是,即使它们再常见,我们也不得不借助第三方库或创建自定义组件来使用它们。

其中许多图书馆甚至没有遵循关于可用性和可访问性的官方建议......

例如:按 Escape 键应该可以解除页面上的对话框,但许多自定义对话框都不会这样做。

因此, <dialog> 改变了这一切。

自动打开对话框

open 属性使对话框从打开页面的那一刻起就一直处于打开状态:

<dialog id="dialog" open>
  长颈鹿比人类更有可能被闪电击中。事实上,它们的可能性是人类的30倍。
</dialog>
自动关闭按钮

是的,可以使用标准事件侦听器和 close() 方法添加关闭功能:

const close = document.querySelector('#dialog .close');

close.addEventListener('click', () => {
  dialog.close();
});

但是内置的 <dialog> 可以让这一切变得更加简单--无需 JavaScript:

<dialog id="dialog">
  ⚡ 在 codingbeautydev.com 获取基本的编码技能和知识
  <br />
  <form method="dialog">
    <button class="close">关闭</button>
  </form>
</dialog>

b12285fec99fde2e678748f5def05e37.gif如何正确设计 <dialog> 样式

<dialog> 有一个特殊的 ::backdrop 伪元素,用于设计背景墙的样式:

::backdrop {
  background-image: linear-gradient(
    45deg,
    magenta,
    rebeccapurple,
    dodgerblue,
    green
  );
  opacity: 0.75;
}

ebd0618b20082bc41da53bb3f159f940.png

主要元素的样式简单明了:

dialog {
  background-color: black;
  color: white;
}

0ffa6910ad5d634fde2a056855377cbe.png

最后

有了新的 HTML <dialog> 标记,在我们的网络应用程序中创建模式和对话框变得前所未有的简单和快捷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值