美文网首页
tabindex属性

tabindex属性

作者: skoll | 来源:发表于2022-07-07 00:37 被阅读0次

    简介

    1 .tab键的作用

    1 .聚焦到下一个按钮,输入框,或者链接等
    2 .单词间的间隔是tab控制的
    3 .快速提交表单
    

    2 .默认支持切换的元素:这些元素是focusable元素

    1 .带有href属性的标签
    2 .带有href属性的link标签
    3 .button标签
    4 .input标签
    5 .select标签
    6 .textarea标签
    7 .这些元素默认使用tab键,js方法focus()可以聚焦
    

    tabIndex的作用

    1 .调整聚焦顺序
    2 .把非focusable的元素变成focusable。本来不能支持tab聚焦,现在可以了
    3 .tabIndex的值分类

    1 .tabindex==0:元素可以被tab键获取焦点,访问顺序是按照元素在文档中的顺序来focus,尽管采用浮动等方式改变了页面的显示顺序,但是实际任然按照文档中的顺序来定位
    2 .tabindex==-1.不能被tab聚焦,但是可以被focus方法聚焦,也就是可以被js触发
    <div tabindex="-1" class="div">4</div>
    document.querySelector('.div').focus()
    3 .tabindex>=1:该元素可以用tab获取焦点,并且优先级大于tabindex==0,在tabindex>1的时候,数字越小,优先级越高,并且如果有index值相同,就按照文档中的顺序来
    

    tabIndex创造更好的用户体验

    1 .针对自定义标签进行富文本交互优化
    2 .对特定节点禁止聚焦操作

    1 .某些浮层以及上层节点,如toast组件,模态框,侧边弹出信息等,我们不希望节点被用户聚焦操作,可以将节点的tabIndex设置为-1.就能避免这一问题
    

    3 .复杂列表控制聚焦顺序

    1 .一些复杂的树形结构或者列式结构,如果需要用于操作顺序按照我们预想的顺序进行聚焦,可以用tabIndex值的大小来进行处理
    2 .回答完一个列表,自动帮我定位到下一个输入框
    3 .表单提交的时候,没有填的必填项,或者格式不正确的操作,聚焦到需要重新填写的输入框
    

    4 .获取当前聚焦元素,并朗读.每次tab键被按下的时候,都找下activeElement

    keydown的话,会留上一些被聚焦的元素
    document.addEventListener('keyup',(e)=>{
                let ele=document.activeElement.tagName
                console.log(e,ele)
            })
    

    activeElement

    1 .

    一个简单的粒子

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div tabindex="5" data-world="牛逼">牛逼</div>
        <div>2</div>
        <div tabindex="3" data-world="3">3</div>
        <div tabindex="4" class="div" data-world="4">4</div>
        <a href="/" data-world="百度">百度</a>
        <script>
            document.addEventListener('keyup',(e)=>{
                
                let world=document.activeElement.getAttribute('data-world')
                if(world!=null){
                    say(world)
                }
            })
    
            function say(world){
                // const speak=new window.SpeechSynthesisUtterance('噫吁嚱,危乎高哉!蜀道之难,难于上青天!蚕丛及鱼凫,开国何茫然!尔来四万八千岁,不与秦塞通人烟')
                if ( 'speechSynthesis' in window ) {
                    const to_speak = new SpeechSynthesisUtterance(world || 'Hello world!');
                    to_speak.lang="zh-HK"
                    // to_speak.lang="ja-JP"
                    speechSynthesis.cancel();
                    speechSynthesis.speak(to_speak);
                } else {
                    alert('not supported');
                }
            }
        </script>
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:tabindex属性

          本文链接:https://www.haomeiwen.com/subject/lbdubrtx.html