jQuery对li设置背景颜色和透明度

在用jQuery对页面ul下的li进行mouseover和mouseleave设置背景颜色和透明度的设置时,发现当mouseleave时,本身在li里面的字体颜色变淡了。

代码如下:

<!DOCTYPE HTML>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>my test</title>
 <script type="text/javascript" src="jquery-2.0.0.js"></script>
    <script type="text/javascript" src="jquery-2.0.0.min.js"></script>
<style>
   li{
    list-style: none;
    }
   div.top{
            position:relative;


            width: 1160px;
            height: 70px;
            margin: 0 auto;
            border-bottom: 0.5px solid lightgray;
            z-index: 90000;
        }
      
        ul.top-center{
            position: relative;
            margin-left: 20px;


        }
        ul.top-center li{
            height: 70px;
            width: 70px;
            position: relative;
            line-height: 400%;
            text-align: center;
        }
   
        div.top ul li{
            float: left;
        }
        div.top ul li a{
            color: red;
            font-size:23px;
            text-decoration: none;
        }
        }
</style>
<script type="text/javascript">
 $(document).ready(function(){
    $(".bg1").mouseover(function(){
       this.style.background="gray";
        this.style.opacity="0.3";
    });
    $(".bg1").mouseleave(function(){
     this.style.background="none";
        this.style.opacity="none";
    });
});
</script>
</head>


<body>
<div class="top">
 <ul class="top-center">
        <li class="bg1"><a href="#">首页</a></li>
        <li><a href="#">午后</a></li>
        <li><a href="#">自驾</a></li>
        <li><a href="#">混</a></li>
        <li><a href="#">晚饭</a></li>
        <li><a href="#">夹袄</a></li>
        
    </ul>
</div>
<body>
</html>

看到,当鼠标移出时,本该恢复原来样式的却变淡了:div设置opacity属性会导致内部文字也透明。
 

是因为opacity会影响子类元素的背景颜色及透明度

所找到的解决方法:1.设置两个div,将背景颜色改变所在的div与文字所在的div分开,重叠后,背景的改变便不会影响字体的颜色

<body>
<div class="top">
 <ul class="top-center">
        <li class="bg1"></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        
    </ul>
</div>
<div class="on">
 <ul class="on1">
        <li><a href="#">首页</a></li>
        <li><a href="#">午后</a></li>
        <li><a href="#">自驾</a></li>
        <li><a href="#">混</a></li>
        <li><a href="#">晚饭</a></li>
        <li><a href="#">夹袄</a></li>
        
    </ul>
</div>
<body>

2.对背景设置rgba(x1,x2,x3,y),避免了子类对opacity的继承:

background="rgba(1,1,1,0.3)";

猜你喜欢

转载自blog.csdn.net/dream_miracle/article/details/52525714