为了账号安全,请及时绑定邮箱和手机立即绑定

36kr.com 这个网站在改变屏幕宽度时字体大小跟着改变,是怎样做到的呢?

36kr.com 这个网站在改变屏幕宽度时字体大小跟着改变,是怎样做到的呢?

繁花不似锦 2018-10-20 14:11:31
网址:http://36kr.com屏幕宽度为320px时,html的字体大小为15px<html lang="en" class="" style="font-size: 15.6098px;">屏幕宽度为768px时,html的字体大小是37px<html lang="en" class="" style="font-size: 37.4634px;">以前见过在css中添加media query给body的font-size赋值,第一次见到用js控制字体的;03021009更新:非常感谢各位答主的回答;不过有些答主好像方向不太对;我知道用了rem,也知道css media query,也知道用了js控制根元素html的font-size;我现在困惑的点是:他是用什么样的标准用js计算出来的;
查看完整描述

1 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

就是类似于这样就可以,

html {     font-size: 62.5%; /* 10÷16=62.5% */ } @media only screen and (min-width: 481px){     html {         font-size: 94%!important; /* 15.04÷16=94% */     } } @media only screen and (min-width: 561px){     html {         font-size: 109%!important; /* 17.44÷16=109% */     } } @media only screen and (min-width: 641px){     html {         font-size: 125%!important; /* 20÷16=125% */     } }

或者用rem布局也可以

说道标准,主要涉及到两点

  1. 设计稿的尺寸

  2. rempx的转换规则

举个栗子,比如设计稿的尺寸的标准是720,在720的标准下,转换规则为1rem100px,这两点标准定下来,就够了。比如在设计稿中的某段文字的字体为20px,根据转换规则,在css中就是0.2rem,那么在屏幕宽度为360px的时候,我们希望字体为10px,也就是同样的0.2rem10px,换算一下就是1rem50px,这个50px就是我们需要动态算的,所以下面计算用到的100720就是这个标准,当clientWidth360的时候,计算出来的fontSize 为 50,也就是1rem50px

(function (doc, win) {

    var docEl = doc.documentElement,

        resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',

        recalc = function () {

            var clientWidth = docEl.clientWidth;

            if (!clientWidth) return;

            docEl.style.fontSize = 100 * (clientWidth / 720) + 'px';

        };


    if (!doc.addEventListener) return;

    win.addEventListener(resizeEvt, recalc, false);

    doc.addEventListener('DOMContentLoaded', recalc, false);

})(document, window);


查看完整回答
反对 回复 2018-11-23
  • 1 回答
  • 0 关注
  • 394 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信