小编Tim*_*mah的帖子

除非使用"tabindex",否则为什么IE在浏览网页时会忽略"标签位置"?

我正在使用快捷方式链接来加速通过网页的标签,这在Chrome和Firefox中运行良好.

这是小提琴演示我的问题.

当使用"跳过"链接更改"标签位置",然后TAB按键时,大多数浏览器会继续按顺序跳转到可聚焦的交互式或使用tabindex的元素:

<div class="skiplinks">
    <a href="#nav">Skip to Navigation</a>
    <a href="#search">Skip to Search</a>
    <a href="#anchor">Skip to anchor</a>
</div>

<div id="wrapper">
    <p>Some boring content containing <a href="#">a selectable link</a>.</p>
    <ul id="nav">
        <li><a href="#">link 1</li>
        <li><a href="#">link 2</li>
        <li><a id="anchor">anchor with no href</li>
    </ul>
    <form id="search">
        <input type="search" id="search-field" />
    </form>
</div>
Run Code Online (Sandbox Code Playgroud)

在此示例中,单击链接时,"标签位置"将移动到文档中的该位置.TAB然后按下将跳过跳过链接目标的下一个可聚焦元素- 尝试此演示.

除非你使用的是IE.如果IE关注于交互元素或具有tabindex定义属性的元素,IE似乎只会尊重"标签位置"的变化.这意味着锚标签被用作"片段"或位置锚,也不会导致tabinx被更新.

在上面的示例中,选择跳过链接然后点击TAB只是跳回到页面上的第一个链接.选择"跳过锚定"然后"选项卡"也会跳回到顶部.这个怪癖似乎影响IE 8-11.

好的,那么为什么不直接将跳转链接指向交互元素而不是包装器呢?我试过了,巧合地解决了IE中的错误,并在Firefox中引入了它.如果我优先考虑IE而不是FF,我会被诅咒.

我只是缺少一些非常明显的东西吗?


UPDATE

我已经解决了这个问题,解决方案是只创建片段/跳过链接,指向分配<a>了负值的标签tabindex:

<a href="#destination">Skip …

html tabs internet-explorer tabindex

6
推荐指数
1
解决办法
834
查看次数

使用JavaScript检测动态媒体查询?

我一直在寻找一种轻量,灵活,跨浏览器的解决方案,以在JavaScript中访问CSS媒体查询,而不会在JavaScript代码中重复CSS断点。

CSS技巧发布了一个基于CSS3动画的解决方案,该解决方案似乎很有帮助,但是建议改用Enquire.js

Enquire.js似乎仍然需要在脚本中对Media Query大小进行硬编码,例如

enquire.register("screen and (max-width:45em)", { // do stuff }
Run Code Online (Sandbox Code Playgroud)

问题

到目前为止,所有用于访问Java媒体查询的解决方案似乎都依赖于在脚本中硬编码的断点。如何以允许仅在CSS中定义断点而不依赖的方式访问断点.on('resize')

尝试的解决方案

我已经制作了自己的版本,可以在IE9 +中使用,使用了一个隐藏元素,该元素使用该:content属性添加查询触发时想要的任何内容(与ZeroSixThree解决方案相同的起点):

的HTML

<body>
    <p>Page content</p>
    <span id="mobile-test"></span>
</body>
Run Code Online (Sandbox Code Playgroud)

的CSS

#mobile-test {
    display:none;
    content: 'mq-small';
}
@media screen only and (min-width: 25em) {
    #mobile-test {
        content: 'mq-medium';
    }
}
@media screen only and (min-width: 40em) {
    #mobile-test {
        content: 'mq-large';
    }
}
Run Code Online (Sandbox Code Playgroud)

使用jQuery的JavaScript

// Allow resizing to be assessed …
Run Code Online (Sandbox Code Playgroud)

javascript css media-queries responsive

4
推荐指数
2
解决办法
3395
查看次数