我被要求对我们的网站进行更改(它使用asp [我不知道什么]),基于css和javascript的解决方案对我来说会更容易。
当用户将光标移动到某个<li>
项目上时,是否可以在网页上更改图形,例如
当鼠标移到选项1上时,将导致某个图片被裁切,另一个用于选项2,而另一个用于选项3。
答案 0 :(得分:4)
给出以下HTML:
<ul>
<li>Some text</li>
<li>Some text</li>
</ul>
<img src="http://davidrhysthomas.co.uk/playtime/img/dwLogoS.png" id="graphic" />
JavaScript:
var lis = document.getElementsByTagName('li');
var graphic = document.getElementById('graphic');
var originalGraphic = graphic.src;
for (i=0; i<lis.length; i++){
lis[i].onmouseover = function(){
graphic.src = "http://davidrhysthomas.co.uk/linked/astrid_avatar.png";
};
lis[i].onmouseout = function(){
graphic.src = originalGraphic;
};
}
如果你想修改它以便每个li
触发一个特定的图像出现,那么你可以使用以下内容或类似的东西来引起它:
var lis = document.getElementsByTagName('li');
var graphic = document.getElementById('graphic');
var originalGraphic = graphic.src;
for (i=0; i<lis.length; i++){
lis[i].onmouseover = function(){
graphic.src = "http://example.com/path/to/images/" + i + ".png";
// this generates image sources of the form:
// http://example.com/path/to/images/1.png
// http://example.com/path/to/images/2.png
// ...and so forth
};
lis[i].onmouseout = function(){
graphic.src = originalGraphic;
};
}
要使用图像源数组,可以使用:
var lis = document.getElementsByTagName('li');
var graphic = document.getElementById('graphic');
var originalGraphic = graphic.src;
var images = [
"http://davidrhysthomas.co.uk/linked/astrid_avatar.png",
"http://davidrhysthomas.co.uk/img/dexter.png"
];
for (i=0; i<lis.length; i++){
lis[i].setAttribute('data-altimage',images[i]);
lis[i].onmouseover = function(){
graphic.src = this.getAttribute('data-altimage');
};
lis[i].onmouseout = function(){
graphic.src = originalGraphic;
};
}
最后,要将替换的图像保留在页面上(而不是替换onmouseout上的原始图像源),只需删除onmouseout
函数:
var lis = document.getElementsByTagName('li');
var graphic = document.getElementById('graphic');
var originalGraphic = graphic.src;
var images = [
"http://davidrhysthomas.co.uk/linked/astrid_avatar.png",
"http://davidrhysthomas.co.uk/img/dexter.png"
];
for (i=0; i<lis.length; i++){
lis[i].setAttribute('data-altimage',images[i]);
lis[i].onmouseover = function(){
graphic.src = this.getAttribute('data-altimage');
};
}
答案 1 :(得分:0)
是的,您只需在每个<li>
上使用鼠标悬停处理程序。
编辑:如果需要,可以提供样本。
EDIT2:http://jsfiddle.net/gajfk/1/是一个简单的例子(图像没有缩放等等,只是为了显示鼠标悬停处理)
答案 2 :(得分:0)
考虑到“干净”的解决方案,它不是(直接)。 您可以附加鼠标悬停处理程序,它将使用预定义参数列表调用loadImage()函数。然后,loadImage()可以根据上下文向服务器询问特定图像,并将其加载到列表项
上答案 3 :(得分:0)
This与jQuery:
<强>标记强>
<ul>
<li>PHP</li>
<li>MySQL</li>
<li>HTML5</li>
</ul>
<img id="thumb"
src="http://www.portable-net.co.uk/images/logos/unknown-logo.png"/>
<强> JS 强>
$('li').mouseover(function() {
var myText = $(this).text();
var myImg = $("#thumb");
switch (myText) {
case 'PHP':
myImg.attr('src',
'http://www.php.net/images/logos/php-med-trans-light.gif');
break;
case 'MySQL':
myImg.attr('src',
'http://www.mysql.com/common/logos/mysql-167x86.png');
break;
case 'HTML5':
myImg.attr('src',
'http://www.w3.org/html/logo/downloads/HTML5_Logo_128.png');
}
});