【问题标题】:How can I remove the dotted border from <area> elements in Firefox?如何从 Firefox 中的 <area> 元素中删除虚线边框?
【发布时间】:2012-10-02 19:08:56
【问题描述】:

在 Firefox(当前版本 14.0.1)中,我在一些 &lt;area&gt; 标记周围得到了一个虚线轮廓,这些标记是我创建的 here (http://mediabrands.com.au/)。我不仅看到一条虚线,而且一旦出现我就无法摆脱它(例如通过单击另一个区域)。

我已经在这里和谷歌搜索了相当长的时间,但仍然没有设法摆脱它们。它们不会出现在任何其他浏览器中。

我尝试过的事情(以及以下的所有组合)都没有成功:

  • outline: none 添加到img、地图和区域标签(以及它们的:focus:active)对应项。
  • 为每个人添加了border: none
  • 为每个人添加了hidefocus="hidefocus"
  • 为每个元素添加了使用::-moz-focus-inner{ border: none; outline: none; } 的各种组合。
  • 为每一个添加了.focus(function(){ $(this).blur(); }) (jQuery)。

我相信我已经用尽了我所能遇到的所有信息 - 有没有其他方法可以消除这些线条?

这是供快速参考的 HTML,以及其中的某些内容可能是我无法摆脱它的原因:

<img src="anatomy/dial/components/foundation.png" id="dial-map" usemap="#dial" />
<map name="dial">
    <area title="Ansible" class="tab" id="click-ansible" shape="poly" coords="412,419,376,447,313,474,248,487,247,434,327,415,374,377" href="#">
    <area title="Cadreon" class="tab" id="click-cadreon" shape="poly" coords="487,245,478,313,455,366,416,417,378,380,429,299,434,246" href="#">
    <area title="Orion" class="tab" id="click-orion" shape="poly" coords="418,73,453,117,482,191,484,242,431,244,422,180,378,111" href="#">
    <area title="Ensemble" class="tab" id="click-ensemble" shape="poly" coords="247,1,311,10,368,35,415,70,378,108,312,66,244,53" href="#">
    <area title="Reprise" class="tab" id="click-reprise" shape="poly" coords="73,69,111,39,176,8,242,2,243,53,172,66,112,108" href="#">
    <area title="Magna Global" class="tab" id="click-magnaglobal" shape="poly" coords="245,487,186,481,114,450,71,417,110,377,175,423,246,432" href="#">
    <area title="Airborne" class="tab" id="click-airborne" shape="poly" coords="69,414,37,373,12,316,2,244,55,244,68,322,106,375" href="#">
    <area title="Marketing Sciences" class="tab" id="click-analytics" shape="poly" coords="2,242,11,171,33,120,71,74,109,109,70,168,54,241" href="#">
    <area title="MB3" class="tab" id="click-mb3" shape="poly" coords="257,430,178,422,120,384,82,340,140,305,163,337,206,360,262,364,317,342,348,305,404,340,384,367,324,413" href="#">
    <area title="UM" class="tab" id="click-um" shape="poly" coords="307,134,245,116,246,56,309,68,375,109,418,178,430,237,429,288,404,339,350,303,368,246,358,198,344,169" href="#">
    <area title="Initiative" class="tab" id="click-initiative" shape="poly" coords="80,339,63,289,58,235,72,171,109,112,176,67,243,56,242,119,192,128,152,159,126,206,122,261,137,306" href="#">
    <area title="View Website" id="website" shape="poly" coords="173,330,139,292,133,213,161,167,196,143,245,129,305,146,336,176,359,246,339,300,309,335,260,352,209,351" href="#">
</map>

【问题讨论】:

  • @Asad 是的,也尝试过 none
  • 我觉得这样说真的很糟糕,但是用 !important 再试一次?或者在某种孤立的环境中,周围没有所有额外的 css 和 js。
  • @Asad 对不起,是的,我也尝试了所有使用 !important 的方法。
  • @MartyWallace 你试过:selection 伪选择器吗?
  • @Ben 是的,检查了 Firebug 并没有看到任何异常,例如浏览器强制轮廓样式等。

标签: html css firefox


【解决方案1】:

尝试使用 CSS:text-decoration:none;

【讨论】:

    【解决方案2】:

    尝试将区域焦点和活动状态设置为边框 0,如下所示:

    根据以下问题:Blue border around image maps in Internet Explorer 9

    a,
    img {
      outline: none;
    }
    map > area,
    map > area:active,
    map > area:focus {
      outline: none;
      border: 0;
    }
    

    【讨论】:

    • 这是 Internet Explorer 的解决方案。问题是关于 Firefox。
    • 那是正确的,但 css 仍然可以解决 FF 中的问题。根据他没有尝试过:focus和:active的问题。我会试一试,因为虚线似乎只有在您单击链接后才会出现。
    • @Aaron 在“我尝试过的事情...”下查看我的问题中的第 1 点
    【解决方案3】:

    似乎焦点模糊导致了问题:

    从 dial.js 中删除:

    // Prevent focus of areas.
    $("img, area, map").focus(function() {
        $(this).blur();
    });
    

    这是我为简化一切而制作的小提琴:http://jsfiddle.net/MadLittleMods/gDrAS/ 注释和取消注释 javascript 以查看不同的结果。


    模糊和焦点的解决方案是使用event.preventDefault()。因此,您可以将上面删除的内容替换为:

    // Prevent focus of areas.
    $("img, area, map").focus(function(e) {
        e.preventDefault();
    }); 
    

    还有一个使用tabindex="-1" 属性的tabindex 修复。

    【讨论】:

    • 我认为stopPropagation 的信息是错误的。来自文档请注意,这不会阻止同一元素上的其他处理程序运行。它可能似乎工作,因为它在您的代码示例中拼写错误并且可能导致中断。 event.preventDefault 会更合适(或组合),但在快速测试中,只有 return false; 似乎始终如一地工作。
    • @MattWhipple 感谢您的拼写检查。修复。我相信还有更多的功能会产生相同的效果。
    【解决方案4】:

    问题是您在 dial.js 的第 151 行上的模糊焦点功能。删除它可以解决问题。

    $("img, area, map").focus(function(event) {
        $(this).blur();
    });
    

    为防止关注区域元素,请将tabindex设置为-1,即

    <area tabindex="-1" title="Ansible" class="tab" id="click-ansible" shape="poly" coords="...
    

    演示:http://jsfiddle.net/SO_AMK/K8Adx/

    【讨论】:

    • 我有&lt;area onfocus="blur();",所以我删除了!,但我添加了一些错误的代码,我现在不记得了,我认为它是 Internet Explorer 的错误。
    猜你喜欢
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 2020-03-27
    • 2011-05-21
    • 2019-08-24
    相关资源
    最近更新 更多