【问题标题】:How to scale font-size based upon div size? [duplicate]如何根据 div 大小缩放字体大小? [复制]
【发布时间】:2016-09-14 02:19:00
【问题描述】:

如何根据字符数和panel-default 大小来扩大/缩小font-size?例如,很多字符意味着font-size 会更小,或者更小的屏幕也意味着更小的font-sizefont-size 应该适合 div。

css

*,
*:before,
*:after {
  box-sizing: border-box;
}

body {
  margin: 0
}

.testing-here {
  font-size: 0;
}

.panel-default {
  box-sizing: border-box;
  border-style: none;
  position: relative;
  width: 50%;
  padding-bottom: 40%;
  overflow: hidden;
  background-color: #446CB3;
  border-radius: 0;
  display: inline-block;
  margin-bottom: 0px;
  border: 2.5px white solid;
}

.panel-body {
  color: white;
  text-align: center;
  position:absolute;
  font-size: 16px;
}

html

<div class="testing-here">
  <div class="panel panel-default">
    <div class="panel-body">
      Basic panel example
    </div>
  </div>
  <div class="panel panel-default">
    <div class="panel-body">
      Basic panel example
    </div>
  </div>
  <div class="panel panel-default">
    <div class="panel-body">
      Basic panel example
    </div>
  </div>
  <div class="panel panel-default">
    <div class="panel-body">
      Basic panel example
    </div>
  </div>
</div>

有没有办法在没有 javascript 的情况下做到这一点?

【问题讨论】:

  • 否 @ParthBhoiwala 我认为有一种方法可以在没有 javascript 的情况下做到这一点。

标签: html css


【解决方案1】:

如果您的面板是从窗口的width 调整大小的,您可以使用vw 单位(所有问题都伴随着:太大或太小而无法阅读)

您可以添加媒体查询以将font-size 保持在最小和最大大小内。

*,
*:before,
*:after {
  box-sizing: border-box;
}
body {
  margin: 0
}
.testing-here {
  font-size: 0;
}
.panel-default {
  box-sizing: border-box;
  border-style: none;
  position: relative;
  width: 50%;
  padding-bottom: 40%;
  overflow: hidden;
  background-color: #446CB3;
  border-radius: 0;
  display: inline-block;
  margin-bottom: 0px;
  border: 2.5px white solid;
}
.panel-body {
  color: white;
  width: 100%;
  height: 100%;
  text-align: center;
  position: absolute;
  font-size: 5vw;
  /* will be 5% of window's width so 10% of panel's width */
}
@media (min-width: 1000px) {
  .panel-body {
    font-size: 50px;
  }
}
@media (max-width: 320px) {
  .panel-body {
    font-size: 16px;
  }
}
<div class="testing-here">
  <div class="panel panel-default">
    <div class="panel-body">
      Basic panel example show me full page & resize window
    </div>
  </div>
  <div class="panel panel-default">
    <div class="panel-body">
      Basic panel example font-size kept in between 16 and 50px max
    </div>
  </div>
  <div class="panel panel-default">
    <div class="panel-body">
      Basic panel example
    </div>
  </div>
  <div class="panel panel-default">
    <div class="panel-body">
      Basic panel example
    </div>
  </div>
</div>

您还可以使用媒体查询来保持字体可读或仅在不同断点处使用媒体查询

【讨论】:

  • vw 效果不好,因为你提到的它变得太小或太大。
  • @AnthonyGalli.com ,您需要媒体查询来覆盖字体大小低于和高于一定宽度,请参阅更新 sn-p
  • 谢谢。最坏的情况下,我会这样做,但我希望字体大小的变化与 div 一致。媒体查询的问题是我希望文本保留在 div 中,所以如果它们有很多文本,那么该 div 中的文本会特别小,而如果它们是一个词,那么该词会很大以填充 div 大小.抱歉,如果我在问题中解释得不够清楚。
  • @AnthonyGalli.com 您要查找的内容过于复杂,无法由 CSS 处理。您需要知道文本和单词的长度以找出它将在哪里换行、使用的字体系列的特殊性(等宽,否则?)、字母间距、字间距、是否换行、用户是否缩放文本并使用另一个字体系列等......你可能有一个平均的想法。很久以前,我用一个脚本用图像替换字母,在计算它们之后可以调整大小(在你可以从文件中导入字体系列之前):)
猜你喜欢
  • 2019-03-18
  • 2020-12-07
  • 2019-10-13
  • 2012-11-01
  • 1970-01-01
  • 2011-12-15
  • 2012-05-04
  • 1970-01-01
相关资源
最近更新 更多