<!DOCTYPE html>
<html>
<head>
<link type="text/css" rel="stylesheet" href="css destination" />
</head>
<body>
<!-- click-able pic with link -->
<a href="site you want">
<!-- Take the off if you don't want click-able link -->
<h1 id(or class)="nameOfClassorid">
<span>Text that is not important</span>
</h1>
</a>
</body>
</html>
Css代码:
span {
display: none;
}
h1 id or class {
height: of pic;
width: of pic;
/* Only flaw (so far) read bottom */
background-image:url(/* "image destination" */);
}
h1 id or class:hover {
/* Now the awesome part */
background-image:url(/* 'new background!!!' */);
}
#light { ... }
#light * { display: none; } // all images are hidden
#light.red .red { display: inline; } // show red image when #light is red
#light.yellow .yellow { display: inline; } // .. or yellow
#light.green .green { display: inline; } // .. or green
24 回答
我用这个CSS的空div解决方案:
HTML:
不,你不能通过CSS设置图像src属性 . 你可以得到的最接近的是
background
或background-image
. 我不建议这样做,因为它有点不合逻辑 .但是,如果您定位的浏览器能够使用它,则可以使用CSS3解决方案 . 使用
content:url
as described in Pacerier's answer . 您可以在下面的其他答案中找到其他跨浏览器解决方案 .HTMl代码:
Css代码:
我放学几天后一直在学习HTML,想知道如何做到这一点 . 找出背景,然后将2和2放在一起 . 这项工作100%我检查,如果不确保你填写必要的东西!我们需要指定高度,因为没有它就没有任何东西!我将保留你可以添加的基本shell .
例:
附:是的我是Linux用户;)
据我所知,你不能 . CSS是关于风格和图像的src是内容 .
当用户打印禁用“打印背景颜色和图像”的文档时,任何基于
background
或background-image
的方法都可能失败 . 遗憾的是,这是典型浏览器的默认设置 .这里唯一的打印友好和跨浏览器兼容的方法是布朗克斯提出的方法 .
或者你可以做到这一点,我发现在interweb thingy .
https://robau.wordpress.com/2012/04/20/override-image-src-in-css/
因此,有效地隐藏图像并填充背景 . 哦,什么是黑客,但如果你想要一个带有替代文字的IMG标签和可以在不使用JavaScript的情况下扩展的背景?
在我正在研究的项目中,我创建了一个英雄块树枝模板
我想补充一点:背景图像也可以用
background-position: x y;
(x水平y垂直)定位 . (..)我的情况,CSS:这是一个非常好的解决方案 - > http://css-tricks.com/replace-the-image-in-an-img-with-css/
Pro(s)和Con(s):
()适用于具有相对宽度/高度的矢量图像(RobAu的answer无法处理的事物)
()是跨浏览器(也适用于IE8)
()它只使用CSS . 因此无需修改img src(或者如果您没有访问/不想更改已存在的img src属性) .
( - )抱歉,它 does use 后台css属性:)
从CSS设置图像的可能方法的集合
CSS2 的:after伪元素或来自 CSS3 的newer语法::after以及content:属性:
第一个W3C建议:层叠样式表,2级CSS2规范1998年5月12日
最新的W3C建议:选择器级别3 W3C建议2011年9月29日
此方法 appends 内容刚好位于元素的文档树内容之后 .
注意:某些浏览器通过实验方式直接在某些元素选择器上呈现
content
属性,而忽略了定义的最新W3C建议:CSS2语法(前向兼容):
CSS3选择器:
默认呈现: Original Size (不依赖于显式大小声明)
但即使在撰写本文时,仍然没有定义带有
<IMG>
标记的行为,尽管它可用于hacked and non standards compliant way, usage with <img> is not recommended !伟大的候选人方法,见结论......
CSS1 的background-image: property :
第一个W3C建议:层叠样式表,1级,1996年12月17日
这个属性从CSS开始就已经存在,但它应该得到光荣的提及 .
默认渲染: Original Size (无法缩放,仅定位)
然而,
CSS3 的background-size:属性通过允许多个缩放选项得到改进:
最新的W3C状态:候选推荐CSS背景和边界模块级别3 2014年9月9日
但即使有这个属性,它也取决于容器的大小 .
仍然是一个很好的候选方法,见结论......
CSS2 的list-style:属性以及
display: list-item
:第一个W3C建议:层叠样式表,2级CSS2规范1998年5月12日
list-style-image:
属性设置将用作列表项标记的图像(项目符号)display: list-item
- 此值导致元素(例如,HTML中的 <li> )生成主块框和标记框 .速记CSS:(
<list-style-type> <list-style-position> <list-style-image>
)默认渲染: Original Size (不依赖于显式大小宣言)
限制:
此方法也不适用于
<img>
标记,因为无法在元素类型之间进行转换,这里的limited, non compliant hack在Chrome上不起作用 .好的候选方法,见结论......
CSS3 的border-image:房产推荐:
最新的W3C状态:候选推荐CSS背景和边界模块级别3 2014年9月9日
一种背景类型的方法,依赖于以相当特殊的方式指定大小(未针对此用例定义)和回溯边界属性(例如.
border: solid
):此示例说明图像仅作为右下角 decoration 组成:
它仍然不能改变
<img>
的标签src
(但here's a hack),而是我们可以装饰它:标准传播后要考虑的好候选方法 .
CSS3 的element()符号工作草案值得一提:
我们将使用两个隐藏图像之一的渲染内容来更改
#img1
中的图像背景,基于 ID Selector 通过CSS:注意:它是 experimental 并且仅适用于Firefox中的
-moz
前缀,仅适用于background
或background-image
属性,也需要指定大小 .结论
任何语义内容或结构信息都以HTML格式提供 .
样式和表示信息在CSS中 .
出于搜索引擎优化的目的,不要在CSS中隐藏有意义的图像 .
打印时通常禁用背景图形 .
Custom tags可以在CSS中使用和设置样式,但是没有Javascript或CSS指导的Internet Explorer does not understand的原始版本 .
SPA(单页应用程序),通常在背景中包含图像
话虽如此,让我们探索适合图像显示的HTML标签:
<li>元素[HTML4.01]
使用
display: list-item
方法完美使用 list-style-image .<li>
元素可以为空,允许flow content,甚至允许省略</li>
结束标记 .限制:难以设计(
width:
或float:
可能有帮助)<figure>元素[HTML5]
该元素有效且没有内容,但建议包含
<figcaption>
.默认渲染:元素右对齐,左右填充!
<object>元素[HTML4]
data
属性是必需的,可以将有效的MIME type作为值!注意:使用CSS中的
<object>
标记的一个技巧是设置一个自定义的有效MimeTypex-image/x
,后跟没有数据(值在所需的逗号之后没有数据,
)默认渲染:300 x 150px,但可以在HTML或CSS中指定大小 .
<SVG>标签
需要SVG capable browser并且具有用于光栅图像的<image>元素
<canvas>元素[HTML5] .
type =“image”的<input>元素
限制:
当没有文字时,Chrome会跟随并呈现一个4x4像素的空方格
部分解决方案,设置
value=" "
:还要注意 HTML5.1 即将推出的<picture>元素,目前正在制定工作草案 .
您可以在HTML代码中定义2个图像,并使用
display: none;
来确定哪个图像可见 .重申一个先前的解决方案,并强调纯CSS实现在这里是我的答案 .
如果您从其他站点获取内容,则需要Pure CSS解决方案,因此您无法控制所交付的HTML . 在我的情况下,我试图删除许可源内容的品牌,以便许可证不必为他们从中购买内容的公司做广告 . 因此,我正在删除他们的徽标,同时保留其他所有内容 . 我应该注意,这是在我的客户 Contract 范围内 .
我今天发现了一个解决方案(适用于IE6,FF,Opera,Chrome):
这个怎么运作:
图像缩小,直到宽度和高度不再可见 .
然后,您需要使用填充'reset'图像大小 . 这个给出一个16x16的图像 . 当然,您可以使用padding-left / padding-top来制作矩形图像 .
最后,使用背景将新图像放在那里 .
如果新背景图像太大或太小,我建议使用
background-size
,例如:background-size:cover;
,它使您的图像适合分配的空间 .它也适用于提交输入图像,它们保持可点击状态 .
观看现场演示:http://www.audenaerde.org/csstricks.html#imagereplacecss
请享用!
使用content:url("image.jpg") .
完整的工作解决方案(现场演示):
经过测试和工作:
Chrome 14.0.835.163
Safari 4.0.5
Opera 10.6
经过测试和 Not 工作:
FireFox 40.0.2(观察开发者网络工具,您可以看到URL加载,但图像未显示)
Internet Explorer 11.0.9600.17905(URL从不加载)
他们是对的 . IMG是一个内容元素,CSS是关于设计的 . 但是,当您为设计目的使用某些内容元素或属性时呢?我在我的网页上有IMG,如果我改变样式(CSS)必须改变 .
那么这是一个用于定义CSS风格的IMG表示(没有真正的图像)的解决方案 .
创建1x1透明gif或png .
将IMG的原始"src"分配给该图像 .
使用CSS样式中的"background-image"定义最终演示文稿 .
它像一个魅力:)
我知道这是一个非常古老的问题,但没有答案提供正确的理由,为什么永远不会这样做 . 虽然你可以"do"你正在寻找什么,你不能以有效的方式做到这一点 . 为了获得有效的img标记, must 具有src和alt属性 .
因此,使用不使用src属性的img标记提供方法的任何答案都会促使使用无效代码 .
简而言之:您所寻找的内容无法在语法结构中合法完成 .
资料来源:W3验证员
有些数据我会留在HTML中,但 src 更好地在CSS中定义:
我找到了比建议的解决方案更好的方法,但确实使用了背景图像 . 符合方法(无法确认IE6)积分:http://www.kryogenix.org/code/browser/lir/
CSS:
没有看到旧图像,新的图像被视为预期 .
以下简洁的解决方案仅适用于webkit
将多个图像放在"controlling"容器中,并根据容器的类更改容器's class instead. In CSS, add rules to manage images'可见性 . 这将产生与更改单个图像的
img src
属性相同的效果 .HTML:
CSS:
请注意,它会预加载所有图像,例如CSS
backround-image
,但不同于通过JS更改img src
.如果您不想设置背景属性,则不能仅使用CSS设置图像的src属性 .
或者,您可以使用JavaScript来执行此类操作 .
使用CSS,它可以完成_292021 . 但是,如果你正在使用JQuery,这样的东西就可以解决问题:
如果您尝试根据项目的上下文动态地在按钮中添加图像,则可以使用?根据结果参考来源 . 在这里,我使用mvvm设计让我的Model.Phases [0]值确定我是否希望我的按钮根据灯光相位的值打开或关闭灯泡图像 .
不确定这是否有帮助 . 我正在使用JqueryUI,Blueprint和CSS . 类定义应该允许您根据自己喜欢的内容设置按钮的样式 .
替代方式
你可以用JS转换它:
只需使用HTML5 :)