在学习 text-size-adjst之前我们先思考一个问题、我们有几种方式可以去修改font-size的大小,有什么方式可以放我们整个页面内容变大?

通过定义css设置字体大小或者写入style

  1. .text {
  2. font-size: 12px;
  3. }
  4. <div style="font-size:12px;">文字大小</div>

通过继承父类size大小

  1. <div class="parent">
  2. <div class="text">
  3. 内容
  4. </div>
  5. </div>
  6. <style>
  7. .parent {
  8. font-size: 30px;
  9. }
  10. </style>

通过设置根(html))节点font-size值去动态计算其他rem值、下面就代表1rem = 100px

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <div class="text">
  11. 内容
  12. </div>
  13. <button id="btn">设置html的font-size</button>
  14. </body>
  15. </html>
  16. <style>
  17. .text {
  18. font-size: 1rem;
  19. }
  20. </style>
  21. <script>
  22. const btn = document.getElementById('btn');
  23. btn.onclick = function () {
  24. document.documentElement.style.fontSize = '100px';
  25. }
  26. </script>

通过transform:scale对文本进行放大

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <div class="box">
  11. <div class="text">
  12. 内容
  13. </div>
  14. </div>
  15. </body>
  16. </html>
  17. <style>
  18. .box {
  19. display: flex;
  20. width: 100vw;
  21. height: 100vh;
  22. justify-content: center;
  23. align-items: center;
  24. }
  25. .text {
  26. font-size: 12px;
  27. transform: scale(5);
  28. }
  29. </style>

通过设置text-size-adjust(高版本chrome不支持、建议跑在微信webview里)

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <div class="text">
  11. 内容
  12. </div>
  13. </body>
  14. </html>
  15. <style>
  16. body,
  17. html {
  18. -webkit-text-size-adjust: 300% !important;
  19. }
  20. .text {
  21. font-size: 15px;
  22. }
  23. </style>

上面的方式都可以去改变font-size大小、那我们如何去实现一个页面的内容统一的放大呢!rem可以动态的改变html的size大小是能够实现的、但是如果你作为一个微信这样的产品所打开的网页可不一定都是使用的rem布局、所以rem貌似不是最优的选择、所以我们需要去了解微信打卡h5后通过三个点开打一个工具栏里面有一个调整字体功能、我们一起来看看微信是怎么实现的! 直接先揭开谜底 微信也是通过给body设置text-size-adjust的百分比去做字体内容的放大缩小

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta charset="utf-8">
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  8. <meta name="viewport"
  9. content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover, user-scalable=no">
  10. <meta name="screen-orientation" content="portrait">
  11. <meta name="apple-mobile-web-app-capable" content="yes">
  12. <meta name="format-detection" content="telephone=no">
  13. <meta name="full-screen" content="yes">
  14. <title>Document</title>
  15. </head>
  16. <body>
  17. <div class="text">
  18. 内容
  19. </div>
  20. <button id="btn">查看body的text-adjust</button>
  21. </body>
  22. </html>
  23. <style>
  24. .text {
  25. font-size: 12px;
  26. }
  27. </style>
  28. <script>
  29. document.getElementById('btn').onclick = function () {
  30. const v = window.getComputedStyle(document.body, null).getPropertyValue('-webkit-text-size-adjust');
  31. alert(v)
  32. console.log('text-size-adjust', window.getComputedStyle(document.body, null).getPropertyValue('-webkit-text-size-adjust'))
  33. }
  34. </script>

当我们通过微信去设置文本内容后我们获取下微信给我们body设置值、会发现随着字体的变大text-size-adjust的百分比也会变大、所以得出设备上的文字大小计算中text-size-adjust会参与进去