Можно ли изменить атрибут img src с помощью css?

Я пытаюсь изменить img src (не фоновый img src) с помощью css

<img id="btnUp" src="img/btnUp.png" alt="btnUp"/>  

#btnUp{
    cursor:pointer;
}
#btnUp:hover{
    src:img/btnUpHover; /* is this possible ? It would be so elegant way.*/
}

8 ответов


No-CSS можно использовать только для изменения фоновых изображений CSS, а не содержимого HTML.

В общем случае элементы пользовательского интерфейса (не содержимое) должны отображаться с использованием CSS-фона. Классы Swapping могут менять фоновые изображения.


вы можете использовать :

content: url("/_layouts/images/GEARS_AN.GIF")

есть еще один способ исправить это: используя CSS box-sizing.

HTML-код :

<img class="banner" src="http://domaine.com/banner.png">

CSS:

.banner {
  display: block;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  background: url(http://domain2.com/newbanner.png) no-repeat;
  width: 180px; /* Width of new image */
  height: 236px; /* Height of new image */
  padding-left: 180px; /* Equal to width of new image */
}

http://css-tricks.com/replace-the-image-in-an-img-with-css/


вы можете использовать CSS для a) сделать исходное изображение невидимым, установив его ширину и высоту в 0 или переместив его за пределы экрана и т. д., И b) вставить новое изображение в его ::до или ::после псевдо-элемента.

Это будет хит производительности, хотя, как браузер будет загружать как исходное, так и новое изображение. Но для этого не потребуется Javascript!


вы не можете установить изображение src атрибут через CSS. вы можете получить, как если бы вы хотели установить use background или background-image.


вы можете попробовать что-то вроде этого

<img id="btnUp" src="empty.png" alt="btnUp" />  

или

<div id="btnUp" title="btnUp"> <div/>  

#btnUp{
    cursor:pointer;
    width:50px;
    height:50px;
    float:left;       
}

#btnUp{
    background-image:url('x.png')
}

#btnUp:hover{
    background-image:url('y.png')
}

Вы можете использовать смесь JavaScript и CSS для достижения этого, но вы не можете сделать это только с CSS. <img id="btnUp" src="empty.png" alt="btnUp" onmouseover="change(img)" onmouseout="changeback(img)" /> Вместо img вы бы поставили имя файла без типа файла.

function change(img){
document.getElementById("btnUp").src= img + ".png";
}
function changeback(img){
document.getElementById("btnUp").src= img + ".png";
}

затем вы используете CSS для изменения тега img или id по своему вкусу.


вы можете установить изображение на полностью прозрачное изображение, а затем изменить фоновое изображение следующим образом:

img {
background-image: url("img1.png");
}
//For example, if you hover over it.
img:hover {
background-image: url("img2.png");
}

картинки должны быть одинакового размера. :( Надеюсь, это поможет!