2017-05-06 80 views
1

有人可以幫助我解決我在這裏做錯了什麼嗎?我只是希望樣式從頂部向下滾動後應用於div。足夠有趣只有標題封裝標識改變,但沒有其他更改。爲什麼是這樣?例如t1,標語和navmenus在滾動後不會改變,但是標題換行確實如此。滾動後無法更改某些元素樣式

真的很感謝這裏的任何幫助。謝謝

$(document).ready(function() { 
 
    var headerWrap = $('#header-wrap'); 
 
    var t1 = $('#t1'); 
 
    var slogan = $('#slogan'); 
 
    var navMenu = $('ul.nav-menu'); 
 
    var navMenuLink = $('ul.nav-menu a:link'); 
 
    var navMenuVisited = $('ul.nav-menu a:visited'); 
 
    var navMenuHover = $('ul.nav-menu a:hover'); 
 

 
    $(window).scroll(function() { 
 
     headerWrap.addClass('scroll-opacity-change'); 
 
     t1.addClass('t1-on-scroll'); 
 
     slogan.addClass('slogan-on-scroll'); 
 
     navMenu.addClass('ul.nav-menu'); 
 
     navMenuLink.addClass('ul.nav-menu a:link'); 
 
     navMenuVisited.addClass('ul.nav-menu a:visited'); 
 
     navMenuHover.addClass('ul.nav-menu a:hover'); 
 

 
     if($(this).scrollTop() <= 0) { 
 
      headerWrap.removeClass('scroll-opacity-change'); 
 
      t1.removeClass('t1-on-scroll'); 
 
      slogan.removeClass('slogan-on-scroll'); 
 
      navMenu.removeClass('ul.nav-menu-on-scroll'); 
 
      navMenuLink.removeClass('ul.nav-menu-on-scroll a:link'); 
 
      navMenuVisited.removeClass('ul.nav-menu-on-scroll a:visited'); 
 
      navMenuHover.removeClass('ul.nav-menu-on-scroll a:hover'); 
 
     } 
 
    }); 
 
});
body{height:1000px;width:auto;} 
 

 
#header-wrap{ 
 
\t background:#4E6273; 
 
\t width:100%; 
 
\t height:auto; 
 
\t border-bottom: 2px solid #f4fafe; 
 
\t position:fixed; 
 
\t top:0;/* may not be needed but no harm in having */ 
 
\t z-index:100000; 
 
\t /* margin:0 auto; needed? */ 
 
\t opacity:0.9; 
 
} 
 
.scroll-opacity-change{ 
 
\t opacity:0.9; 
 
\t -webkit-transition-duration: 0.4s; /* Safari */ 
 
    transition-duration: 0.4s; 
 
\t background:#f4fafe !important; 
 
\t border-bottom: 2px solid #94C8F2 !important; 
 
} 
 
#t1{ 
 
\t font-family:'Open Sans', sans-serif; 
 
\t font-weight:100; 
 
\t text-transform:none; 
 
\t color:#E6E8EB; 
 
\t font-size:24px; 
 
} 
 
#t1.t1-on-scroll{ 
 
\t color:#f00; 
 
} 
 
#slogan{ 
 
\t font-family:'Open Sans', sans-serif; 
 
\t font-weight:100; 
 
\t text-transform:uppercase; 
 
\t font-size:12px; 
 
\t color:#E6E8EB; 
 
} 
 
#slogan.slogan-on-scroll{ 
 
\t color:#f00; 
 
} 
 
ul.nav-menu{ 
 
\t list-style-type:none; 
 
\t margin-left: 50px; 
 
\t font-size:20px; 
 
\t font-family:'Open Sans', sans-serif; 
 
\t font-weight:400; 
 
\t color:#E6E8EB; 
 
\t padding:0; 
 
\t margin:0 0 0 0; 
 
\t text-decoration:none; 
 
} 
 
ul.nav-menu li{ 
 
\t display:inline-block; 
 
\t margin-left:50px; 
 
} 
 
ul.nav-menu a:link{ 
 
\t color:#E6E8EB; 
 
\t text-decoration:none; 
 
} 
 
ul.nav-menu a:visited{ 
 
\t color:#E6E8EB; 
 
\t text-decoration:none; 
 
} 
 
ul.nav-menu a:hover{ 
 
\t color:#B4E9FF; 
 
} 
 
ul.nav-menu-on-scroll{ 
 
\t list-style-type:none; 
 
\t margin-left: 50px; 
 
\t font-size:20px; 
 
\t font-family:'Open Sans', sans-serif; 
 
\t font-weight:400; 
 
\t color:#f0f; 
 
\t padding:0; 
 
\t margin:0 0 0 0; 
 
\t text-decoration:none; 
 
} 
 
ul.nav-menu-on-scroll li{ 
 
\t display:inline-block; 
 
\t margin-left:50px; 
 
} 
 
ul.nav-menu-on-scroll a:link{ 
 
\t color:#f0f; 
 
\t text-decoration:none; 
 
} 
 
ul.nav-menu-on-scroll a:visited{ 
 
\t color:#f0f; 
 
\t text-decoration:none; 
 
} 
 
ul.nav-menu-on-scroll a:hover{ 
 
\t color:#f00; 
 
}
<head> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
</head> 
 

 

 
<header id="header-wrap"> 
 
    <div id="header-top"> 
 
    <div id="header-left-wrap"> 
 
     
 
     <div id="header-text-wrap"> 
 
     
 
     <div id="header-title-wrap"> 
 
     <span id="t1">title<span id="t1-emphasis">acronym</span></span> 
 
     </div> 
 
     
 
     <div id="header-slogan-wrap"> 
 
     <span id="slogan">slogan</span> 
 
     </div> 
 
    
 
     
 
     
 
     </div> 
 
    </div> 
 
    
 
    <div id="header-right-wrap"> 
 
    <nav class="wrap"> 
 
    <a href="#" id="header-nav-menu"></a> 
 
    <ul class="nav-menu"> 
 
    <li><a href="#">Services</a></li> 
 
    <li><a href="#">About</a></li> 
 
    <li><a href="#">Contact</a></li> 
 
    </ul> 
 
    </nav> 
 
    </div> 
 
    </div> 
 
</header>

+0

你以前利用的jQuery JavaScript函數包括jQuery庫?你把這些功能準備好了嗎? (在代碼片段中,jquery沒有定義) –

+0

我現在有,但只有第一個元素'header-wrap'正在改變,其他不是 – user3760941

回答

2

您的代碼完全錯誤!你加錯類的導航菜單,和一些你的代碼甚至沒有感覺像addClass('ul.nav-menu a:link')var navMenuVisited = $('ul.nav-menu a:visited');

navMenu.addClass('nav-menu-on-scroll'); 
... 
navMenu.removeClass('nav-menu-on-scroll'); 

是你所需要的。

$(document).ready(function() { 
 
    var headerWrap = $('#header-wrap'); 
 
    var t1 = $('#t1'); 
 
    var slogan = $('#slogan'); 
 
    var navMenu = $('ul.nav-menu'); 
 

 

 
    $(window).scroll(function() { 
 
     headerWrap.addClass('scroll-opacity-change'); 
 
     t1.addClass('t1-on-scroll'); 
 
     slogan.addClass('slogan-on-scroll'); 
 
     navMenu.addClass('nav-menu-on-scroll'); 
 

 

 
     if($(this).scrollTop() <= 0) { 
 
      headerWrap.removeClass('scroll-opacity-change'); 
 
      t1.removeClass('t1-on-scroll'); 
 
      slogan.removeClass('slogan-on-scroll'); 
 
      navMenu.removeClass('nav-menu-on-scroll'); 
 

 
     } 
 
    }); 
 
});
body{height:1000px;width:auto;} 
 

 
#header-wrap{ 
 
\t background:#4E6273; 
 
\t width:100%; 
 
\t height:auto; 
 
\t border-bottom: 2px solid #f4fafe; 
 
\t position:fixed; 
 
\t top:0;/* may not be needed but no harm in having */ 
 
\t z-index:100000; 
 
\t /* margin:0 auto; needed? */ 
 
\t opacity:0.9; 
 
} 
 
.scroll-opacity-change{ 
 
\t opacity:0.9; 
 
\t -webkit-transition-duration: 0.4s; /* Safari */ 
 
    transition-duration: 0.4s; 
 
\t background:#f4fafe !important; 
 
\t border-bottom: 2px solid #94C8F2 !important; 
 
} 
 
#t1{ 
 
\t font-family:'Open Sans', sans-serif; 
 
\t font-weight:100; 
 
\t text-transform:none; 
 
\t color:#E6E8EB; 
 
\t font-size:24px; 
 
} 
 
#t1.t1-on-scroll{ 
 
\t color:#f00; 
 
} 
 
#slogan{ 
 
\t font-family:'Open Sans', sans-serif; 
 
\t font-weight:100; 
 
\t text-transform:uppercase; 
 
\t font-size:12px; 
 
\t color:#E6E8EB; 
 
} 
 
#slogan.slogan-on-scroll{ 
 
\t color:#f00; 
 
} 
 
ul.nav-menu{ 
 
\t list-style-type:none; 
 
\t margin-left: 50px; 
 
\t font-size:20px; 
 
\t font-family:'Open Sans', sans-serif; 
 
\t font-weight:400; 
 
\t color:#E6E8EB; 
 
\t padding:0; 
 
\t margin:0 0 0 0; 
 
\t text-decoration:none; 
 
} 
 
ul.nav-menu li{ 
 
\t display:inline-block; 
 
\t margin-left:50px; 
 
} 
 
ul.nav-menu a:link{ 
 
\t color:#E6E8EB; 
 
\t text-decoration:none; 
 
} 
 
ul.nav-menu a:visited{ 
 
\t color:#E6E8EB; 
 
\t text-decoration:none; 
 
} 
 
ul.nav-menu a:hover{ 
 
\t color:#B4E9FF; 
 
} 
 
ul.nav-menu-on-scroll{ 
 
\t list-style-type:none; 
 
\t margin-left: 50px; 
 
\t font-size:20px; 
 
\t font-family:'Open Sans', sans-serif; 
 
\t font-weight:400; 
 
\t color:#f0f; 
 
\t padding:0; 
 
\t margin:0 0 0 0; 
 
\t text-decoration:none; 
 
} 
 
ul.nav-menu-on-scroll li{ 
 
\t display:inline-block; 
 
\t margin-left:50px; 
 
} 
 
ul.nav-menu-on-scroll a:link{ 
 
\t color:#f0f; 
 
\t text-decoration:none; 
 
} 
 
ul.nav-menu-on-scroll a:visited{ 
 
\t color:#f0f; 
 
\t text-decoration:none; 
 
} 
 
ul.nav-menu-on-scroll a:hover{ 
 
\t color:#f00; 
 
}
<head> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
</head> 
 

 

 
<header id="header-wrap"> 
 
    <div id="header-top"> 
 
    <div id="header-left-wrap"> 
 
     
 
     <div id="header-text-wrap"> 
 
     
 
     <div id="header-title-wrap"> 
 
     <span id="t1">title<span id="t1-emphasis">acronym</span></span> 
 
     </div> 
 
     
 
     <div id="header-slogan-wrap"> 
 
     <span id="slogan">slogan</span> 
 
     </div> 
 
    
 
     
 
     
 
     </div> 
 
    </div> 
 
    
 
    <div id="header-right-wrap"> 
 
    <nav class="wrap"> 
 
    <a href="#" id="header-nav-menu"></a> 
 
    <ul class="nav-menu"> 
 
    <li><a href="#">Services</a></li> 
 
    <li><a href="#">About</a></li> 
 
    <li><a href="#">Contact</a></li> 
 
    </ul> 
 
    </nav> 
 
    </div> 
 
    </div> 
 
</header>

+1

請打勾選是否幫助您;-) –

+0

非常感謝您!我假設var navMenuLink = $('ul.nav-menu a:link');,懸停和訪問必須是唯一錯誤的部分,因爲大多數其他部分與您的解決方案相似? – user3760941

0

您需要先加載jQuery庫,那麼你的Javascript代碼必須在確保雙方jQuery和文檔都存在的功能。最簡單的方法:

(function ready() { 
    if (!document.body || !window.$) {setTimeout(ready, 50); return;} 
    // Your Javascript code here 
})(); 
+0

抱歉,我不明白。你可以在示例代碼中顯示它嗎? – user3760941

+0

爲確保首先加載jQuery庫這樣微不足道的事情設置一個超時是一個不好的做法,並導致性能問題,需要在文檔就緒時執行。 –

+0

@ user3760941。把你的javascript代碼放在函數內部的註釋行中。 –

0

好吧,我猜你的問題是,你沒有包裝你的代碼文件準備好。 您的JS代碼應該如下所示:

$(document).ready(function() { 
    var headerWrap = $('#header-wrap'); 
    var t1 = $('#t1'); 
    var slogan = $('#slogan'); 
    var navMenu = $('ul.nav-menu'); 
    var navMenuLink = $('ul.nav-menu a:link'); 
    var navMenuVisited = $('ul.nav-menu a:visited'); 
    var navMenuHover = $('ul.nav-menu a:hover'); 

    $(window).scroll(function() { 
     headerWrap.addClass('scroll-opacity-change'); 
     t1.addClass('t1-on-scroll'); 
     slogan.addClass('slogan-on-scroll'); 
     navMenu.addClass('ul.nav-menu'); 
     navMenuLink.addClass('ul.nav-menu a:link'); 
     navMenuVisited.addClass('ul.nav-menu a:visited'); 
     navMenuHover.addClass('ul.nav-menu a:hover'); 

     if($(this).scrollTop() <= 0) { 
      headerWrap.removeClass('scroll-opacity-change'); 
      t1.removeClass('t1-on-scroll'); 
      slogan.removeClass('slogan-on-scroll'); 
      navMenu.removeClass('ul.nav-menu-on-scroll'); 
      navMenuLink.removeClass('ul.nav-menu-on-scroll a:link'); 
      navMenuVisited.removeClass('ul.nav-menu-on-scroll a:visited'); 
      navMenuHover.removeClass('ul.nav-menu-on-scroll a:hover'); 
     } 
    }); 
}); 
+0

謝謝,但是我已經編輯了JavaScript代碼的帖子,仍然沒有改變。有任何想法嗎?爲了工作,jQuery的功能是否需要被包裝在文檔就緒文本中? – user3760941

+1

您的瀏覽器控制檯中是否有任何錯誤?如果您使用Chrome,請使用F12打開它。 是的,應該將jQuery函數包裝在文檔中以確保一切正常。否則,爲了簡化一下,你可能試圖抓住一個元素(例如$('。foobar'))和那個元素,在這種情況下,一個foobar類的元素尚未加載到瀏覽器中。準備好文檔後,確保所有頁面內容都可以通過JS進行操作。 –

+0

是的,如果我使用safari我得到這個錯誤: {「message」:「腳本錯誤。」,「文件名」:「」,「lineno」:0,「colno」:0} 如果我使用chrome,錯誤: { 「消息」: 「未捕獲的ReferenceError:$沒有定義」, 「文件名」: 「http://stacksnippets.net/js」, 「LINENO」:134, 「colno」:9 } 哦,我看到了 - 這也許可以解釋爲什麼我的一些其他功能不起作用 – user3760941