css - 修复了左侧菜单滚动不起作用的问题?

标签 css flexbox

我做了以下 demo on Codepen .问题是当视口(viewport)的高度降低时,我想要滚动出现,但 Logo 隐藏在图标列表下,这是不需要的行为。如果视口(viewport)高度足够,一切正常。

<input type="checkbox" id="menu-expander" name="ert">
 <div class="main-menu-container">

<div class="logo-area">
  <div class="logo"><img src="http://extensiondl.maxthon.com/skinpack/11018970/1375652328/icons/icon_32.png"></div>

</div>

<ul class="sidebar-icon-list">
  <li class="sidebar-icon">
    <img src="http://www.clipartsfree.net/vector/small/go-home_Clipart_Free.png">
    <span>Week</span>
  </li>
  <li class="sidebar-icon menu-active">
    <img src="http://www.clipartsfree.net/vector/small/go-home_Clipart_Free.png">
    <span>Projects</span>
  </li>
  <li class="sidebar-icon" title="Life">
    <img src="http://www.clipartsfree.net/vector/small/go-home_Clipart_Free.png">
    <span>Life</span>
  </li>

  <li class="sidebar-icon">
    <img src="http://www.clipartsfree.net/vector/small/go-home_Clipart_Free.png">
    <span>Analysis</span>
  </li>
  <li class="sidebar-icon">
    <img src="http://www.clipartsfree.net/vector/small/go-home_Clipart_Free.png">
    <span>Projects</span>
  </li>
</ul>

<div class="sidebar-wt">
  <label for="menu-expander"><img src="https://cdn3.iconfinder.com/data/icons/awesome-lineca-vol-1/17/angle-right-128.png"></label>
</div>
<div class="user-area">
  <div class="user-pic"></div>
</div>

CSS

    input[name="ert"] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
  overflow: hidden;
}

/* Main Menu Contaier */
.main-menu-container {
  width: 6em;
  position: fixed;
  top: 0;
  left: 0;
  height: 100vh;
  background-color: hsl(207,6%,12%);
  color: #fff;
  display: flex;
  flex-direction: column;
  z-index: 100;
  border-right: 1px solid black;
  transition: width 0.2s ease-in;
  overflow-y: auto;
  overflow-x: hidden;
}

input[name="ert"]:checked + .main-menu-container {
  width: 12em;
  transition: width .3s linear;
}


/* Logo Area */
.logo-area {
  height: 6em; 
  background-color: #fff; 
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

.logo {
  height: 4em;
  width: 4em;
}

.logo img {
  height: 4em; 
  width: 4em;
}

/* Icon List */

.sidebar-icon-list {
  display: flex column;
  list-style: none;
  width: 100%;
  padding: 0;
  margin: 0;
  flex-grow: 1;
}

.sidebar-icon {
  color: #eaeaea;
  width: 100%;
  border-left: 3px solid hsl(207,6%,12%);
  height: 3em;
  margin: 1em 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  cursor: pointer;
  position: relative;
  transition: all 0.3s linear;
}

.sidebar-icon:hover {
  color: #fff;
  border-left: 3px solid #EEFF22;
}

.sidebar-icon img {
  color: #fff;
  width: 2em;
  height: 2em;
}

.sidebar-icon span {
  font-size: 0.75em;
  opacity: 0;
  position: absolute;
  transition: all 0.1s linear;
}

input[name="ert"]:checked + .main-menu-container .sidebar-icon-list .sidebar-icon {
  flex-direction: row;
  justify-content: flex-start;
  padding-left: 1em;
  transition: all 0.3s linear;
}

input[name="ert"]:checked + .main-menu-container .sidebar-icon-list .sidebar-icon span {
  font-size: 0.75em;
  opacity: 1;
  position: relative;
  transition: all 0.3s linear;
  margin-left: 1em;
}

.menu-active {
  border-left: 3px solid #EEFF22;
  color: #EEFF22;
}

/* Sidebar Expander */

.sidebar-wt {
  display: flex;
  justify-content: flex-end;
}

.sidebar-wt label img {
  height: 1.5em;
  width: 1.5em;
  cursor: pointer;
}

.main-menu-container .sidebar-wt label img {
  transition: all 0.3s linear;
}

input[name="ert"]:checked + .main-menu-container .sidebar-wt label img {
  transform: rotateZ(180deg);
  transition: all 0.3s linear;
}

/* USer Area at Bottom */

.user-area {
  height: 4em;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
}

.user-pic {
  width: 100%;
  height: 5em;
  border-bottom: 2px solid #2ca58d;
  background-image: url(http://soccer1x2.net/wp-content/uploads/2012/03/leo-messi1.png);
  background-size: cover;
}







.main-menu-container .sidebar-wt label img {
  transition: all 0.3s linear;
}

input[name="ert"]:checked + .main-menu-container .sidebar-wt label img {
  transform: rotateZ(180deg);
  transition: all 0.3s linear;
}

最佳答案

当您降低窗口的高度时,看起来 .logo-container 的高度正在改变。

如果 min-height: 6em; .logo-area 高度不会降低。

关于css - 修复了左侧菜单滚动不起作用的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41640649/

相关文章:

javascript - 将页面内容滚动到鼠标滚动的自定义位置

CSS 填充剩余容器宽度

html - 响应式标题问题

html - 垂直对齐绝对元素/Flexbox

css - 媒体查询出了什么问题?

html - 如何使文本输入对齐到中心,但光标在聚焦时左对齐?

jquery - 当用户在框外单击时,如何创建平滑的边框强调?

javascript - CSS 和 JQuery 在 Ajax 调用后不起作用

html - 具有柔性显示的并排画廊

html - 菜单覆盖 - 无法使内容全高