美文网首页
利用 over-flow 实现无 JS 的 tab 选项卡切换

利用 over-flow 实现无 JS 的 tab 选项卡切换

作者: Allan要做活神仙 | 来源:发表于2019-03-03 18:38 被阅读0次

一般tab选项卡切换需要使用JS,但利用css中的focus锚点定位和overflow也能实现!

.box {
        height: 10em;
        border: 1px solid #ddd;
        overflow: hidden;
      }
      .list {
        height: 100%;
        background: #ddd;
        position: relative;
      }
      .list > input {
        position: absolute;
        top: 0;
        height: 100%;
        width: 1px;
        border: 0;
        padding: 0;
        margin: 0;
        clip: rect(0 0 0 0);
      }

    <div class="box">
      <div class="list"><input id="one" />1</div>
      <div class="list"><input id="two" />2</div>
      <div class="list"><input id="three" />3</div>
      <div class="list"><input id="four" />4</div>
    </div>
    <div class="link">
      <label class="click" for="one">1</label>
      <label class="click" for="two">2</label>
      <label class="click" for="three">3</label>
      <label class="click" for="four">4</label>
    </div>
image.png

原理其实很简单,就是在每个列表里塞入一个肉眼看不见的<input>输入框,然后选项卡 按钮变成<label>元素,并通过 for 属性与<input>输入框的 id 相关联,这样,点击选项按 钮会触发输入框的 focus 行为,触发锚点定位,实现选项卡切换效果。
这种原理实现的选项卡还有一个优点就是,我们可以直接使用 Tab 键来切换、浏览各个选 项面板的内容,传统的选项卡实现并没有如此便捷的可访问性。
然而,上面这种技术要想用在实际项目中还离不开 JavaScript 的支持,一个是选项卡按钮 的选中效果,另一个就是处理列表部分区域在浏览器外面时依然会跳动的问题。

关键词:inputlabeloverflow: hidden;

引用来自:张鑫旭

相关文章

网友评论

      本文标题:利用 over-flow 实现无 JS 的 tab 选项卡切换

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