2015-09-10 30 views
1

好吧,我正在幫助我的兄弟建立一個網站,他的背景中的主要圖像是他工作的一塊。我們希望圖像轉換到另一個PNG並來回模擬閃爍的蠟燭組。使用CSS動畫導致div的背景有閃爍的光線效果

我真的很新的CSS動畫,我的第一個嘗試是加載基本圖像作爲標題DIV的默認背景,並使用疊加圖像做動畫,但這導致與文本和其他信息DIV的頂部。

所以理想情況下,我希望將這兩個圖像都作爲背景放在DIV上,讓它從0%不透明度緩慢過渡到100%不透明度和交替。我完全確定只能使用IE 10或更高版本的解決方案。

這裏是CSS嘗試

header{ 
    background: url(../images/header_bg_1.png); 
    background-size: cover; 
    background-repeat: no-repeat; 
} 
.section_overlay { 
    -webkit-animation-name: example; 
    -webkit-animation-duration: 4s; 
    animation-name: animateheader; 
    animation-duration: 4s; 
    animation-iteration-count: infinite; 
    animation-direction: alternate; 
} 

@-webkit-keyframes animateheader{ 
    0% { opacity: 0; } 
    100% { opacity: 1; } 
} 
@-moz-keyframes animateheader{ 
    0% { opacity: 0; } 
    100% { opacity: 1; } 
} 
@-o-keyframes animateheader{ 
    0% { opacity: 0; } 
    100% { opacity: 1; } 
} 
@keyframes animateheader{ 
    0% { opacity: 0; } 
    100% { opacity: 1; } 
} 

下面是HTML件

<header id="HOME" style="background-position: 50% 50px;"> 
       <nav class="navbar navbar-default navbar-fixed-top"> 
       <div class="container"> 
        <!-- Brand and toggle get grouped for better mobile display --> 
        <div class="navbar-header"> 
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> 
         <span class="sr-only">Toggle navigation</span> 
         <span class="icon-bar"></span> 
         <span class="icon-bar"></span> 
         <span class="icon-bar"></span> 
        </button> 
        <a class="navbar-brand" href="#"><img src="images/logo.png" alt=""></a> 
        </div> 

        <!-- Collect the nav links, forms, and other content for toggling --> 
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> 
        <ul class="nav navbar-nav navbar-right"> 
         <li><a href="#HOME">Home</a></li> 
         <li><a href="#SERVICE">Services</a></li> 
         <li><a href="#ABOUT">About</a></li> 
         <li><a href="#TESTIMONIAL">Testimonial</a></li> 
         <li><a href="#WORK">Work</a></li> 
         <li><a href="#CONTACT">Contact</a></li> 
        </ul> 
        </div><!-- /.navbar-collapse --> 
       </div><!-- /.container --> 
       </nav> 
      <div class="section_overlay"> 
       <div class="container"> 
        <div class="row"> 
         <div class="col-md-12 text-center"> 
          <div class="home_text wow fadeInUp animated"> 
           <h2>it’s MrCreeep</h2> 
           <p>Tag Line would go Here</p> 
           <img src="images/shape.png" alt="">       
          </div> 
         </div> 
        </div> 
       </div>   
      </div>   
    </header> 

這裏是兩次直接鏈接到圖片。第一個應該過渡到第二個,然後再回來,如果你可以提供任何幫助,使它看起來更加動態和閃爍,而不僅僅是一個標準的淡入和淡出,我將非常感激。

http://mrcreeep.com/images/header_bg_1.png http://mrcreeep.com/images/header_bg_2.png

+1

代碼中的第二個圖像鏈接在哪裏? – divy3993

+0

你也可以發佈你的整個代碼?或更好地提供鏈接,如果你有它的生活。至少提供完整的頭文件。 – divy3993

+0

至於你的評論「更動態和閃爍」:你是否在尋找一個純粹的CSS解決方案(我不確定是解決方案,儘管我不是CSS大師),還是JS/jQuery解決方案?你希望不透明度是隨機的嗎? –

回答

1

您可以添加第二圖像作爲background-image.section-overlay

JS Fiddle Example

喜歡的東西:

header { 
    background: url('http://mrcreeep.com/images/header_bg_1.png'); 
    background-size: cover; 
    background-repeat: no-repeat; 
    height: 100%; 
} 
.section_overlay { 
    height: 100%; 
    background: url('http://mrcreeep.com/images/header_bg_2.png'); 
    background-size: cover; 
    background-repeat: no-repeat; 
    -webkit-animation-name: example; 
    -webkit-animation-duration: 1s; 
    animation-name: animateheader; 
    animation-duration: 1s; 
    animation-iteration-count: infinite; 
    animation-direction: alternate; 
} 

,並使其看起來像它的閃爍,你可以加快速度動畫時長,並添加一些隨機的不透明度的變化:

@-webkit-keyframes animateheader { 
    0% { 
     opacity: 0; 
    } 
    30% { 
     opacity: .3; 
    } 
    50% { 
     opacity: 0; 
    } 
    100% { 
     opacity: 1; 
    } 
} 
@-moz-keyframes animateheader { 
    0% { 
     opacity: 0; 
    } 
    30% { 
     opacity: .3; 
    } 
    50% { 
     opacity: 0; 
    } 
    100% { 
     opacity: 1; 
    } 
} 
@-o-keyframes animateheader { 
    0% { 
     opacity: 0; 
    } 
    30% { 
     opacity: .3; 
    } 
    50% { 
     opacity: 0; 
    } 
    100% { 
     opacity: 1; 
    } 
} 
@keyframes animateheader { 
    0% { 
     opacity: 0; 
    } 
    30% { 
     opacity: .3; 
    } 
    50% { 
     opacity: 0; 
    } 
    100% { 
     opacity: 1; 
    } 
} 

這僅僅是一個簡單的例子,但您可以添加更多的隨機不透明度的變化,並增加不同/少重複效果的動畫時長。

+1

哇,這工作真的很好,我認爲如果我玩增加更多的不透明度的變化,你已經做了它應該變成就像我們想要的。 非常感謝您的幫助。 –

0

你的文本被搞砸的原因是內容頭的內容的位置。所以我在這裏沿着指定你需要什麼都張貼答案與自己的自定義sipmle代碼牢記

你的頭結構必須是:

1)您元素與image_1作爲背景,必須具有指定的高度& z-index:1

2)<span class="section_overlay"></span>接下來你.section_overlayspan所以不會換行。它必須有position:absolute, display:block; background:image_2

3)現在您在標題上有圖像疊加,您需要將所有代碼行(HTML Elements)包裝在div中。所以直接給該分區z-index:9999;(9999 - 安全端)。

解決方案

body 
 
{ 
 
width:100%; 
 
margin:0px; 
 
} 
 

 
header 
 
{ 
 
margin:20px 0%; 
 
top:0%; 
 
left:0%; 
 
width:100%; 
 
height:350px; 
 
background:url(http://i.imgur.com/PgqCVJQ.png); 
 
background-size:cover; 
 
background-repeat:no-repeat; 
 
overflow:hidden; 
 
z-index:1; 
 
} 
 

 
.overlay 
 
{ 
 
position:absolute; 
 
display:block; 
 
height:100%; 
 
width:100%; 
 
background:url(http://i.imgur.com/jS0YhNP.png); 
 
background-size:cover; 
 
background-repeat:no-repeat; 
 
-webkit-animation: flickerAnimation 1s infinite; 
 
-moz-animation: flickerAnimation 1s infinite; 
 
-o-animation: flickerAnimation 1s infinite; 
 
animation: flickerAnimation 1s infinite; 
 
} 
 

 
header > div 
 
{ 
 
position:relative; 
 
z-index:999; 
 
} 
 

 
.nav ul { 
 
    list-style: none; 
 
    background-color: #444; 
 
    text-align: center; 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 
.nav li { 
 
    font-family: 'Oswald', sans-serif; 
 
    font-size: 1.2em; 
 
    line-height: 40px; 
 
    height: 40px; 
 
    border-bottom: 1px solid #888; 
 
} 
 
    
 
.nav a { 
 
    text-decoration: none; 
 
    color: #fff; 
 
    display: block; 
 
    transition: .3s background-color; 
 
} 
 
    
 
.nav a:hover { 
 
    background-color: #005f5f; 
 
} 
 
    
 
.nav a.active { 
 
    background-color: #fff; 
 
    color: #444; 
 
    cursor: default; 
 
} 
 
    
 
@media screen and (min-width: 600px) { 
 
    .nav li { 
 
    width: 120px; 
 
    border-bottom: none; 
 
    height: 50px; 
 
    line-height: 50px; 
 
    font-size: 1.4em; 
 
    } 
 
    
 
    /* Option 1 - Display Inline */ 
 
    .nav li { 
 
    display: inline-block; 
 
    margin-right: -4px; 
 
    } 
 
    
 
    /* Options 2 - Float 
 
    .nav li { 
 
    float: left; 
 
    } 
 
    .nav ul { 
 
    overflow: auto; 
 
    width: 600px; 
 
    margin: 0 auto; 
 
    } 
 
    .nav { 
 
    background-color: #444; 
 
    } 
 
    */ 
 
} 
 

 
@keyframes flickerAnimation { 
 
    0% { opacity:1; } 
 
    50% { opacity:0; } 
 
    100% { opacity:1; } 
 
} 
 
@-o-keyframes flickerAnimation{ 
 
    0% { opacity:1; } 
 
    50% { opacity:0; } 
 
    100% { opacity:1; } 
 
} 
 
@-moz-keyframes flickerAnimation{ 
 
    0% { opacity:1; } 
 
    50% { opacity:0; } 
 
    100% { opacity:1; } 
 
} 
 
@-webkit-keyframes flickerAnimation{ 
 
    0% { opacity:1; } 
 
    50% { opacity:0; } 
 
    100% { opacity:1; } 
 
}
<header> 
 
\t <span class="overlay"></span> 
 
\t <div class="nav"> 
 
     <ul> 
 
     <li class="home"><a href="#">Home</a></li> 
 
     <li class="tutorials"><a class="active" href="#">Tutorials</a></li> 
 
     <li class="about"><a href="#">About</a></li> 
 
     <li class="news"><a href="#">Newsletter</a></li> 
 
     <li class="contact"><a href="#">Contact</a></li> 
 
     </ul> 
 
    </div> 
 
</header>

下面的演示使用HTML代碼,看看它會很容易理解

JSFiddle:DEMO