Macro Da

每天学一点,成长多一点!

HTML与CSS新特性

原生模态对话框

HTML 的 <dialog> 元素用于创建对话框或其他交互式组件,如弹出窗口、警告框等。它提供了一种标准化的方法来实现模态(modal)和非模态(non-modal)对话框。

基本用法

要定义一个对话框,可以使用 <dialog> 标签:

<dialog id="myDialog">
  <h1>对话框标题</h1>
  <p>这是一个对话框。</p>
  <form method="dialog">
    <button>关闭</button>
  </form>
</dialog>

<dialog> 元素包含了一段文本和一个关闭按钮。<form method="dialog"> 的使用允许在点击按钮时自动关闭对话框。

《HTML与CSS新特性》

可以使用 JS 来控制对话框的显示和关闭:

const dialog = document.getElementById('myDialog');
 
// 显示非模态对话框
dialog.show();
 
// 显示模态对话框
dialog.showModal();
 
// 关闭对话框
dialog.close();

可以使用 CSS 伪元素 ::backdrop 来自定义模态对话框的背景样式:

dialog::backdrop {
  background: rgba(0, 0, 0, 0.5);
}

这将使对话框外的背景呈现半透明的黑色遮罩效果。

可折叠内容区域

HTML 中的 <details> 和 <summary> 元素是一种内置的方式,用来创建可折叠的内容区域,不需要 JavaScript 就可以实现简单的展开/收起效果,非常适合展示 FAQ、附加信息、代码块等内容。

基本语法:

<details>
  <summary>点击展开内容</summary>  <h1>这里是折叠标题</h1>
  <p>这里是可折叠的内容。</p>
</details>

<details>  容器,表示内容可以展开/折叠。 <summary>  折叠区域的标题,点击这个标题可以展开/收起内容。

《HTML与CSS新特性》

样式自定义:

details[open] summary::marker {
  content: "→";
}
details:not([open]) summary::marker {
  content: "↓";
}

默认的 <summary> 会带有小三角图标(根据浏览器不同略有差异)

可以通过 CSS 做样式自定义

滚动驱动动画

滚动驱动动画(Scroll-driven animation),也叫“基于滚动的动画”或“滚动动画”,是指:动画的播放与页面滚动进度相关联,而不是由时间自动驱动。

实现方式概览:

.box {
      width: 150px;
      height: 150px;
      background: dodgerblue;
      border-radius: 12px;
      animation: spinZoom linear both;
      animation-timeline: view();
      animation-range: cover 0% cover 100%;
    }

animation-timeline: view();  启用基于视窗的滚动时间线(新标准)

animation-range: cover 0% cover 100%;  动画播放的触发范围(元素从“进入视窗”到“完全覆盖视窗”)

linear both  线性播放,both 让起始和结束帧保留

《HTML与CSS新特性》

容器查询

CSS 容器查询(Container Queries)是一项强大的新特性,它允许你根据容器的大小(而不是视窗大小)来应用不同的样式。这是对响应式设计的一次重大升级,使组件更具适应性和复用性,特别适合构建“自适应组件”。

使用语法示例:

.card {
  container-type: inline-size; /* 启用容器查询(基于宽度) */
  container-name: card;        /* 可选,给容器命名 */
}

/* 基于容器宽度进行样式调整 */
@container (min-width: 600px) {
  .card-content {
    …
  }
}

container-type  启用容器查询,常用值是 inline-size(宽度)或 size(宽高)

container-name  可选,命名容器以供 @container name (...) 使用

@container  容器查询的语法规则,类似媒体查询,但针对容器而非视口

《HTML与CSS新特性》

样式嵌套

CSS 样式嵌套(CSS Nesting)是一项新特性,它允许你在 CSS 中像写 SCSS 或 LESS (预处理器)一样嵌套选择器,使结构更加清晰、组件化,减少重复代码。

基本语法示例:

.card {
  padding: 1rem;
  background: #f5f5f5;

  &:hover {
    background: #eee;
  }
}

从 2023 年开始,主流浏览器已经逐步支持原生 CSS 样式嵌套,无需预处理器。

  • 写法:&
  • 含义:引用当前选择器(和 SCSS 相同)
《HTML与CSS新特性》

点赞

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注