如何使 <IMG> 标志不可拖动

Posted

技术标签:

【中文标题】如何使 <IMG> 标志不可拖动【英文标题】:How to make <IMG> logo not draggable 【发布时间】:2013-09-09 17:25:48 【问题描述】:

我刚刚读了一遍:

http://csswizardry.com/2010/10/your-logo-is-an-image-not-a-h1/

他说我不应该使用&lt;h1&gt; 作为我的标志...我应该使用&lt;img&gt;

但是如何使用&lt;img&gt; 使图像不可拖动?他的网站似乎使用&lt;img&gt; 来放置徽标图像,但它也是不可拖动的..

【问题讨论】:

您是否担心有人使用拖放功能窃取您的图像?因为如果是这样,您应该意识到您实际上无法阻止任何人“窃取”您已经提供给他们的图像。 我质疑那篇文章的有效性。在您的徽标或网站的总标题中使用 &lt;h1&gt; 与可访问性有关。 @Wooble 这不是我关心的问题...我喜欢非拖拽图像的美感。 我在火狐上,我可以拖动它。 标志是内容图像还是装饰图像是有争议的(应该注意&lt;h1&gt;&lt;img src="..." alt="Coca Cola" /&gt;&lt;/h1&gt; 是完全有效的)。我的观点是,如果重新设计时图像内容永远不会改变,那么它就是内容图像,应该通过&lt;img /&gt; 嵌入。否则它是装饰性的并且属于 CSS。 “我喜欢我不能拖它”不是选择一种技术而不是另一种技术的好理由。 【参考方案1】:

设置图片的CSS属性为:-

user-drag: none; -moz-user-select: none; -webkit-user-drag: none;

【讨论】:

【参考方案2】:

您为&lt;img&gt; 标记使用1×1 透明GIF,然后使用CSS 设置它的大小和背景图像。如果有人拖动图像,他们拖动的是透明的 GIF,而不是可见的徽标。在他的页面中,源代码如下:

<img src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="  class="s  s--csswizardry-logo">

“s s--csswizardry-logo”在哪里:

background-image: url(/img/css/sprites/main.svg);
-webkit-background-size: 500px 500px;
-moz-background-size: 500px 500px;
-ms-background-size: 500px 500px;
-o-background-size: 500px 500px;
background-size: 500px 500px;
width: 128px;
height: 128px;
background-position: -10px -10px;

【讨论】:

这很有趣..在文章中他说“停止将徽标用作背景”,但实际上确实是这样做的..我知道仍然有一个 &lt;img&gt; 元素,但仍然..跨度> 我没有在页面中注意到这一点。我喜欢那里的讽刺。 这很有趣,我刚刚看到 并假设他正在使用它来显示图像。他的方法是对 css 背景的另一种演绎。这是有缺陷的,因为当您尝试打印他的页面时,隐藏的徽标被认为是背景而不是内容。【参考方案3】:

只需使用以下代码:

<img href="img.png" draggable="false" />

如果您认为它无法选择,请在 CSS 中使用此代码:

user-drag: none;
user-select: none;
-webkit-user-drag: none;
-webkit-user-select: none;
-ms-user-select: none;

CSS 来源:Preventing an image from being draggable or selectable without using JS

【讨论】:

以上是关于如何使 <IMG> 标志不可拖动的主要内容,如果未能解决你的问题,请参考以下文章

如何将可拖动属性传递给 Next.js Image 组件中的 <img>?

如何使 PhoneGap iOS 应用程序的主窗口不可拖动?

如何使用 jQuery 使文本框可拖动?

如何使 jquery 创建的 div 可拖动?

如何使 svg 容器中的 <g> svg-group 可拖动

制作一个包含img draggable的div