详解px单位html5响应式方案


Posted in HTML / CSS onMarch 08, 2018

移动端h5响应式方案最近这几年用得最多的最多的就是rem方案了。这个需要计算根元素的font-size来实现响应式。

但这种方案也有一个缺点,那就是font-size不为整数的时候一些字体使用rem单位会导致字体显示的大小有问题,对视觉还原要求比较高的项目来说这还是令前端开发挺头疼的一件事的。

解决前端响应式无非就是在不同的设备下可以正常展示,这里介绍一种不需要rem方式的响应式方案。直接使用px,这里说的是基于750px的设计稿。设计稿中你量出来是多少px,样式中

直接写多少px。这样是不是很快捷,也不需要rem换算。

  1. transform
  2. transform-origin

这里其实就是用到了transform的scale缩放页面大小来实现响应式。

核心代码:
 

let screenMatch = () => {
            document.body.style.setProperty('visibility', 'hidden')
            let page = document.getElementById("page");
            let _scale = window.outerWidth/750;
            
            page.style.setProperty("transformOrigin", "0 0");
            page.style.setProperty("transform", "scale("+ _scale + ")");
            //兼容ios8
            page.style.setProperty("-webkit-transform-origin", "0 0");
            page.style.setProperty("-webkit-transfrom", "scale("+ _scale + ")");
            setTimeout(() => {
  
                page.style.setProperty("transformOrigin", "0 0");
                page.style.setProperty("transform", "scale("+ _scale + ")");
                //兼容ios8
                page.style.setProperty("-webkit-transform-origin", "0 0");
                page.style.setProperty("-webkit-transfrom", "scale("+ _scale + ")");
                document.body.style.setProperty('visibility', 'visible')
            }, 100);

        }
        screenMatch();
        window.onresize = screenMatch;

上述代码中id为page的是整个页面元素开始的跟节点,body下的第一个元素。这里body/html要设置min-height:100%;height:100%;

其实我们在小程序中也可以使用px单位,但是小程序中使用transform的时候会有一些字体锯齿的bug,最后换了zoom属性就好了,同时使用-webkit-zoom做兼容。核心代码跟h5的差别不大同样放的是缩放大小。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
灵活运用CSS3特性绘制简易版围棋效果
Sep 28 HTML / CSS
CSS3悬停效果案例应用
Nov 21 HTML / CSS
css3的图形3d翻转效果应用示例
Apr 08 HTML / CSS
CSS3 实现footer 固定在底部(无论页面多高始终在底部)
Oct 15 HTML / CSS
canvas画布实现手写签名效果的示例代码
Apr 23 HTML / CSS
html5 canvas-1.canvas介绍(hello canvas)
Jan 07 HTML / CSS
Canvas实现保存图片到本地的示例代码
Jun 28 HTML / CSS
html2 canvas生成清晰的图片实现打印功能
Sep 23 HTML / CSS
详解如何在登录过期后跳出Ifram框架
Sep 10 HTML / CSS
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
Mar 30 HTML / CSS
CSS实现多个元素在盒子内两端对齐效果
Mar 30 HTML / CSS
使用CSS实现小三角边框原理解析
Nov 07 HTML / CSS
html5开发三八女王节表白神器
Mar 07 #HTML / CSS
使用HTML5和CSS3制作一个模态框的示例
Mar 07 #HTML / CSS
Canvas制作的下雨动画的示例
Mar 06 #HTML / CSS
html2canvas把div保存图片高清图的方法示例
Mar 05 #HTML / CSS
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
Mar 02 #HTML / CSS
基于MUI框架使用HTML5实现的二维码扫描功能
Mar 01 #HTML / CSS
canvas裁剪clip()函数的具体使用
Mar 01 #HTML / CSS
You might like
同一空间绑定多个域名而实现访问不同页面的PHP代码
2006/12/06 PHP
PHP实现的方程求解示例分析
2016/11/11 PHP
php防止sql注入的方法详解
2017/02/20 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
2017/06/07 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
实现JavaScript中继承的三种方式
2009/10/16 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
js获取url中指定参数值的示例代码
2013/12/14 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
2014/12/20 Javascript
jQuery中[attribute=value]选择器用法实例
2014/12/31 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
JS实现定时任务每隔N秒请求后台setInterval定时和ajax请求问题
2017/10/15 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
解决vue-cli项目webpack打包后iconfont文件路径的问题
2018/09/01 Javascript
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
微信小程序使用字体图标的方法
2019/05/23 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
js验证账户名是否重复
2020/05/26 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
[02:02]DOTA2英雄基础教程 斯拉达
2013/12/11 DOTA
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
python IDLE 背景以及字体大小的修改方法
2019/07/12 Python
python 实现屏幕录制示例
2019/12/23 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
SIXPAD智能健身仪英国官网:革命性的训练装备品牌
2018/09/27 全球购物
万代美国官网:PREMIUM BANDAI USA
2020/09/11 全球购物
应届生文秘专业个人自荐信格式
2013/09/21 职场文书
采购员岗位职责
2013/11/15 职场文书
婚礼主持词
2014/03/13 职场文书
学生意外伤害赔偿协议书
2014/09/17 职场文书
团委工作总结2015
2015/04/02 职场文书
使用Python的开发框架Brownie部署以太坊智能合约
2021/05/28 Python
图解排序算法之希尔排序Java实现
2021/06/26 Java/Android