rem兼容js

简介:

原文链接:http://caibaojian.com/simple-flexible.html

//code from http://caibaojian.com/simple-flexible.html<style id="rootFontSize">html{font-size: 100px !important;}</style>

·


来源:前端开发博客


<script type="text/javascript">

// remjs

//designWidth:设计稿的实际宽度值,需要根据实际设置

//maxWidth:制作稿的最大宽度值,需要根据实际设置

//这段js的最后面有两个参数记得要设置,一个为设计稿实际宽度,一个为制作稿最大宽度,例如设计稿为750,最大宽度为750,则为(750,750)

;(function(designWidth, maxWidth) {

var doc = document,

win = window,

docEl = doc.documentElement,

remStyle = document.createElement("style"),

tid;


function refreshRem() {

var width = docEl.getBoundingClientRect().width;

maxWidth = maxWidth || 540;

width>maxWidth && (width=maxWidth);

var rem = width * 100 / designWidth;

remStyle.innerHTML = 'html{font-size:' + rem + 'px;}';

}


if (docEl.firstElementChild) {

docEl.firstElementChild.appendChild(remStyle);

} else {

var wrap = doc.createElement("div");

wrap.appendChild(remStyle);

doc.write(wrap.innerHTML);

wrap = null;

}

//要等 wiewport 设置好后才能执行 refreshRem,不然 refreshRem 会执行2次;

refreshRem();


win.addEventListener("resize", function() {

clearTimeout(tid); //防止执行两次

tid = setTimeout(refreshRem, 300);

}, false);


win.addEventListener("pageshow", function(e) {

if (e.persisted) { // 浏览器后退的时候重新计算

clearTimeout(tid);

tid = setTimeout(refreshRem, 300);

}

}, false);


if (doc.readyState === "complete") {

doc.body.style.fontSize = "16px";

} else {

doc.addEventListener("DOMContentLoaded", function(e) {

doc.body.style.fontSize = "16px";

}, false);

}

})(750, 750);

</script>


原文链接:http://caibaojian.com/simple-flexible.html

1.复制上面这段代码到你的页面的头部的script标签的最前面。·

2.根据设计稿大小,调整里面的最后两个参数值。

3.使用1rem=100px转换你的设计稿的像素,例如设计稿上某个块是100px*300px,换算成rem则为1rem*3rem。



原文链接:http://caibaojian.com/simple-flexible.html

该代码版本区别于手淘的rem换算方法。使用的是1rem=100px的换算。·

假如你有一个块是.box{width:120px;height:80px;} 转为rem则为.box{width:1.2rem; height:.8rem;}


来源:前端开发博客





      本文转自Ansue  51CTO博客,原文链接:http://blog.51cto.com/ansue/1983421,如需转载请自行联系原作者


相关文章
|
JavaScript
(最方便兼容各种js)拿到路径全部信息(hash,host,hostname,href,origin,pathname,port,protocol)以及跳转路由
(最方便兼容各种js)拿到路径全部信息(hash,host,hostname,href,origin,pathname,port,protocol)以及跳转路由
130 0
(最方便兼容各种js)拿到路径全部信息(hash,host,hostname,href,origin,pathname,port,protocol)以及跳转路由
|
JavaScript iOS开发
js 实现倒计时功能,兼容ios,类似京东
js 实现倒计时功能,兼容ios,类似京东
166 0
js 实现倒计时功能,兼容ios,类似京东
|
Web App开发 JavaScript
WebApp - Rem 自适应 JS 之精简版(flexible.js)
WebApp - Rem 自适应 JS 之精简版(flexible.js)
488 0
WebApp - Rem 自适应 JS 之精简版(flexible.js)
|
JavaScript
JS - 兼容
JS - 兼容
69 0
|
存储 JSON JavaScript
兼容javascript和C#的RSA加密解密算法,对web提交的数据进行加密传输
微软的C#中虽然有RSA算法,但是格式和OpenSSL生成的公钥/私钥文件格式并不兼容。这个也给贯通前后台的RSA加密解密带来了难度。为了兼容OpenSSL生成的公钥/私钥文件格式,贯通javascript和C#的RSA加密解密算法,必须对C#内置的方法进行再度封装。
785 0
兼容javascript和C#的RSA加密解密算法,对web提交的数据进行加密传输
|
Web App开发 编解码 前端开发
适用于移动设备弹性布局的js脚本(rem单位)
背景介绍 目前,随着移动设备的普及和4G网络的普及,web在移动端的占比已经远远超过PC端,各种H5页面推广页面,H5小游戏热度火爆。以前简单的使用px单位(没有弹性)的时代已经无法满足各位设计师和用户了。
17456 0
|
前端开发 JavaScript
浅谈移动端的自适应问题——响应式、rem/em、利用Js动态实现移动端自适应
浅谈移动端的自适应问题——响应式、rem/em、利用Js动态实现移动端自适应 一. 在HTML的头部加入meta标签 在HTML的头部,也就是head标签中增加meta标签,告诉浏览器网页宽度等于设备屏幕宽度,且不进行缩放,代码如下: <meta name="viewport" content=.
2311 0
|
Web App开发 JavaScript Android开发
第148天:js+rem动态计算font-size的大小,适配各种手机设备
需求: 在不同的移动终端设备中实现,UI设计稿的等比例适配。 方案: 布局排版都用rem做单位,然后不同宽度的屏,js动态计算根节点的font-size。 假设设计稿是宽750px来做的,书写css方便计算考虑,根节点的font-size假定为100px,得出设备宽为7.5rem。
1767 0