2017-09-28 18 views
1

在左边栏“手风琴”下面的代码片段应该可以在溢出时滚动,但不能在整个页面上滚动。目前看起来整个页面都是可滚动的,即使我只想让手风琴溢出。如何获得溢出自动使用CSS网格?

如果需要,内容页应该溢出,但没有整个页面

/*Page Layout*/ 
 

 
.wrapper { 
 
    display: grid; 
 
    grid-gap: 10px; 
 
    grid-template-columns: [col] 225px [col] 1fr ; 
 
    grid-template-rows: [row] 1fr; 
 
    background-color: #fff; 
 
    color: #444; 
 
    padding-bottom: 20px; 
 
} 
 

 
.content{ 
 
    grid-column: 2; 
 
    grid-row: row 1 ; 
 

 
} 
 
.myaccordion{; 
 
    grid-row: row 1 ; 
 
    grid-column: 1; 
 
    background-color: #da516e; 
 
    height: 100vh; 
 
    overflow: auto; 
 
} 
 

 

 

 

 
/*IGNORE BELOW HERE AS THIS IS FOR ACCORDION ONLY*/ 
 

 
/* ********************************************************************************************* 
 

 
How to Create CSS3 + jQuery Accordion Menu [Tutorial] 
 
"How to Create CSS3 + jQuery Accordion Menu" that was specially made for DesignModo by our friend Valeriu Timbuc. 
 

 
Links: 
 
http://vtimbuc.net/ 
 
https://twitter.com/vtimbuc 
 
http://designmodo.com/futurico 
 
http://vladimirkudinov.com 
 
http://rockablethemes.com 
 

 
********************************************************************************************* */ 
 

 
/* Reset */ 
 

 
.accordion, 
 
.accordion ul, 
 
.accordion li, 
 
.accordion a, 
 
.accordion span { 
 
\t margin: 0; 
 
\t padding: 0; 
 
\t border: none; 
 
\t outline: none; 
 
} 
 

 
.accordion li { 
 
\t list-style: none; 
 
} 
 

 
/* Layout & Style */ 
 

 
.accordion li > a { 
 
\t display: block; 
 
\t position: relative; 
 
\t min-width: 110px; 
 
\t padding: 0 10px 0 40px; 
 
\t height: 32px; 
 

 
\t color: #fdfdfd; 
 
\t font: bold 12px/32px Arial, sans-serif; 
 
\t text-decoration: none; 
 
\t text-shadow: 0px 1px 0px rgba(0,0,0, .35); 
 

 
\t background: #6c6e74; 
 
\t background: -moz-linear-gradient(top, #6c6e74 0%, #4b4d51 100%); 
 
\t background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#6c6e74), color-stop(100%,#4b4d51)); 
 
\t background: -webkit-linear-gradient(top, #6c6e74 0%,#4b4d51 100%); 
 
\t background: -o-linear-gradient(top, #6c6e74 0%,#4b4d51 100%); 
 
\t background: -ms-linear-gradient(top, #6c6e74 0%,#4b4d51 100%); 
 
\t background: linear-gradient(top, #6c6e74 0%,#4b4d51 100%); 
 

 
\t -webkit-box-shadow: inset 0px 1px 0px 0px rgba(255,255,255, .1), 0px 1px 0px 0px rgba(0,0,0, .1); 
 
\t -moz-box-shadow: inset 0px 1px 0px 0px rgba(255,255,255, .1), 0px 1px 0px 0px rgba(0,0,0, .1); 
 
\t box-shadow: inset 0px 1px 0px 0px rgba(255,255,255, .1), 0px 1px 0px 0px rgba(0,0,0, .1); 
 
} 
 

 
.accordion > li:hover > a, 
 
.accordion > li:target > a, 
 
.accordion > li > a.active { 
 
\t color: #3e5706; 
 
\t text-shadow: 1px 1px 1px rgba(255,255,255, .2); 
 
\t 
 
\t /*background: url(../img/active.png) repeat-x;*/ 
 
\t background: #a5cd4e; 
 
\t background: -moz-linear-gradient(top, #a5cd4e 0%, #6b8f1a 100%); 
 
\t background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#a5cd4e), color-stop(100%,#6b8f1a)); 
 
\t background: -webkit-linear-gradient(top, #a5cd4e 0%,#6b8f1a 100%); 
 
\t background: -o-linear-gradient(top, #a5cd4e 0%,#6b8f1a 100%); 
 
\t background: -ms-linear-gradient(top, #a5cd4e 0%,#6b8f1a 100%); 
 
\t background: linear-gradient(top, #a5cd4e 0%,#6b8f1a 100%); \t 
 
} 
 

 
.accordion li > a span { 
 
\t display: block; 
 
\t position: absolute; 
 
\t top: 7px; 
 
\t right: 0; 
 
\t padding: 0 10px; 
 
\t margin-right: 10px; 
 
\t 
 
\t font: normal bold 12px/18px Arial, sans-serif; 
 
\t background: #404247; 
 
\t 
 
\t -webkit-border-radius: 15px; 
 
\t -moz-border-radius: 15px; 
 
\t border-radius: 15px; 
 

 
\t -webkit-box-shadow: inset 1px 1px 1px rgba(0,0,0, .2), 1px 1px 1px rgba(255,255,255, .1); 
 
\t -moz-box-shadow: inset 1px 1px 1px rgba(0,0,0, .2), 1px 1px 1px rgba(255,255,255, .1); 
 
\t box-shadow: inset 1px 1px 1px rgba(0,0,0, .2), 1px 1px 1px rgba(255,255,255, .1); 
 
} 
 

 
.accordion > li:hover > a span, 
 
.accordion > li:target > a span, 
 
.accordion > li > a.active span { 
 
\t color: #fdfdfd; 
 
\t text-shadow: 0px 1px 0px rgba(0,0,0, .35); 
 
\t background: #3e5706; 
 
} 
 

 
/* Images */ 
 

 
.accordion > li > a:before { 
 
\t position: absolute; 
 
\t top: 0; 
 
\t left: 0; 
 
\t content: ''; 
 
\t width: 24px; 
 
\t height: 24px; 
 
\t margin: 4px 8px; 
 

 
\t background-repeat: no-repeat; 
 
\t background-image: url(../img/icons.png); 
 
\t background-position: 0px 0px; 
 
} 
 

 
.accordion li.files > a:before { background-position: 0px 0px; } 
 
.accordion li.files:hover > a:before, 
 
.accordion li.files:target > a:before, 
 
.accordion li.files > a.active:before { background-position: 0px -24px; } 
 

 
.accordion li.mail > a:before { background-position: -24px 0px; } 
 
.accordion li.mail:hover > a:before, 
 
.accordion li.mail:target > a:before, 
 
.accordion li.mail > a.active:before { background-position: -24px -24px; } 
 

 
.accordion li.cloud > a:before { background-position: -48px 0px; } 
 
.accordion li.cloud:hover > a:before, 
 
.accordion li.cloud:target > a:before, 
 
.accordion li.cloud > a.active:before { background-position: -48px -24px; } 
 

 
.accordion li.sign > a:before { background-position: -72px 0px; } 
 
.accordion li.sign:hover > a:before, 
 
.accordion li.sign:target > a:before, 
 
.accordion li.sign > a.active:before { background-position: -72px -24px; } 
 

 
/* Sub Menu */ 
 

 
.sub-menu li a { 
 
\t color: #797979; 
 
\t text-shadow: 1px 1px 0px rgba(255,255,255, .2); 
 

 
\t background: #e5e5e5; 
 
\t border-bottom: 1px solid #c9c9c9; 
 

 
\t -webkit-box-shadow: inset 0px 1px 0px 0px rgba(255,255,255, .1), 0px 1px 0px 0px rgba(0,0,0, .1); 
 
\t -moz-box-shadow: inset 0px 1px 0px 0px rgba(255,255,255, .1), 0px 1px 0px 0px rgba(0,0,0, .1); 
 
\t box-shadow: inset 0px 1px 0px 0px rgba(255,255,255, .1), 0px 1px 0px 0px rgba(0,0,0, .1); 
 
} 
 

 
.sub-menu li:hover a { background: #efefef; } 
 

 
.sub-menu li:last-child a { border: none; } 
 

 
.sub-menu li > a span { 
 
\t color: #797979; 
 
\t text-shadow: 1px 1px 0px rgba(255,255,255, .2); 
 
\t background: transparent; 
 
\t border: 1px solid #c9c9c9; 
 

 
\t -webkit-box-shadow: none; 
 
\t -moz-box-shadow: none; 
 
\t box-shadow: none; 
 
} 
 

 
.sub-menu em { 
 
\t position: absolute; 
 
\t top: 0; 
 
\t left: 0; 
 
\t margin-left: 14px; 
 
\t color: #a6a6a6; 
 
\t font: normal 10px/32px Arial, sans-serif; 
 
} 
 

 
/* Functionality */ 
 

 
.accordion li > .sub-menu { 
 
\t display: none; 
 
} 
 

 
.accordion li:target > .sub-menu { 
 
\t display: block; 
 
}
<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
    <meta charset="UTF-8"> 
 
    <title>Title</title> 
 

 
    <link rel="stylesheet" href="test.css"> 
 
    <link rel="stylesheet" href="accordionmenu.css"> 
 
</head> 
 
<body> 
 

 
<div class="wrapper"> 
 

 
    <div class="myaccordion"> 
 
    
 
    <ul class="accordion"> 
 

 
     <li id="one" class="files"> 
 

 
     <a href="#one">My Files<span>495</span></a> 
 

 
     <ul class="sub-menu"> 
 

 
      <li><a href="#"><em>01</em>Dropbox<span>42</span></a></li> 
 

 
      <li><a href="#"><em>02</em>Skydrive<span>87</span></a></li> 
 

 
      <li><a href="#"><em>03</em>FTP Server<span>366</span></a></li> 
 

 
      <li><a href="#"><em>04</em>Dropbox<span>1</span></a></li> 
 

 
      <li><a href="#"><em>05</em>Skydrive<span>10</span></a></li> 
 

 
     </ul> 
 

 
     </li> 
 

 
     <li id="two" class="mail"> 
 

 
     <a href="#two">Mail<span>26</span></a> 
 

 
     <ul class="sub-menu"> 
 

 
      <li><a href="#"><em>01</em>Hotmail<span>9</span></a></li> 
 

 
      <li><a href="#"><em>02</em>Yahoo<span>14</span></a></li> 
 

 
     </ul> 
 

 
     </li> 
 

 
     <li id="three" class="cloud"> 
 

 
     <a href="#three">Cloud<span>58</span></a> 
 

 
     <ul class="sub-menu"> 
 

 
      <li><a href="#"><em>01</em>Connect<span>12</span></a></li> 
 

 
      <li><a href="#"><em>02</em>Profiles<span>19</span></a></li> 
 

 
      <li><a href="#"><em>03</em>Options<span>27</span></a></li> 
 

 
      <li><a href="#"><em>04</em>Connect<span>12</span></a></li> 
 

 
      <li><a href="#"><em>05</em>Profiles<span>19</span></a></li> 
 

 
      <li><a href="#"><em>06</em>Options<span>27</span></a></li> 
 

 
     </ul> 
 

 
     </li> 
 

 
     <li id="four" class="sign"> 
 

 
     <a href="#four">Sign Out</a> 
 

 
     <ul class="sub-menu"> 
 

 
      <li><a href="#"><em>01</em>Log Out</a></li> 
 

 
      <li><a href="#"><em>02</em>Delete Account</a></li> 
 

 
      <li><a href="#"><em>03</em>Freeze Account</a></li> 
 

 
     </ul> 
 

 
     </li> 
 
     <li id="one" class="files"> 
 

 
     <a href="#one">My Files<span>495</span></a> 
 

 
     <ul class="sub-menu"> 
 

 
      <li><a href="#"><em>01</em>Dropbox<span>42</span></a></li> 
 

 
      <li><a href="#"><em>02</em>Skydrive<span>87</span></a></li> 
 

 
      <li><a href="#"><em>03</em>FTP Server<span>366</span></a></li> 
 

 
      <li><a href="#"><em>04</em>Dropbox<span>1</span></a></li> 
 

 
      <li><a href="#"><em>05</em>Skydrive<span>10</span></a></li> 
 

 
     </ul> 
 

 
     </li> 
 

 
     <li id="two" class="mail"> 
 

 
     <a href="#two">Mail<span>26</span></a> 
 

 
     <ul class="sub-menu"> 
 

 
      <li><a href="#"><em>01</em>Hotmail<span>9</span></a></li> 
 

 
      <li><a href="#"><em>02</em>Yahoo<span>14</span></a></li> 
 

 
     </ul> 
 

 
     </li> 
 

 
     <li id="three" class="cloud"> 
 

 
     <a href="#three">Cloud<span>58</span></a> 
 

 
     <ul class="sub-menu"> 
 

 
      <li><a href="#"><em>01</em>Connect<span>12</span></a></li> 
 

 
      <li><a href="#"><em>02</em>Profiles<span>19</span></a></li> 
 

 
      <li><a href="#"><em>03</em>Options<span>27</span></a></li> 
 

 
      <li><a href="#"><em>04</em>Connect<span>12</span></a></li> 
 

 
      <li><a href="#"><em>05</em>Profiles<span>19</span></a></li> 
 

 
      <li><a href="#"><em>06</em>Options<span>27</span></a></li> 
 

 
     </ul> 
 

 
     </li> 
 

 
     <li id="four" class="sign"> 
 

 
     <a href="#four">Sign Out</a> 
 

 
     <ul class="sub-menu"> 
 

 
      <li><a href="#"><em>01</em>Log Out</a></li> 
 

 
      <li><a href="#"><em>02</em>Delete Account</a></li> 
 

 
      <li><a href="#"><em>03</em>Freeze Account</a></li> 
 

 
     </ul> 
 

 
     </li> 
 
     <li id="one" class="files"> 
 

 
     <a href="#one">My Files<span>495</span></a> 
 

 
     <ul class="sub-menu"> 
 

 
      <li><a href="#"><em>01</em>Dropbox<span>42</span></a></li> 
 

 
      <li><a href="#"><em>02</em>Skydrive<span>87</span></a></li> 
 

 
      <li><a href="#"><em>03</em>FTP Server<span>366</span></a></li> 
 

 
      <li><a href="#"><em>04</em>Dropbox<span>1</span></a></li> 
 

 
      <li><a href="#"><em>05</em>Skydrive<span>10</span></a></li> 
 

 
     </ul> 
 

 
     </li> 
 

 
     <li id="two" class="mail"> 
 

 
     <a href="#two">Mail<span>26</span></a> 
 

 
     <ul class="sub-menu"> 
 

 
      <li><a href="#"><em>01</em>Hotmail<span>9</span></a></li> 
 

 
      <li><a href="#"><em>02</em>Yahoo<span>14</span></a></li> 
 

 
     </ul> 
 

 
     </li> 
 

 
     <li id="three" class="cloud"> 
 

 
     <a href="#three">Cloud<span>58</span></a> 
 

 
     <ul class="sub-menu"> 
 

 
      <li><a href="#"><em>01</em>Connect<span>12</span></a></li> 
 

 
      <li><a href="#"><em>02</em>Profiles<span>19</span></a></li> 
 

 
      <li><a href="#"><em>03</em>Options<span>27</span></a></li> 
 

 
      <li><a href="#"><em>04</em>Connect<span>12</span></a></li> 
 

 
      <li><a href="#"><em>05</em>Profiles<span>19</span></a></li> 
 

 
      <li><a href="#"><em>06</em>Options<span>27</span></a></li> 
 

 
     </ul> 
 

 
     </li> 
 

 
     <li id="four" class="sign"> 
 

 
     <a href="#four">Sign Out</a> 
 

 
     <ul class="sub-menu"> 
 

 
      <li><a href="#"><em>01</em>Log Out</a></li> 
 

 
      <li><a href="#"><em>02</em>Delete Account</a></li> 
 

 
      <li><a href="#"><em>03</em>Freeze Account</a></li> 
 

 
     </ul> 
 

 
     </li> 
 
     <li id="four" class="sign"> 
 

 
     <a href="#four">Sign Out</a> 
 

 
     <ul class="sub-menu"> 
 

 
      <li><a href="#"><em>01</em>Log Out</a></li> 
 

 
      <li><a href="#"><em>02</em>Delete Account</a></li> 
 

 
      <li><a href="#"><em>03</em>Freeze Account</a></li> 
 

 
     </ul> 
 

 
     </li> 
 
     <li id="four" class="sign"> 
 

 
     <a href="#four">Sign Out</a> 
 

 
     <ul class="sub-menu"> 
 

 
      <li><a href="#"><em>01</em>Log Out</a></li> 
 

 
      <li><a href="#"><em>02</em>Delete Account</a></li> 
 

 
      <li><a href="#"><em>03</em>Freeze Account</a></li> 
 

 
     </ul> 
 

 
     </li> 
 
     <li id="four" class="sign"> 
 

 
     <a href="#four">Sign Out</a> 
 

 
     <ul class="sub-menu"> 
 

 
      <li><a href="#"><em>01</em>Log Out</a></li> 
 

 
      <li><a href="#"><em>02</em>Delete Account</a></li> 
 

 
      <li><a href="#"><em>03</em>Freeze Account</a></li> 
 

 
     </ul> 
 

 
     </li> 
 
     <li id="four" class="sign"> 
 

 
     <a href="#four">Sign Out</a> 
 

 
     <ul class="sub-menu"> 
 

 
      <li><a href="#"><em>01</em>Log Out</a></li> 
 

 
      <li><a href="#"><em>02</em>Delete Account</a></li> 
 

 
      <li><a href="#"><em>03</em>Freeze Account</a></li> 
 

 
     </ul> 
 

 
     </li> 
 

 
    </ul> 
 
    </div> 
 

 
    <div class="content"> 
 
    Content 
 
    </div> 
 
</div> 
 

 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
 
<script type="text/javascript"> 
 

 
    $(document).ready(function() { 
 

 
    // Store variables 
 

 
    var accordion_head = $('.accordion > li > a'), 
 
     accordion_body = $('.accordion li > .sub-menu'); 
 

 
    // Open the first tab on load 
 

 
    accordion_head.first().addClass('active').next().slideDown('normal'); 
 

 
    // Click function 
 

 
    accordion_head.on('click', function (event) { 
 

 
     // Disable header links 
 

 
     event.preventDefault(); 
 

 
     // Show and hide the tabs on click 
 

 
     if ($(this).attr('class') != 'active') { 
 
     accordion_body.slideUp('normal'); 
 
     $(this).next().stop(true, true).slideToggle('normal'); 
 
     accordion_head.removeClass('active'); 
 
     $(this).addClass('active'); 
 
     } 
 

 
    }); 
 

 
    }); 
 

 
</script> 
 
</body> 
 
</html>

更新时间:

的填充是故意的,因为它从处于底部提升手风琴的页面。原因是,如果您滚动手风琴菜单中的某个项目,浏览器将显示一个链接,该链接可能会阻止菜单中最后一个项目的视图。 enter image description here

+0

是'溢出:scroll'不是你想要的结果? –

回答

2

默认情况下,浏览器通常会给body元素设置8px的页边距。

所以第一重置:

body { margin: 0; } 

其次,网格容器具有不似乎做任何事情,除了造成视口有垂直滚动底部填充。删除:

.wrapper { 
    display: grid; 
    grid-gap: 10px; 
    grid-template-columns: [col] 225px [col] 1fr ; 
    grid-template-rows: [row] 1fr; 
    background-color: #fff; 
    color: #444; 
    /* padding-bottom: 20px; */ 
} 

https://jsfiddle.net/3tgdydug/1/

+0

填充是有意的,因为它将页面底部的手风琴引出。原因是,如果您滚动手风琴菜单中的某个项目,浏览器将显示一个链接,该链接可能会阻止菜单中最后一个项目的视图。查看更新图片 – dan

+0

好的。那么这是垂直滚动的原因。将它重新加入,并用'box-sizing:border-box'将它分成高度。 –