📜  语义 UI 段变化(1)

📅  最后修改于: 2023-12-03 14:57:42.305000             🧑  作者: Mango

语义 UI 段变化

语义 UI 是一种设计理念,旨在让用户界面更加易于理解和便于交互。语义 UI 遵循清晰的设计规则和语义化的代码,以增强用户与应用程序之间的沟通和协作。

UI 段变化是指用户界面元素之间的更改,这些元素可以是文字、图像、图标或其他交互元素。段变化可以在用户点击按钮、输入文本或进行其他交互时自动触发。它可以改变一部分界面元素,也可以改变整个界面的外观和行为。

语义 UI 的好处
  • 提升用户体验:语义 UI 可以提供更好的用户体验,用户能够更好地理解应用程序的意图和功能,从而更轻松地完成任务。
  • 改善可访问性:语义 UI 可以帮助开发者改善应用程序的可访问性。例如,使用语义标签可以提高屏幕阅读器和其他辅助技术的可用性。
  • 降低开发成本:语义 UI 可以降低开发成本。例如,使用清晰的标准和规则可以减少犯错误的机会,从而减少调试和修复错误的时间和成本。
语义 UI 段变化示例

以下是几个语义 UI 段变化的示例:

动态输入验证

当用户输入错误格式的信息时,可以使用相关的提示信息来指引他们如何修改输入。下面是一个例子:

<label for="email">Email:</label>
<input type="email" name="email" required>
<div class="error-message" aria-hidden="true">请输入正确的电子邮件地址</div>

当用户输入错误的格式时,可以将错误信息的可见性从隐藏更改为可见。

var input = document.querySelector('input[name="email"]');
var errorMessage = document.querySelector('.error-message');
input.addEventListener('invalid', function(event) {
  event.preventDefault();
  errorMessage.setAttribute('aria-hidden', false);
});
input.addEventListener('input', function(event) {
  if (input.checkValidity()) {
    errorMessage.setAttribute('aria-hidden', true);
  }
});
菜单下拉项

当用户单击下拉菜单时,可以使用样式更改下拉菜单项的外观和行为。下面是一个例子:

<button aria-haspopup="true" aria-expanded="false">菜单</button>
<ul role="menu" aria-hidden="true">
  <li role="menuitem"><a href="#">选项 1</a></li>
  <li role="menuitem"><a href="#">选项 2</a></li>
  <li role="menuitem"><a href="#">选项 3</a></li>
</ul>

当用户单击按钮时,可以使用 JavaScript 将下拉菜单的可见性从隐藏更改为可见。

var button = document.querySelector('button[aria-haspopup="true"]');
var menu = document.querySelector('ul[role="menu"]');
button.addEventListener('click', function(event) {
  var expanded = button.getAttribute('aria-expanded') === 'true' || false;
  button.setAttribute('aria-expanded', !expanded);
  menu.setAttribute('aria-hidden', expanded);
});
树形结构

当用户单击树节点时,可以使用样式更改节点的外观和行为。下面是一个例子:

<ul role="tree" aria-multiselectable="true">
  <li role="treeitem" aria-expanded="false">
    <div tabindex="0">节点 1</div>
    <ul role="group" aria-hidden="true">
      <li role="treeitem"><div tabindex="-1">子节点 1</div></li>
      <li role="treeitem"><div tabindex="-1">子节点 2</div></li>
    </ul>
  </li>
  <li role="treeitem"><div tabindex="0">节点 2</div></li>
  <li role="treeitem"><div tabindex="0">节点 3</div></li>
</ul>

当用户单击节点时,可以使用 JavaScript 更改其展开状态,并将子节点的可见性从隐藏更改为可见。

var nodes = document.querySelectorAll('[role="treeitem"]');
nodes.forEach(function(node) {
  var button = node.querySelector('div');
  var group = node.querySelector('[role="group"]');
  button.addEventListener('click', function(event) {
    var expanded = node.getAttribute('aria-expanded') === 'true' || false;
    node.setAttribute('aria-expanded', !expanded);
    group.setAttribute('aria-hidden', expanded);
  });
});
总结

语义 UI 和 UI 段变化是提高用户体验和应用程序可访问性的一种有效方式。使用合适的 HTML 元素和属性,配合 JavaScript,可以实现动态的界面效果,使用户交互更加自然和流畅。希望本文可以为读者提供一些有用的信息,让他们开发更加语义化的应用程序。