2016-12-06 83 views
0

我創建了一個slideToggle菜單,由於某種原因,它在上下滑動時似乎會跳來跳去。當菜單上下滑動時,滑動標題的邊框底部只會飛過並出現毛刺,否則slideToggle會正常工作。爲什麼我的slideToggle有一個奇怪的跳轉故障?

我試着將.headermenu的位置設置爲相對以及隱藏溢出,但這兩個都沒有解決問題。滑動切換隻是無法與邊框底部正常工作,或者是我的代碼中的問題?

該故障很難解釋,但故障顯示在我的代碼片段中,所以我建議您查看它以瞭解發生了什麼。基本上,當菜單滑落時,邊框底部會彈起。

爲了激活下拉你必須點擊角落裏的小破圖像,這將激活菜單標題(這樣你就可以看到運行中的故障。)

是它涉及到某種動畫的起始高度?我是否需要動畫從頁面中的特定位置開始,還是完全不同?

$(document).ready(function(){ 
 
    $("button").click(function(){ 
 
     $(".headermenu").slideToggle(); 
 
     $(".headermenu").height('150') 
 
    }); 
 
});
* { 
 
    box-sizing: border-box; 
 
} 
 
@font-face { 
 
    font-family: 'monaco'; 
 
    src: url('monaco-webfont.woff2') format('woff2'), 
 
     url('monaco-webfont.woff') format('woff'); 
 
    font-weight: normal; 
 
    font-style: normal; 
 
} 
 
a { 
 
    font-family: 'monaco'; 
 
    font-size: 16px; 
 
    text-decoration: none; 
 
} 
 
a:hover { 
 
    text-decoration: underline; 
 
} 
 
a:visited { 
 
    color: blue; 
 
} 
 
body { 
 
    margin: 0px; 
 
} 
 
button { 
 
    background: none; 
 
    border: none; 
 
    float: right; 
 
    margin-right: 40px; 
 
    margin-top: 15px; 
 
    padding: 0px; 
 
} 
 
#hamburger { 
 
    padding-top: 2px; 
 
    width: 27px; 
 
} 
 
header { 
 
    background-color: blue; 
 
    border-bottom: solid white 1px; 
 
    color: white; 
 
    float: left; 
 
    height: 60px; 
 
    padding-top: 4px; 
 
    position: fixed; 
 
    width: 100%; 
 
    z-index: 150px; 
 
} 
 
.headermenu { 
 
    background-color: blue; 
 
    border-bottom: solid white 1px; 
 
    color: white; 
 
    display: none; 
 
    font-family: 'monaco'; 
 
    height: 200px; 
 
    overflow: hidden; 
 
    padding-top: 40px; 
 
    position: relative; 
 
    width: 100%; 
 
    /*-webkit-transition: all .5s; 
 
    transition: all .5s; 
 
    height: 0;*/ 
 
} 
 
.headermenu a { 
 
    color: white; 
 
    float: right; 
 
    padding-right: 40px; 
 
    text-decoration: none; 
 
} 
 
.headermenu a:hover { 
 
    text-decoration: underline; 
 
} 
 
.headermenu a:visited { 
 
    color: white; 
 
} 
 
#headermenuleft { 
 
    float: right; 
 
    line-height: 25px; 
 
    text-align: left; 
 
} 
 
#headermenuleft ul { 
 
    list-style-type: none; 
 
} 
 
#headermenuright { 
 
    float: right; 
 
    line-height: 25px; 
 
    text-align: left; 
 
} 
 
#headermenuright ul { 
 
    list-style-type: none; 
 
}
<!DOCTYPE HTML> 
 
<html> 
 
    <head> 
 
    <link href="css/main.css" rel="stylesheet"/> 
 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script> 
 
    <script src="js/main.js"></script> 
 
    <title>Why Have There Been No Great Women Artists?</title> 
 
    </head> 
 
    <body> 
 
    <header> 
 
     <button><img id="hamburger" src="images/Menu,_Web_Fundamentals_(White).svg.png"></button> 
 
     <a id="home" href="index.html">Why Have There Been No Great Women Artists?</a> 
 
     <div class="headermenu"> 
 
     <div id="headermenuleft"> 
 
      <ul> 
 
      <li><a href="./georgia.html">Georgia O'Keeffe</a></li> 
 
      <li><a href="./frida.html">Frida Kahlo</a></li> 
 
      <li><a href="./artemesia.html">Artemisia Gentileschi</a></li> 
 

 
      </ul> 
 
     </div> 
 
     <div id="headermenuright"> 
 
      <ul> 
 
      <li><a href="essay/essay.pdf">The Essay</a></li> 
 
      <li><a href="./judy.html">Judy Chicago</a></li> 
 
      <li><a href="./kara.html">Kara Walker</a></li> 
 
      <li><a href="./mendieta.html">Ana Mendieta</a></li> 
 
      </ul> 
 
     </div> 
 
     </div> 
 
    </header> 
 
    </body> 
 
</html>

+1

請仔細閱讀http://stackoverflow.com/help/mcve瞭解如何提出問題最好該社區。看起來有很多CSS和HTML是無關緊要的。請考慮編輯它 –

+0

@KScandrett我現在盡我所能地編輯了CSS和HTML,而無需隱藏切換菜單問題。抱歉格式不正確的問題! –

回答

1

問題是你在.headermenu有一個白色底部邊框。如果你刪除那個修復問題。

但是,還有其他問題,您使用z-index中的像素時,該參數只接受一個數字。

此外,它不像我需要$(".headermenu").height('150');。如果你這樣做,那麼它應該是$(".headermenu").height(150); - 沒有圍繞像素數量的引用。

編輯

看樣子你需要添加top: 6px;.headermenu(至少看起來是正確的我在Firefox)。我無法確切地告訴你爲什麼,但它似乎與漢堡包按鈕被浮動並沒有佔用足夠的垂直高度(填充/邊距)有關。

$(document).ready(function(){ 
 
    $("button").click(function(){ 
 
     $(".headermenu").slideToggle(); 
 
    }); 
 
});
* { 
 
    box-sizing: border-box; 
 
} 
 
@font-face { 
 
    font-family: 'monaco'; 
 
    src: url('monaco-webfont.woff2') format('woff2'), 
 
     url('monaco-webfont.woff') format('woff'); 
 
    font-weight: normal; 
 
    font-style: normal; 
 
} 
 
a { 
 
    font-family: 'monaco'; 
 
    font-size: 16px; 
 
    text-decoration: none; 
 
} 
 
a:hover { 
 
    text-decoration: underline; 
 
} 
 
a:visited { 
 
    color: blue; 
 
} 
 
body { 
 
    margin: 0px; 
 
} 
 
button { 
 
    background: none; 
 
    border: none; 
 
    float: right; 
 
    margin-right: 40px; 
 
    margin-top: 15px; 
 
    padding: 0px; 
 
} 
 
#essay { 
 
    background-color: white; 
 
    height: 400px; 
 
    padding-top: 60px; 
 
    width: 100%; 
 
} 
 
#essaytext { 
 
    width: 830px; 
 
    margin: auto; 
 
    padding-top: 30px; 
 
} 
 
#gallery { 
 
    background-color: blue; 
 
    height: 1000px; 
 
    width: 100%; 
 
} 
 
#gallery a{ 
 
    color: white; 
 
} 
 
#gallery h2 { 
 
    color: white; 
 
    font-size: 28px; 
 
} 
 
#gallerytext { 
 
    margin: auto; 
 
    padding-bottom: 50px; 
 
    padding-top: 50px; 
 
    width: 830px; 
 
} 
 
#grid { 
 
    margin: auto; 
 
    padding-top: 30px; 
 
    width: 830px; 
 
} 
 
#gridone { 
 
    background-color: white; 
 
    color: blue; 
 
    display: block; 
 
    float: left; 
 
    height: 200px; 
 
    padding-top: 20px; 
 
    padding-left: 25px; 
 
    width: 400px; 
 
} 
 
#gridtwo { 
 
    background-color: white; 
 
    color: blue; 
 
    display: block; 
 
    float: right; 
 
    height: 200px; 
 
    padding-top: 20px; 
 
    padding-left: 25px; 
 
    width: 400px; 
 
} 
 
#gridthree { 
 
    background-color: white; 
 
    color: blue; 
 
    display: block; 
 
    float: left; 
 
    height: 200px; 
 
    margin-top: 30px; 
 
    padding-top: 20px; 
 
    padding-left: 25px; 
 
    width: 400px; 
 
} 
 
#gridfour { 
 
    background-color: white; 
 
    color: blue; 
 
    display: block; 
 
    float: right; 
 
    height: 200px; 
 
    margin-top: 30px; 
 
    padding-top: 20px; 
 
    padding-left: 25px; 
 
    width: 400px; 
 
} 
 
#gridfive { 
 
    background-color: white; 
 
    color: blue; 
 
    display: block; 
 
    float: right; 
 
    height: 200px; 
 
    margin-top: 30px; 
 
    padding-top: 20px; 
 
    padding-left: 25px; 
 
    width: 400px; 
 
} 
 
#gridsix { 
 
    background-color: white; 
 
    color: blue; 
 
    display: block; 
 
    float: left; 
 
    height: 200px; 
 
    margin-top: 30px; 
 
    padding-top: 20px; 
 
    padding-left: 25px; 
 
    width: 400px; 
 
} 
 
#hamburger { 
 
    padding-top: 2px; 
 
    width: 27px; 
 
} 
 
header { 
 
    background-color: blue; 
 
    border-bottom: solid red 1px; 
 
    color: white; 
 
    float: left; 
 
    height: 60px; 
 
    padding-top: 4px; 
 
    position: fixed; 
 
    width: 100%; 
 
    z-index: 150; 
 
} 
 
.headermenu { 
 
    background-color: green; 
 
    border-bottom: solid red 1px; 
 
    color: white; 
 
    display: none; 
 
    font-family: 'monaco'; 
 
    height: 200px; 
 
    overflow: hidden; 
 
    padding-top: 60px; 
 
    position: relative; 
 
    width: 100%; 
 
    top: 6px; 
 
    /*-webkit-transition: all .5s; 
 
    transition: all .5s; 
 
    height: 0;*/ 
 
    z-index: 200; 
 
} 
 
.headermenu a { 
 
    color: white; 
 
    float: right; 
 
    padding-right: 40px; 
 
    text-decoration: none; 
 
} 
 
.headermenu a:hover { 
 
    text-decoration: underline; 
 
} 
 
.headermenu a:visited { 
 
    color: white; 
 
} 
 
#headermenuleft { 
 
    float: right; 
 
    line-height: 25px; 
 
    text-align: left; 
 
} 
 
#headermenuleft ul { 
 
    list-style-type: none; 
 
} 
 
#headermenuright { 
 
    float: right; 
 
    line-height: 25px; 
 
    text-align: left; 
 
} 
 
#headermenuright ul { 
 
    list-style-type: none; 
 
} 
 
#home { 
 
    color: white; 
 
    display: block; 
 
    font-family: 'monaco'; 
 
    font-size: 16px; 
 
    padding-left: 40px; 
 
    padding-right: 0px; 
 
    padding-top: 17px; 
 
    margin: auto; 
 
} 
 
h2 { 
 
    color: blue; 
 
    font-family: 'monaco'; 
 
    font-size: 28px; 
 
    font-weight: normal; 
 
} 
 
nav#mobile-nav { 
 
    display: none; 
 
    z-index: 100; 
 
    width: 100%; 
 
} 
 
p { 
 
    font-family: 'monaco'; 
 
    font-size: 16px; 
 
    line-height: 21px; 
 
}
<!DOCTYPE HTML> 
 
<html> 
 
    <head> 
 
    <link href="css/main.css" rel="stylesheet"/> 
 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script> 
 
    <script src="js/main.js"></script> 
 
    <title>Why Have There Been No Great Women Artists?</title> 
 
    </head> 
 
    <body> 
 
    <header> 
 
     <button><img id="hamburger" src="images/Menu,_Web_Fundamentals_(White).svg.png"></button> 
 
     <a id="home" href="index.html">Why Have There Been No Great Women Artists?</a> 
 
     <div class="headermenu"> 
 
     <div id="headermenuleft"> 
 
      <ul> 
 
      <li><a href="./georgia.html">Georgia O'Keeffe</a></li> 
 
      <li><a href="./frida.html">Frida Kahlo</a></li> 
 
      <li><a href="./artemesia.html">Artemisia Gentileschi</a></li> 
 

 
      </ul> 
 
     </div> 
 
     <div id="headermenuright"> 
 
      <ul> 
 
      <li><a href="essay/essay.pdf">The Essay</a></li> 
 
      <li><a href="./judy.html">Judy Chicago</a></li> 
 
      <li><a href="./kara.html">Kara Walker</a></li> 
 
      <li><a href="./mendieta.html">Ana Mendieta</a></li> 
 
      </ul> 
 
     </div> 
 
     </div> 
 
    </header> 
 
    </body> 
 
</html>

+0

嗨,感謝您提供的信息豐富的答案,但我期望將邊框底部合併,因爲重要的是網站的標題仍然與其他網站上的相同顏色的內容保持區別。 –

+0

我已將'top:6px;'添加到'.headermenu'來保留1px邊框(請參閱上面的編輯解釋) –

+0

我也不滿意地添加了'clear:both' div。無論如何,根本問題是在標題文本/漢堡包按鈕爲6px之後將下一個塊(在這種情況下爲'headermenu')定位到藍色,並在div高度崩潰時導致閃爍。 –

1

$(document).ready(function() { 
 
    $("button").click(function() { 
 
     $(".headermenu").slideToggle('slow', function() { 
 
      $(this).height('150'); 
 
     }); 
 
    }); 
 
});
* { 
 
    box-sizing: border-box; 
 
} 
 
@font-face { 
 
    font-family: 'monaco'; 
 
    src: url('monaco-webfont.woff2') format('woff2'), 
 
     url('monaco-webfont.woff') format('woff'); 
 
    font-weight: normal; 
 
    font-style: normal; 
 
} 
 
a { 
 
    font-family: 'monaco'; 
 
    font-size: 16px; 
 
    text-decoration: none; 
 
} 
 
a:hover { 
 
    text-decoration: underline; 
 
} 
 
a:visited { 
 
    color: blue; 
 
} 
 
body { 
 
    margin: 0px; 
 
} 
 
button { 
 
    background: none; 
 
    border: none; 
 
    float: right; 
 
    margin-right: 40px; 
 
    margin-top: 15px; 
 
    padding: 0px; 
 
} 
 
#essay { 
 
    background-color: white; 
 
    height: 400px; 
 
    padding-top: 60px; 
 
    width: 100%; 
 
} 
 
#essaytext { 
 
    width: 830px; 
 
    margin: auto; 
 
    padding-top: 30px; 
 
} 
 
#gallery { 
 
    background-color: blue; 
 
    height: 1000px; 
 
    width: 100%; 
 
} 
 
#gallery a{ 
 
    color: white; 
 
} 
 
#gallery h2 { 
 
    color: white; 
 
    font-size: 28px; 
 
} 
 
#gallerytext { 
 
    margin: auto; 
 
    padding-bottom: 50px; 
 
    padding-top: 50px; 
 
    width: 830px; 
 
} 
 
#grid { 
 
    margin: auto; 
 
    padding-top: 30px; 
 
    width: 830px; 
 
} 
 
#gridone { 
 
    background-color: white; 
 
    color: blue; 
 
    display: block; 
 
    float: left; 
 
    height: 200px; 
 
    padding-top: 20px; 
 
    padding-left: 25px; 
 
    width: 400px; 
 
} 
 
#gridtwo { 
 
    background-color: white; 
 
    color: blue; 
 
    display: block; 
 
    float: right; 
 
    height: 200px; 
 
    padding-top: 20px; 
 
    padding-left: 25px; 
 
    width: 400px; 
 
} 
 
#gridthree { 
 
    background-color: white; 
 
    color: blue; 
 
    display: block; 
 
    float: left; 
 
    height: 200px; 
 
    margin-top: 30px; 
 
    padding-top: 20px; 
 
    padding-left: 25px; 
 
    width: 400px; 
 
} 
 
#gridfour { 
 
    background-color: white; 
 
    color: blue; 
 
    display: block; 
 
    float: right; 
 
    height: 200px; 
 
    margin-top: 30px; 
 
    padding-top: 20px; 
 
    padding-left: 25px; 
 
    width: 400px; 
 
} 
 
#gridfive { 
 
    background-color: white; 
 
    color: blue; 
 
    display: block; 
 
    float: right; 
 
    height: 200px; 
 
    margin-top: 30px; 
 
    padding-top: 20px; 
 
    padding-left: 25px; 
 
    width: 400px; 
 
} 
 
#gridsix { 
 
    background-color: white; 
 
    color: blue; 
 
    display: block; 
 
    float: left; 
 
    height: 200px; 
 
    margin-top: 30px; 
 
    padding-top: 20px; 
 
    padding-left: 25px; 
 
    width: 400px; 
 
} 
 
#hamburger { 
 
    padding-top: 2px; 
 
    width: 27px; 
 
} 
 
header { 
 
    background-color: blue; 
 
    border-bottom: solid white 1px; 
 
    color: white; 
 
    float: left; 
 
    padding-top: 4px; 
 
    position: fixed; 
 
    width: 100%; 
 
    z-index: 150; 
 
} 
 

 
header > div:first-child 
 
{ 
 
    height: 60px; 
 
} 
 

 
.headermenu { 
 
    background-color: blue; 
 
    border-bottom: solid white 1px; 
 
    color: white; 
 
    display: none; 
 
    font-family: 'monaco'; 
 
    height: 200px; 
 
    overflow: hidden; 
 
    padding-top: 40px; 
 
    position: relative; 
 
    width: 100%; 
 
    /*-webkit-transition: all .5s; 
 
    transition: all .5s; 
 
    height: 0;*/ 
 
} 
 
.headermenu a { 
 
    color: white; 
 
    float: right; 
 
    padding-right: 40px; 
 
    text-decoration: none; 
 
} 
 
.headermenu a:hover { 
 
    text-decoration: underline; 
 
} 
 
.headermenu a:visited { 
 
    color: white; 
 
} 
 
#headermenuleft { 
 
    float: right; 
 
    line-height: 25px; 
 
    text-align: left; 
 
} 
 
#headermenuleft ul { 
 
    list-style-type: none; 
 
} 
 
#headermenuright { 
 
    float: right; 
 
    line-height: 25px; 
 
    text-align: left; 
 
} 
 
#headermenuright ul { 
 
    list-style-type: none; 
 
} 
 
#home { 
 
    color: white; 
 
    display: block; 
 
    font-family: 'monaco'; 
 
    font-size: 16px; 
 
    padding-left: 40px; 
 
    padding-right: 0px; 
 
    padding-top: 17px; 
 
    margin: auto; 
 
} 
 
h2 { 
 
    color: blue; 
 
    font-family: 'monaco'; 
 
    font-size: 28px; 
 
    font-weight: normal; 
 
} 
 
nav#mobile-nav { 
 
    display: none; 
 
    z-index: 100; 
 
    width: 100%; 
 
} 
 
p { 
 
    font-family: 'monaco'; 
 
    font-size: 16px; 
 
    line-height: 21px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<header> 
 
     <div> 
 
      <button><img id="hamburger" src="https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Menu,_Web_Fundamentals.svg/2000px-Menu,_Web_Fundamentals.svg.png"></button> 
 
      <a id="home" href="index.html">Why Have There Been No Great Women Artists?</a> 
 
     </div> 
 
     <div class="headermenu"> 
 
      <div id="headermenuleft"> 
 
       <ul> 
 
        <li><a href="./georgia.html">Georgia O'Keeffe</a></li> 
 
        <li><a href="./frida.html">Frida Kahlo</a></li> 
 
        <li><a href="./artemesia.html">Artemisia Gentileschi</a></li> 
 

 
       </ul> 
 
      </div> 
 
      <div id="headermenuright"> 
 
       <ul> 
 
        <li><a href="essay/essay.pdf">The Essay</a></li> 
 
        <li><a href="./judy.html">Judy Chicago</a></li> 
 
        <li><a href="./kara.html">Kara Walker</a></li> 
 
        <li><a href="./mendieta.html">Ana Mendieta</a></li> 
 
       </ul> 
 
      </div> 
 
     </div> 
 
    </header> 
 
    <div id="essay"> 
 
     <div id="essaytext"> 
 
      <h2>The Essay</h2> 
 
      <p>「Why Have There Been No Great Women Artists?」 is an essay by Linda Nochlin that details how centuries of oppression and misogyny has led to a male dominated art world. Nochlin explains through her essay how sexism has prevented women from fully being recognized as historically significant artists.</p> 
 
      <a href="essay/essay.pdf">Read The Essay &rarr;</a> 
 
     </div> 
 
    </div> 
 
    <div id="gallery"> 
 
     <div id="gallerytext"> 
 
      <h2>The Gallery</h2> 
 
      <p>This website is intended to shed a light on the many incredible women in art who have been overshadowed due to their gender. By viewing the gallery you can see the incredible works of women artists whose significant contributions to the art world have been cast aside because of their womanhood.</p> 
 
      <div id="grid"> 
 
       <a href="./judy.html"> 
 
        <div id="gridone"> 
 
         "The Dinner Party"<br> 
 
         Judy Chicago 
 
        </div> 
 
       </a> 
 
       <a href="./kara.html"> 
 
        <div id="gridtwo"> 
 
         "A Subtlety"<br> 
 
         Kara Walker 
 
        </div> 
 
       </a> 
 
       <a href="./mendieta.html"> 
 
        <div id="gridthree"> 
 
         "Alma Silueta en Fuego"<br> 
 
         Ana Mendieta 
 
        </div> 
 
       </a> 
 
       <a href="./georgia.html"> 
 
        <div id="gridfour"> 
 
         "Black Iris"<br> 
 
         Georgia O'Keeffe 
 
        </div> 
 
       </a> 
 
       <a href="./frida.html"> 
 
        <div id="gridfive"> 
 
         "The Two Fridas"<br> 
 
         Frida Kahlo 
 
        </div> 
 
       </a> 
 
       <a href="./artemesia.html"> 
 
        <div id="gridsix"> 
 
         "Judith Slaying Holofernes"<br> 
 
         Artemisia Gentileschi 
 
        </div> 
 
       </a> 
 
      </div> 
 
     </div> 
 
    </div>