关于响应式网站的开发素材

最近在进行响应式的开发,在网上找了一些内容收集在这里

  1. (一)
(function (doc, win) {
          var docEl = doc.documentElement,//根元素html
          //判断窗口有没有orientationchange这个方法,有就赋值给一个变量,没有就返回resize方法。
            resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
            recalc = function () {
              var clientWidth = docEl.clientWidth;
              if (!clientWidth) return;
              //把document的fontSize大小设置成跟窗口成一定比例的大小,从而实现响应式效果。
              docEl.style.fontSize = 20 * (clientWidth / 320) + 'px';
            };
            //alert(docEl)
          if (!doc.addEventListener) return;
          win.addEventListener(resizeEvt, recalc, false);//addEventListener事件方法接受三个参数:第一个是事件名称比如点击事件onclick,第二个是要执行的函数,第三个是布尔值
          doc.addEventListener('DOMContentLoaded', recalc, false)//绑定浏览器缩放与加载时间
        })(document, window);
        //alert(document.documentElement.clientWidth/320)

参考网址:
移动端自适应js
web app变革之rem

2.(二)

脚本默认为640px,非640px宽度设计稿需在<head>添加下面的 meta 标签属性
content="750" ,750改为实际设计稿宽度

<meta name="W_design" content="750" />
(function(e, t) {
    function n() {
        for (var e = navigator.userAgent,
        t = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"], n = !0, i = 0; t.length > i; i++) if (e.indexOf(t[i]) > 0) {
            n = !1;
            break
        }
        return n
    }
    function i() {
        var t = a.getBoundingClientRect().width;
        n() && 2047 > t && (t = 640);
        var i = t * 100 / w;
        a.style.fontSize = i + "px",
        d.rem = e.rem = i
    }
    var r, o = e.document,
    a = o.documentElement,
    s = o.querySelector('meta[name="viewport"]'),
    c = o.querySelector('meta[name="flexible"]'),
    l = 0,
    u = 0,
    d = t.flexible || (t.flexible = {});
    var w = o.querySelector('meta[name="W_design"]') ? o.querySelector('meta[name="W_design"]').getAttribute('content') : 640;
    if (s) {
        console.warn("将根据已有的meta标签来设置缩放比例");
        var p = s.getAttribute("content").match(/initial\-scale=([\d\.]+)/);
        p && (u = parseFloat(p[1]), l = parseInt(1 / u))
    } else if (c) {
        var f = c.getAttribute("content");
        if (f) {
            var h = f.match(/initial\-dpr=([\d\.]+)/),
            m = f.match(/maximum\-dpr=([\d\.]+)/);
            h && (l = parseFloat(h[1]), u = parseFloat((1 / l).toFixed(2))),
            m && (l = parseFloat(m[1]), u = parseFloat((1 / l).toFixed(2)))
        }
    }
    if (!l && !u) {
        e.navigator.appVersion.match(/android/gi);
        var g = e.navigator.appVersion.match(/iphone/gi);
        e.navigator.appVersion.match(/ipad/gi);
        var v = e.devicePixelRatio;
        l = g ? v >= 3 && (!l || l >= 3) ? 3 : v >= 2 && (!l || l >= 2) ? 2 : 1 : 1,
        u = 1 / l
    }
    if (a.setAttribute("data-dpr", l), !s) if (s = o.createElement("meta"), s.setAttribute("name", "viewport"), s.setAttribute("content", "initial-scale=" + u + ", maximum-scale=" + u + ", minimum-scale=" + u + ", user-scalable=no"), a.firstElementChild) a.firstElementChild.appendChild(s);
    else {
        var y = o.createElement("div");
        y.appendChild(s),
        o.write(y.innerHTML)
    }
    e.addEventListener("resize",
    function() {
        clearTimeout(r),
        r = setTimeout(i, 300)
    },!1),
    e.addEventListener("pageshow",
    function(e) {
        e.persisted && (clearTimeout(r), r = setTimeout(i, 300))
    },!1),
    "complete" === o.readyState ? o.body.style.fontSize = 12 * l + "px": o.addEventListener("DOMContentLoaded",
    function() {
        o.body.style.fontSize = 12 * l + "px"
    },!1),
    i(),
    d.dpr = e.dpr = l,
    d.refreshRem = i,
    d.rem2px = function(e) {
        var t = parseFloat(e) * this.rem;
        return "string" == typeof e && e.match(/rem$/) && (t += "px"),
        t
    },
    d.px2rem = function(e) {
        var t = parseFloat(e) / this.rem;
        return "string" == typeof e && e.match(/px$/) && (t += "rem"),
        t
    }
})(window, window.lib || (window.lib = {}));

参考网址:
移动端自适应js(二)

3.(三)
responsive-page

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,717评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,501评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,311评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,417评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,500评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,538评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,557评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,310评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,759评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,065评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,233评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,909评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,548评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,172评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,420评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,103评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,098评论 2 352

推荐阅读更多精彩内容

  • 需求: 在不同的移动终端设备中实现,UI设计稿的等比例适配。 方案: 布局排版都用rem做单位,然后不同宽度的屏,...
    love2013阅读 14,457评论 1 7
  • 以下是常用的代码收集,学习用。转自豪情博客园 1. PC - js 返回指定范围的随机数(m-n之间)的公式 re...
    自由加咖啡阅读 995评论 0 1
  • 移动端应该如何动态设置字体大小? rem由来:font size of the root element,那么re...
    a8d1e9528b1e阅读 517评论 0 0
  • 我向来笃信中医,望闻问切之间病去也。据说,大牛中医主要牛在掐的准你是虚是实,是阴是阳。通俗点儿,就是大师可以透过表...
    野花2016阅读 1,561评论 0 4
  • 01 陌生人之间开始社交的时候,大多希望知道别人的一些基本情况,年龄自然是逃不过的询问话题。有时候我们可以凭借他人...
    黑与白的日记阅读 291评论 1 0