2016-12-06 45 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>