最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 前端二向箔05-HTML表格表单和ARIA

    正文概述 掘金(OliverStack)   2021-02-27   529

    05 HTML表格表单和ARIA

    本篇博客大致回忆下表单表格的特点, 用法和注意事项. 还有重点复盘下ARIA系统的概念.

    为什么不建议用要表格?

    感兴趣可以先上StackOverflow查看这个当时table正火的帖子:

    Why not use tables for layout in HTML? [closed]

    你要是看了高赞的分析, 估计对table的弊端有大致的了解了. 个人认为web的发展并没有改变多少table的本质.

    html的 table 元素表示表格数据 — 即通过二维数据表表示的信息 --MDN

    table本意就是拿来渲染表格数据的, 按道理来说没什么问题, 各司其职. 但是主要涉及三个问题:

    • SEO和语义化问题, 事实上, table 并没有很好地语义化, 想象下, 大量的table 数据内容混杂, 用户搜索自然也不会集中到数据本身, 搜索权重自然就小. 而且本身的阅读性不是很好, 设计太过朴素难以突出重点, 特别是现在花里胡哨的网站中.
    • 可访问性(Accessibility)差, 特别在屏幕阅读和视障人群地使用中, 遇上大量数据很难阅读和被正确地识别. 基本措施是<caption>\ <summary>进行表格数据描述, 或是设置scope属性等.
    • 浏览器渲染性能问题, table 的性能一直被人们诟病. 特别是在渲染方面, 需要表格加载完毕才开始渲染布局, 会有明显的割裂感和延迟. 主要和浏览器的渲染算法有关, 特别应对大量数据时, 缓存也是个问题.

    HTML设计思想是内容样式分离的, 使用CSS样式表来管理样式. 而这个table 却是兼具两者, 所以在浏览器行为方式不同也可以理解, 而且CSS更容易缓存. 目前table 的大量全局属性被抛弃MDN? , 建议使用CSS管理样式, 也说明了W3C正在分解table .

    不论怎样, 目前都是不建议使用table 进行布局的, 要我说直观点就是排版麻烦不好看, 还有各种小毛病XD.

    基本用法可以参考阮一峰 表格标签?.

    表单

    表单可以说是学习web中第一个碰到交互最多的组件.

    nameid 的疑惑, 刚开始学习HTML的时候, 觉得nameid 在大多数情况下的用途是一样的, 为什么不合并呢? 而在学习了form 之后, 才了解这样设计的部分原因.

    • label标签对应一个input, 关联的是inputid属性, 而非name属性, 此外除了常用的并列排布, 还可以包裹, 这是可以省略forid属性:

      <label>用户名:
        <input type="text" name="user">
      </label>
      
    • name 属性是关系到服务器的字段信息获取, 需要通过name来获取属性. 此外表单的单选操作中会设置同个name .

    基本用法参考阮一峰 表单标签?. 基础上没什么可以总结提炼的, 反观国内的框架也主要的是围绕表单优化展开. 而最重要的, 除了网络优化, 就是用户体验.

    在用户体验方面, 可看看这篇博客 Form Design: 13 Empirically Backed Best Practices. 总结了一下重要的表表单开发和优化经验:

    • 少即是多, 减少输入框?( 对比两图, 后面多清爽 )

    前端二向箔05-HTML表格表单和ARIA 前端二向箔05-HTML表格表单和ARIA

    • 单流向结构更易读, 更高效. 特别是移动端设备占主要成分的情况下.

    前端二向箔05-HTML表格表单和ARIA

    • 做好跟随的内联校验. 提高表单填写效率, 而非提交后才提示失败信息, 会严重挫败用户体验.
    • 设置自动聚焦, 特别是移动端
    • 增加显示密码, 有调查表明, 掩饰密码实际上没有对安全有多少影响, 反倒不变用户校验. 所以个人认为增加明文显示以供校验更加友好. can'k参考github的登陆界面:

    前端二向箔05-HTML表格表单和ARIA

    此外, 还有两点值得注意:

    • 移除form表单默认跳转事件, form 和服务器打交道, 较多使用ajax技术进行提交, 为了防止默认的提交行为导致后续代码无法执行( 如弹窗, 回调函数等 ), 可以使用:

      const submit = () => {
          //移除默认行为
          $('form').on('submit', e => {
              e.preventDefault();
              //ajax请求代码:
              //....
              })
      
    • 防止重复提交. 策略可以是页面跳转, 前端校验式添加锁机制( 用默个字段控制状态 ), 后端服务器字段校验等.

    ARIA

    ARIA全称: Accessible Rich Internet Applications 可访问富互联网应用, 即大家口中的无障碍, 是一个可访问性的标准. 有时候你会看到WAI-ARIA, 其中WAI = Web Accessibility Initiative, 即无障碍网页倡议. 两者指代的都是同意思.

    可以把它当作HTML5标签的属性扩展. 主要可以支持屏幕阅读等辅助技术, 提供语义化信息.

    现代浏览器基本支持ARIA, 即使不支持也不会造成问题, ARIA并不会改变标签的功能表现.

    ARIA是在HTML4之后引入的, 更像是一个过渡时期的机制. 因为许多ARIA规范在HTML5中已经实现语义化标签, 但是仍然发挥着重要的补充功能.

    ARIA不只是视障关怀

    初识AIRA可能会误解为专为视障用户使用的关怀手段. 实际上, ARIA属于可访问性的范畴, 从语义化 \ 辅助阅读等角度都是AIRA的重点, HTML5实现相关ARIA属性为标签也可见一斑. 所以ARIA不只是特定用户的辅助技术, 更是衡量一个优秀网站的标准.

    而且, 对于javascript程序为基础的web应用, 许多功能 \ 组件无法使用HTML标签去语义化表达, 这时候ARIA就发回了很大的扩展作用.

    例如, 一个弹出式UI组件, 面包屑导航等在框架中常见的组件; 再从框架中的组件中也可以看出目前HTML没有的语义化表达.

    实现原理和应用

    ARIA 通过更改和补充标准 DOM 无障碍树来发挥作用。而且ARIA 不会补充元素的任何固有行为

    前端二向箔05-HTML表格表单和ARIA 前端二向箔05-HTML表格表单和ARIA 通过DOM的修改\创建不存在HTML标签中的语义化元素, 大概可以实现以下功能:

    <!-- 扩展语义, eg:创建了一的只读标签 -->
    <button aria-label="screen reader only label"></button>
    
    <!-- 定义父子组件的关系, eg:控制特定区域的自定义滚动条 -->
    <div role="scrollbar" aria-controls="main"></div>
    <div id="main">
    . . .
    </div>
    
    <!-- 辅助技术API, eg:页面发生变化时立即通知辅助技术 -->
    <div aria-live="true">
      <span>GOOG: $400</span>
    </div>
    ......
    

    role体系

    ARIA 系统的其中一个核心层面是其role集。在无障碍术语中,角色是指特定 UI 模式的简略指示器.

    换句话说, 可以将下面属性值理解成新的未纳入规范的语义化标签.

    前端二向箔05-HTML表格表单和ARIA

    可见, 有些role 在h5中成为了新标签( 图中红框圈出了部分 ), 把ARIA看出过渡也是一种观点.

    看一看role 属性如何使用:

    <div id="clock" role="timer" aria-label="tomato-timer" aria-roledescription="这是个番茄钟, 计时25分钟" tabindex="0">25mins</div>
    
    <button onclick="startTimer('clock')">开始计时</button>
    

    定义了timer这个计时器, 相关的aria- 属性让辅助手段判断其UI变化. 一般这种变化是通过js操作的, 而且aria- 更多在js应用中使用.

    此处timer 对应的aria-label 描述其名称, aria-roledescription 添加更加具体的说明以供屏幕阅读器朗读等.

    在WAI-ARIA中可以找到各个role 对应的属性 aria role?

    role的使用很简单, 要更好地认识可以将其粗略分为widget部件和section组成:

    • widget
      • 功能型: button, alert, link, timer, progressbar, scrollbar, separator
      • 表单型: checkbox, radio, option, slider, slider, textbox, spinbutton
      • 复合型: tab, tree, menu, list, grid.....
    • section
      • h5中实现了很大一部分, 请直接使用. 如article,
      • Landmark, 直接翻译地标, ARIA标准中的八结构页面组成:
        • Banner ( 开发习惯常用banner头图 )
        • Navigation ( eg: nav标签, 导航栏 )
        • Form ( 表单 )
        • Main ( 主体 )
        • Application ( web应用本身 )
        • Search ( 搜索功能 )
        • complementary ( eg: aside标签补充说明, 辅助内容 )
        • contentinfo ( 内容注释, meta内容, 版权信息© )

    AIRA的启发

    可见, ARIA是更加抽象的标签, 对于理解网页结构, 文字排版等有重大的启发意义. 特别在进行组件设计时, 可以参考ARIA的设计思想, 由概念到属性, 进一步抽象, 封装成可用组件. 很多UI框架的组件就可以看成高一层的封装, 如各种tabbar\scroll-view\list等等.

    引用

    1. <table>- HTML(超文本标记语言) | MDN. (2020). Retrieved 26 February 2021, from developer.mozilla.org/zh-CN/docs/…

    2. ARIA - 无障碍 | MDN. (2020). Retrieved 26 February 2021, from developer.mozilla.org/zh-CN/docs/…

    3. Introduction to ARIA | Web Fundamentals | Google Developers. (2021). Retrieved 26 February 2021, from developers.google.com/web/fundame…

    4. Birkett, A. (2019). Form Design: 13 Empirically Backed Best Practices | CXL. Retrieved 26 February 2021, from cxl.com/blog/form-d…

    5. ARIA Landmark Roles. (2021). Retrieved 26 February 2021, from www.washington.edu/accessibili…

    6. 表格标签. (2021). Retrieved 26 February 2021, from wangdoc.com/html/table.…

    7. 表单标签. (2021). Retrieved 26 February 2021, from wangdoc.com/html/form.h…

    转发备注出处, thanks~


    起源地下载网 » 前端二向箔05-HTML表格表单和ARIA

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元