问题:如何使文本自动收缩并留在容器内?

  • 本文关键字:何使 文本 问题 html css flexbox
  • 更新时间 :
  • 英文 :


我是编码新手,在改变浏览器宽度时已经设法使图像自动调整大小,但文本有自己的想法-任何帮助将非常感激!

这是我的HTML:我在容器上有display: flex,使img左边和文本内容在容器内的右边。

<div class="learn-container">
<img class="banner-img" src="resourcesimagesbanner.jpg" alt="">
<div class="learn-content">
<h2>Learn something<br>new everyday</h2>
<p>Lorem ipsum dolor sit amet,<br>consectetur adipiscing elit.</p>
<p class="start"><a href="#">Start here</a></p>
</div>
</div>

CSS:

.learn-container {
display: flex; 
background-color: lightgray;
width: 100%;
}
.banner-img {
width: 60%;
height: 100%;
padding: 32px 24px;
}
.learn-content {
font-size: 42px;
align-self: center;
padding: 24px;
margin: 0;
}
.start {
color: white;
background-color: rgb(71, 71, 71);
text-align: center;
padding-top: 8px;
padding-bottom: 8px;
font-size: 36px;
width: 60%;
}

仅使用css的响应式文本总是有点棘手,但现在您确实有一些选择。你可以考虑使用视口单位vw而不是固定像素大小。这基本上是"浏览器宽度的3%"。它并不适用于所有情况,但通过一些尝试和错误,你可以得到一个不错的近似值。

.learn-content {
font-size: 3vw;
align-self: center;
padding: 24px;
margin: 0;
}

试试这个片段。我把它放在codependency中,这样你可以更容易地调整窗口大小:https://codepen.io/29b6/pen/dydmWRp

这是一篇关于CSS单元及其工作原理的MDN文章:https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units

如果你想更进一步,多年来有各种各样的javascript库用于这类事情。到目前为止,维护最活跃的似乎是Fitty。

如果你想了解这方面的历史教训,请查看fittext.js!

当更改字体大小时,您应该避免使用纯vw单位,因为在较小的屏幕尺寸(例如手机)上使用浏览器放大存在可访问性问题。

在现代CSS中,你可以使用clamp()函数,这需要一个最小值,一个流体值和一个最大值。在代码中,它看起来像这样:

h2 {
font-size: clamp(2rem, 6vw, 4rem);
}

它将小屏幕上的大小锁定在2rem,大屏幕上的大小锁定在4rem,当4rem的值超过6vw时,流体中间值点击进入,直到该值达到相当于2rem或更小。显然,你可以不断调整这些值,直到你得到你喜欢的大小。

Codepen链接:https://codepen.io/thechewy/pen/poaLPpY

最新更新