2015-12-24 76 views
0

我的问题很奇怪,但很简单。我得到了一个类navbaritem的div,出于某种原因,过渡规则适用于边距,但不适用于背景。CSS转换不适用于背景

这里的HTML和CSS

* { 
 
    font-family: Raleway, Century Gothic; 
 
} 
 

 
body { 
 
    margin: 0px; 
 
} 
 

 
a { 
 
    text-decoration: none; 
 
    color: #fff; 
 
} 
 

 
header > ul > li { 
 
    margin-bottom: 5vh; 
 
} 
 

 
.navbaritem { 
 
    position: absolute; 
 
    width: 30vw; 
 
    height: 6vh; 
 
    margin-left: -8vw; 
 
    -webkit-transform: skew(-30deg); 
 
    -moz-transform: skew(-30deg); 
 
    -o-transform: skew(-30deg); 
 
    
 
    background: rgb(245,246,246); 
 
    background: -moz-linear-gradient(top, rgba(245,246,246,1) 0%, rgba(219,220,226,1) 21%, rgba(184,186,198,1) 49%, rgba(221,223,227,1) 80%, rgba(245,246,246,1) 100%); 
 
    background: -webkit-linear-gradient(top, rgba(245,246,246,1) 0%,rgba(219,220,226,1) 21%,rgba(184,186,198,1) 49%,rgba(221,223,227,1) 80%,rgba(245,246,246,1) 100%); 
 
    background: linear-gradient(to bottom, rgba(245,246,246,1) 0%,rgba(219,220,226,1) 21%,rgba(184,186,198,1) 49%,rgba(221,223,227,1) 80%,rgba(245,246,246,1) 100%); 
 
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f6f6', endColorstr='#f5f6f6',GradientType=0); 
 
    
 
    transition: 0.4s ease; 
 
} 
 

 
.navbaritem:hover { 
 
    margin-left: -3vw; 
 
    transition: 0.4s ease; 
 
} 
 

 
.navbaritem > a { 
 
    height: 80%; 
 
    margin-top: 1%; 
 
    margin-left: -10%; 
 
    width: 90%; 
 
    background: url(../img/graystripes.jpg); 
 
    box-shadow: inset 3vh 1vh 3vh #000; 
 
    -webkit-transform: skew(30deg); 
 
    -moz-transform: skew(30deg); 
 
    -o-transform: skew(30deg); 
 
    position: absolute; 
 
    text-align: center; 
 
    font-size: 4vh; 
 
} 
 

 

 
.navbaritem:hover { 
 
    transition: 0.4s ease; 
 
    
 
    background: rgb(255,0,0); 
 
    background: -moz-linear-gradient(top, rgba(255,0,0,1) 0%, rgba(247,0,0,1) 21%, rgba(137,0,0,1) 49%, rgba(247,0,0,1) 80%, rgba(255,0,0,1) 100%); 
 
    background: -webkit-linear-gradient(top, rgba(255,0,0,1) 0%,rgba(247,0,0,1) 21%,rgba(137,0,0,1) 49%,rgba(247,0,0,1) 80%,rgba(255,0,0,1) 100%); 
 
    background: linear-gradient(to bottom, rgba(255,0,0,1) 0%,rgba(247,0,0,1) 21%,rgba(137,0,0,1) 49%,rgba(247,0,0,1) 80%,rgba(255,0,0,1) 100%); 
 
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0000', endColorstr='#ff0000',GradientType=0); 
 
} 
 

 
.navbaritem > i { 
 
    font-size: 5vh; 
 
    color: #444; 
 
    margin-top: 1%; 
 
    margin-left: 85%; 
 
    
 
    -webkit-transform: skew(30deg); 
 
    -moz-transform: skew(30deg); 
 
    -o-transform: skew(30deg); 
 
}
<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
     <meta charset="UTF-8"> 
 
     <meta name="description" content="Offizielle Website von TesseractLabs"> 
 
     <meta name="author" content="Alexander Heuwes"> 
 
     
 
     <title>TesseractLabs | Home</title> 
 
     
 
     <link type="text/css" rel="stylesheet" href="css/style.css"> 
 
     <link type="text/css" rel="stylesheet" href="css/hover.css"> 
 
     <link type="text/css" rel="stylesheet" href="css/font-awesome.css"> 
 
     <link type="text/css" rel="stylesheet" href="css/font-awesome.min.css"> 
 
     <link type="text/css" rel="stylesheet" href="http://fonts.googleapis.com/css?family=Raleway:100,200,300,400,500,600,700,800,900"> 
 

 
     <script src="js/jquery-1.11.3.min.js"></script> 
 
     <script src="js/jquery-migrate-1.2.1.min.js"></script> 
 
     <script src="js/classie.js"></script> 
 
    </head> 
 
    <body> 
 
     <header> 
 
      <ul> 
 
       <li> 
 
        <div class="navbaritem"> 
 
         <a href="#">Home</a> 
 
         <i class="fa fa-home"></i> 
 
        </div> 
 
       </li> 
 
       <li> 
 
        <div class="navbaritem"> 
 
         <a href="#">Services</a> 
 
         <i class="fa fa-code"></i> 
 
        </div> 
 
       </li> 
 
       <li> 
 
        <div class="navbaritem"> 
 
         <a href="#">Pricing</a> 
 
         <i class="fa fa-money"></i> 
 
        </div> 
 
       </li> 
 
       <li> 
 
        <div class="navbaritem"> 
 
         <a href="#">References</a> 
 
         <i class="fa fa-flag"></i> 
 
        </div> 
 
       </li> 
 
      </ul> 
 

 
      <!--<div class="navbaritem"> 
 
       <a href="#">Home</a> 
 
       <i class="fa fa-home"></i> 
 
      </div>--> 
 
     </header> 
 
     
 
     <main> 
 

 
     </main> 
 
     
 
     <footer> 
 
      
 
     </footer> 
 
    </body> 
 
</html>

+1

梯度般的画面,所以你不能直接转换它们。你可以尝试一些这里提到的方法 - http://stackoverflow.com/questions/33918470/how-to-animate-gradient-background-smoothly/33938639#33938639 – Harry

回答

2

就我而言,你不能过渡渐变。一种方法是在完全相同的位置使用2个元素并分别应用2个不同的梯度。然后赋予一个元素不透明度为1(默认情况下显示为渐变的元素),然后将该元素的不透明度淡入0,将其他元素淡入淡出1。但我不会推荐这个。

编辑我发现了一个解决方法在这里:Use CSS3 transitions with gradient backgrounds

+1

谢谢,这工作! – TheLexoPlexx

+0

你能给我反馈我的答案吗?我的解决方案工作还是链接解决方法? :) –

+0

对不起,尽管我在编辑之后阅读了您的评论,但您的方式奏效,我现在有2个div,其中一个不透明:100%悬停。 – TheLexoPlexx