CSS3移动端vw+rem不依赖JS实现响应式布局的方法


Posted in HTML / CSS onJanuary 23, 2019

1、前言

(1)vw/vh介绍

在使用之前,我们先简单了解一下什么是vw和rem以及它们的作用,vw是css3出现的一个新单位,它是“view width”缩写,定义为把当前屏幕分成一百份,1vw即为屏幕的1%,与之对应的是vh,把高分成一百份,1vh即为屏幕高的1%,一般我们常用的vw单位来完成响应式开发

(2)rem介绍

rem是相对长度单位。相对于根元素(即html元素)font-size计算值的倍数,比如你html设置的字体为20px,那么页面中的1rem就相当于20px,举个例子:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style>
html,h1 {
    font-size: 12px;
}
p {
    font-size: 2rem;
}
</style>
</head>
<body>
<h1>我是h1中的文字</h1>
<p>我是p标签中的文字,是h1文字的两倍</p>
</body>
</html>

2、正文

(1)有了上面对这两个单位的了解,我们就可以通过换算来完成移动端的响应式布局处理,这里我们用iPhone6/7/8的手机为例,屏幕宽度为375px。

1vw = 3.75px

(2)好,现在我们想象下100px等于多少vw呢?这里需要计算一下。

100px = 26.6666666vw     //因为是无限循环,这里取7位小数

(3)那么怎么把rem和vw联系起来呢?这里我们来写一个小案例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,height=device-height,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title></title>
    <link rel="stylesheet" href="">
    <style type="text/css" media="screen">
        html{
            font-size: 26.6666666vw  
        }
        p{
            font-size: 0.2rem;
            width: 2rem;
            height: 1rem;
            background: pink;
            margin: 0 auto;
            line-height: 1rem;
            text-align: center;
        }
    </style>
</head>
<body>
    <P>我是P标签中的文字</P>
</body>
</html>

上面的案例我们把html中的font-size设置为26.6666666vw,这代表着font-size=100px,然后结合rem的特性就实现了前端css响应式布局

总结:前端响应式布局有很多种,pc端的响应式框架也有很多,移动端的很多框架也自带响应式,这种方法我觉得也是比较好用的方法,html中的font-size大家可以随意设置,只是换算过来很麻烦,于是很多方法也就产生了,很多编辑器有自动换算的功能,比如我用的sublime编辑器,网上也有很多在线的网页在线转化,好了,以上就是我的使用心得,如有错误之处,请大家多多指正!

3、其他响应式布局介绍

(1)流式布局

流式布局即百分比布局,例如,设置网页主体的宽度为80%,min-width为960px。图片也作类似处理(width:100%, max-width一般设定为图片本身的尺寸,防止被拉伸而失真)。

布局特点:屏幕分辨率变化时,页面里元素的大小会变化而但布局不变。【这就导致如果屏幕太大或者太小都会导致元素无法正常显示】

设计方法:使用%百分比定义宽度,高度大都是用px来固定住,可以根据可视区域 (viewport) 和父元素的实时尺寸进行调整,尽可能的适应各种分辨率。往往配合 max-width/min-width 等属性控制尺寸流动范围以免过大或者过小影响阅读。

这种布局方式在Web前端开发的早期历史上,用来应对不同尺寸的PC屏幕(那时屏幕尺寸的差异不会太大),在当今的移动端开发也是常用布局方式,但缺点明显:主要的问题是如果屏幕尺度跨度太大,那么在相对其原始设计而言过小或过大的屏幕上不能正常显示。因为宽度使用%百分比定义,但是高度和文字大小等大都是用px来固定,所以在大屏幕的手机下显示效果会变成有些页面元素宽度被拉的很长,但是高度、文字大小还是和原来一样(即,这些东西无法变得“流式”),显示非常不协调。

(2)媒体查询

媒体查询是监听当前屏幕的宽度来响应你对应的设置,比如375px的屏幕字体为12px,960的屏幕字体为18px,对于简单的页面来说写起来很庞大,但是对于大型项目来说还是很方便的,媒体查询有个特点就是比如你从375px屏幕缩放到960px屏的时候字体或者图片会突然放大,也算是一种不好的体验吧,但是实际运用中并没有什么关系。
布局特点:每个屏幕分辨率下面会有一个布局样式,即元素位置和大小都会变。

设计方法:媒体查询+流式布局。

总结:

1.如果只做pc端,那么流式布局(定宽度)是最好的选择;

2.如果做移动端,且设计对高度和元素间距要求不高,那么弹性布局(vw)是最好的选择,一份css调节font-size搞定;

3.如果pc,移动要兼容,而且要求很高那么媒体查询还是最好的选择,前提是设计根据不同的高宽做不同的设计,响应式根据媒体查询做不同的布局。

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

HTML / CSS 相关文章推荐
CSS3,线性渐变(linear-gradient)的使用总结
Jan 09 HTML / CSS
CSS3自定义滚动条样式 ::webkit-scrollbar的示例代码详解
Jun 01 HTML / CSS
HTML5重塑Web世界它将如何改变互联网
Dec 17 HTML / CSS
使用HTML5 Canvas API绘制弧线的教程
Mar 22 HTML / CSS
浅谈html5与APP混合开发遇到的问题总结
Mar 20 HTML / CSS
使用canvas对多图片拼合并导出图片的方法
Aug 28 HTML / CSS
移动端html5判断是否滚动到底部并且下拉加载
Nov 19 HTML / CSS
HTML5拖放API实现自动生成相框功能
Apr 07 HTML / CSS
html2 canvas svg不能识别的解决方案
Jun 03 HTML / CSS
html5调用摄像头实例代码
Jun 28 HTML / CSS
html+css实现环绕倒影加载特效
Jul 07 HTML / CSS
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
Dec 24 HTML / CSS
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
Jan 17 #HTML / CSS
简单几步用纯CSS3实现3D翻转效果
Jan 17 #HTML / CSS
css3实现3D文本悬停改变效果的示例代码
Jan 16 #HTML / CSS
css3实现元素环绕中心点布局的方法示例
Jan 15 #HTML / CSS
CSS3改变浏览器滚动条样式
Jan 04 #HTML / CSS
浅谈CSS3 动画卡顿解决方案
Jan 02 #HTML / CSS
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
Dec 29 #HTML / CSS
You might like
php生成随机数或者字符串的代码
2008/09/05 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
解放web程序员的输入验证
2006/10/06 Javascript
JavaScript CSS修改学习第一章 查找位置
2010/02/19 Javascript
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
浅析js中取绝对值的2种方法
2013/07/09 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
详解AngularJS2 Http服务
2017/06/26 Javascript
javascript 玩转Date对象(实例讲解)
2017/07/11 Javascript
原生js封装运动框架的示例讲解
2017/10/01 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
2019/01/30 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
如何手动实现一个 JavaScript 模块执行器
2020/10/16 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
python dict remove数组删除(del,pop)
2013/03/24 Python
pycharm 使用心得(四)显示行号
2014/06/05 Python
跟老齐学Python之关于循环的小伎俩
2014/10/02 Python
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
Python中turtle作图示例
2017/11/15 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
Python 处理文件的几种方式
2019/08/23 Python
python opencv将表格图片按照表格框线分割和识别
2019/10/30 Python
在主流系统之上安装Pygame的方法
2020/05/20 Python
德国购买门票网站:ADticket.de
2019/10/31 全球购物
实习鉴定范文
2013/12/19 职场文书
法学个人求职信范文
2014/01/27 职场文书
诚信承诺书模板
2014/05/26 职场文书
合作协议书格式
2014/08/19 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
学校政风行风评议工作总结
2014/10/21 职场文书
员工评语范文
2014/12/31 职场文书
打架检讨书范文
2015/01/27 职场文书
小鞋子观后感
2015/06/05 职场文书
张丽莉观后感
2015/06/16 职场文书