视口:浏览器窗口内的内容区域,不包含工具栏,标签栏。网页实际显示.
屏幕尺寸:设备物理显示区域

各种宽度和高度a、可视区的真实宽度和高度document.documentElement.clientWidth document.documentElement.clientHeight都去掉滚动条的大小(一般是17像素),比如我的dell笔记本在chrome下,正常的可视区(即无滚动条)大小是1366*663,假如水平和垂直方向都有滚动条的话,这两个值的大小为 1349 * 646b、document.documentElement.offsetWidth   无滚动条 1366  有滚动条 1349 同adocument.documentElement.offsetHeight  根据实际的html元素被撑开的大小c、window.innerWidth / window.innerHeight1)有滚动条 document.documentElement.clientWidth + 滚动条宽度(2)无滚动条 等于document.documentElement.clientWidth高度计算规则同宽度
响应式方法论
  • 先针对小视口设计
  • 然后逐步对大视口渐进增强
  • 响应式设计中内容始终优先
  • 流动布局、弹性图片和媒体查询:使用百分比布局创建流动的弹性界面,同时使用媒体查询来限制元素的变动范围。(平滑过渡)

HTML5的时代

  • 简化标签
  • 语义化标签
  • CSS3(圆角,渐变…..)

-webkit-,-moz-是各厂商发布正式版本之前,实验各自对css3新特性的实现

业务需求和预算的考虑

  • 客户是否想支持互联网用户增长最迅猛的市场?如果想,那响应式方法就很适合。
  • 客户是否想要最简洁、快速,且易于维护的代码?如果想,那响应式方法就很适合。
  • 客户能否理解用户体验可以且本应该根据浏览器不同而不同?如果可以理解,那响应式方法就很适合。
  • 客户是否要求设计效果在所有浏览器中都保持一致,包括IE 8 以及更低版本?如果是,响应式设计就不适合。
  • 该网站的当前或预期客户中,是否有百分之七十以上的人可能使用Internet Explorer 8或者更低版本?如果是,则响应式设计不适合。
  • 在预算允许的情况下,一个完全定制的“移动”版网站比响应式设计更适合。

网站不必在所有浏览器中表现一致

客户->思维定式->说服引导(理由如下)

  • 允许页面显示效果在老旧浏览器中有细微的差别,这样可以使代码更易维护,将来更新的成本也更低。
  • 让页面元素在那些老旧浏览器(如Internet Explorer 8 及更低版本)中表现一致会导致网站增加大量的图片。这会使网站变慢,制作成本变高,而且更难维护。
  • 现代浏览器可以理解的简洁代码等同于更快速的网站。快速响应的网站在搜索引擎中的评级高于慢腾腾的网站。
  • 使用老旧浏览器的用户越来越少,使用现代浏览器的用户越来越多——我们应该支持大多数!

媒体查询

W3C规范审核:工作草案(Working Draft)->候选推荐标准(Candidate Recommendation)->提议推荐标准(Proposed
Recommendation)->几年时间等待->W3C 推荐标准(REC)
- CSS3 是由很多附加模块组合而成的。媒体查询就是其中的一个模块。
- 媒体查询可以让我们根据设备显示器的特性为其设定CSS 样式。

媒体查询语法

CSS 样式表中使用媒体查询
在屏幕宽度小于等于400 像素的设备上,h1 元素的文字颜色就会变成绿色。
@media screen and (max-device-width: 400px){
h1 { color:green}
}
给视口最大宽度为360 像素的显示屏设备加载一个名为phone.css 的样式表。
@import url("phone.css") screen and (max-width:360px);

使用CSS 的@import 方式会增加HTTP 请求(这会影响加载速度)

通过标签的media 属性为样式表指定设备类型(如显示屏或打印机)。
非纵向放置的显示屏设备
<link rel="stylesheet" media="not screen and (orientation: portrait)" href="portraitscreen.
css" />
媒体查询列表:查询列表中的任意一个查询为真,则加载文件。
全部查询都不为真,则不加载。
<link rel="stylesheet" media="screen and (orientation: portrait) and (min-width:
800px), projection" href="800wide-portrait-screen.css" />

媒体主要特性

  • width:视口宽度。
  • height:视口高度。
  • device-width:渲染表面的宽度(对我们来说,就是设备屏幕的宽度)。
  • device-height:渲染表面的高度(对我们来说,就是设备屏幕的高度)。
  • orientation:检查设备处于横向还是纵向。
  • aspect-ratio:基于视口宽度和高度的宽高比。一个16∶9 比例的显示屏可以这样定义aspect-ratio: 16/9。
  • device-aspect-ratio:和aspect-ratio 类似,基于设备渲染平面宽度和高度的宽高比。
  • color:每种颜色的位数。例如min-color: 16 会检测设备是否拥有16 位颜色。
  • color-index:设备的颜色索引表中的颜色数。值必须是非负整数。
  • monochrome:检测单色帧缓冲区中每像素所使用的位数。值必须是非负整数,如monochrome: 2。
  • resolution:用来检测屏幕或打印机的分辨率,如min-resolution: 300dpi。还可以接受每厘米像素点数的度量值,如min-resolution: 118dpcm。
  • scan:电视机的扫描方式,值可设为progressive(逐行扫描)或interlace(隔行扫描)。如720p HD 电视(720p 的p 即表明是逐行扫描)匹配scan: progressive,而1080i HD 电视(1080i 中的i 表明是隔行扫描)匹配scan: interlace。
  • grid:用来检测输出设备是网格设备还是位图设备。
  • 除scan 和grid 之外,都可使用min 和max 前缀来创建一个查询范围。
建议:
  • Respond.js让不支持css3 Media Query的浏览器包括IE6-IE8等其他浏览器支持查询。
  • CSS重置样式:normalize.css

保证图片尽可能精简(base64)

时刻谨记,我们要保证代码和数据都尽可能精简,以便为带宽有限的用户提供愉悦的体验。

阻止移动浏览器自动调整页面大小

  • iOS 和Android 浏览器都基于核心
最常用写法
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
width:可视区域的宽度,值可为数字或关键词device-widthheight:同widthintial-scale:页面首次被显示是可视区域的缩放级别,取值1.0则页面按实际尺寸显示,无任何缩放maximum-scale=1.0, minimum-scale=1.0;可视区域的缩放级别,
maximum-scale用户可将页面放大的程序,1.0将禁止用户放大到实际尺寸之上。user-scalable:是否可对页面进行缩放,no 禁止缩放(很少用到)

针对不同视口宽度修正设计

平板设备(如iPad)增加媒体查询,竖直iPad 的视口
宽度是768 像素

@media screen and (max-width: 768px){
#wrapper {
width:768px;
}
#header,#footer,#navigation {
width:748px;
}
}
自适应布局缺点

页面捕捉到媒体查询设置的断点,然后布局发生变化。但在
捕捉到下一个视口断点之前,页面静止不变
它不能适应未来的变化。

响应式布局:固定布局->流动布局

伊桑·马科特提供一个简易可行的公式,将固定像素宽度转换对应的百分比宽度:
(目标元素宽度-边框宽度)÷上下文(父级)元素宽度=百分比宽度
注意上下文的对应关系,页面换行显示(ul>li>a问题有可能是li的inline-block没有宽的原因,我们可以使用margin来控,因为宽度不是很灵活)

#header {
margin-right:10px;
margin-left:10px;
width:940px;
}

转换

#wrapper {
margin-right:auto;
margin-left:auto;
width:96%; /* 控制最外层的div */
}#header {
margin-right:10px;
margin-left:10px;
width:97.9166667%; /* 940 ÷ 960 */
}

关于数字四舍五入,黄金分割率约为1:1.61803398874989怎么看它都不是一个简洁的数字,但是它非常重要。黄
金分割率的测量都能做到如此精确,那我相信网页设计同样做得到。

用em(继承父级),rem(直接继承祖宗)替换px

em指的是特定字母的宽度和高度相对于特定字体磅值的比例。
- 现代浏览器的默认文字大小都是16 像素
- 优点:
- 使用Internet Explorer 6 的用户也将能够缩放文字
- 以使我们设计师和开发者的生活更简单

给body设置
font-size: 100%;
font-size: 16px;
font-size: 1em;
缺点:每次使用font-size时,都要需求字体大小px/16 = 字体大小 em
不过我推荐使用
font-size:62.5%
#content h1 {
font-family:Arial, Helvetica, Verdana, sans-serif;
text-transform:uppercase;
font-size:4.3125em; } /* 69 ÷ 16 */
#content h1 span {
display:block;
line-height:1.052631579em; /* 40 ÷ 38 */
color:#757474;
font-size:.550724638em; /* 38 ÷ 69 */
}

行高的转换相对于其本身的文字大小而言

弹性图片

在现代浏览器(包括IE 7+)中要实现图片随着流动布局相应缩放非常简单。

为特定图片指定特定规则
img,object,video,embed {
方法一(利用重写和覆盖):
max-width:100%;
max-width:45%;
方法二:
width:百分比显示
max-width: 202px;给弹性图片设置阈值
}
  • 注意删除宽度和高度属性
  • 缺点:
    • 要提前准备一张足够大的图片,以备大视口使用
    • 带宽限制
限制页面无限制扩张
给最外层的div设置max-width 属性
#wrapper {
margin-right:auto;
margin-left:auto;
width:96%; /* Holding outermost DIV */
max-width:1414px;
}

为不同的屏幕尺寸提供不同大小的图片

AdaptiveImages:图片自适应源码工具是一个基于PHP语言编写的图片自适应解决方案,它首先利用一个轻量级的JS文件来探测浏览器的屏幕大小,然后将这个参数发送到服务器端的PHP脚本来对图片进行尺寸调整。
实现 Adaptive Images 解决方案需要Apache 2、PHP 5.x 和GD 库,也就是说需要Web 服务器端编程。首先,在其网站上下载.zip 文件开始配置:
js被禁用的情况下依然有效
1. 解压文件,然后将其中的adaptive-images.php 和.htaccess 文件拷贝到网站的根目录。如果你网站的根目录下已经有一个.htaccess 文件了,不要覆盖它。参考下载包中的instructions.htm 文件看看怎么做合适。

  1. 接着在网站根目录下创建一个名为ai-cache 的文件夹。
  2. 然后把如下JavaScript 代码复制到每个需要自适应图片的网页的头部:
    h5版本
<script>document.cookie='resolution='+Math.max(screen.width,screen.height)+';
path=/';/script>

h5以下(添加type)

<script type="text/javascript">document.cookie='resolution='+Math.maxscreen.width,
screen.height)+'; path=/';</script>

切记这段JavaScript 代码要放在页面头部(最好作为第一个脚本),因为它需要在页面加载完成之前,而且要在发出图片请求之前运行。

<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
# Adaptive-Images ------------------------------------------------------
RewriteCond %{REQUEST_URI} andthewinnerisnt让网站根目录下名为andthewinnerisnt 的文件夹中的图片被缩放
# Send any GIF, JPG, or PNG request that IS NOT stored inside one of the above directories
# to adaptive-images.php so we can select appropriately sized versions
RewriteRule \.(?:jpe?g|gif|png)$ adaptive-images.php
# END Adaptive-Images --------------------------------------------------
</IfModule>

流动网格布局和媒体查询的默契配合

媒体查询约束流动布局的变动范围,而流动布局则简化了从一组媒体查询样式过渡到另一组的改变过程。

HTML5(大家可以看我的另一篇文章)

腻子脚本(polyfill)这个词由Remy Sharp 提出,意指使用腻子来补平老版
本浏览器的缺陷。因此,腻子脚本具体指的是一段能给老版本浏览器带来
新特性的JavaScript 代码。

HTML5 样板文件。样板文件是一个预先做好的融
合了“最佳实践”HTML5 文件,包含一些基本样式(如之前提到过的
normalize.css)、polyfill 和一些必要的工具如Modernizr。它还包含一个
自动合并CSS 和JS 文件、自动删除注释以生成生产环境代码的构建工
具。强烈推荐!

HTML5 精简主义

各种脑残写法都可以被浏览器识别
**没有结束标签的斜线,没有引号,大小写混杂。甚至,省略元素,
页面依然有效**

<link href=CSS/main.css rel=stylesheet >
<div id=wrapper>
<img SRC=frontCarousel.png aLt=frontCarousel>

在编写HTML5 文档时我倾向于在老式编写风格(可读性和精简代码找到平衡)

<link href="CSS/main.css" rel="stylesheet"/>

HTML5 标签嵌套多个

<h2><a href="index.html">The home page</a></h2>
<p><a href="index.html">This paragraph also links to the home page</a></p>
<a href="index.html"><img src="home-image.png" alt="home-slice" /></a>

Make change

<a href="index.html">
<h2>The home page</h2>
<p>This paragraph also links to the home page</p>
<img src="home-image.png" alt="home-slice" />
</a>

不能在一个标签中嵌套另一个标签,也不能在标签中嵌套表单。
第一句不是很理解,什么意思?

HTML5 弃其糟粕

都能使用,不过最好不要用,拥抱未来
- 暂保留
- <img src="frontCarousel.png" alt="frontCarousel" border="0" />
- 非保留的strike、enter、font、acronym、frame 和frameset。

HTML5 全新语义化元素(机器识别)

字典中对语义学的定义是“关注语言本质含义的语言学和逻辑学分支学科”.

  • <section>元素用来定义文档或应用程序中的区域(或节)
  • <nav>用来定义文档的主导航区域
  • <article>元素用来包裹独立的内容片段
  • <aside>元素用来表示与页面主内容松散相关的内容
  • <hgroup>元素包裹使用

    等标签的标题、标语和副标题

  • <aside>元素用来表示与页面主内容松散相关的内容
    • <header>元素包含对区域内容的介绍说明(不计入大纲结构,不能用于划分内容结构。)
    • <footer>元素包含对区域内容的介绍说明(不计入大纲结构,不能用于划分内容结构。)
    • <address>元素用于明确地标注离其最近的< article >或< body >祖先元素的联系信息。
HTML5 的大纲结构
<hgroup><h1>Ben's blog</h1><h2>All about what I do</h2>
</hgroup>
<article><header><hgroup><h1>A post about something</h1><h2>Trust me this is a great read</h2><h3>No, not really</h3><p>See. Told you.</p></hgroup></header>
</article>

HTML5 文本级语义元素

<b>……一小段文本,纯粹为了吸引人的注意,除此之外不传达任何重要性,也不暗示其他语态或语气,如文档摘要中的关键词、评论中的产品名称、交互式文本软件中的可操作单词,或者文章的导语。
根据过去对< b >标签的用法,很多浏览器仍会将其渲染为粗体。所以你可以根据实际情况在相关的CSS 代码中重定义其默认样式。

<em>强调内容中的重点。

<i>一小段有不同语态或语气的文字,或者是样子上与普通文章有所差异以便
标明不同特点的文字。 渲染成斜体,可以重写样式

遵循WAI-ARIA 实现无障碍站点

WAI-ARIA 是Web Accessibility Initiative - Accessible Rich Internet Applications 的缩写,指无障碍网页应用技术,它主要解决一个问题:让残障人士能无障碍地访问网页上的动态内容。这种技术提供了一种描述自定义组件(网页应用中的动态片段)的角色、状态和属性的方法,这样这些组件就可以被依赖辅助技术的用户找到并加以利用。

ARIA地标属性:role=”“
  • application:用来定义用作网页应用的区域。
  • banner:用来定义一个站点级别(而不是某个特定文档的)的区域。如网站的头部和logo。
  • complementary:用来定义一个对页面主要区域进行补充说明的区域。
  • contentinfo:用来定义与页面主要内容相关的信息区域。例如页脚的网站版权信息区域。
  • form:你猜都能猜到,定义表单!但注意,如果表单用于搜索,则请使用search 来替代。
  • main:定义页面的主体内容。
  • navigation:用来定义链向当前文档或相关文档的导航链接。
  • search:用来定义一个用于搜索的区域。
设置样式nav[role=""] {}

HTML5 嵌入媒体

最初的 HTML5 规范呼吁所有浏览器内置支持使用Ogg 格式①直接播放视频或音频(无需插件)。但是由于HTML5 工作组的内部争议,曾经作为基线标准的支持Ogg(包括Theora video 和Vorbis audio)的主张在最近更新的HTML5 规范中被放弃。因此目前的情况是,一些浏览器支持某一套视频和音频文件格式,而另一些浏览器则支持其他格式。例如Safari 只允许在和元素中使用MP4/H.264/AAC 媒体文件,而Firefox 和Opera 则只支持Ogg 和WebM。

在一个标签内支持多种媒体格式
<video width="640" height="480" controls autoplay preload="auto" loopposter="myVideoPoster.jpg">
<source src="video/myVideo.ogv" type="video/ogg">
<source src="video/myVideo.mp4" type="video/mp4">
What, do you mean you don't understand HTML5?
</video>
针对老版本浏览器的备用方案
<video width="640" height="480" controls autoplay preload="auto" loop poster=
"myVideoPoster.jpg">
<source src="video/myVideo.mp4" type="video/mp4">
<source src="video/myVideo.ogv" type="video/ogg">
<object width="640" height="480" type="application/x-shockwave-flash"
data="myFlashVideo.SWF">
<param name="movie" value="myFlashVideo.swf" />
<param name="flashvars" value="controlbar=over&amp;image=myVideoPoster.
jpg&amp; file=video/myVideo.mp4" />
<img src="myVideoPoster.jpg" width="640" height="480" alt="__TITLE__"
title="No video playback capabilities, please download the video below" />
</object>
<p> <b>Download Video:</b>
MP4 Format: <a href="myVideo.mp4">"MP4"</a>
Ogg Format: <a href="myVideo.ogv">"Ogg"</a>
</p>
</video>
响应式视频
video { max-width:100%; height:auto; }

能解决使用iframe 嵌入的视频的响应问题

FitVids文件
<script>$(document).ready(function(){
// Target your .container, .wrapper, .post, etc.
$("#content").fitVids();
});</script>
离线Web 应用

离线Web应用的运行机制是每个需要离线使用的网页都指定一个后缀名为.manifest 的
文本文件。这个文本文件罗列了该网页离线使用时所需的所有资源文件(HTML、图片
JavaScript 等等)。支持离线Web 应用的浏览器会自动读取.manifest 文件,下载文件中
所罗列的资源文件,并将其缓存在本地以备网络断开时使用。

<html lang="en" manifest="/offline.manifest" />

修改.htaccess 文件

AddType text/cache-manifest .manifest

阻止浏览器缓存 缓存文件offline.manifest

<Files offline.manifest>
ExpiresActive On
ExpiresDefault "access"
</Files>

offline.manifest 填充内容

CACHE MANIFEST
#v1
CACHE:
basic_page_layout_ch4.html
css/main.css
img/atwiNavBg.png
img/kingHong.jpg
img/midnightRun.jpg
img/moulinRouge.jpg
img/oscar.png
img/wyattEarp.jpg
img/buntingSlice3Invert.png
img/buntingSlice3.png
NETWORK:
*
FALLBACK:
//offline.html
  • manifest 文件必须以CACHE MANIFEST 开头。
  • CACHE:部分罗列了所有离线使用所需的文件。这些文件的路径都是相对offline.manifest而言的
  • NETWORK:部分罗列了所有不需要被缓存的文件。星号被称为在线白名单通配符。
  • FALLBACK:部分使用/字符定义了一个URL 模板。它的作用是访问每个页面时都会问“缓存中有这个页面吗?”,如果有则显示缓存页面,如果没有则显示指定的offline.html 文件。
    版本号的作用

如果开发者对网站内容或资源做了修改,那么也得通知浏览器更新缓存文
件,否则浏览器仍然会使用之前已有的缓存文件。而通知浏览器更新缓存文件的方式通常是更新manifest 文件,
浏览器如果发现manifest 文件发生了变化,就会更新缓存文件。大多数情况下manifest 中的缓存文件清单不会发
生变化,那我们就通过修改注释的方式来改变manifest 文件,注释中的版本号,既能触发文件变化,又能指明当
前版本,一举两得。其实注释中还可以加入更新时间等更详细信息,有助于维护。

页面被自动加载到离线缓存
CACHE MANIFEST
# Cache Manifest v1
FALLBACK:
//offline.html
NETWORK:
*

这种方法只会下载和缓存用户访问的HTML 页面,
不会缓存页面内引入的图片、JavaScript 或者其他资源文件

CSS3:选择器、字体和颜色模式(以后写,累了)

响应式Web设计:HTML5和CSS3实战(读书笔记)相关推荐

  1. [书籍精读]《响应式Web设计 HTML5和CSS3实战(第二版)》精读笔记分享

    写在前面 书籍介绍:本书主要讲解了如何运用HTML5和CSS3来进行响应式Web设计,使页面的设计与开发根据用户行为以及设备环境(系统平台.屏幕尺寸.屏幕定向等)来进行相应的响应和调整. 我的简评:响 ...

  2. 响应式Web设计:HTML5和CSS3实战 读书笔记

    响应式Web设计:HTML5和CSS3实战 Responsive Web Design with HTML5 and CSS3 By : Pandao    pandao####vip.qq.com  ...

  3. 《响应式web设计》读书笔记(一)入门

    写在开始之前 2013年的夏天,我算是正式加入了前端开发的队伍,作为一名新手,关注了很多知名网站.牛人博客,时时刻刻感觉要学的东西太多太多,一路不断的收藏收藏,攒了好多文章来看,心里还想着在前端世界里 ...

  4. 《响应式Web设计:HTML5和CSS3实践指南》——2.9节基于位置伪类的交替行样式

    本节书摘来自华章社区<响应式Web设计:HTML5和CSS3实践指南>一书中的第2章,第2.9节基于位置伪类的交替行样式,作者(美) Benjamin LaGrone,更多章节内容可以访问 ...

  5. HTML5和CSS3响应式WEB设计指南译者序

    "不是我不明白,这世界变化快."崔健的这首歌使用在互联网领域最合适不过.只短短数年的功夫,互联网的浪潮还没过去,移动互联网的时代已经来临.人们已经习惯将越来越多的时间花在各种移动设 ...

  6. CSS3: Media Query实现响应式Web设计

    十一长假已然过去了一大半.今天倒真是晴朗的不行,向窗外望去几乎可以看到阳光穿过凉爽的空气一缕缕洒落下来的样子.自从不再是学生,对每年的几次 长假就无比珍惜,想方设法让每一天都尽量过的饱满一些:夜里闭上 ...

  7. 响应式web设计之CSS3 Media Queries

    开始研究响应式web设计,CSS3 Media Queries是入门. Media Queries,其作用就是允许添加表达式用以确定媒体的环境情况,以此来应用不同的样式表.换句话说,其允许我们在不改变 ...

  8. 十大响应式Web设计框架

    2019独角兽企业重金招聘Python工程师标准>>> 本文将分享十款最佳的响应式Web设计,助你大大简化工作流程. Gumby Framework Gumby 2是建立在Sass基 ...

  9. (转)响应式Web设计是大势所趋还是时代的产物

    在你身上是否发生过如此一件事,就是在你休息的时间用浏览器最大化的看一些文章.玩一些网页游戏正入迷的时候,时间一点点的过去了,马上到了下午工作的时间了,却发现还差一点就看完,于是乎,你把浏览器缩小了一些 ...

  10. 50种响应式web设计的奇妙工具

    在您开始着手响应式站点的搭建之前,如果能拥有强有力的开发工具会让您的世界另有一番风采.本文中Denise Javobs和Peter Gasston推荐了50种强大的工具来支持您建造响应式站点的过程. ...

最新文章

  1. Nginx 虚拟主机配置及负载均衡
  2. c++ 实现一个object类_说说Object类下面有几种方法呢?
  3. Express中间件--connect-mongodb-session
  4. python流程控制语句-【Python学习之三】流程控制语句
  5. 首个区块链标准《区块链 参考架构》正式发布
  6. WORD小数点对齐?
  7. C语言实现1~100的和(三种循环)
  8. sqlite3用python家外键_Django/Sqlite3为带有外键的模型添加一行
  9. python cv release_cv2.videoCapture.release()是什么意思?
  10. python中素数怎么求_用python怎么求素数
  11. 手把手教你用Mysql-Cluster-7.5搭建数据库集群
  12. Centos7 安装编译nbd模块步骤
  13. mac m1 eclipse汉化操作
  14. 第16课 火眼金睛——人脸识别
  15. android原生桌面,谷歌官方出品的安卓原生桌面App 轻松干掉你手机上臃肿的的桌面!...
  16. 发布文章出现请勿使用默认标题
  17. 路由器的静态路由配置以及OSPF动态配置
  18. 3000字/16张炫酷动态图,推荐一款好用到爆的Python可视化利器
  19. 进阶三部曲第一部《Android进阶之光》第2版已出版
  20. 基于ASP.NET MVC 利用(Aspose+Pdfobject.js) 实现在线预览Word、Excel、PPT、PDF文件

热门文章

  1. 最近遇到的异常与错误总结
  2. L3-012 水果忍者
  3. 百度排名与谷歌排名规则
  4. python修改图片大小为30kb_Python的Tornado框架实现图片上传及图片大小修改
  5. 「分块」数列分块入门1 – 9 by hzwer 解题记录
  6. Android 选择图片、上传图片之ImagePicker
  7. Android动画特效之Animator属性动画实现
  8. 四川乐而得教育:拼多多店铺推广要注意哪些优化
  9. java8 List操作
  10. Hibernate第七篇【对象状态、一级缓存】