视口:浏览器窗口内的内容区域,不包含工具栏,标签栏。网页实际显示.
屏幕尺寸:设备物理显示区域
各种宽度和高度
a、可视区的真实宽度和高度
document.documentElement.clientWidth
document.documentElement.clientHeight
都去掉滚动条的大小(一般是17像素),比如我的dell笔记本在chrome下,
正常的可视区(即无滚动条)大小是1366*663,假如水平和垂直方向都有滚动条的话,这两个值
的大小为 1349 * 646
b、
document.documentElement.offsetWidth 无滚动条 1366 有滚动条 1349 同a
document.documentElement.offsetHeight 根据实际的html元素被撑开的大小
c、
window.innerWidth / window.innerHeight
(1)有滚动条 document.documentElement.clientWidth + 滚动条宽度
(2)无滚动条 等于document.documentElement.clientWidth
高度计算规则同宽度
-webkit-,-moz-是各厂商发布正式版本之前,实验各自对css3新特性的实现
客户->思维定式->说服引导(理由如下)
W3C规范审核:工作草案(Working Draft)->候选推荐标准(Candidate Recommendation)->提议推荐标准(Proposed
Recommendation)->几年时间等待->W3C 推荐标准(REC)
- CSS3 是由很多附加模块组合而成的。媒体查询就是其中的一个模块。
- 媒体查询可以让我们根据设备显示器的特性为其设定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 请求(这会影响加载速度)
非纵向放置的显示屏设备
<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" />
时刻谨记,我们要保证代码和数据都尽可能精简,以便为带宽有限的用户提供愉悦的体验。
最常用写法
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
width:可视区域的宽度,值可为数字或关键词device-width
height:同width
intial-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指的是特定字母的宽度和高度相对于特定字体磅值的比例。
- 现代浏览器的默认文字大小都是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 文件看看怎么做合适。
<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 代码要放在页面头部(最好作为第一个脚本),因为它需要在页面加载完成之前,而且要在发出图片请求之前运行。
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 --------------------------------------------------
媒体查询约束流动布局的变动范围,而流动布局则简化了从一组媒体查询样式过渡到另一组的改变过程。
腻子脚本(polyfill)这个词由Remy Sharp 提出,意指使用腻子来补平老版
本浏览器的缺陷。因此,腻子脚本具体指的是一段能给老版本浏览器带来
新特性的JavaScript 代码。HTML5 样板文件。样板文件是一个预先做好的融
合了“最佳实践”HTML5 文件,包含一些基本样式(如之前提到过的
normalize.css)、polyfill 和一些必要的工具如Modernizr。它还包含一个
自动合并CSS 和JS 文件、自动删除注释以生成生产环境代码的构建工
具。强烈推荐!
各种脑残写法都可以被浏览器识别
**没有结束标签的斜线,没有引号,大小写混杂。甚至,省略元素,
页面依然有效**
<link href=CSS/main.css rel=stylesheet >
<div id=wrapper>
<img SRC=frontCarousel.png aLt=frontCarousel>
在编写HTML5 文档时我倾向于在老式编写风格(可读性和精简代码找到平衡)
<link href="CSS/main.css" rel="stylesheet"/>
<h2><a href="index.html">The home pagea>h2>
<p><a href="index.html">This paragraph also links to the home pagea>p>
<a href="index.html"><img src="home-image.png" alt="home-slice" />a>
Make change
<a href="index.html">
<h2>The home pageh2>
<p>This paragraph also links to the home pagep>
<img src="home-image.png" alt="home-slice" />
a>
不能在一个标签中嵌套另一个标签,也不能在标签中嵌套表单。
第一句不是很理解,什么意思?
都能使用,不过最好不要用,拥抱未来
- 暂保留
-
- 非保留的strike、enter、font、acronym、frame 和frameset。
字典中对语义学的定义是“关注语言本质含义的语言学和逻辑学分支学科”.
元素用来定义文档或应用程序中的区域(或节)
用来定义文档的主导航区域
元素用来包裹独立的内容片段
元素用来表示与页面主内容松散相关的内容
元素包裹使用
元素用来表示与页面主内容松散相关的内容
元素包含对区域内容的介绍说明(不计入大纲结构,不能用于划分内容结构。)
元素包含对区域内容的介绍说明(不计入大纲结构,不能用于划分内容结构。)
元素用于明确地标注离其最近的< article >或< body >祖先元素的联系信息。<hgroup>
<h1>Ben's blogh1>
<h2>All about what I doh2>
hgroup>
<article>
<header>
<hgroup>
<h1>A post about somethingh1>
<h2>Trust me this is a great readh2>
<h3>No, not reallyh3>
<p>See. Told you.p>
hgroup>
header>
article>
……一小段文本,纯粹为了吸引人的注意,除此之外不传达任何重要性,也不暗示其他语态或语气,如文档摘要中的关键词、评论中的产品名称、交互式文本软件中的可操作单词,或者文章的导语。
根据过去对< b >标签的用法,很多浏览器仍会将其渲染为粗体。所以你可以根据实际情况在相关的CSS 代码中重定义其默认样式。
强调内容中的重点。
一小段有不同语态或语气的文字,或者是样子上与普通文章有所差异以便
标明不同特点的文字。 渲染成斜体,可以重写样式
WAI-ARIA 是Web Accessibility Initiative - Accessible Rich Internet Applications 的缩写,指无障碍网页应用技术,它主要解决一个问题:让残障人士能无障碍地访问网页上的动态内容。这种技术提供了一种描述自定义组件(网页应用中的动态片段)的角色、状态和属性的方法,这样这些组件就可以被依赖辅助技术的用户找到并加以利用。
设置样式nav[role=""] {}
最初的 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" 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&image=myVideoPoster.
jpg& 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应用的运行机制是每个需要离线使用的网页都指定一个后缀名为.manifest 的
文本文件。这个文本文件罗列了该网页离线使用时所需的所有资源文件(HTML、图片
JavaScript 等等)。支持离线Web 应用的浏览器会自动读取.manifest 文件,下载文件中
所罗列的资源文件,并将其缓存在本地以备网络断开时使用。
<html lang="en" manifest="/offline.manifest" />
修改.htaccess 文件
AddType text/cache-manifest .manifest
阻止浏览器缓存 缓存文件offline.manifest
ExpiresActive On
ExpiresDefault "access"
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 文件,
浏览器如果发现manifest 文件发生了变化,就会更新缓存文件。大多数情况下manifest 中的缓存文件清单不会发
生变化,那我们就通过修改注释的方式来改变manifest 文件,注释中的版本号,既能触发文件变化,又能指明当
前版本,一举两得。其实注释中还可以加入更新时间等更详细信息,有助于维护。
CACHE MANIFEST
# Cache Manifest v1
FALLBACK:
//offline.html
NETWORK:
*
这种方法只会下载和缓存用户访问的HTML 页面,
不会缓存页面内引入的图片、JavaScript 或者其他资源文件