是否可以src
在CSS中设置属性值?目前,我正在做的是:
我希望它是这样的
.myClass {
some-src-property: url("pathTo/myImage.jpg");
我想这样做而不使用CSS中的background
或background-image:
属性.
使用content:url("image.jpg")
.
完整的解决方案(Live Demo):
我今天发现了一个解决方案(适用于IE6 +,FF,Opera,Chrome):
这个怎么运作:
图像缩小,直到宽度和高度不再可见.
然后,您需要使用填充"重置"图像大小.这个给出一个16x16的图像.当然,你可以使用padding-left/padding-top来制作矩形图像.
最后,使用背景将新图像放在那里.
如果新的背景图像太大或太小,我建议使用background-size
例如:background-size:cover;
它使您的图像适合分配的空间.
它也适用于提交输入图像,它们保持可点击状态.
观看现场演示:http://www.audenaerde.org/csstricks.html#imagereplacecss
请享用!
CSS2的:after
伪元素或较新的语法::after
从CSS3与沿content:
属性:
第一个W3C建议书:级联样式表,2级CSS2规范 1998年5月12日
最新W3C建议书:选择器级别3 W3C建议书 2011年9月29日
这种方法追加仅仅满足后一个元素文档树内容.
注意:一些浏览器通过实验content
性地直接在一些元素选择器上呈现属性,而不管最新的W3C推荐定义:
适用于:
:before
和:after
伪元素
CSS2语法(向前兼容):
.myClass:after {
content: url("somepicture.jpg");
}
CSS3选择器:
.myClass::after {
content: url("somepicture.jpg");
}
默认渲染:原始大小(不依赖于显式大小声明)
此规范未完全定义:替换元素(例如HTML中的IMG)之前和之后的交互.这将在未来的规范中更详细地定义.
但即使是在写这篇文章的时候,用行为标签尚未定义,虽然它可以被用在黑客攻击和不符合标准的方式,与使用
不推荐!
伟大的候选人方法,见结论......
background-image:
财产:
第一个W3C建议:层叠样式表,1级, 1996年12月17日
此属性设置元素的背景图像.设置背景图像时,还应设置在图像不可用时使用的背景颜色.当图像可用时,它覆盖在背景颜色的顶部.
这个属性从CSS开始就已经存在,但它值得一提.
默认渲染:原始大小(无法缩放,仅定位)
但是,
background-size:
通过允许多个缩放选项,CSS3的属性得到了改进:
最新的W3C状态:候选推荐 CSS背景和边界模块级别3 2014年9月9日
[length> |
| auto ]{1,2} | cover | contain
但即使使用此属性,也取决于容器大小.
仍然是一个很好的候选方法,见结论......
CSS2的list-style:
财产以及display: list-item
:
第一个W3C建议:层叠样式表,2级CSS2规范 1998年5月12日
list-style-image:
属性设置将用作列表项标记的图像(项目符号)
列表属性描述了列表的基本可视化格式:它们允许样式表指定标记类型(图像,字形或数字)
display: list-item
- 此值使元素(例如,在HTML中)生成主块框和标记框.
.myClass {
display: list-item;
list-style-position: inside;
list-style-image: url("someimage.jpg");
}
速记CSS :(
)
.myClass {
display: list-item;
list-style: square inside url("someimage.jpg");
}
默认渲染:原始大小(不依赖于显式大小声明)
限制:
继承将把"list-style"值从OL和UL元素传递给LI元素.这是指定列表样式信息的推荐方法.
它们不允许作者为列表标记指定不同的样式(颜色,字体,对齐等)或调整其位置
此方法也不适用于标记,因为无法在元素类型之间进行转换,这是有限的,不兼容的hack,不适用于Chrome.
好的候选人方法,见结论......
CSS3的border-image:
房产推荐:
最新的W3C状态:候选推荐 CSS背景和边界模块级别3 2014年9月9日
甲背景型依赖于在一个比较奇特方式指定尺寸的方法(用于该用途的情况下,没有定义)和回退边框属性迄今(例如border: solid
):
请注意,即使它们永远不会导致滚动机制,也可能会由祖先或视口剪切开始图像.
这个例子说明了图像被构成仅作为右下角装饰:
.myClass {
border: solid;
border-width: 0 480px 320px 0;
border-image: url("http://i.imgur.com/uKnMvyp.jpg") 0 100% 100% 0;
}
适用于:所有元素,但内部表元素除外
border-collapse: collapse
它仍然不能改变一个标签
src
(但这里是一个黑客),而是我们可以装饰它:
.myClass {
border: solid;
border-width: 0 96px 96px 0;
border-image: url("http://upload.wikimedia.org/wikipedia/commons/9/95/Christmas_bell_icon_1.png")
0 100% 100% 0;
}
4> Emmanuel Tou..:
我用这个CSS的空div解决方案:
#throbber {
background-image: url(/Content/pictures/ajax-loader.gif);
background-repeat: no-repeat;
width: 48px;
height: 48px;
min-width: 48px;
min-height: 48px;
}
HTML:
5> EricG..:
我找到了比建议的解决方案更好的方法,但确实使用了背景图像.
符合方法(无法确认IE6)
致谢:http://www.kryogenix.org/code/browser/lir/
CSS:
img[src*="pathTo/myImage.jpg"] {
background-image: url("mynewimg.jpg"); /* lets say 20x20 */
width: 20px;
display:inline-block;
padding: 20px 0 0 0;
height: 0px !important;
/* for IE 5.5's bad box model */
height /**/:20px;
}
没有看到旧图像,新的图像被视为预期.
以下简洁的解决方案仅适用于webkit
img[src*="pathTo/myImage.jpg"] {
/* note :) */
content:'';
display:inline-block;
width: 20px;
height: 20px;
background-image: url("mynewimg.jpg"); /* lets say 20x20 */
}
6> 小智..:
他们是对的.IMG是一个内容元素,CSS是关于设计的.但是,当您为设计目的使用某些内容元素或属性时呢?我在我的网页上有IMG,如果我改变样式(CSS)必须改变.
那么这是一个用于定义CSS风格的IMG表示(没有真正的图像)的解决方案.
创建1x1透明gif或png.
将IMG的"src"分配给该图像.
使用CSS样式中的"background-image"定义最终演示文稿.
它像一个魅力:)
-1即使你的答案不错,他也特别提到他不想使用`background*`
7> 小智..:
这是一个非常好的解决方案 - > http://css-tricks.com/replace-the-image-in-an-img-with-css/
Pro(s)和Con(s):(
+)适用于矢量具有相对宽度/高度的图像(RobAu的答案不能处理的东西)
(+)是跨浏览器(也适用于IE8 +)
(+)它只使用CSS.因此无需修改img src(或者如果您没有访问/不想更改已存在的img src属性).
( - )对不起,它确实使用了后台css属性:)
8> 小智..:
您可以在HTML代码中定义2个图像,然后使用它们display: none;
来决定哪个图像可见.
9> cletus..:
不,你不能通过CSS设置图像src属性.你可以得到的最接近的是,background
或者background-image
.我不建议这样做,因为它有点不合逻辑.
但是,如果您定位的浏览器能够使用它,则可以使用CSS3解决方案.content:url
按照Pacerier的回答中所述使用.您可以在下面的其他答案中找到其他跨浏览器解决方案.