我试图创建一个固定宽度的可滚动水平时间线.父容器上有overflow-x:auto,每当我向同一个元素添加空格:nowrap时,子列表元素开始被切断.我想这与flex box的行为有关.我曾try 将min width:0添加到flex元素和flex grow:1,但没有成功.

body {
  font-family: Arial, Helvetica, sans-serif;
}

.container {
  height: 200px;
  width: 500px;
  margin: 0 auto;
  overflow-x: auto;
  overflow-y: hidden;
  white-space: nowrap;
}

.timeline {
  display: flex;
  justify-content: center;
  min-width: 0;
}

.timeline ol {
  list-style: none;
  display: flex;
  justify-content: center;
}

.timeline .horizontal-line {
  position: relative;
  background-color: #0d6a3d;
  height: 3px;
  border-radius: 4px;
  margin: 5em 0;
}

.event {
  margin: 0px 10px;
  position: relative;
}

.date {
  position: relative;
  text-align: center;
  top: -70px;
  width: 100%;
}

.date::after {
  content: "";
  position: absolute;
  bottom: -28px;
  left: 50%;
  right: auto;
  height: 20px;
  width: 20px;
  border-radius: 50%;
  border: 3px solid #00a950;
  background-color: #fff;
  transition: 0.3s ease;
  transform: translateX(-50%);
}

.content {
  width: 100%;
  text-align: center;
  position: relative;
  top: -45px;
}
<section class="container">
  <div class="timeline">
    <div class="horizontal-line">
      <ol>
        <li class="event">
          <h3 class="date">07/02/2020</h3>
          <p class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
        </li>
        <li class="event">
          <h3 class="date">08/25/2020</h3>
          <p class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
        </li>
        <li class="event">
          <h3 class="date">08/25/2020</h3>
          <p class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
        </li>
        <li class="event">
          <h3 class="date">08/25/2020</h3>
          <p class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
        </li>
        <li class="event">
          <h3 class="date">08/25/2020</h3>
          <p class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
        </li>
        <li class="event">
          <h3 class="date">08/25/2020</h3>
          <p class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
        </li>
      </ol>
    </div>
  </div>
</section>

推荐答案

width: fit-content;加到你的timeline.使所有元素都适合水平滚动.然后在ol上留下默认的padding-inline-start.可以通过设置padding: 0;padding-inline-start: 0;来消除该间隙.

body {
  font-family: Arial, Helvetica, sans-serif;
}

.container {
  height: 200px;
  width: 500px;
  margin: 0 auto;
  overflow-x: auto;
  overflow-y: hidden;
  white-space: nowrap;
}

.timeline {
  display: flex;
  justify-content: center;
  min-width: 0;
  width: fit-content;
}

.timeline ol {
  list-style: none;
  display: flex;
  justify-content: center;
  padding: 0;
}

.timeline .horizontal-line {
  position: relative;
  background-color: #0d6a3d;
  height: 3px;
  border-radius: 4px;
  margin: 5em 0;
}

.event {
  margin: 0px 10px;
  position: relative;
}

.date {
  position: relative;
  text-align: center;
  top: -70px;
  width: 100%;
}

.date::after {
  content: "";
  position: absolute;
  bottom: -28px;
  left: 50%;
  right: auto;
  height: 20px;
  width: 20px;
  border-radius: 50%;
  border: 3px solid #00a950;
  background-color: #fff;
  transition: 0.3s ease;
  transform: translateX(-50%);
}

.content {
  width: 100%;
  text-align: center;
  position: relative;
  top: -45px;
}
<section class="container">
  <div class="timeline">
    <div class="horizontal-line">
      <ol>
        <li class="event">
          <h3 class="date">07/02/2020</h3>
          <p class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
        </li>
        <li class="event">
          <h3 class="date">08/25/2020</h3>
          <p class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
        </li>
        <li class="event">
          <h3 class="date">08/25/2020</h3>
          <p class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
        </li>
        <li class="event">
          <h3 class="date">08/25/2020</h3>
          <p class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
        </li>
        <li class="event">
          <h3 class="date">08/25/2020</h3>
          <p class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
        </li>
        <li class="event">
          <h3 class="date">08/25/2020</h3>
          <p class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
        </li>
      </ol>
    </div>
  </div>
</section>

Html相关问答推荐

创建一个带有div和径向渐变的全宽半圆

用于删除页面页眉上的超链接的CSS

使用响应迅速的网格系统,将两列保持在同一行,同时允许更多列用于更大的屏幕

现代网络浏览器可以并行下载哪些类型的网络资源?还有,什么东西不能并行下载?

如何突破安莉得分

不呈现孙子元素,使用R htmlTools::Taglist为分页的pdf生成HTML

如何在悬停时更改同级元素 CSS

如何调整边框半径以匹配父边框半径

白色栏超出页面100%的右侧

如何在 flex 项目中忽略子元素的宽度

如何只为 Navbar 中的一个元素提供动画,其余元素没有使用 css 的动画

如何将背景与之前的内容正确对齐

如何在Bootstrap卡片底部添加波浪形状

将 div 放在图片旁边而不是下方

Bootstrap 5 英雄

具有淡入/淡出效果的 CSS 选框

如何突出显示 .qmd html 文件中的特定代码行

标题之间和之后的 Hr 线

为什么跨域属性对预连接链接很重要?

为什么我不能更改段落的边距?