《实用技巧》——让你的网站变成响应式的3个简单步骤

简介:

1 – 布局

  当创建一个响应式网站,或让现有的网站变成响应式的,首先要关注的元素的布局。我在建立响应式的网站,总是先创建一个非响应的布局,页面宽度固定大小。如果非响应版本完成得非常不错,我再添加媒体查询(Media Queries)和响应式代码。这种操作方式更容易实现响应式特性,在同一时间专注于一个任务。

  当你已经完成了无响应的网站,做的第一件事是在你的 HTML 页面,粘贴下面的代码到<head>和</head>标签之间。这将设置屏幕按1:1的尺寸显示,在 iPhone 和其他智能手机的浏览器提供网站全视图浏览,并禁止用户缩放页面。

 

?
1
2
3
< meta  name = "viewport"  content = "width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" >
< meta  http-equiv = "X-UA-Compatible"  content = "IE=edge,chrome=1" >
< meta  name = "HandheldFriendly"  content = "true" >

 

  现在是时候添加一些媒体查询了。根据 W3C 网站,媒体查询由媒体类型和零个或多个媒体查询的条件表达式组成。通过使用媒体查询,外观呈现可以针对特定范围内的输出设备,而不需要改变内容本身。换句话说,媒体查询让您的网站在各种各种显示器上看起来都很好,从小的智能手机到大的电脑屏幕等等。

  媒体查询取决于你的网站布局,所以对我来说为您提供一个现成可以使用的代码片段有点困难。但是,下面的代码对于大多数网站都是一个很好的起点。在这个例子中,#primary 是主要内容区域,#secondary 是侧栏。

  从代码中你可以看到,我定义了两种规格:首先有一个最大宽度为1060px,为平板电脑优化的横向显示。#primary 占在其父容器宽度的67%,#senondary 占30%,再加上3%的左外边距。 第二个规格是用于平板电脑和更小的屏幕尺寸。

  由于智能手机的屏幕尺寸小,我决定给 #primary 设置100%的宽度,#secondary 也设置100%的宽度,他将在 #primary 下面。 正如我已经说过的,你可能必须要对这段代码位进行修改才能适应您的网站的具体需求。

 

?
1
2
3
4
5
6
7
8
9
10
11
/* Tablet Landscape */
@media  screen  and ( max-width 1060px ) {
     #primary {  width : 67% ; }
     #secondary {  width : 30% margin-left : 3% ;} 
}
 
/* Tabled Portrait */
@media  screen  and ( max-width 768px ) {
     #primary {  width : 100% ; }
     #secondary {  width : 100% margin : 0 border : none ; }
}

  完成以后,让我们看看你的布局是如何响应的。要做到这一点,我用这 Matt Kersley 创建的一款非常的响应式测试工具

 

2 – 媒体

  一个响应式的布局是实现响应网站的第一步。现在,让我们把注意力集中在另外一个现代化网站非常重要的方面:媒体,如视频或图像。 下面的 CSS 代码将确保您的图像将永远不会大于他们的父容器,代码非常简单,适用于大多数网站。请注意,IE6 等旧的浏览器不支持 max-width 指令。

 

?
1
img {  max-width 100% ; }

 

  虽然上述技术是有效的,有时你可能需要有更多的图像控制权,例如根据客户端的显示大小,显示不同的图像。

  这是由 Nicolas Gallagher 发明的好方法。让我们看看 HTML:

 

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

  

  正如你可以看到,我们使用 data-* 属性来存储替换图像的 URL。现在,让我们使用强大的 CSS3 来为匹配 min-device-width 条件的媒体指定替换图像:

 

?
1
2
3
4
5
6
7
8
9
10
11
@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 );
     }
}

  

  令人印象深刻,是不是?现在,让我们来看看另一个在今天的网站中非常重要的媒体——视频。由于大多数网站使用的视频来自第三方网站,我决定把重点放在 Nick La 的弹性视频技术,这种技术可让您嵌入的响应式的视频。

  HTML:

?
1
2
3
< div  class = "video-container" >
     < iframe  src = "http://player.vimeo.com/video/6284199?title=0&byline=0&portrait=0"  width = "800"  height = "450"  frameborder = "0" ></ iframe >
</ div >

  

  CSS:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
.video-container {
     position relative ;
     padding-bottom 56.25% ;
     padding-top 30px ;
     height 0 ;
     overflow hidden ;
}
 
.video-container iframe, 
.video-container object, 
.video-container  embed  {
     position absolute ;
     top 0 ;
     left 0 ;
     width 100% ;
     height 100% ;
}

  在你的网站上应用了这些代码后,嵌入的视频也是响应式(Responsive)的了。

 

3 – 字体

  本教程的最后一步绝对非常重要,但往往被网站开发人员忽视——字体。到现在为止,大多数开发人员(包括我自己)使用像素来定义字体的大小。虽然像素在普通网站使用是OK的,但是对于响应式网站来说应该有响应式的字体。事实上,一个响应式的字体大小应关联它的父容器的宽度,这样它才可以适应客户端的屏幕。

  CSS3 规范引入了一个新的单位叫 rem,和 em 类相似,但相对于 HTML 元素来说, rem 更易于使用。

  rem 是相对于 HTML 元素的,不要忘了重置 HTML 的字体大小:

 

?
1
html {  font-size : 100% ; }

  

  完成后,您可以定义响应式的字体大小,如下所示:

 

?
1
2
3
@media ( min-width 640px ) { body { font-size : 1 rem;} }
@media ( min-width : 960px ) { body { font-size : 1.2 rem;} }
@media ( min-width : 1100px ) { body { font-size : 1.5 rem;} }

  请注意,旧浏览器不支持 rem 单元,所以不要忘了实现一个替代。

  这就是今天的所有内容了,希望你会喜欢这个教程!记得推荐和分享啊!


本文转自山边小溪 51CTO博客,原文链接:http://blog.51cto.com/lihongbo/1158086,如需转载请自行联系原作者


相关文章
|
JavaScript 数据安全/隐私保护
【Vue 开发实战】实战篇 # 39:创建一个分步表单
【Vue 开发实战】实战篇 # 39:创建一个分步表单
173 0
【Vue 开发实战】实战篇 # 39:创建一个分步表单
|
前端开发
#yyds干货盘点 【React工作记录二十】前端常规关于网页文件下载的问题
#yyds干货盘点 【React工作记录二十】前端常规关于网页文件下载的问题
74 0
|
JavaScript
【Vue 开发实战】实战篇 # 45:如何构建可交互的组件文档让代码高亮的显示在页面
【Vue 开发实战】实战篇 # 45:如何构建可交互的组件文档让代码高亮的显示在页面
159 0
【Vue 开发实战】实战篇 # 45:如何构建可交互的组件文档让代码高亮的显示在页面
|
JavaScript C++
【Vue 开发实战】实战篇 # 30:实现一个可动态改变的页面布局
【Vue 开发实战】实战篇 # 30:实现一个可动态改变的页面布局
328 0
【Vue 开发实战】实战篇 # 30:实现一个可动态改变的页面布局
|
Web App开发 存储 JSON
基于Vue3 写一个更好用的在线帮助文档工具
提起帮助文档,想必大家都会想到 VuePress等,我也体验了一下,但是感觉和我的思路不太一样,我希望的是那种可以直接在线编辑文档,然后无需编译就可以直接发布的方式。另外可以在线写(修改)代码并且运行的效果。
|
应用服务中间件 Linux Serverless
搭建Vue3组件库:第十四章 使用Vercel部署在线文档
介绍如何使用Vercel来部署我们的在线文档
392 0
搭建Vue3组件库:第十四章 使用Vercel部署在线文档
|
自然语言处理 JavaScript 前端开发
Vue组件库文档站点的搭建思路
本文为Varlet组件库源码主题阅读系列第四篇,读完本篇,可以了解到如何使用`Vite`的`Api`接口来启动服务、如何动态生成多语言的页面路由。
141 0
|
JavaScript 前端开发 Windows
Vue3移动端组件库Varlet源码主题阅读之一:本地启动服务时都做了什么
不同的组件库架构肯定有所不同,不过大体思路应该都差不多,笔者在众多组件库中挑选了[Varlet](https://github.com/varletjs/varlet) 来进行剖析,`Varlet`是一个基于 `Vue3` 开发的 `Material` 风格的移动端组件库,本系列的文章会全面解析这个项目,需要说明的是,不会具体的看某个组件是怎么实现的,而是了解组件库整体的设计,以及按需引入、主题定制、屏幕适配、组件打包、`VsCode`属性高亮等比较有意思的话题,话不多说,开始吧。
241 0
|
JavaScript 前端开发 Java
Vue3 的学习教程汇总、源码解释项目、支持的 UI 组件库、优质实战项目
Vue3 的学习教程汇总、源码解释项目、支持的 UI 组件库、优质实战项目
529 0
Vue3 的学习教程汇总、源码解释项目、支持的 UI 组件库、优质实战项目
|
编解码 JavaScript 前端开发
揭秘Vue3官方教材动画制作过程,一文教会大家做代码演示GIF!
VueMastery是Vue官方推荐的视频课程平台。VueMastery的视频课程讲解非常透彻,PPT也是制作精良,恰当的动画能帮我们更快速的理解视频中的知识点。
336 0
揭秘Vue3官方教材动画制作过程,一文教会大家做代码演示GIF!