移动端动态font-size

/** * Created by shimin on 2017/8/18. *///计算dpr!function(win, lib) {    var timer,        doc     = win.document,        docElem = doc.documentElement,

vpMeta   = doc.querySelector(‘meta[name="viewport"]‘),        flexMeta = doc.querySelector(‘meta[name="flexible"]‘),

dpr   = 0,        scale = 0,

flexible = lib.flexible || (lib.flexible = {});

// 设置了 viewport meta    if (vpMeta) {

console.warn("将根据已有的meta标签来设置缩放比例");        var initial = vpMeta.getAttribute("content").match(/initial\-scale=([\d\.]+)/);

if (initial) {            scale = parseFloat(initial[1]); // 已设置的 initialScale            dpr = parseInt(1 / scale);      // 设备像素比 devicePixelRatio        }

}    // 设置了 flexible Meta    else if (flexMeta) {        var flexMetaContent = flexMeta.getAttribute("content");        if (flexMetaContent) {

var initial = flexMetaContent.match(/initial\-dpr=([\d\.]+)/),                maximum = flexMetaContent.match(/maximum\-dpr=([\d\.]+)/);

if (initial) {                dpr = parseFloat(initial[1]);                scale = parseFloat((1 / dpr).toFixed(2));            }

if (maximum) {                dpr = parseFloat(maximum[1]);                scale = parseFloat((1 / dpr).toFixed(2));            }        }    }

// viewport 或 flexible    // meta 均未设置    if (!dpr && !scale) {        // QST        // 这里的 第一句有什么用 ?        // 和 Android 有毛关系 ?        var u = (win.navigator.appVersion.match(/android/gi), win.navigator.appVersion.match(/iphone/gi)),            _dpr = win.devicePixelRatio;

// 所以这里似乎是将所有 Android 设备都设置为 1 了        dpr = u ? ( (_dpr >= 3 && (!dpr || dpr >= 3))                ? 3                : (_dpr >= 2 && (!dpr || dpr >= 2))                    ? 2                    : 1        )            : 1;

scale = 1 / dpr;    }

docElem.setAttribute("data-dpr", dpr);

// 插入 viewport meta    if (!vpMeta) {        vpMeta = doc.createElement("meta");

vpMeta.setAttribute("name", "viewport");        vpMeta.setAttribute("content",            "initial-scale=" + scale + ", maximum-scale=" + scale + ", minimum-scale=" + scale + ", user-scalable=no");

if (docElem.firstElementChild) {            docElem.firstElementChild.appendChild(vpMeta)        } else {            var div = doc.createElement("div");            div.appendChild(vpMeta);            doc.write(div.innerHTML);        }    }

function setFontSize() {        var winWidth = docElem.getBoundingClientRect().width;

if (winWidth / dpr > 540) {            (winWidth = 540 * dpr);        }        // 根节点 fontSize 根据宽度决定        var baseSize = winWidth / 10;        docElem.style.fontSize = baseSize + "px";        flexible.rem = win.rem = baseSize;    }    // 调整窗口时重置    win.addEventListener("resize", function() {        clearTimeout(timer);        timer = setTimeout(setFontSize, 300);    }, false);    // 这一段是我自己加的    // orientationchange 时也需要重算下吧    win.addEventListener("orientationchange", function() {        clearTimeout(timer);        timer = setTimeout(setFontSize, 300);    }, false);    // pageshow    // keyword: 倒退 缓存相关    win.addEventListener("pageshow", function(e) {        if (e.persisted) {            clearTimeout(timer);            timer = setTimeout(setFontSize, 300);        }    }, false);    // 设置基准字体    if ("complete" === doc.readyState) {        doc.body.style.fontSize = 12 * dpr + "px";    } else {        doc.addEventListener("DOMContentLoaded", function() {            doc.body.style.fontSize = 12 * dpr + "px";        }, false);    }    setFontSize();    flexible.dpr = win.dpr = dpr;    flexible.refreshRem = setFontSize;    flexible.rem2px = function(d) {        var c = parseFloat(d) * this.rem;        if ("string" == typeof d && d.match(/rem$/)) {            c += "px";        }        return c;    };    flexible.px2rem = function(d) {        var c = parseFloat(d) / this.rem;        if ("string" == typeof d && d.match(/px$/)) {            c += "rem";        }        return c;    }}(window, window.lib || (window.lib = {}));//计算viewport!(function(doc, win) {    var docEle = doc.documentElement,        evt = "onorientationchange" in window ? "orientationchange" : "resize",        fn = function() {            var width = docEle.clientWidth;            width && (docEle.style.fontSize = 20 * (width / 320) + "px");        };    win.addEventListener(evt, fn, false);    doc.addEventListener("DOMContentLoaded", fn, false);}(document, window));//媒体查询设置[email protected] screen and (min-width: 320px) {    html {font-size: 14px;}}@media screen and (min-width: 360px) {    html {font-size: 16px;}}@media screen and (min-width: 400px) {    html {font-size: 18px;}}@media screen and (min-width: 440px) {    html {font-size: 20px;}}@media screen and (min-width: 480px) {    html {font-size: 22px;}}@media screen and (min-width: 640px) {    html {font-size: 28px;}}
 
时间: 2024-10-16 11:50:26

移动端动态font-size的相关文章

关于移动端的font的大小问题

一.font-family 使用无衬线字体 body { font-family: "Helvetica Neue", Helvetica, STHeiTi, sans-serif; } iOS 4.0+ 使用英文字体 Helvetica Neue,之前的iOS版本降级使用 Helvetica 中文字体设置为华文黑体STHeiTi 默认数字字体是Helvetica Neue 需补充说明,华文黑体并不存在iOS的字体库中(http://support.apple.com/kb/HT587

Generate eps plot with appropriate font size and line width in GNU Octave

Because eps terminal is different from the one for screen display, the font size and line width should all be adjusted as the following example: clist = GenColorList(); h = 1; figure(h); clf(h); # This is mandatory. ## Set the axis position. Sometime

[Android Tips] 9. framework notification layout font size

android 4.4 framework notification layout 相关字体大小 * title: notification_title_text_size: 18dp * content: notification_text_size: 14dp * subtext: notification_subtext_size: 12dp [Android Tips] 9. framework notification layout font size

Spark Streaming中动态Batch Size深入及RateController解析

本期内容 : BatchDuration与 Process Time 动态Batch Size Spark Streaming中有很多算子,是否每一个算子都是预期中的类似线性规律的时间消耗呢? 例如:join操作和普通Map操作的处理数据的时间消耗是否会呈现出一致的线性规律呢,也就是说,并非数据量规模越大就是简单加大BatchDuration 就可以解决问题的,数据量是一个方面,计算的算子也是一个考量的因素. 使用BatchSize来适配我们的流处理程序 : 线上的处理程序越来越重要,流入的数据

unity UGUI text font size对性能影响巨大

Font Size对ugui text的性能影响非常大. <Cube Duck Run>在itouch5上测试是很流畅的,但是在iphone5上测试,在game over后显示历史最高分时却总会卡好几秒,导致游戏体验极差.使用屏蔽法查了两天终于找到了问题的原因,原来显示历史最高分的text的font size设成了150.其实本来font size为50就够了,但是由于text的父节点上有个0.3倍的缩放,所以导致text的font size设成150其大小在屏幕上看起来才会适,当初编辑界面的

latex: font size 修改字体大小的几种方式

参考:Adjusting font size with TikZ picture 调整字体大小的几种方式,大小依次增大,具体如下: \tiny \scriptsize \footnotesize \small \normalsize \large \Large \LARGE \huge \Huge 用法如下: \node (c) at (1,2) {\large x}; 版权声明:本文为博主原创文章,未经博主允许不得转载.

XE6 c++builder 设置 font size GetPropInfo SetOrdProp

TObject* objTemp; objTemp = GetObjectProperty(this, "Font"); if (objTemp) { PPropInfo ppi; ppi = GetPropInfo(objTemp->ClassType(), "Size"); if (ppi && (*ppi->PropType)->Kind == tkInteger) SetOrdProp(objTemp, ppi, 12);

GetPropInfo Font Size

设置font size,遍历所有控件,有的控件没有font属性,所以要用GetPropInfo判断 if (GetPropInfo(cmp, "font")) function GetObjectProperty( const AObject   : TObject; const APropName : string ):TObject; var PropInfo:PPropInfo; begin Result  :=  nil; PropInfo:=GetPropInfo(AObje

LaTeX :font size 修改字体大小的几种方式

调整字体大小的几种方式,大小依次增大,具体如下: \tiny \scriptsize \footnotesize \small \normalsize \large \Large \LARGE \huge \Huge [Reference] 1.Adjusting font size with TikZ picture 原文地址:https://www.cnblogs.com/shenxiaolin/p/10316436.html

UIAlertController custom font, size, color

本文转载至 http://stackoverflow.com/questions/26460706/uialertcontroller-custom-font-size-color up vote2down votefavorite 3 I am using new UIAlertController for showing alerts. I have this code: // nil titles break alert interface on iOS 8.0, so we'll be