【问题标题】:How to remove selection on images如何删除图像上的选择
【发布时间】:2014-09-12 20:59:47
【问题描述】:

我想删除页面上所有图像的选择突出显示。 我发现了一些有用的补充,例如:

CSS

img {
     -webkit-user-select:none;
     -khtml-user-select:none;
     -moz-user-select:none;
     -o-user-select:none;
      user-select:none;
      pointer-events:none
}

但是当我按下鼠标按钮并选择多个内容或按Ctrl+A 进行“全选”时,我的图像会以蓝色阴影突出显示。 我尝试通过以下方式更改它:

CSS

img::selection      {background:transparent;color:inherit;}
img::-moz-selection {background:transparent;color:inherit;}

但这没有任何作用。

有人有有用的解决方案还是还没有?

附: : 我不在乎选择我的图像 - 我只是想摆脱那个蓝色的形状。

【问题讨论】:

  • 尝试添加样式:outline:0
  • 忘了提 - 已经测试过了,你可以想象 - 不会工作
  • IE 也可以......所以这意味着这是一个 Firefox 问题
  • @Pinal - 这不适用于我设备上的 FF 和 IE

标签: html css image selection selectall


【解决方案1】:

这是我想出的一个古怪的解决方案......

1) 经过一些测试,我发现这只发生在 Mozilla 上。其他浏览器不显示代码时图像上的蓝色选择

img::selection {
    background: transparent;
}

已设置。

2) 即使是 Mozilla - 只有图像元素有问题。但是带有background-image 的其他元素遵循::selection 规则。

所以技术上我们可以解决这个问题,假设我们在我们设置为 display:none; 的每个 img 元素之后在我们的标记中添加一个空跨度;

然后我们可以添加一些仅在 firefox 中运行的 CSS,它将图像设置为 display:none 并在相邻的 span 上放置一个背景图像。

像这样:

FIDDLE

**

img::selection {
    background: transparent;
}
img + span {
    display: none;
}

@-moz-document url-prefix() {
    img {
        display: none;
    }
    
    img + span {
        background: url(http://placehold.it/200x200) no-repeat;
        width: 200px;
        height: 200px;
        display: block;
    }
}
<div>Hello there </div>

<img src="http://placehold.it/200x200" /><span></span>

<div>Hello there </div>
1: http://jsfiddle.net/GMuzV/30/

【讨论】:

  • 它工作得很好——遗憾的是我忘了提到我需要 标签本身用于 SEO 目的。如果今天没有找到其他解决方案 - 您将获得研究和工作的赏金奖励;)
  • 我并不是建议消除 img 元素。我的解决方案建议在它们上设置display:none,而且 - 仅用于 forefox。这不应该干扰 SEO,因为标记几乎保持不变(除了额外的跨度)
  • 你真的认为谷歌机器人不能降低你的搜索引擎优化,因为关键元素都在展示:无;或可见性:隐藏; ?那为什么人们有大的可见标签云或页脚?
【解决方案2】:

这禁用了 DOM 元素上的突出显示:

function disableSelection(target){
    if (typeof target.onselectstart!="undefined") // if IE
        target.onselectstart=function(){return false}
    else if (typeof target.style.MozUserSelect!="undefined") // if Firefox
        target.style.MozUserSelect="none";
    else // others
         target.onmousedown=function(){return false;}

    target.style.cursor = "default";
}

像这样使用它:

disableSelection(document.getElementById("my_image"));

【讨论】:

  • 我很欣赏你的工作,但 Firefox 仍然搞砸了该代码:/
猜你喜欢
  • 2018-03-14
  • 1970-01-01
  • 2021-04-28
  • 1970-01-01
  • 1970-01-01
  • 2011-11-04
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多