【发布时间】:2018-02-07 06:18:51
【问题描述】:
我正在开发一个包含自定义日历的应用程序。日历采用 Flexbox 样式(所有建筑/日期逻辑都由 React 处理)。
日历运行良好,但我遇到了样式问题,不知道如何解决。
如果在某一周添加了很多事件,我希望将 week div 设置为 overflow: auto;(显示滚动条),以便您查看所有事件。
我遇到的问题是day div 的高度问题。我在父级 (week div) 上没有固定高度,因为我使用带有 flex: 1; 的 flexbox 来填充空间。如何让子 (day div) 使用溢出父 (week div) 的整个高度?
我希望有一个仅适用于跨浏览器的 CSS 解决方案。
此处的示例 CodePen: https://codepen.io/anon/pen/jLQyxX?editors=0100
HTML:
<div class="calendar">
<div class="week">
<div class="day">6</div>
<div class="day">7</div>
<div class="day">8</div>
<div class="day">
<div>This</div>
<div>Border</div>
<div>Doesn't</div>
<div>Scale</div>
<div>Correctly</div>
<div>(Scroll Down)</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
</div>
<div class="day">10</div>
</div>
</div>
CSS:
body {
display: flex;
flex: 1;
padding: 0;
margin: 0;
height: 100vh;
}
.calendar {
display: flex;
flex: 1;
flex-direction: column;
border: 1px solid black;
border-bottom: none;
margin: 15px;
}
.week {
display: flex;
flex: 1;
overflow: auto;
border-bottom: 1px solid black;
}
.day {
display: flex;
flex: 1;
flex-direction: column;
padding: 10px;
outline: 1px dotted red;
}
【问题讨论】:
-
是否可以在
day元素中放置滚动条? -
替代方案是通过使用 CSS 背景渐变来伪造 day 元素的边框,并完全删除它们的轮廓。这是阻止
day元素看起来像全高的唯一方法。 -
@Adam 在遇到我发布的问题时,我最初确实尝试过。不幸的是,它不适用于我的情况,因为事件可能会持续几天(类似于 FullCalendar fullcalendar.io)
-
@Michael_B 感谢分享链接——我原以为没有简单的 CSS 解决方案——除了一些创造性的“黑客”来获得所需的外观。我在网上为这个问题做了很多搜索,但那个链接从来没有出现过。