【问题标题】:jQuery buttons to change background images用于更改背景图像的 jQuery 按钮
【发布时间】:2012-03-16 20:55:59
【问题描述】:

我想创建一系列按钮。当用户将鼠标悬停在按钮上时,我想在背景中显示不同的图像。 bg 图像之间的过渡应该是平滑的淡入淡出。

我粘贴了一些代码来显示我的设置:http://jsfiddle.net/Rk4YG/

注意:最好停止选择背景图像 - 这是否意味着使用 css background-image?

如果有人可以帮助我编写一些代码来实现这一点,或者为我指出一个好的教程的正确方向,我将非常感激。

提前感谢您的帮助。

【问题讨论】:

  • jsfiddle 代码帮了大忙。 +1 包括它。

标签: javascript jquery button background hover


【解决方案1】:

以下内容可能会帮助您入门:

HTML

我们使用 HTML5 数据属性来存储每个背景图像的名称。稍后使用 jQuery .attr() 函数检索这些内容。

<div role="main" class="mid"></div>
<div class="btncontain">
    <div class="btn btn1" data-bg-img="image0.png"><a href="#">Button 1</a></div>
    <div class="btn btn2" data-bg-img="image1.png"><a href="#">Button 2</a></div>
    <div class="btn btn3" data-bg-img="image2.png"><a href="#">Button 3</a></div>
    <div class="btn btn4" data-bg-img="image3.png"><a href="#">Button 4</a></div>
    <div class="btn btn5" data-bg-img="image4.png"><a href="#">Button 5</a></div>
    <div class="btn btn6" data-bg-img="image5.png"><a href="#">Button 6</a></div>
    <div class="btn btn7" data-bg-img="image6.png"><a href="#">Button 7</a></div>
    <div class="btn btn8" data-bg-img="image7.png"><a href="#">Button 8</a></div>
    <div class="clearfix"></div>
</div>

CSS

.mid 现在位于按钮后面。两者都绝对可以正确分层。

body { padding: 0; margin:0; }
.mid { width:100%; height: 700px; position:absolute; }
.btncontain { width:80%; margin: 0 auto; position:absolute; }
.btn a { width: 150px; height: 70px; background: yellow; float: left; margin: 0 30px 100px 30px; }
.mid { background-image: url(image0.png);

JavaScript

jQuery animate 函数在背景顶部淡入div.mid。 100% 不透明后,我们将背景图像切换到新的图像并隐藏div.mid

$(function(){
    $('.btn a').parents('.btn').hover(function(){
      var  img = $(this).attr('data-bg-img'),
           afterFadeIn = function() {
               $('body').css('background-image', 'url(' + img + ')');
               $('mid').css('opacity', 0);
           };
      $('.mid')
          .css({'background-image': 'url(' + img + ')', 'opacity': 0})
          .animate({ 'opacity' : 1 }, 500, afterFadeIn);
    });
});

【讨论】:

  • 感谢您的回复。我刚刚在 jsfiddle 中用一些 google 图像引用代替了 .png,对此进行了测试,但悬停似乎不起作用。有没有机会帮我找到问题?
猜你喜欢
  • 2013-09-07
  • 2016-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2016-01-09
相关资源
最近更新 更多