javascript用rem来做响应式开发


Posted in Javascript onJanuary 13, 2018

电脑版的商城昨晚做完了,今天赶着做手机端的,提到手机端的网站第一个想到的就是要 适应不同手机屏幕的宽度,保证在不同手机上都能正常显示给用户,我之前做这类网站都是无脑引进bootstrap的。但前一个项目做完之后我发现bootstrap虽好,但里面的各种样式我利用的很少,最多用到它排版,当网站最后上传的时候你会发现,即使压缩之后,它也会占用相当大的一部分,所以这次我想自己用原生写,响应式开发(我现在知道的尚浅)目前我了解有

1.百分比法:

顾名思义,页面的元素的margin,padding,width,height,等等都用%来计算,CSS中的百分比中的百指的是什么,指的是父元素,所有百分比都是这样的。子元素宽度50%,那么父元素的宽度就是百,子元 素的padding-left:50%,父元素的宽度是百,子元素的margin-top:20%,那么父元素的高是百。所以body默认宽度是屏幕宽度 (PC中指的是浏览器宽度)子孙元素按百分比定位(或指定尺寸)就可以了,这只适合布局简单的页面,复杂的页面实现很困难。

2.媒体查询:

这个是css3中给出的,我们要解决的问题是适应手机屏幕,这个媒体查询正是为解决这个问题而生,媒体查询的功能就是为不同的媒体设置不同的css样 式,这里的“媒体”包括页面尺寸,设备屏幕尺寸等,最常用的形式

phone:@media screen and (max-width:767px) {/手机中样式/}

pad:@media screen and (max-width:991px)and(min-width:768) {/平板中样式/}

pc:@media screen and (min-width:992px){/电脑中样式/}

...(你还可以设置更多节点)

用媒体查询的话要保证每个像素下都有对应的适配效果显然你要设置更小的宽度范围;

3.还有就是css3的单位rem:

rem就是将根节点html的font-size的值作为整个页面的基准尺寸,例如<html style="font-size:10px">那么1rem=10px;如何做到适配呢?那就要用到js在页面加载时获取window的宽度(浏览器窗口的宽度)$(window).width();在开发手机页面的时候,一般我们设置最大宽度为640px,因为640px可以保证在至今最宽的手机上显示时网页两端刚好贴合屏幕,那接下来我就举一个小例子。

javascript用rem来做响应式开发

屏幕放大缩小这三个div也同样还在一行等比放大缩小

html

<div class="container">
  <div class="box">1</div>
  <div class="box">2</div>
  <div class="box">3</div>
</div>

css

<style>
  html{font-size: 20px;}
  .container{
    max-width: 640px;
    border:1px solid red;
    margin:0 auto;
    overflow: hidden;
    box-sizing: border-box;
  }
  .box{
    float: left;
    width:10.6rem;
    //我这里设置html的font-size:20px;最大
宽为640px,即相当于640/20=32rem;一行有3个div,所以每个div宽10.6rem

你也可以像论坛里面讲的那样设置html的font-size:62.5%;因为浏览器默认像素16px;乘以62.5%之后为整数10px;方便计算

    height:10.6rem;
    border:1px solid #000;
    box-sizing: border-box;
  }
</style>

js

<script>
 window.onresize = window.onload = function () {
   var w = $(window).width();
   if(w<640){
     var size = 20*w/640;//640的时候
对应html的font-size为20,那么宽度为w是对应
的font-size可这么求
     $('html').css('fontSize',size+'px');
   }
 }
</script>

注意这里有一个小坑,当你把这个小demo拿到谷歌浏览器里面验证的时候,你会发现开始这3个div会随着你浏览器窗口缩小而缩小,到达某个值后就不动了,原因是谷歌浏览器默认支持html的font-size最小值为10px;在小于这个值就不会再小了,这是我当时碰到的问题花了快两个小时上网找,一遍遍演示也都没想明白,最后终于查到这么个非人为原因.

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

Javascript 相关文章推荐
通过javascript设置css属性的代码
Dec 28 Javascript
很棒的学习jQuery的12个网站推荐
Apr 28 Javascript
JavaScript中的this关键字介绍与使用实例
Jun 21 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
Mar 02 Javascript
JavaScript中window.open用法实例详解
Apr 15 Javascript
表单元素值获取方式js及java方式的简单实例
Oct 15 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
Dec 14 Javascript
javascript实现下雨效果
Mar 27 Javascript
jquery应用实例分享_实现手风琴特效
Feb 01 jQuery
vue页面离开后执行函数的实例
Mar 13 Javascript
vue基于viewer实现的图片查看器功能
Apr 12 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
Nov 02 Javascript
深入理解ES6之数据解构的用法
Jan 13 #Javascript
详解ES6语法之可迭代协议和迭代器协议
Jan 13 #Javascript
详解如何在React组件“外”使用父组件的Props
Jan 12 #Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
Jan 12 #Javascript
微信小程序实现的涂鸦功能示例【附源码下载】
Jan 12 #Javascript
js 索引下标之li集合绑定点击事件
Jan 12 #Javascript
简单的Vue SSR的示例代码
Jan 12 #Javascript
You might like
用PHP+MySql编写聊天室
2006/10/09 PHP
PHP转盘抽奖接口实例
2015/02/09 PHP
PHP扩展开发入门教程
2015/02/26 PHP
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
2018/09/26 PHP
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
2014/01/13 Javascript
使用jQuery的toggle()方法对HTML标签进行显示、隐藏的方法(示例)
2016/09/01 Javascript
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
2017/01/12 NodeJs
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
2018/08/25 Javascript
如何解决js函数防抖、节流出现的问题
2019/06/17 Javascript
python在命令行下使用google翻译(带语音)
2014/01/16 Python
python模拟登录并且保持cookie的方法详解
2017/04/04 Python
Python标准库之collections包的使用教程
2017/04/27 Python
python实现简单http服务器功能
2018/09/17 Python
python3+opencv3识别图片中的物体并截取的方法
2018/12/05 Python
Python中Numpy ndarray的使用详解
2019/05/24 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
2019/06/27 Python
python如何实现异步调用函数执行
2019/07/08 Python
Python求解正态分布置信区间教程
2019/11/20 Python
Python运行异常管理解决方案
2020/03/09 Python
Django多个app urls配置代码实例
2020/11/26 Python
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
如何删除一个表里面的重复行
2013/07/13 面试题
标记环网Toke Ring IEEE802.5
2014/05/26 面试题
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2014/01/19 面试题
教师自我鉴定
2013/12/13 职场文书
导购员的岗位职责
2014/02/08 职场文书
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
2014年大学生四年规划书范文
2014/04/03 职场文书
整改通知书
2015/04/20 职场文书
2015年设计师个人工作总结
2015/04/25 职场文书
校园安全学习心得体会
2016/01/18 职场文书
Unicode中的CJK(中日韩统一表意文字)字符小结
2021/12/06 HTML / CSS
centos7安装mysql5.7经验记录
2022/05/02 Servers