当前位置:  开发笔记 > 前端 > 正文

是否可以在CSS中设置img标记的src属性的等价物?

如何解决《是否可以在CSS中设置img标记的src属性的等价物?》经验,为你挑选了9个好方法。

是否可以src在CSS中设置属性值?目前,我正在做的是:


我希望它是这样的


.myClass {
    some-src-property: url("pathTo/myImage.jpg");

我想这样做而不使用CSS中的backgroundbackground-image:属性.



1> Pacerier..:

使用content:url("image.jpg").

完整的解决方案(Live Demo):







2> RobAu..:

我今天发现了一个解决方案(适用于IE6 +,FF,Opera,Chrome):


这个怎么运作:

图像缩小,直到宽度和高度不再可见.

然后,您需要使用填充"重置"图像大小.这个给出一个16x16的图像.当然,你可以使用padding-left/padding-top来制作矩形图像.

最后,使用背景将新图像放在那里.

如果新的背景图像太大或太小,我建议使用background-size例如:background-size:cover;它使您的图像适合分配的空间.

它也适用于提交输入图像,它们保持可点击状态.

观看现场演示:http://www.audenaerde.org/csstricks.html#imagereplacecss

请享用!


在这种情况下它是.但是,有些情况下,您无法控制HTML并希望操纵IMG.这个解决方案也有效
必须把它交给你,这是一个令人着迷和聪明,但空DIV更直接.
@RobAnu:这很有效 - [jsfiddle](http://jsfiddle.net/TimPietrusky/R7gQn)
没有对此答案进行排名,这可能是某些应用程序的解决方案,但此方法有一定的局限性.您无法控制图像文件的渲染尺寸.在正常使用中,如果在源中指定了文件,则可以控制图像的高度 - 宽度.但这与带有背景图像的div基本没什么不同,如果你的div比图像大,那你运气不好.
如果图像具有`src`属性,则这是您需要的技术.+1 - 帮了我很多忙
聪明,但应该注意的是,此解决方案不会影响"保存图像"或"复制图像URL"操作的结果......在这些情况下,您仍将获得`src`属性中定义的图像.

3> CSᵠ..:

从CSS设置图像的可能方法的集合


CSS2:after伪元素或较新的语法::afterCSS3与沿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)之前和之后的交互.这将在未来的规范中更详细地定义.

但即使是在写这篇文章的时候,用行为标签尚未定义,虽然它可以被用在黑客攻击和不符合标准的方式,与使用不推荐!

伟大的候选人方法,见结论......



CSS1background-image:财产:

第一个W3C建议:层叠样式表,1级, 1996年12月17日

此属性设置元素的背景图像.设置背景图像时,还应设置在图像不可用时使用的背景颜色.当图像可用时,它覆盖在背景颜色的顶部.

这个属性从CSS开始就已经存在,但它值得一提.

默认渲染:原始大小(无法缩放,仅定位)

但是,

background-size:通过允许多个缩放选项,CSS3的属性得到了改进:

最新的W3C状态:候选推荐 CSS背景和边界模块级别3 2014年9月9日

[length> | | auto ]{1,2} | cover | contain

但即使使用此属性,也取决于容器大小.

仍然是一个很好的候选方法,见结论......



CSS2list-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.

    好的候选人方法,见结论......



    CSS3border-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的回答中所述使用.您可以在下面的其他答案中找到其他跨浏览器解决方案.

  • 推荐阅读
    路人甲
    这个屌丝很懒,什么也没留下!
    DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
    Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有