响应式布局和移动端开发

响应式布局

l 响应式布局是Ethan Marcotte在2010年5月份提出的一个概念,简而言之,就是一个网站能够兼容 多个终端,而不是为每个终端做一个特定的版本。这个概念是为解决移动互联网浏览而诞生的。

l 响应式布局可以为不同终端的用户提供更加舒适的界面和更好的用户体验,而且随着目前大屏幕移 动设备的普及,越来越多的设计师采用这个技术。

l 一个典型的响应式布局网站:http://www.16ketang.com/

l 试着逐渐缩小该页面的窗口,看看网页有什么变化

l 由于响应式布局要针对不同的视口尺寸,对样式作出更多的修改,因此并不像流式布局那样让宽度 自动适应那么简单。

l 实现响应式布局最核心的技术就是使用媒体查询(media selector)。

l 媒体查询是CSS3引入的概念,是指针对不同的设备、不同的视口尺寸,使用不同的样式代码。

l 响应式布局的原理,正是大量的使用媒体查询,让页面中一些元素在不同的视口中具有不同的样式 表现。

l 常见的视口尺寸

l 虽然你现在知道了如何使用媒体查询,但我们真正关心的,是页面在手机、平板、上网本或小型笔 记本、PC端中具有更好的表现力。

l 但问题是手机型号众多,其他设备也是如此,它们的尺寸不尽相同,我们如何来判定当前的视口尺 寸属于什么设备呢?

l 好在经过大量的实践应用,开发者已经总结了一套普遍的适用规则,按照这套规则,你就可以将视 口尺寸和具体设备对应起来。

l 视口尺寸和设备关系表

视口                设备

≥1200px            大屏幕:投影仪 电视 PC端

≥992px && <1200px   中等屏幕:上网本、小型笔记本

≥768px && <992px    小屏幕:平板

<768px              超小屏幕:手机

l 根据上述的关系表,再结合你网站的实际情况,就可以很容易的得出你需要编写的媒体查询代码。

l 比如,我的网站只考虑两种情况:

  1. 手机端显示一种风格 2. 其他设备共享一种风格

l 在Sass中使用媒体查询

l 开发一个实际的项目时,我们通常会选择一些预编译器来处理我们编写的CSS源代码,比如 SASS。很多预编译器都对媒体查询有很好的支持。

l Sass 中 @media 指令与 CSS 中用法一样,只是增加了一点额外的功能:允许其在 CSS 规则中嵌 套。如果 @media 嵌套在 CSS 规则内,编译时,@media 将被编译到文件的最外层,包含嵌套的 父选择器。这个功能让 @media 用起来更方便,不需要重复使用选择器,也不会打乱 CSS 的书写 流程。

开发移动端页面

l 实际上,开发移动端页面,和开发一个普通的页面并没有本质的区别。只不过移动端独有 的一些特性,需要我们在开发时特别关注。这些特性包括:

1. 移动端的视口宽度问题 2. 移动端误触造成的缩放问题 3. 移动 端元素的尺寸问

移动端的视口宽度问题

l 视口是指浏览器的可视区域,移动端的视口到底是多宽呢?

l 现在市面上的大部分手机,比如iphone X,它的默认视口宽度为980px,而一个iphone X的屏幕宽 度仅仅为375px。看到问题了吗?一个宽度只有375像素的手机,却能够显示宽度为980像素的网 页,自然而然,网页会被缩小。

l 我们可以使用谷歌浏览器的移动端调试工具,来访问百度的搜索结果,可以看到网页明显被缩小 了,而且页面宽度定格在980px。

l 在HTML给我们提供了一个关键字 device-width ,该关键是读取当前移动设备的宽度。因此, 我们只需要使用下面的代码,即可让所有移动设备的视口宽度和其自身的宽度相等:

<meta name="viewport" content="width=device-width">

这样就解决了移动端视口宽度和自身宽度不一致的问题。

移动端误触造成的缩放问题

l 当用户用手指在移动端滑动网页的时候,手机往往提供下面的功能:

1. 快速双击,可放大页面 2. 双指收放,可放大缩小页面

l 由于移动端误触较多,而我们的网页本来就是专门为移动端开发的,无论是尺寸还是各种样式,在 默认的情况下已经非常合适了,根本不需要用户去缩放网页(你会发现,几乎所有app中的页面, 都是不允许缩放的),因此,禁止用户对网页进行缩放是一个不错的选择。

l 具体的做法是在上一节中的 meta 元素中继续加入内容:

<meta name="viewport" content="width=device-width, initial-scale=1.0, min imum-scale=1.0, maximum-scale=1.0, user-scalable=0">

l initial-scale=1.0 :初始缩放比例为1.0(原始大小),这句代码的目的还不是放置用户 缩放的,书写上它有其他复杂的原因,不过本文不涉及

l minimum-scale=1.0 :网页小的缩小比例为1.0(原始大小),设置这句代码的目的是为 了放置某些程序(比如JS)无意中修改了网页的缩小比例

l maximum-scale=1.0 :网页大的放大比例为1.0(原始大小),设置这句代码的目的是为 了放置某些程序(比如JS)无意中修改了网页的放大比例

l user-scalable=0 :这句代码才是不允许用户对网页进行缩放

移动端元素的尺寸问题

l 网页中的很多元 素,随着视口的宽度变大,尺寸也会随之变大,无论是字体、高度、间隙都有这样的特点。

l 当遇到字体大小、宽高、margin、padding等尺寸 类的属性时,不能设置固定的像素值。

l 这段js代码可以实现转换rem值:

!(function(win, doc) {     function setFontSize() {         var winWidth = window.innerWidth;

doc.documentElement.style.fontSize = (winWidth / 设计 稿宽度) * 比例 + ‘px‘;     }     var evt = ‘onorientationchange‘ i n win ? ‘orientationchange‘ : ‘resiz e‘;     var timer = null;      win.addEventListener(evt, function() {         clearTimeout(timer);

timer = setTimeout(setFontSize, 300);     }, false);     win.addEventListener("pageshow", function(e) {         if (e.persisted) {             clearTimeout(timer);             timer = setTimeout(setFontSize, 300);         }     }, false);     //初始化     setFontSize(); }(window, document));

css中的所有像素值变化为使用rem单位

l 我们知道,rem单位是相对于根元素html字体大小的(如果根元素没有设置字体大小,则相对于基 准字号)。而现在,根元素的字体大小,正好反映了视口的宽度。

l 于是,我们只需要将各种尺寸的值,使用rem作为单位,就可以适应视口宽度的变化了。

l 具体怎么设置呢,非常的简单,一个元素某个尺寸的rem值公式如下:rem值 = 设计稿中的尺寸 / 100

l 比如,设计稿中某个元素的宽度为100像素,那么应该设置它的宽度为 1rem ,这样一来,当视口 尺寸等于设计稿尺寸1080时,根元素的字体大小为 (1080/1080)*100 = 100px ,它的宽度 为 1rem = 100px ;如果视口尺寸变小了,比如变成了375,那么根元素的字体大小为 (375/1080)*100 = 34.72px ,那么它的宽度为 1rem = 34.72px 。这样就完美的和设计稿比例 一致了。

l 当然,在移动端,如果你使用了背景图(比如雪碧图),记得用同样的方式调整背景图的尺寸。

原文地址:https://www.cnblogs.com/wwjljwx/p/11018788.html

时间: 2024-10-10 09:36:30

响应式布局和移动端开发的相关文章

响应式布局和移动端布局

响应式布局就是响应式设计方案呈现的效果.具体就是页面的布局会根据不同设备的显示面积(主要是宽度)的不同而呈现不同的布局,这个效果是比弹性的布局更好的地方是样式会主动地根据用户的设备的显示面积呈现的布局更灵活,可读性更强.当然对研发的要求也更高(比如说如何更好地让图片,适配,UI动画自适应各种布局).响应式设计一般来说是一套设计方案解决所有的设备的自适应问题.对应的样式文件可能是多个,也可以只写一个(在一个css文件声明不同的media query就可以). 移动端布局就是传统的固定宽度或者弹性布

web前端响应式布局,自适应全部分辨率

写phpd的我. 近期公司要弄个app关键是没有web开发,而我有比較闲,那就扛枪上阵吧. 响应式布局,web端的?php我一直都是用tp框架,对于web首先想到的是bootstrap框架.仅仅是简单了解过,没真正实践啊.bootstrap比我想象的要好用的多.关键是.关键来了-- app端是仅仅有手机的,pc基本上木有.那就是说仅仅能依照手机端开发,那么boostrap响应式布局就不适用于app了(反正我是做了一套半成品,被推翻了).不能愉快的工作了.好不淡定的时间. .百度.百又问问同事.发

【CSS3】响应式布局的实际应用的小例子

如今响应式布局在web app开发中应用得非常广泛,现在的手机屏幕的分辨率基本在320px到640px之间,在窄屏和宽屏我们的显示方式可能会略有不同.本文简单介绍一个应用得非常多的小例子. 当屏幕宽度大于640px时,显示6列选项,当小于640px时显示两排,每排3列,这种样式在web app里的很多选项的样式中应用得很广泛. 其实实现上面的效果很简单,主要通过CSS3的媒体查询和calc()属性来对算术表达式求值就可以做到,具体实现可以查看以下源代码: <!DOCTYPE html> <

0083 移动端WEB开发之响应式布局、bootstrap

移动端WEB开发之响应式布局 1. 响应式开发原理 1.1 响应式开发原理 就是使用媒体查询针对不同宽度的设备进行布局和样式的设置,从而适配不同设备的目的. 设备的划分情况: 小于768的为超小屏幕(手机) 768~992之间的为小屏设备(平板) 992~1200的中等屏幕(桌面显示器) 大于1200的宽屏设备(大桌面显示器) 1.2 响应式布局容器 响应式需要一个父级做为布局容器,来配合子级元素来实现变化效果. 原理就是在不同屏幕下,通过媒体查询来改变这个布局容器的大小,再改变里面子元素的排列

移动端WEB开发之响应式布局

1.0 响应式开发原理 1.1 响应式开发原理 就是使用媒体查询针对不同宽度的设备进行布局和样式的设置,从而适配不同设备的目的. 设备的划分情况: 小于768的为超小屏幕(手机) 768~992之间的为小屏设备(平板) 992~1200的中等屏幕(桌面显示器) 大于1200的宽屏设备(大桌面显示器) 1.2 响应式布局容器 响应式需要一个父级做为布局容器,来配合子级元素来实现变化效果. 原理就是在不同屏幕下,通过媒体查询来改变这个布局容器的大小,再改变里面子元素的排列方式和大小,从而实现不同屏幕

响应式布局的开发基础

第一:正确理解响应式布局 响应式网页设计就是一个网站能够兼容多个终端-而不是为每个终端做一个特定的版本.打个比方来说:现在社会有很多响应产品,例如折叠沙发,折叠床等等,当我们需要把沙发放到一个角落的时候,此刻沙发就好比div吧,而角落里的某个地方就好比父元素,由于父元素空间的改变,我们不得不调整div,让它能够依然放在角落里.在项目中你会遇到不同的终端,由于终端分辨率不同,所以你要想让用户体验更好,就必要让你的页面能够兼容多个终端. 第二:响应式设计的步骤 了解了什么是响应式,那么接下来我们就要

一步步开发自己的博客 .NET版 剧终篇(6、响应式布局 和 自定义样式)

前言 这次开发的博客主要功能或特点:    第一:可以兼容各终端,特别是手机端.    第二:到时会用到大量html5,炫啊.    第三:导入博客园的精华文章,并做分类.(不要封我)    第四:做个插件,任何网站上的技术文章都可以转发收藏 到本博客. 所以打算写个系类:<一步步搭建自己的博客> 一步步开发自己的博客  .NET版(1.页面布局.blog迁移.数据加载) 一步步开发自己的博客  .NET版(2.评论功能) 一步步开发自己的博客  .NET版(3.注册登录功能) 一步步开发自己

【CSS-移动端响应式布局详解】

背景 移动端响应式布局开发主要方案有: 基于rem开发 基于媒体查询 基于弹性盒 基础概念 在讨论响应式布局知识前,先了解下移动端常用基础概念. 逻辑像素(CSS pixels) 浏览器使用的抽象单位,主要用来在网页上绘制内容:通常在我们实际开发中涉及到的CSS单位px都是指逻辑像素. 设备像素或物理像素(Device Pixels) 显示屏幕的最小物理单位,每个DP包含自己的颜色.亮度.等值的 CSS pixels在手机屏幕上占多大的位置,这不是固定的,这取决于很多属性:经过分析和总结,我们可

【课程分享】ASP.NET MVC5&amp;amp;微信公众平台整合开发实战(响应式布局、JQuery Mobile,Windows Azure、微信核心开发)

对这个课程有兴趣的,能够联系我QQ2748165793 基础知识储备 ASP.NET MVC 5基础(6讲) 第一讲-初识ASP.NET MVC并搭建整合开发环境 第二讲-深入MVC开发模式 第三讲-C#核心语言特性 第四讲-C#核心语言特性(二) 第五讲-视图引擎Razor 第六讲-MVC核心工具 实战演练(11讲) 第七讲-体育商店(一):项目架构 第八讲-体育商店(二):数据库创建和訪问 第九讲-体育商店(三):分页和样式 第十讲-体育商店(四):布局和导航 第十一讲-体育商店(五):购物