【问题标题】:CSS Overflow Scrolls Only One DirectionCSS 溢出只滚动一个方向
【发布时间】:2019-07-30 12:19:10
【问题描述】:

我有一个网页,其中 CSS 溢出设置为自动。发生溢出时会出现滚动条,但它只能让我向右滚动。它不会向左滚动,因此无法看到左侧的剪辑部分。注意:这不是其他处理 vertical 滚动的帖子的重复。我的问题是 horizo​​ntal 滚动。

网址:

http://www.hymntime.com/tch/bio/h/a/v/havergal_fr.htm

HTML:

<div id="preface">
    <div>
        <figure><img alt="portrait" src="../../../../img/h/a/v/havergal_fr3.jpg"></figure>
    </div>
    <div style="min-width: 15em;">
        <p id="birth">De­cem­ber 14, 1836, 
            <span class="map" onclick='show("Astley,Worcestershire DY13,UK")'>Ast­ley</span>, Wor­ces­ter­shire, Eng­land.
        </p>
        <p id="death">June 3, 1879, 
            <span class="map" onclick='show("Caswell Bay,UK")'>Cas­well Bay</span> (near Swan­sea), Wales.
        </p>
        <p id="burial">
            <span class="map" onclick='show("52.306124,-2.312777")'>Pri­ory Church of St. Pe­ter</span>, Ast­ley, Wor­ces­ter­shire, Eng­land. On her tomb­stone was the Scrip­ture verse she claimed as her own:
        </p>
        <blockquote>
            <p>The blood of Je­sus Christ cleans­eth us from all sin.<br>1 John 1:7</p>
        </blockquote>
    </div>
    <div>
        <figure><img alt="portrait" src="../../../../img/h/a/v/havergal_fr_4.jpg"></figure>
    </div>
    <div>
        <figure><img alt="portrait" src="../../../../img/h/a/v/havergal_fr_2.jpg"></figure>
    </div>
</div>

样式表:

#preface {
    border-top: 2px solid black;
    display:  flex;
    overflow: auto;
    justify-content: center;
    align-items: center;
    padding-top: 2ex;
    padding-bottom: 2ex;
 }
#preface .copyright, preface .license { text-align: center; }
#preface > div > p { margin: 1em; }
#preface figure { margin-left: .5em; margin-right: .5em; }
#preface img  { border: 8px ridge silver; border-radius: 20px; }
#preface ul { padding-left: 3em; }
.preface-text {min-width: 15em}

}

我是使用弹性盒子的新手,所以我怀疑我犯了一个简单的错误,但我看不出有什么问题。

【问题讨论】:

标签: css scroll overflow


【解决方案1】:

在您网站上的 id #preface 中的 css 中将 width: 100% 更改为 width: fit-content;,它应该可以解决您的问题。

当您使用 width:100% 时,元素的宽度将与其父元素相同。 在您的情况下,父母是主体,当您使用 +/- 按钮放大时,主体宽度会根据字体大小而不是他的子元素而变化。

【讨论】:

  • 我在样式表中添加了 width: fit-content,但没有任何效果。仍然无法向左滚动。事实上,在 Firefox 响应式设计模式(Firefox 版本 68.0.1,64 位)中,调试器说 width: fit-content* 是一个“无效的属性值”。我不知道为什么,因为我在多个网站上看到了对该值的引用。
【解决方案2】:

如果 居中 子元素使用 overflow: auto(或 scroll)溢出父元素,浏览器将不允许您滚动到子元素的左侧(或顶部,垂直溢出)限制.

这与正常的滚动行为有关。如果您希望子项超出父项的左侧或上限并且父项自动扩展以包含该项,则子项实际上并没有超出限制父母的,是吗?

要解决此问题,只有解决方案是

  • 使您的孩子不扩大父母。
  • 或在需要滚动条时立即放弃居中。

在您的情况下,一个不错的解决方案是:

@media (max-width: 1003px) {
  #preface div[style] {
    max-width: 15em;
  }
  #preface {
    flex-wrap: wrap;
  }
}

或者,如果您不想包装内容并更喜欢滚动:

@media (max-width: 1003px) {
  #preface {
    justify-content: start;
  }
}

这里的关键元素是:当父级开始被子级溢出时(在您的情况下为1003px),您可以更改对齐方式以使滚动按您想要的方式运行,或者更改显示子级的方式以便它不会溢出父级。

【讨论】:

  • 谢谢!这是第一个看起来似乎合理的回答。关于这是“正常滚动行为”的部分是否记录在任何地方?我之前搜索过类似的东西,但没有找到。
  • 如果是,我不知道。我用这个词是因为没有更好的词。无论您选择如何命名它,它都是关于当孩子向左或顶部溢出父母时。您是从孩子开始的地方还是父母开始的地方开始父母的可滚动区域?答案是:父母在哪里做,否则孩子不会溢出父母,不是吗?想想你有目的地将孩子放在外面的情况,比如一个隐藏的侧边栏,它可以滑入,或者类似地,一个隐藏的顶部栏。
猜你喜欢
  • 2018-08-20
  • 2012-06-15
  • 2019-11-02
  • 1970-01-01
  • 2011-12-08
  • 1970-01-01
  • 2011-07-09
  • 1970-01-01
  • 2012-08-05
相关资源
最近更新 更多