搜索
首页web前端css教程设计更好的表格:使用弹出窗口获取额外数据

在处理大型数据表时,一次显示所有可用信息通常会使表格变得难以阅读。因此,隐藏次要信息并使用设计模式仅在需要时显示更多细节是很常见的。

数据表设计对于良好的用户体验 (UX) 至关重要,尤其是在处理大量或复杂的数据时。根据为什么表格设计用户体验很重要?和设计更好的数据表,对于管理这些隐藏细节的三种主要方法达成了共识:

  • 可扩展行 – 内联扩展表格行以显示更多详细信息。
  • 模态视图 – 打开包含更深入信息的模态对话框。
  • 快速查看(侧边栏) – 在可以从边缘滑入的侧边栏中显示额外的详细信息。

在本文中,我将向您展示如何灵活设置这三个选项,以便您可以在它们之间进行切换,而无需重写表格的标记。

为此,我们将使用弹出窗口,它非常适合轻松地将信息直接附加到特定行。


设置基本表

首先,我们将使用与表格样式指南中相同的标记和样式:

Designing Better Tables: Using Popovers for Extra Data

在最后一个单元格的文本内容之后,我们添加了一个简单的按钮(图标来自tabler),它将触发弹出窗口:

<button type="button" popovertarget="p1"></button>

接下来,我们在文档中的某处添加弹出窗口,以在触发时显示附加内容:

<div id="p1" popover>
  ... content ...   
</div>

设计弹出框的样式

对于弹出窗口样式,我们将使用 Adam Argyle 的 Steal this popover 代码中的模板。该模板包括弹出窗口的出现和消失的平滑过渡:

.selector {
  &, &::backdrop {
    transition: 
      display .5s allow-discrete, 
      overlay .5s allow-discrete, 
      inset .5s,
      scale .5s,
      opacity .5s;
    opacity: 0;
  }

  &::backdrop {
    background: #0002;
  }

  &:popover-open {
    opacity: 1;
    &::backdrop {
      opacity: 0.5;
    }
  }

  @starting-style {
    &:popover-open,
    &:popover-open::backdrop {
      opacity: 0;
    }
  }
}

模态视图

对于模态布局,我们将添加一个 --modal 修饰符类来定义模态的大小并将其在屏幕上居中:

&.--modal {
  block-size: calc(100dvh - 2em);
  inline-size: calc(100dvw - 2em);
  inset-block-start: 1em;
  inset-inline: 1em;
  transform-origin: 50% 50%;

  @starting-style {
    &:popover-open{
      scale: 0;
    }
  }
}

Designing Better Tables: Using Popovers for Extra Data


快速查看(侧边栏)

为了创建快速视图侧边栏,我们将向弹出窗口添加一个新的修饰符类 --inline-start。该侧边栏从视口的侧面滑入,并且可以通过平滑的动画关闭。设置如下:

&.--inline-start {
  --width: clamp(220px, 33vw, 350px);
  block-size: calc(100dvh - 2em);
  inline-size: var(--width);
  inset-block-start: 1em;
  inset-inline: 1em;

  @starting-style {
    &:popover-open {
      inset-inline: calc(0px - var(--width));
    }
  }
  &[popover]:not(:popover-open) { 
    inset-inline: calc(0px - var(--ui-width));
  }
}

通过此设置,弹出框从左侧滑入。 &[popover]:not(:popover-open) 行确保它在关闭时滑出。

Designing Better Tables: Using Popovers for Extra Data

我们可以应用类似的调整来创建从右侧或从上方和下方滑入的效果:

内联结束(--inline-end)

Designing Better Tables: Using Popovers for Extra Data

块结束(--block-end)

Designing Better Tables: Using Popovers for Extra Data


可扩展行

最后,让我们看看可扩展行。与模式和侧边栏不同,可扩展行直接集成在表格布局中。传统上,这种方法涉及隐藏的

。带有 跨越所有列,以及一个用于切换其可见性的 JavaScript 函数。

但是我们可以重用现有的弹出窗口来内联扩展行吗?不直接 - 但我们可以伪造它,通过将弹出窗口定位到该行的正下方,创建类似的效果。


首先,我们通过在

上设置锚点名称,将弹出窗口附加到表格行的左下角。并应用以下 CSS:
<button type="button" popovertarget="p1"></button>

接下来,我们需要两个功能,不幸的是,目前仅限 Chrome

<div id="p1" popover>
  ... content ...   
</div>

interpolate-size 属性允许弹出窗口平滑地动画到其最终高度,而anchor-size 让它匹配行的宽度(或高度,使用anchor-size(height))。

Designing Better Tables: Using Popovers for Extra Data

到目前为止,一切顺利 - 但展开的行覆盖了接下来的行。

我们可以通过将弹出框高度添加到展开行内表格单元格的填充块末端来解决此问题:

Designing Better Tables: Using Popovers for Extra Data

酷。幻象完成了!

为了动画高度,我们将在 CSS 中添加一些额外的声明:

.selector {
  &, &::backdrop {
    transition: 
      display .5s allow-discrete, 
      overlay .5s allow-discrete, 
      inset .5s,
      scale .5s,
      opacity .5s;
    opacity: 0;
  }

  &::backdrop {
    background: #0002;
  }

  &:popover-open {
    opacity: 1;
    &::backdrop {
      opacity: 0.5;
    }
  }

  @starting-style {
    &:popover-open,
    &:popover-open::backdrop {
      opacity: 0;
    }
  }
}

自动调整填充

为了避免手动更新填充,我们可以使用一个脚本根据弹出框的高度动态更新填充:

&.--modal {
  block-size: calc(100dvh - 2em);
  inline-size: calc(100dvw - 2em);
  inset-block-start: 1em;
  inset-inline: 1em;
  transform-origin: 50% 50%;

  @starting-style {
    &:popover-open{
      scale: 0;
    }
  }
}

此脚本侦听弹出窗口的切换事件,动态更新自定义属性 --row,以匹配打开时的弹出窗口高度。


演示

您可以在 browser.style/ui/table-expand 中查看演示,您还可以在其中找到原始表格演示样式。

以上是设计更好的表格:使用弹出窗口获取额外数据的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
什么是CSS网格?什么是CSS网格?Apr 30, 2025 pm 03:21 PM

CSS网格是创建复杂,响应式Web布局的强大工具。它简化了设计,提高可访问性并提供了比旧方法更多的控制权。

什么是CSS Flexbox?什么是CSS Flexbox?Apr 30, 2025 pm 03:20 PM

文章讨论了CSS FlexBox,这是一种布局方法,用于有效地对齐和分布响应设计中的空间。它说明了FlexBox用法,将其与CSS网格进行了比较,并详细浏览了浏览器支持。

我们如何使用CSS使网站迅速响应?我们如何使用CSS使网站迅速响应?Apr 30, 2025 pm 03:19 PM

本文讨论了使用CSS创建响应网站的技术,包括视口元标签,灵活的网格,流体媒体,媒体查询和相对单元。它还涵盖了使用CSS网格和Flexbox一起使用,并推荐CSS框架

CSS盒装属性有什么作用?CSS盒装属性有什么作用?Apr 30, 2025 pm 03:18 PM

本文讨论了CSS盒装属性,该属性控制了元素维度的计算方式。它解释了诸如Content-Box,Border-Box和Padding-Box之类的值,以及它们对布局设计和形式对齐的影响。

我们如何使用CSS动画?我们如何使用CSS动画?Apr 30, 2025 pm 03:17 PM

文章讨论使用CSS,关键属性并与JavaScript结合创建动画。主要问题是浏览器兼容性。

我们可以使用CSS向我们的项目添加3D转换吗?我们可以使用CSS向我们的项目添加3D转换吗?Apr 30, 2025 pm 03:16 PM

文章讨论了Web项目的3D转换,关键属性,浏览器兼容性和性能注意事项的讨论。(角色计数:159)

我们如何在CSS中添加梯度?我们如何在CSS中添加梯度?Apr 30, 2025 pm 03:15 PM

文章讨论了使用CSS梯度(线性,径向,重复)来增强网站视觉效果,添加深度,焦点和现代美学。

CSS中的伪元素是什么?CSS中的伪元素是什么?Apr 30, 2025 pm 03:14 PM

文章讨论了CSS中的伪元素,它们在增强HTML样式方面的使用以及与伪级的差异。提供实用的例子。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。