巧妙的有css合并图片解决tab切换的背景图片 有时候做tab切换的时候 会碰到下面的这种情况 我截个图过来看看

巧妙的有css合并图片解决tab切换的背景图片_休闲

tab切换 打开页面时候 茶庄介绍  及鼠标移上去时候 是上面这样的效果  当鼠标移下来的时候 是下面这样的

巧妙的有css合并图片解决tab切换的背景图片_tab切换_02

茶庄介绍 就变成这样的背景  一刚开始做这样的 我就想到用js 默认情况下 就想用四张图片 默认做成第一张图片那样的 当我鼠标移到第二个菜单时候 用js中的setAttribute让他他替换图片的路径 但是用js控制比较麻烦点 css样式要写好 并且实现效果及维护网站性能 不如合并图片好 我合并只用一张图片 减少请求数 提高性能 下面是我合并的他图 

巧妙的有css合并图片解决tab切换的背景图片_职场_03

就合并成这样的就可以了 虽然这个是我 以前做的页面 但是还是想总结下及分享下 如果有朋友遇到这样的 直接用css就可以解决啊

HTML代码

 

  1. <div id="tab1"> 
  2.         <ul class="menu"> 
  3.             <li class="first-col"><a  title="茶庄介绍">茶庄介绍</a></li> 
  4.             <li class="last-col"><a title="信用卡还款介绍">信用卡还款介绍</a></li> 
  5.         </ul> 
  6.         <div class="content-main"> 
  7.             <div class="content"> 
  8.                 <img src="p_w_picpaths/content1.jpg" alt="content"/> 
  9.             </div> 
  10.             <div class="hide"> 
  11.                 <img  src="p_w_picpaths/content2.jpg" alt="content"/> 
  12.             </div> 
  13.         </div> 
  14.     </div> 

CSS代码

 

  1. #tab1{overflow:hiddenwidth:950pxmargin:auto;} 
  2. .menu{ width:950pxheight:60pxmargin:0padding:0backgroundurl(../p_w_picpaths/all-bg.jpg) no-repeat;} 
  3. .menu li{ float:leftdisplay:inlineheight:36px;background:url(../p_w_picpaths/bg-title2.jpg) no-repeat left 0;padding-left:14pxtext-align:centermargin-top:23pxmargin-left:32pxfont-size:14px;} 
  4. .menu li.last-col{ margin-left:0;} 
  5. .menu li a{background:url(../p_w_picpaths/bg-title2.jpg) no-repeat right 0padding-right:14pxdisplay:blockline-height:35pxcursorpointercolor:#fff;} 
  6. .menu li.current{ float:leftdisplay:inlineheight:36pxbackground:url(../p_w_picpaths/bg-title2.jpg) no-repeat left -50pxpadding-left:14pxtext-align:center;} 
  7. .menu li.current a{ padding-right:14pxdisplay:blockcolor:#333;background:url(../p_w_picpaths/bg-title2.jpg) no-repeat right -50px;} 

JS代码很简单

 

  1. $(function(){ 
  2.         $(".menu li:first").addClass("current"); 
  3.         $(".menu li").hover(function(){ 
  4.             $(this).addClass("current").siblings().removeClass("current"); 
  5.             var index = $(".menu li").index(this); 
  6.             $(".content-main div").eq(index).show().siblings().hide(); 
  7.         }) 
  8.    }) 

下面是个附件 不明白的地方可以看看 最主要的是 在每个li放了个背景left 0 这样设置后 在li里面有个a标签 当然如果没有连接的话 用span标签会比较好 语义化吗 这样设置后让a标签同样有个背景 让他right 0;这样的话 每个li就是上面蓝色的背景啊 那么他的width不设置 设置padding就可以了 display:block 但是有时候是要设置宽度的 因为在设置display:block时候 在IE6下 会占个一行的 所以具体情况具体分析  好了 我说了那么多 可能很乱 你们可能听不懂什么的  我下面放个附件在下面 感兴趣的可以下载看看代码 一下子就明白啊!!