第13章,构建基于浮动的布局

使用的是float(浮动)属性
注:float:none值将取消所有浮动,通常只用来取消元素中已经应用的浮动。
切记:不需要给正文的div设计宽度,即使设计成固定宽度也不用

用浮动进行布局

LayoutGala网站(http://blog.html.it/layoutgala/)上提供了40种不同的CSS设计,但大多只是基本框架,里面只有<div>标签及其定位用的CSS代码
布局生成器,Cridinator(http://gridinator.com)提供了简单的工具,用以创建复杂的多列网格系统
在浮动元素中浮动元素,会在列中增加列。

克服浮动问题

清除浮动和保持浮动
footer{
clear:both;
}
清除元素两边的浮动
clear属性值:left,right,both
在非浮动的外围元素如<div>标签中浮动元素,有可能造成当浮动元素高于div里面的其他内容时,从外围元素的底部凸出来,
解决方法:
1、在外围<div>底部添加一个清除元素
2、浮动外围元素
3、利用overflow:hidden,在外围元素中使用
4、使用Micro Clear Fix

多列布局

CSS3引入了multicolumn layout(多列布局)模块,IE9及其更早版本不支持,multicolumns属性可以在W3C官网上找到:www.w3.org/TR/css3-multicol/,用以创建和预览多列的在线工具:www.aaronlumsden.com/multicol/

第14章,响应式Web设计

响应式Web设计基础知识

响应式Web设计简称RWD。
Ethan Marcotte在他的著作Responsive Web Design中详细讲解了RWD的步骤,原稿:http://www.alistapart.com/articles/responsive-web-design
RWD中结合了三大理念:用于布局的弹性网络、用于图片和视频的弹性媒体、为不同屏幕宽度创建不同样式的CSS媒体查询
在网页<head>中添加以下代码(<title>标签上方就是它最佳位置)可以忽略手机浏览器对于网页的自动缩放:
<meta name="viewport" content="width=device-width">
CSS的@viewport也可以实现同样的功能,应该将这个代码放在所有样式表前,但目前还有很多浏览器不支持,需要添加供应商前缀才行
@viewport{ width:device-width; }

媒体查询

可以根据目标浏览器的宽高给网页分配样式

使用媒体查询的策略

1、调整列
2、弹性宽度
3、缩进空白空间
4、调整字号
5、修改导航菜单
6、在手持设备上隐藏内容
7、使用背景图片

创建断点

媒体查询可给告诉浏览器在特定条件下使用特定的样式,特定条件通常被称为断点
如何进行断点设置呢?简单做法是在网页中打开一个网页,然后使用浏览器窗口句柄,让窗口变窄,在某个点时设计将会变得很难看,这时可以设置一个断点,如此循环。一般来说会设计3个断点,一个针对智能手机,一个针对平板电脑,一个针对桌面型浏览器

桌面型优先还是手机版优先

创建媒体查询

<link href="css/small.css" rel="stylesheet" media="(width:480px)">
只是新增了media属性,设定条件
IE8及更早版本不支持,通过在文档<head>中添加一些js,也可以让旧版IE支持媒体查询,从http://tinyurl.com/7w49a6z下载respond.js,引入:
<!--[if lte IE 8>
<script src="respond.min.js"></script>
<![endif]-->
这种只针对精确的查询,最好使用范围值,即借助max-width(小于等于)和min-width(大于等于)
关于浏览器查询信息:www.w3.org/TR/css3-mediaqueries

弹性网格

HTML源码的顺序的重要性
重置盒模型
将固定宽度转换成弹性网格

流式图片

虽然弹性设计中列会随着浏览器窗口变小而收缩,但图片不会,这就可能导致图片溢出边界
可以使用如下方式使图片变成具有弹性:
1、首先,添加样式:
img { max-width:; }
2、将HTML中所有img标签的height和width属性删除

流式图片不足

图片会伸展到列的100%宽度,这就可能发生拉伸超出它的自然宽度,发生形变和失真。

第15章,定位网页上的元素

定位属性的功能

CSS的position属性可以控制Web浏览器如何以及在和何处显示特定的元素
CSS提供了4种类型的定位:
绝对定位:通过以pixel、em或percentage为单位设定元素的左右上下方的位置对它进行定位。
注:不要在一个样式中同时设定float属性和任何一种定位,除了静态定位和相对定位,absolute和fixed也不能和float属性同时应用于同一个元素
相对定位:相对于它在HTML流中的当前位置进行定位,与绝对定位不同,其他元素并不会占据相对定位元素原来在HTML中所处的位置,相对定位最大的好处不是移动元素,而是给它内部绝对定位元素设定一个新的参照点
固定定位:固定定位元素会被锁定在屏幕某个位置上。
静态定位:只是表示网页内容将遵循正常从上到下的HTML流
position属性可以改变任何一个元素的定位,使用以下4个关键字:static、absolute、relative、fixed
注:静态定位元素将不支持以下要讨论的任何一种定位值

设置定位值

Web浏览器窗口显示区也被称为检视区(viewport),有上、下、左、右4条边,对应CSS属性top、bottom、left、right
position属性后面还有更多种属性(top、bottom、left、right)
利用绝对定位在网页上定位元素时,它的具体位置均取决于相关元素在其它标签中所嵌套的位置:
1、如果一个标签的位置是绝对定位的,且它又不在其他任何设定了absolute、relative、fixed定位的标签里面,那它就是相对于浏览器窗口进行定位
2、如果一个标签处在另一个设定了absolute、relative、fixed定位的标签里,那它就是相对于另一个元素的边框进行定位
注:在CSS中,术语relative不完全等同于它的本义,可以解读为“相对于我”的意思。即当对一个标签设置relative定位时,意思是“我内部所有定位元素应该相对于我的位置进行定位”

堆叠元素

一般来讲,定位元素重叠时的堆叠顺序是按照它们在网页HTML代码中的顺序来决定,但可以通过CSS属性z-index来控制定位元素的堆叠顺序:
z-index:3;     这个值为数字,数字越大,越接近堆叠顶部,即出现在HTML页面的前面,还可以使用负值,将一个元素定位在其父元素或者其任意一个祖先元素之下。
注:IE7及更早版本不支持,z-index最大值是2147483647

隐藏部分网页

绝对定位元素时常用CSS属性visibility(可见性),隐藏部分网页或显示隐藏部分visibility:hidden(隐藏),visibility:visible(可见)
visibility:hidden与display:none类似,不过visibility会在HTML网页留下空白,display不会
opacity属性也可以隐藏元素:opacity:0,完全不可见,opacity:1,完全可见

强大的定位策略

综合使用position的定位

第四部分----CSS高级技术

第16章,设计打印页面的CSS技术

Media样式表的作用

CSS支持10种不同的媒体类型:all、braille、embossed、handheld、print、projection、screen、speech、tty、tv
应特别注意的3种媒体类型:
all:适用于每一种设备,当把样式嵌入或通过外部样式表进行链接时,用的就是这种方式
screen:只适用于显示器
print:只适用于打印网页

给外部样式表指定媒体类型

<link rel="stylesheet" media="print" href="print.css">
技术上来说:@import url(print.css) print;也是可以的,只是IE不支持

在样式表中指定媒体类型

在样式表中使用以下语句:
@media print{
/*put your styles for printer in here*/
}

重写文本样式

使用pixel或em单位对于浏览器而言可能很好,但对打印机并不起作用。浏览器会根据自己的解释将其转换成打印的单位:点(pt),不同浏览器解释不一样,所以最好能够设置成针对打印机的样式使用pt作为单位

定义打印背景

1、取消背景元素
使用background:white;可直接将背景设置成白色,并取消图片
2、保留背景元素
3、给打印添加分页符
使用page-break-before和page-break-after属性
page-break-before:always让Web浏览器在一个指定样式之前插入分页符,是某个元素显示在打印页的顶部
page-break-after:always是某一个元素显示在打印页面最后

第17章,改正CSS设计习惯

1、添加注释
2、组织样式和样式表
3、样式命名要清晰
4、根据用途而不是外观命名样式
5、不根据位置命名
6、不使用含义模糊的名称
7、使用多个类可以节省时间
8、将样式分组:把网页上相关部位所采用的样式集中在一起,把用途相关的样式集中在一起
9、用注释分隔样式组
10、使用多个样式表:可以使用@import合并多个样式表,再引入’
11、消除浏览器的样式冲突:即各个浏览器的默认样式不一致,要对样式重置
12、使用派生选择器:尽量减少ID选择器的使用,以及减少类的使用
高级:面向对象的CSS,可登录网站:http://coding.smashingmagazine.com/2011/12/12/an-introduction-to-object-oriented-css-oocss/,还可以在以下网站查看OOCSS项目:https://github.com/stubbornella/oocss,另一种方法称作Scalable and Modular Architecture for CSS(简称SMACSS),这是一种创建可重用CSS组件的简单样式向导。可通过以下网站了解:http://smacss.com
13、给IE尝试不同的CSS
IE条件注释基本结构:
<!--[if IE]>
/*针对IE的样式*/
<![endif]-->
非IE浏览器会当成HTML注释并忽略
关于IE条件注释更多信息,请登录了解:http://msdn.microsoft.com/en-us/library/ms537512(VS.85).aspx

CSS3秘笈第三版涵盖HTML5学习笔记13~17章的更多相关文章

  1. CSS3秘笈第三版涵盖HTML5学习笔记1~5章

    第一部分----CSS基础知识 第1章,CSS需要的HTML HTML越简单,对搜索引擎越友好 div是块级元素,span是行内元素 <section>标签包含一组相关的内容,就像一本书中 ...

  2. CSS3秘笈第三版涵盖HTML5学习笔记6~8章

    第二部分----CSS实用技术 第6章,文本格式化 指定备用字体: font-family:Arial,Helvetica,sans-serif; 当访问者没有安装第一种字体时,浏览器会在列表中继续往 ...

  3. CSS3秘笈第三版涵盖HTML5学习笔记9~12章

    第9章,装饰网站导航 限制访问,处于隐私方面考虑,浏览器已经开始限制可以对伪类:visited应用哪些CSS属性了.其中包括对已访问过的链接定义color.background-color.borde ...

  4. 《Python基础教程(第二版)》学习笔记 -> 第十一章 文件和素材

    打开文件 open函数用来打开文件,语句如下: open(name[,mode[,buffering]]) open函数使用一个文件名作为唯一的强制参数,然后后返回一个文件对象.模式(mode)和缓冲 ...

  5. 《Python基础教程(第二版)》学习笔记 -> 第七章 更加抽象

    对象的魔力 多态:意味着可以对不同类的对象使用同样的操作: 封装:对外部世界隐藏对象的工作细节: 继承:以普通的类为基础建立专门的类对象 多态① 多态和方法绑定到对象特性上面的函数称为方法(metho ...

  6. 《Python基础教程(第二版)》学习笔记 -> 第六章 抽象

    抽象和结构 本章将会介绍如何让将语句组织成函数,还会详细介绍参数(parameter)和作用域(scope)的概念,以及递归的概念及其在程序中的用途. 创建函数 函数可以调用,它执行某种行为,并返回某 ...

  7. 《Python基础教程(第二版)》学习笔记 -> 第五章 条件、循环 和 其他语句

    条件和条件语句 下面的值在作为布尔表达式的时候,会被解释器看作假(False):False None    0    ""    ()    []    {} 条件执行和if语句 ...

  8. 《Python基础教程(第二版)》学习笔记 -> 第四章 字典

    字典是Python中唯一内建的映射类型. 字典中的值并没有特殊的顺序,但是都存储在一个特定的键(Key)里.键可以是数字.字符串甚至是元组. 字典的使用 某些情况下,字典比列表更加适用: 表征游戏棋盘 ...

  9. 《数据库技术基础与应用(第2版)》学习笔记——第7章~

    从这章开始,操作的内容开始增多,概念的东西越来越少,可能跟学校的教学目的有关,但是跟我的学习目的不匹配,就不再继续整理. 总结:这本书适合大学本科生学习和了解数据库的相关知识以及Access和SQL ...

随机推荐

  1. 最新CentOS6.x下redis安装

    1:软件环境: 系统版本:CentOS release 6.5 redis版本:redis-cli 3.0.5 安装目录:"/usr/local/redis" 下载软件:" ...

  2. javascript判断NaN

    功能: isNaN() 函数用于检查其参数是否是非数字值. 语法: isNaN(x) x 必需.要检测的值. 返回值: 如果 x 是特殊的非数字值 NaN(或者能被转换为这样的值),返回的值就是 tr ...

  3. memcached全面剖析–4. memcached的分布式算法

    memcached的分布式 正如第1次中介绍的那样, memcached虽然称为“分布式”缓存服务器,但服务器端并没有“分布式”功能. 服务器端仅包括 第2次. 第3次 前坂介绍的内存存储功能,其实现 ...

  4. POJ 3468 A Simple Problem with Integers (线段树成段更新)

    题目链接:http://poj.org/problem?id=3468 题意就是给你一组数据,成段累加,成段查询. 很久之前做的,复习了一下成段更新,就是在单点更新基础上多了一个懒惰标记变量.upda ...

  5. phper 要求

    做了这么多年php,今天看到一个07年的老文,才发现自己的水平太菜.转过来激励下自己 说句实话,写这个真够无聊的.本来看了某位大虾的类似文章,腹诽了几句也就算了.但是昨天晚上有个客户拿着这篇文章问我: ...

  6. TFS代码签入指导

    1. 如果文件没有被放入到TFS中, 那么它是不存在的. 这一点是最好被理解的, 如果你的代码没有被签入到代码管理中,那么就不可能被团队的其他人获取的得到. 具体如何将文件纳入到TFS中请参考 Pla ...

  7. 使用Unity制作游戏关卡的教程(二)

    转自:http://gamerboom.com/archives/75554 作者:by Matthias Zarzecki 本文是“使用Unity制作<The Fork Of Truth> ...

  8. 手机调用系统的拍照和裁剪功能,假设界面有输入框EditText,在一些手机会出现点击EditText会弹出输入法,却不能输入的情况。

    1. 拍照裁剪后 点击EditText会弹出输入法,却不能输入.可是点击点一EdtiText就能够输入了,所以我就写了一个看不见的EdtiText,切换焦点,这样就攻克了这个奇怪的这问题,应该是and ...

  9. 建立名称server

    一.实验的目的:     实现DNSserver功能,提供正向.反向解析 二.实验环境     装有Linux的Windows系统 IP为192.168.6.3的虚拟机 三.实验目的 建立gr.org ...

  10. 关于STM32的ST官方的库的一点看法

    标题确实很别扭,因为我现在用这个库也很别扭. 在不久之前,一直有个讨论的话题:STM32开发是用库还是用寄存器? 很多人的结论是不需要讨论! 但是,今天我想说下我的看法. 首先,我还是一个菜鸟,对库对 ...