什么是Responsive设计?有的同学认为Responsive设计是自适应布局,也有的同学认为Responsive是网格布局。其实这些想法都不正确。WikipediaResponsive做 了详细的描述,我在这里就简单的说一下。Responsive设计简单的称为RWD,是精心提供各种设备都能阅读网页的一种设计方法,RWD能让你的网页 在不同的设备中展现成不同的设计风格。从这一点描述来说,Responsve既不是流体布局,也不是什么网格布局,他是一种独特的网页设计方法。

Responsive设计无疑是网页设计中的一个热门话题。某种程度上,他将是一个最受欢迎的网页设计概念,因为随着网站用户日渐多样化的访问方 法,比如说“iPad”、“iPhone”、“Android移动设备”、“平板电脑”、“台式机”以及“ 笔记本”等不同形式的显屏出现。这样我们以前那样的网页设计就无法在适合上述各种设备的浏览,这也给我们后续的网页设计提出了一个全新的设计概念 Responsive设计。让我们的网页能适应各种平台、各种设备上渲染。

这个时候可能又有人会心生疑问,是不是Responsive是用来制作Mobile页面的?这个问题我经常听到有同学问?其实这是一个很简单的问 题,Mobile页面和我们平时的页面制作基本上是一样的,只不过大小不一样,其中稍有细节需要注意,从这一点出发,如果就Responsive设计是用 来制作Mobile页面并不妥,只能说Responsive设计能让你的页面在Mobile上显示的更加完美。说到这,可能你会感觉到 Responsive到底是什么?又怎么使用?我又要怎么学习呢?其实这些都不是问,接下来和大家分享一下学习或者说使用Responsive设计的一些 基本技巧,以及对应的学习资源。

一、保持一个简单的布布局

布局是一个在简单不过的问题了,也是每个网页设计中必须包含的部分,但我们使用Responsive设计第一步要做的事情就是让你的页面布局尽量的简单。实现一个简单的布局,我们有一些小技巧:

Responsive布局技巧

在Responsive布局中,我们可以毫无保留的丢弃:

  1. 尽量少用无关紧要的div
  2. 不使用内联元素(inline)
  3. 尽量少用js或flash
  4. 丢去没用的绝对定位和浮动样式
  5. 屏弃任何冗余结构和不使用100%设置

有舍才有得,丢去了一些对Responsive有影响的东东,那么有哪些东东能帮助Responsive确定更好的布局呢?

  1. 使用HTML5 Doctype和相关指南
  2. 重置好你的样式(reset.css)
  3. 一个简单的有语义的核心布局
  4. 给重要的网页元素使用简单的技巧,比如导航菜单之类元素

使用这些技巧,无非是为了保持你的HTML简单干净,而且在你的页面布局中的关键部分(元素)不要过分的依赖现代技巧来实现,比如说css3特效或者js脚本。

说了这么多,怎么样的一个布局或者说HTML结构才是简单干净的呢?这里教大家一个快速测试的方法:

你首先禁掉你页面中所有的样式(以及与样式相关的信息),在浏览器中打开,如果你的内容排列有序,方便阅读,那么你的这个结构不会差到哪里去。

二、使用Medial Queries

Medial Queries在CSS3中得到很大的扩展,如果你不太了解Medial Queries是什么?建议你先狠狠点击这里进 行了解。而且Medial Queries在Responsive中扮演着一个非常重要的角色,可以说Responsive设计离开了Medial Queries就失去了他生存的意义。简单的说Medial Queries是一个媒体查询,可以根据设置的尺寸,查询出适配的样式。我们回过头来想,Responsive设计最关注的就是宽度:根据用户的使用设备的当前宽度,你的Web页面将加载一个备用的样式,实现特定的页面风格。

/*import 导入法*/
<style>
@import url(tiny.css) (min-width:300px);
@import url(small.css) (min-width:600px);
@import ulr(big.css) (min-width:900px);
</style>
/*直接写在样式文件中*/
@media screen and (max-width:300px) {
/*Tiny styles*/
}
@media screen and (max-width: 600px) {
/*small styles*/
}
@media screen and (max-width:900) {
/*big styles*/
}

上面只是一种简单的使用方法,其实Medial Queries很简单,你可以为Responsive制定一些常用的模板,例如:

@media only screen and (min-width: 320px) {

  /* Small screen, non-retina */

}

@media
only screen and (-webkit-min-device-pixel-ratio: 2) and (min-width: 320px),
only screen and ( min--moz-device-pixel-ratio: 2) and (min-width: 320px),
only screen and ( -o-min-device-pixel-ratio: 2/1) and (min-width: 320px),
only screen and ( min-device-pixel-ratio: 2) and (min-width: 320px),
only screen and ( min-resolution: 192dpi) and (min-width: 320px),
only screen and ( min-resolution: 2dppx) and (min-width: 320px) { /* Small screen, retina, stuff to override above media query */ } @media only screen and (min-width: 700px) { /* Medium screen, non-retina */ } @media
only screen and (-webkit-min-device-pixel-ratio: 2) and (min-width: 700px),
only screen and ( min--moz-device-pixel-ratio: 2) and (min-width: 700px),
only screen and ( -o-min-device-pixel-ratio: 2/1) and (min-width: 700px),
only screen and ( min-device-pixel-ratio: 2) and (min-width: 700px),
only screen and ( min-resolution: 192dpi) and (min-width: 700px),
only screen and ( min-resolution: 2dppx) and (min-width: 700px) { /* Medium screen, retina, stuff to override above media query */ } @media only screen and (min-width: 1300px) { /* Large screen, non-retina */ } @media
only screen and (-webkit-min-device-pixel-ratio: 2) and (min-width: 1300px),
only screen and ( min--moz-device-pixel-ratio: 2) and (min-width: 1300px),
only screen and ( -o-min-device-pixel-ratio: 2/1) and (min-width: 1300px),
only screen and ( min-device-pixel-ratio: 2) and (min-width: 1300px),
only screen and ( min-resolution: 192dpi) and (min-width: 1300px),
only screen and ( min-resolution: 2dppx) and (min-width: 1300px) { /* Large screen, retina, stuff to override above media query */ }

这个时候你可能并不关心里面的样式文件怎么写,而更关心的是这样的尺寸我要怎么来定,如果你够仔细的话,从上面例的模板代码能找到一点的答案,那么我这里从别的地方截了和张图,放在这里以供大家参考:

三、定义断点

定义断点,那么断点是什么?简单的描述就是,设备宽度的临界点,也就是前面大家比较关心的Medial Queries中的min-width和max-width值是什么?那么在Responsive设计中,常见的断点有六种,我们今后的Medial Queries条件判断就可以根据这六个断点来定。

主要的有:

  1. 第一个断点群体就是针对于智能手机设置,他的宽度是小于480px(<480px)
  2. 第二个断点是高智能移动设备,比如说Ipads设备,他的宽度是小于768px(<768px)
  3. 第三个断点就是针对于大设备,比如说PC端,他的宽度是大于768px(>768px)

为了完美一些,我们还可以添加另外几种断点:

  1. 添加一个小于320px的断点,针对于小型的移动设备;(<320px)
  2. 还可以添加适用于平板设备的断点,大于768px小于1024px(>768px 和 <1024px)
  3. 最后还可以为超宽的桌面设置一个断点,大于1024px(>1024px)

综合下来,设置断点把握三个要点:

  1. 满足主要的断点;
  2. 有可能的话添加一些别的断点;
  3. 设置高于1024px的桌面断点

如下图所示:

四、让你的布局更灵活

断点确认了,接下来要让你的布局更具灵活性。这里推荐使用flexible grids来布局,相对于固定宽度布局而言,Flexible grids能让你的布局更适应于viewport的尺寸大小。而整个flexible grids中流体布局(也就是大家常说的自适应布局、液体布局、百分比布局)最适合各种类弄屏幕大小,结合正确的medial Queries,你可以制作出适应于任何可能出现的设备页面布局。

来看一个简单的对比图

使用流体布局,有一个小技巧注意,为了让浏览器计算小数点的四舍五入的问题,影响页面布局,所以你的百分比小数位尽量多取一些位数,(如果你有看 bootstrap的源码,你就能很明显的看到他的百分比布局,小数点后面精确到十多位)。当然大家对这个数值不好把握的话,可以使用现成的网格系统,

  1. 30+ CSS Grid System(这里搜集了近40个不同网格系统的介绍)
  2. 8个实用的响应式设计框架(这里搜集了15个具有responsive设计的网格框架系统)

流体布局是方便,但是苦于的是,如果在设置了流体宽度值的元素上添加padding和border,那就凶险了,这个你懂的(css box module)有介绍:

那有没有可解决的方法?方法是有的,早期是在设置宽度的元素内嵌套一个div,并将padding和border设置在这个内嵌元素上,这样就多增加了一个额外标签,其实在CSS3中有一个更好的方法,就是使用box-sizing来改变box module的默认模型。

举个例子,我们有一个“div”元素:他的宽度是67%,而且需要设置一个15px的内距padding和3px的边框border。Box module此时默认的宽度是:

div宽度=67% + 2*15px + 2*3px

这样一来造成web页面总布局的宽度大于100%;从而撑破了web的布局,为了让这个div不在改变box module的宽度,也就是说,不管他的padding和border设置的是何值,而其width永远不变,还是“67%”,那么我们就需要使用 box-sizing来改变,这样一来,我们可以在样式表中这样设置:

*{
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-o-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}

五、图片的自适应

布局实现自适应不难,那么图片怎么做到呢?也就是说我的一张图片,有什么方法可以让他在不同的设备上显示能根据屏幕大小自适应,处理这种效果有一个 方法,如果你的web页面不会受到带宽宽的影响(不考虑性能),你可以先制作一图片让其适合最大屏幕,然后通过样式来控制不同设备下显示的大小;另外一种 办法就是你可以为每个断点准备不同的图片。

图片自适应大小

使用样式来控制图片的自适应:

img {
max-width: 100%;
}

断点图片

为每一个断点提供不同的的图片,这是一个比较头痛的事情,因为Medial Queries并不能改变图片"src"的属性值,那有没有办法可以解决呢?可以参考一下下面的解决方法:

  1. 使用background-image:给元素使用背景图片,
  2. 显示/隐藏父元素:给父元素使用不同的图片,然后通过Medial Queries来控制这些图片显示或隐藏。

一起来看一个断点解决图片自适应的例子:

<img src="data:image.jpg" data-src-600px="image-600px.jpg" data-src-800px="image-800px.jpg" alt="">

对应的CSS代码

@media (min-device-width:600px) {
img[data-src-600px] {
content: attr(data-src-600px, url);
}
} @media (min-device-width:800px) {
img[data-src-800px] {
content: attr(data-src-800px, url);
}
}

六、别忘了min和max

在Responsive中有两个关键词也是非常的重要,“min-width”和“max-width”。这两个属性值能帮助你定义responsive临界点的一个相对值。典型的好处:

  1. 防止你的布局变大或变小
  2. 结合液体布局,max-width和min-width在medial queries临界点(断点)能做到更好的适应性。

一起来看几个简单的运用:

液体布局中,如果你的宽度不小于768px,同时不大于1024px,那么我们就可以使用:

min-width: 768px;
max-width: 1024px
;

比如“#main”元元素宽度不低于1000px的桌面上显示,那么我们就可以这样使用:

@media screen and (min-width: 1024px) {
#main {min-width: 1000px;}
}

七、让大部分东西是相对的

让你整个Web元素都是相对的而不是绝对的,从这一个概念出发,我们可以给最外面的元素定义一个单位,然后其子元素和后代码元素都继承他。目前使用相对的单位有两种常见的:

  1. 百分比(%)方法:给主容器定认一个固定尺寸或者流体尺寸,然后给其每个子元素使用百分比(%)来计算各自的参数,比如说width/padding/margin等;
  2. “em”单位:先在一个主容器中或者"<body>"中定义一个字体大小(font-size),把它做为基本单位,然后其他元素以此做为基准来计算出相关的值

“em”和“px”之间的转换是有些技巧的,如果你从来没有了解过他们之间的关系,我建议你先阅读一下这篇文章《CSS中强大的EM》,简单一点的,可以看看下图:

八、移动端上的效果

在移动端设备,特别是小屏的移动手机上,所有的内容都将在一个列中显示,这个时候,我们就需要对样式进行一定的处理,首先来看一个布局的对比:

PC桌面上的layout

这样的布局,在我们手机上将显示成这样:

那我们要怎么来实现这两种布局的转变呢?实现方法很简单:只需要在你的mobile样式表中覆盖每一个元素的宽度,将原来的宽度转换成“100%”

是不是我们需要在移动手机样式中为每一个不重要的元素添加移去的样式呢?其实不用,我们只需要在不重要的元素中添加类名“not_mobile”,然后在手机样式中添加:

@media screen and (max-width:300px) {
.not_mobile{display: none;}
}

十、检查你的viewport

玩过移动端的同学可能都知道,许多移动端的浏览器模拟了桌面PC机下浏览器,你的web页面在移动端的浏览器浏览时,整个页面会直接压缩显示在一个屏幕下。这可是一个强大的功能,但也是Responsive致命的一功能。

看一个我在网上截图来的对比图:

针对这种情况,我可以使用“meta”属性来让其显示正常:

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

那么到这给与大家分享了制作Responsive设计的十个基本技巧,如果你对Responsive设计感兴趣的话,你可以打开“Mediaqueri.es”查看一些优秀的案例。最后希望这篇文章能给你带来些许的帮助。如果你有更好的分享,我们可以一起探讨。

特别声明:本文中提供的链接都是可能打开的,如果你碰到了打不开的网站,请先开启你的VPN服务。

原文地址:http://www.w3cplus.com/css3/10-basic-tips-about-responsive-design.html

Responsive设计的十个基本技巧(转)的更多相关文章

  1. 第11章 Media Queries 与Responsive 设计

    Media Queries--媒体类型(一) 随着科学技术不断的向前发展,网页的浏览终端越来越多样化,用户可以通过:宽屏电视.台式电脑.笔记本电脑.平板电脑和智能手机来访问你的网站.尽管你无法保证一个 ...

  2. 开关电源PCB设计中的布线技巧

    开关电源PCB设计中的布线技巧关键字:布线 开关电源 走线 一.引言 开关电源是一种电压转换电路,主要的工作内容是升压和降压,广泛应用于现代电子产品.因为开关三极管总是工作在 “开” 和“关” 的状态 ...

  3. Responsive设计 (响应式设计)

    一.什么是响应式设计 维基百科是这样对响应式作的描述:“Responsive设计简单的称为RWD,是精心提供各种设备都能浏览网页的一种设计方法,RWD能让你的网页在不同的设备中展现不同的设计风格.” ...

  4. MySQL优化技巧之四(数据库设计中的一些技巧)

    1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对 ...

  5. Java开发数据库设计的14个技巧,你知道几个?

    1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对 ...

  6. Responsive设计——不同设备的分辨率设置

    下面我们一起来看看CSS3 Meida Queries在标准设备上的运用,大家可以把这些样式加到你的样式文件中,或者单独创建一个名为“responsive.css”文件,并在相应的条件中写上你的样式, ...

  7. ExecutorService的十个使用技巧

    ExecutorService] (https://docs.oracle.com/javase/8/docs/api/java/util/concurrent /ExecutorService.ht ...

  8. 2016 年开发者应该掌握的十个 Postgres 技巧

    [编者按]作为一款开源的对象-关系数据库,Postgres 一直得到许多开发者喜爱.近日,Postgres 正式发布了9.5版本,该版本进行了大量的修复和功能改进.而本文将分享10个 Postgres ...

  9. 五十个小技巧提高PHP执行效率(一)

    在项目开发过程中,经常遇到了一些PHP处理程序性能底下的情况,程序运行在centos+nginx环境,虽然这个有很多的原因如:服务器本身配置,运行环境nginx服务,php-fpm配置等等,更多有一点 ...

随机推荐

  1. Convert和Parse对null值处理的区别

    类型的转换在日常的变成中是经常被用到的,我们最常用的类型转换的方法就是Convert和Parse, 下面来说一下这两者null值处理的区别. int i1 = Convert.ToInt32(null ...

  2. Qt opencv程序运行异常

    搭建了两次qt opencv vs ,经常出现程序运行异常.找了几个原因如下: 1.opencv的路径未配置或配置有误. 2.qt中pro文件包含不正确. 3.测试opencv程序不正确.如视频或图片 ...

  3. typeof和instanceof简介及用法

    typeof 使用方式:typeof a 或者 typeof (a) 返回一个string类型的值 顾名思义,这货是检查类型的,输出的是一个string值,直接看下面的检测代码: console.lo ...

  4. Flask 开发全球化应用

    从C#世界迈入python总是令人有一种如释重负之感,同样的效果同样的功能,只需要付出1/10不到的代价,可能正是Python所倡导的简美哲学所带来的威力. 我还深深地记得在ASP.NET中做全球化的 ...

  5. UEditor编辑文章出现多余空行问题的解决办法

    网站后台管理编辑文章以后,保存.再次打开编辑是文章前后多出多余的空行.一直以为是编辑器有问题,也没在意,但是自己编辑文章多了,感觉太麻烦了.想一定可以解决这个问题.百度一下果然找到原因.原来是加载编辑 ...

  6. [bzoj 1004][HNOI 2008]Cards(Burnside引理+DP)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1004 分析: 1.确定方向:肯定是组合数学问题,不是Polya就是Burnside,然后题目上 ...

  7. 实现一个基于WCF的分布式缓存系统

    tks:http://www.cnblogs.com/xiguain/p/3913220.html

  8. 作业一_随笔3_调研Android的开发环境的发展演变

    调研某一移动应用/平台的开发环境的发展演变:Android 其实,一开始,我只知道,苹果手机用IOS系统,其他很多手机时候安卓系统.我百度知道Android开发主要是android studio和Ec ...

  9. Ibatis的类型处理器TypeHandler解析

    Ibatis允许用户像在hibernate中一样定义自己的类型,但是,用户自定义类型需要与数据库中的字段类型进行对应.它的处理方法是允许我们扩展TypeHandler.Ibatis框架在处理该数据类型 ...

  10. JQuery学习(1)

    JQuery学前准备 JQuery的各种包: 1.jquery-ui(包含小工具及组件) 2.jquery-1.7.1.intellisense.js(智能提示包) 3.jquery-1.7.1.js ...