Поэтому я сделал несколько.png в Photoshop и сделал снимки с ними, просто перейдя в меню "Вставка"> "Объекты изображения"> "Ролловер". Они отлично работали целыми неделями, но внезапно перестали работать, как эффект опрокидывания, так и фактическая гиперссылка, привязанная к этому URL в социальных сетях. Когда вы используете функцию Rollover Image, она превращает <body>
в:
<body onload="MM_preloadImages('images/facebook2.png','images/instagram2.png','images/twitter2.png','images/tumblr2.png','images/threadflip2.png','images/pintrest2.png','images/laceandlattes_title2.png')">
Строка HTML для каждого отдельного значка выглядит примерно так: в теге div:
<a href="https://www.facebook.com/ssaammrr" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('facebook','','images/facebook2.png',1)"><img src="images/facebook.png" width="30" height="30" id="facebook" /></a>
Мне кажется правильным, но если кто-нибудь может подумать о том, почему это не удается, пожалуйста, дайте мне знать
ваш код отлично работает в Dreamweaver, чтобы решить проблему дальше, я бы удостоверился, что у вас есть следующие функции js в ваших тегах:
<script type="text/javascript">
function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
</script>
Я вроде как напольный, что Dreamweaver CS6, выпущенный в апреле 2012 года, по-прежнему использует JavaScript для обмена изображениями. Это намного проще и эффективнее всего с CSS и некоторой дополнительной разметкой.
Я разорву этот ответ из одного из моих более ранних ответов на другой вопрос (который касательно связан с вашим), чтобы показать пример того, как это сделать с помощью CSS.
Скажем, у вас есть следующая разметка:
<a class="rollover-container">
<img class="rollover" src="images/facebook.png"/>
<img class="rollover-swap" src="images/facebook2.png"/>
</a>
У меня уже есть классы по элементам, для эффекта опрокидывания. Существует содержащий элемент <a>
который содержит два элемента <img>
. Это позволяет вам щелкнуть изображение, независимо от того, в каком состоянии они находятся, и быть привязанным к желаемой странице (вы бы добавили href
в <a>
для всех, куда захотите). Затем вы можете заполнить src
атрибуты на <img>
с тем, что изображения, которые вы хотите (.rollover
отображается по умолчанию, и .rollover-swap
скрыт, но местами в при наведении курсора мыши).
Используя эту разметку, вы можете включить следующий CSS для достижения эффекта обмена изображениями только с CSS:
/* Initially hide the hover image */
.rollover-swap {
display: none;
}
/* When hovering over the <a> container, hide the default image */
.rollover-container:hover .rollover {
display: none;
}
/* When hovering over the <a> container, show the hover image */
.rollover-container:hover .rollover-swap {
display: inline;
}
Вы можете увидеть JSFiddle демо здесь (с некоторой дополнительной, но безвредной разметкой, так как эта демонстрация была первоначально для этого другого вопроса).
Для этого метода не требуется JavaScript, поэтому его можно удалить (например, удалить ваши onmouseout
onload
, onmouseout
и onmouseover
из ваших элементов).