html - CSS:为什么滚动条出现时菜单边框不出现?

标签 html css flexbox

LIVE DEMO

考虑以下菜单示例:(注意红色边框)

<div class="menu-wrapper">
  <div class="menu-item">Hello</div>
  <div class="menu-item">Stack</div>
  <div class="menu-item">Overflow</div>
</div>

.menu-wrapper {
  display: flex;
  flex-direction: column;
  width: 200px;
  background-color: #ccc;
  border-left: 5px solid #bbb;
  height: 300px;
}
.menu-item {
  padding: 20px;
  cursor: pointer;
}
.menu-item:hover {
  margin-left: -5px;
  background-color: #444;
  color: #fff;
  border-left: 5px solid red;
}

现在,假设menu-wrapper的高度很小,并且我们希望出现垂直滚动条。例如,我们可以替换:

height: 300px;

与:

height: 100px;
overflow-y: auto;

但是,the red border disappears then :

这是为什么呢?你会如何解决这个问题?

PLAYGROUND HERE

最佳答案

由于溢出隐藏了溢出的内容,您可以在背景上绘制边框或使用插入阴影,这样它就会在 cntainer 的整个高度上绘制: DEMO

.menu-wrapper {
  display: flex;
  flex-direction: column;
  width: 200px;
  background-color: #ccc;
  box-shadow: inset 5px 0  #bbb;/* here draws an inside left border via shadow */
  height: 300px;
  height: 100px;
  overflow:auto;
}
.menu-item {
  padding: 20px;
  cursor: pointer;
}
.menu-item:hover {
  background-color: #444;
  color: #fff;
  border-left: 5px solid red;
}

关于html - CSS:为什么滚动条出现时菜单边框不出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23538131/

相关文章:

html - 使用flexbox时如何使文本与li元素垂直居中?

javascript - firebug 和 chrome 控制台都有消失的 console.log 消息

html - 稍微旋转背景元素

twitter-bootstrap - 使用 Bootstrap 4 和 Flexbox 定位导航栏按钮不起作用?

html - margin :0 auto; width:1024; causes horizontal visible document reflow onload, 为什么?

css - 如何使用 css 禁用图像的颜色?

html - 在容器内对齐三个元素(左/中/右)

javascript - flex 容器子容器的 scrollWidth 不正确

javascript - 除非我切换字段,否则不会显示添加动态 <option> 到 select

html - CSS 剪辑不适用于绝对定位