2016-05-15 36 views
0

我想着色盘旋上的圆形div(如保持其原始颜色,但在其上添加黑色透明色调)。我有一个div这是另一个DIV内创建一个圆形影响three.js所,然后创造了解决这个额外的div:CSS:关于悬停的tint圆形div?只有在div后面着色?

<ul> 
     <!-- <li>--> 
     <div class = "overlay"><a href="polyGalaxy/index.html"><div class ="circle1"> 
     <div id ="btn1"></div> 
     </div> 
     </a></div> 
     <!--</li> 
     <li> 
     <div class ="circle2"> 
     <div id ="btn2"></div> 
     </div> 
     </li>--> 
     </ul> 

我试图用它来创建一个色调:

.overlay:hover { 
    background: rgba(0,0,0,0.5); 
    border-radius: 50%; 
    z-index: 5; 
} 
.circle1 { 
    background: #50a3a2; 
    background: -webkit-linear-gradient(top left, #50a3a2 0%, #53e3a6 100%); 
    background: linear-gradient(to bottom right, #50a3a2 0%, #53e3a6 100%); 
    display: table; 
    border-radius: 50%; 
    position: relative; 
    margin: 50px auto; 
    height: 100px; 
    width: 100px; 
} 
#btn1 { 

    vertical-align: middle; 
    text-align:center; 
    left:0%; 
    position:relative; /*makes left effective*/ 
    display:table-cell; 
} 

但是叠加层只能在圆形的div后面着色。我知道这是因为当我删除border-radius,我得到这个: enter image description here

我怎样才能着色盘旋圆形div?

+0

您的代码不会不工作,因为背景是元素的最底层AFAIK - 您需要将该背景色添加到*圆形对象上方的元素。 – Aziz

回答

0

你可以创建一个使用它有一个rgba背景色(色彩)的伪元素上悬停变淡这种效果:

.circle1 { 
 
    background: #50a3a2; 
 
    background: -webkit-linear-gradient(top left, #50a3a2 0%, #53e3a6 100%); 
 
    background: linear-gradient(to bottom right, #50a3a2 0%, #53e3a6 100%); 
 
    display: table; 
 
    border-radius: 50%; 
 
    position: relative; 
 
    margin: 50px auto; 
 
    height: 100px; 
 
    width: 100px; 
 
} 
 

 
.circle1::after { 
 
    content: ''; 
 
    position: absolute; 
 
    top: 0; left: 0; right: 0; bottom: 0; 
 
    background: rgba(0, 0, 0, 0.5); 
 
    border-radius: inherit; 
 
    display: block; 
 
    opacity: 0; 
 
    transition: opacity 0.5s; 
 
} 
 

 
.circle1:hover::after {opacity:1;}
<div class="circle1"> 
 
    <div id="btn1"></div> 
 
</div>

的jsfiddle:https://jsfiddle.net/azizn/9zn3mpa4/