根据屏幕大小调整文本大小

卡里斯

我的html中具有不同的元素,具有不同的文本大小。我想将它们设置为动态的,以便针对不同的屏幕尺寸显示不同的字体大小。

最好的方法是什么?现在,我正在这样做,但这会使代码看起来很丑陋:

<script>
$(window).resize(function(){
$('#first').css('font-size',($(window).width()*0.2)+'px');
$('h2').css('font-size',($(window).width()*0.02)+'px');
$('h1').css('font-size',($(window).width()*0.03)+'px');

对于两个要素,这还可以,但我还有很多。没有使用html / css / javascript的丰富经验,所以这就是我想出的。

由于我正在学习,所以我想知道什么是最好的方法。

也许您有一些改善建议?

丹尼尔

您可以为此使用新的CSS单位vw,vh(视口宽度/高度)。

这是一篇有趣的CSS技巧文章,向您展示了如何使用它们进行排版。

示例:(来自以上文章)

h1 {
  font-size: 5.9vw;
}
h2 {
  font-size: 3.0vh;
}
p {
  font-size: 2vmin;
}

因此,h1的字体大小为视口宽度的5.9%。等等。


话虽如此font-size,以上述方式使用视口单元是有问题的,因为当视口宽度非常窄时-渲染的字体大小将变得太小,反之亦然。

为了克服这个问题,我建议您使用一种称为Fluid Type AKA CSS Locks的技术

CSS锁是一种特定类型的CSS值计算,其中:

  • 有一个最小值和一个最大值,
  • 和两个断点(通常基于视口宽度),
  • 在这些断点之间,实际值从最小值到最大值线性变化。

摘自这篇关于CSS锁的文章,其中还详细解释了所涉及的数学。)

假设我们要应用上述技术,以使最小字体大小在600px或更小的视口宽度下为16px,并且将线性增加,直到在1200px的视口宽度达到最大32px为止。

我们可以使用这个SASS mixin为我们完成所有的数学运算,以便CSS看起来像这样:

div {
  /* linearly increase the font-size from 16->32px 
     between a viewport width of 600px-> 1200px  */
  @include fluid-type(font-size, 600px, 1200px, 16px, 32px);
}
@media screen and (max-width: 600px) {
  div {
     font-size: 16px;
  }
}
@media screen and (min-width: 1200px) {
  div {
     font-size: 36px;
  }
}

// ----
// libsass (v3.3.6)
// ----

// =========================================================================
//
//  PRECISE CONTROL OVER RESPONSIVE TYPOGRAPHY FOR SASS
//  ---------------------------------------------------
//  Indrek Paas @indrekpaas
//
//  Inspired by Mike Riethmuller's Precise control over responsive typography
//  http://madebymike.com.au/writing/precise-control-responsive-typography/
//
//  `strip-unit()` function by Hugo Giraudel
//  
//  11.08.2016 Remove redundant `&` self-reference
//  31.03.2016 Remove redundant parenthesis from output
//  02.10.2015 Add support for multiple properties
//  24.04.2015 Initial release
//
// =========================================================================

@function strip-unit($value) {
  @return $value / ($value * 0 + 1);
}

@mixin fluid-type($properties, $min-vw, $max-vw, $min-value, $max-value) {
  @each $property in $properties {
    #{$property}: $min-value;
  }

  @media screen and (min-width: $min-vw) {
    @each $property in $properties {
      #{$property}: calc(#{$min-value} + #{strip-unit($max-value - $min-value)} * (100vw - #{$min-vw}) / #{strip-unit($max-vw - $min-vw)});
    }
  }

  @media screen and (min-width: $max-vw) {
    @each $property in $properties {
      #{$property}: $max-value;
    }
  }
}

// Usage:
// ======

// /* Single property */
// html {
//   @include fluid-type(font-size, 320px, 1366px, 14px, 18px);
// }

// /* Multiple properties with same values */
// h1 {
//   @include fluid-type(padding-bottom padding-top, 20em, 70em, 2em, 4em);
// }

////////////////////////////////////////////////////////////////////////////

div {
  @include fluid-type(font-size, 600px, 1200px, 16px, 32px);
}
@media screen and (max-width: 600px) {
  div {
     font-size: 16px;
  }
}
@media screen and (min-width: 1200px) {
  div {
     font-size: 36px;
  }
}
<div>Responsive Typography technique known as Fluid Type or CSS Locks. 
  Resize the browser window to see the effect.
</div>

Codepen演示


进一步阅读

精确控制响应式排版

CSS Poly Fluid Sizing具有流体响应性的版式

CSS中的非线性插值

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据屏幕大小调整文本大小

来自分类Dev

Flutter:如何根据设备的屏幕大小调整文本大小

来自分类Dev

在 Bootstrap 中根据图像和屏幕大小调整文本大小

来自分类Dev

使用更少的CSS根据屏幕大小调整视频大小

来自分类Dev

使锚定窗格可根据屏幕大小调整大小

来自分类Dev

如何根据屏幕大小调整php中的图像大小?

来自分类Dev

根据内容大小调整文本标签的大小

来自分类Dev

根据按钮/标签大小调整文本大小

来自分类Dev

UWP 根据屏幕大小调整控件布局/位置

来自分类Dev

根据图像大小调整UIImageView的大小?

来自分类Dev

JTable根据ScrollPane的大小调整大小

来自分类Dev

根据视频大小调整div的大小

来自分类Dev

如何根据文本大小调整视图布局

来自分类Dev

如何根据文本大小调整视图布局

来自分类Dev

根据屏幕大小按比例调整文本大小

来自分类Dev

根据屏幕大小调整博主图像小部件的大小

来自分类Dev

如何根据android studio中设备屏幕的大小调整webview的大小

来自分类Dev

根据图像大小调整居中文本字体大小。怎么样?

来自分类Dev

如何根据浏览器窗口大小调整文本大小

来自分类Dev

调整div中的文本大小调整img大小

来自分类Dev

根据屏幕比例调整大小

来自分类Dev

根据窗口大小调整div以及内部内容的大小

来自分类Dev

如何根据其图标的大小调整QPushButton的大小?

来自分类Dev

根据内存大小调整图像大小

来自分类Dev

无法根据Bootstrap列大小调整图像大小

来自分类Dev

CSS Flex:根据图像大小调整Flex框的大小

来自分类Dev

根据字体大小调整图像大小

来自分类Dev

MS Word根据窗口大小调整图像大小

来自分类Dev

根据行数和字体大小调整RichTextBox的大小

Related 相关文章

  1. 1

    根据屏幕大小调整文本大小

  2. 2

    Flutter:如何根据设备的屏幕大小调整文本大小

  3. 3

    在 Bootstrap 中根据图像和屏幕大小调整文本大小

  4. 4

    使用更少的CSS根据屏幕大小调整视频大小

  5. 5

    使锚定窗格可根据屏幕大小调整大小

  6. 6

    如何根据屏幕大小调整php中的图像大小?

  7. 7

    根据内容大小调整文本标签的大小

  8. 8

    根据按钮/标签大小调整文本大小

  9. 9

    UWP 根据屏幕大小调整控件布局/位置

  10. 10

    根据图像大小调整UIImageView的大小?

  11. 11

    JTable根据ScrollPane的大小调整大小

  12. 12

    根据视频大小调整div的大小

  13. 13

    如何根据文本大小调整视图布局

  14. 14

    如何根据文本大小调整视图布局

  15. 15

    根据屏幕大小按比例调整文本大小

  16. 16

    根据屏幕大小调整博主图像小部件的大小

  17. 17

    如何根据android studio中设备屏幕的大小调整webview的大小

  18. 18

    根据图像大小调整居中文本字体大小。怎么样?

  19. 19

    如何根据浏览器窗口大小调整文本大小

  20. 20

    调整div中的文本大小调整img大小

  21. 21

    根据屏幕比例调整大小

  22. 22

    根据窗口大小调整div以及内部内容的大小

  23. 23

    如何根据其图标的大小调整QPushButton的大小?

  24. 24

    根据内存大小调整图像大小

  25. 25

    无法根据Bootstrap列大小调整图像大小

  26. 26

    CSS Flex:根据图像大小调整Flex框的大小

  27. 27

    根据字体大小调整图像大小

  28. 28

    MS Word根据窗口大小调整图像大小

  29. 29

    根据行数和字体大小调整RichTextBox的大小

热门标签

归档