上一篇Head First HTML与CSS阅读笔记(一)中总结了《Head First HTML与CSS》前9章的知识点,本篇则会将剩下的10~15章内容进行总结,具体如下所示。

div与Span

此元素应该是HTML中使用频度最高的元素之一,div将属于一个逻辑区的元素包含起来;

如果添加div有助于将页面分解为逻辑区,保证结构清晰并便于指定样式,则应该使用div,否则,过多的div只会让页面更加复杂,不应滥用;

width属性指定元素内容区的宽度,不包括内边距,边框和外边距的宽度;

整个元素宽度 = 内容区宽度 + 两侧内边距宽度 + 两侧边框宽度 + 两侧外边距宽度;

块元素默认的宽度是“auto”,允许内容填满可用的全部空间,一般不用指定元素的高度,默认为auto;

text-align只能在块元素上设置,对块元素中所有内联内容对其;

CSS子孙选择器:注意#id h2与#id>h2的区别,后者是直接子元素,前者则是#id下的所有子孙h2元素;

line-height属性值可直接使用数字表示,如:

#elixirs {
line-height: 1;
}

表示#elixirs <div>中的个元素行高是其自己字体大小的1倍;

一些属性的简写形式:

background: white url(image/coll.png) repeat-x;
border: #007e7e solid thin;
font: font-style font-variant font-weight font-size/line-height font-family;
如:
font: small/1.6em Verdana, Helvetica, sans-serif;

伪类

a元素的几种状态:link, visited, hover, focus(焦点在此链接上时), active(第一次单击链接时),伪类举例:

#elixirs a:link {
color: #007e7e;
} #elixirs a:visited {
color: #333333;
}

伪类还有很多,如first-child,last-child等,伪类会根据元素的状态来指定元素的样式;

nth-child伪类,状态是一个元素相对于它的兄弟元素的数字顺序;

p:nth-child(even) {          //偶数
background-color: red;
} p:nth-child(odd) { //奇数
background-color: green;
} p:nth-child(2n) {
background-color: red;
} p:nth-child(2n+1) {
background-color: green;
}

层叠

在所有样式表中,最优先的是作者的样式表,其次是读者的样式表,最后才是浏览器的样式表,如果读者在样式表的一个属性声明最后加上“!important”就可覆盖作者的样式;

布局与定位

并排放置两个内联元素时,两元素的外边距不会折叠,上下放置两个块元素时,会把他们共同的外边距折叠折叠在一起,折叠的外边距高度就是最大的外边距高度;

即使一个元素嵌套在另一个元素内,如果外面元素没设置边框,这两个外边距也会折叠;

流体布局

扩展浏览器窗口时,页面中的内容会扩展以适应页面;

浮动float

浮动一个元素步骤:

1. 指定一个标识(id);
2. 指定一个宽度,所有浮动元素都必须有一个宽度;
3. 使用float: right/left是元素浮动; 浮动元素会被从正常流中删除,但是在对内联元素定位时,会考虑浮动元素的边界,会围绕着浮动元素;

浮动一个元素时,如果希望它在某个元素的后面,就要移动浮动元素的HTML,让它紧挨着放在那个元素的下面;

设置两栏布局的话,可以采用右侧边栏浮动,左侧主内容区使用margin-right指定距右侧的距离,如边栏总宽度330px,则设置margin-right: 330px;

使用了浮动,下面的元素则会上移,可能会出现重叠的问题,应使用clear属性,clear会要求当元素流入页面时,在这个元素的左边,右边或两边不允许有浮动内容,如:clear: right/left/both;

浮动元素的外边距不会折叠;

浮动布局适合在一个文本段落中浮动图像,让文本围绕着这个图像;

缺点:必须把需要浮动的<div>移到其父元素之下最前面位置,另外,无法创建两个高度相同的列;

冻结布局

当用户调整屏幕大小时,设计仍能保持原样,指定页面的总宽度,调整浏览器大小,宽度不会变化;

凝胶布局

凝胶布局会锁定页面中内容区的宽度,但会将它在浏览器中居中,使用margin: 0 auto;

很多博客网站采用此种布局;

缺点:内容不会扩展来填满整个浏览器窗口;

绝对定位

使用position属性制定这个元素要绝对定位,例如:

#sidebar {
position: absolute;
top: 100px;
right: 200px;
width: 280px;
}

一个元素绝对定位时,浏览器会将它从正常流中完全删除,然后将它放在top和right属性指定的位置上,并且流中的元素不会将其内联内容围绕在一个绝对定位的元素周围;

绝对定位可以分层放置,一个元素可以放在另一个绝对定位元素上面,每个定位元素(绝对定位,相对定位,固定定位)都有一个名为z-index的属性,z-index值越大,越方在上面;

可以对任何元素指定绝对位置,包括块元素和内联元素;

position属性有static(默认值),absolute,fixed(固定定位,固定元素永远也不会移动),relative(相对定位会让元素正常流入页面,在页面上显示之前要进行偏移);

相对定位元素仍在正常流中(还在它原本的位置上),然后按照指定的量偏移,可以使用top、left,bottom,right偏移元素,它是相对于其外围包含的元素来定位的;

绝对定位是相对于离它最近的父元素来定位的,可以将一个<div>放在另一个<div>中,对外围<div>使用相对定位,然后用绝对定位指定内部<div>的位置,这样就能相对于父<div>定位了,即一个绝对定位元素嵌套在另一个定位元素中,这个元素就会相对外包含元素定位;

固定定位

#coupon {
position: fixed;
top: 300px;
left: -90px;
}
固定定位元素是相对浏览器的位置不会变动,而不是页面;

表格布局

表格布局结构也比较简单,如下所示:

首先,创建一个<div>表示整个表格,行和列要嵌套在这个<div>中;
然后,对表格中的每一行创建一个<div>,包含行的内容;
最后,在行中,对于每一列,只需要一个块元素作为该列内容; <div id="tableContainer">
<div id="tableRow">
<div id="main">
...
</div>
<div id="sidebar">
...
</div>
</div>
</div> div#tableContainer {
display: table;
border-spacing: 10px; //指定表格中单元格之间的边框间距,可看做常规元素的外边距
} div#tableRow {
display: table-row;
} #main {
display: table-cell;
verticle-align: top;
width: 500px; //控制列宽度
} #sidebar {
display: table-cell;
verticle-align: top/middle/bottom;
}

border-spacing和外边距创建的空间不会折叠;

建立多栏布局,且内容栏是均匀的,表格布局就比较适合;

HTML5标记

<section>与<article>的区别?

使用<section> 可以把相关内容分组在一起,<article>包含独立内容,如一个新闻报道,一个博客帖子或者一个简短的报告;要组织相关的内容就是用<section>,而对于独立的内容,则使用<article>;

<time>元素负责在页面中增加日期或时间,datetime属性用来指定一个日期或时间,如果元素内容没有采用官方Internet日期/时间格式来写,就必须有datetime属性;

<time datetime="2015-01-31">1/31/2015</time>

在<section>、<article>、<aside>元素中也可以是用<header>和<footer>元素,可以把一些元素组合起来放在首部或尾部;

导航使用<nav>元素,导航内容一般使用列表来构建;

<video>元素使用

<video controls autoplay width="512" height="288" src="video/test.mp4" poster="images/test.png">
</video> controls属性使播放器提供一些控制视频音频播放的组件;
autoplay属性,一旦页面加载,视频就会自动播放;
poster属性,提供一个可选的海报图像,视频未播放时就显示这个图像;
loop属性,布尔属性,如果有loop,视频结束播放后会自动重新开始播放视频;
preload属性,preload属性通常用来细粒度的控制视频如何加载,来实现优化,值为"none"表示用户在真正播放视频之前不下载,"metadata"表示下载视频元数据,但不下载视频内容;

<video>元素可以对每一种视频格式分别使用一个<source>元素,提供一组视频,让浏览器选择其支持的第一种格式,如下:

<video controls autoplay width="512" height="288">
<source src="video/tweetsip.mp4">
<source src="video/tweetsip.webm">
<source src="video/tweetsip.ogv">
<p>Sorry, your browser doesn't support the video element</p>
</video>

<mark>元素用于突出显示某些文本;

<audio>包含声音内容;

<canvas>在页面中显示用JS绘制的图像和动画;

<progress>显示任务的完成进度;

<meter>显示某个范围的度量;

表格与列表

<caption>元素指定表格标题,默认显示在表格上方,想将标题移动到表格下方,可在css中使用caption-side: bottom来改变;

不能单独地设置各个单元格的“外边距”,而要使用border-spacing为所有单元格设置一个共同的间距;

border-collapse属性用来折叠边框,使单元格之间没有边框间距,如下所示:

table {
border: thin solid black;
caption-side: bottom;
border-collapse: collapse;
}

可以使用rowspan属性指定一个表格数据单元格占多少行,然后从这个单元格所跨越的其他行中删除相应的表格数据元素;

使用colspan属性指定跨多列,跨多列时,需要删除同一行中的表格数据元素;

嵌套表格也很简单,只需要把另一个<table>元素放在一个<td>中即可;

列表的主要属性是list-style-type,disc是默认值,其他值还包括circle,square,none(会删除所有列表标记);

定制标记

list-style-image属性允许为列表设置标记图像;

li {
list-style-image: url(image/backpack.gif);
padding: 5px;
}

list-style-position控制列表上的文本回绕,属性设为"inside"文本会在标记下回绕,设为"outside"文本会在文本下回绕;

HTML表单

表单里可以有什么?

<input type="text" name="fullname" placeholder="Buckaroo Banzai" required> //文本输入
<input type="submit"> //提交按钮
<input type="radio" name="hotornot" id="hot" value="hot" checked>
<label for="hot">hot</label>
<input type="radio" name="hotornot" id="not" value="not">
<label for="not">not</label>
<input type="checkbox" name="spice" value="Salt" checked>
<input type="checkbox" name="spice" value="Pepper">
<input type="checkbox" name="spice" value="Garlic">
<textarea name="comments" rows="10" cols="48">
xxxx
</textarea>
<select name="characters">
<option value="Buckaroo">Buckaroo</option>
<option value="Tommy">Tommy</option>
<option value="Penny">Penny</option>
</select>
<input type="number" min="0" max="20"> //限制只能输入数字
<input type="range" min="0" max="20" step="5"> //范围输入,显示为滑动条
<input type="color"> //颜色输入
<input type="date"> //日期输入
<input type="email"> //email输入
<input type="tel"> //电话号码输入
<input type="url"> //URL输入
email、tel、url都是text的变体,在移动设备上会显示不同的定制键盘;
<input type="password" name="secret">
<input type="file" name="doc"> //文件输入
多选菜单
<select name="characters" multiple>
<option value="Buck">Buckaroo</option>
....
</select>

CSS选择器

伪元素

伪元素可以用来选择元素的某些部分,如:first-letter伪元素用来选择一个块元素中文本的第一个字母;:first-line伪元素用来选择段落的第一行;

p:first-letter {
font-size: 3em;
}

属性选择器

根据属性值来选择元素;

img[width] {border: black thin solid;}
img[height="300"] {border: red thin solid;}
img[alt~="flowers"] {border: #ccc thin solid;} //alt属性包含“flowers”的所有图像;

按兄弟选择

h1+p {
font-style: italic;
}
选择所有紧跟在<h1>元素后面的p元素;

结合选择器

div#greentea > blockquote p:first-line {
font-style: italic;
}

开发商特定的CSS属性

div#box {
transform: rotate(45deg); //通用属性,旋转45度
-webkit-transform: rotate(45deg); //Safari,Chrome
-moz-transform: rotate(45deg); //mozilla
-o-transform: rotate(45deg); //Opera
-ms-transform: rotate(45deg); //IE
}

CSS变换和过渡

transition属性,使元素在规定时间内变换到新状态;

#box {
position: absolute;
top: 100px;
left: 100px;
width: 200px;
height: 20px;
transition: transform 2s;
-webkit-transition: -webkit-transform 2s;
-moz-transition: -moz-transform 2s;
-o-transition: -o-transform 2s;
} #box:hover {
transform: rotate(45deg);
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-o-transform: rotate(45deg);
-ms-transform: rotate(45deg);
}

Head First HTML与CSS阅读笔记(二)的更多相关文章

  1. 《Java编程思想》阅读笔记二

    Java编程思想 这是一个通过对<Java编程思想>(Think in java)进行阅读同时对java内容查漏补缺的系列.一些基础的知识不会被罗列出来,这里只会列出一些程序员经常会忽略或 ...

  2. Java Jdk1.8 HashMap源代码阅读笔记二

    三.源代码阅读 3.元素包括containsKey(Object key) /** * Returns <tt>true</tt> if this map contains a ...

  3. Detectron2源码阅读笔记-(二)Registry&build_*方法

    ​ Trainer解析 我们继续Detectron2代码阅读笔记-(一)中的内容. 上图画出了detectron2文件夹中的三个子文件夹(tools,config,engine)之间的关系.那么剩下的 ...

  4. css学习笔记二

    下面来总结一下盒子模型,流式布局,浮动布局,层布局(定位布局). 1.盒子模型 有二种:IE盒子模型 和 标准w3c盒子模型 1)IE的盒子模型的content包含了padding和border 2) ...

  5. Head First HTML与CSS阅读笔记(一)

    之前写过不少前端界面,但是没有完整阅读过一本HTML与CSS的书籍,都是用到什么查什么,最近闲暇之余想巩固加深一下前端基础方面的知识,阅读了<Head First HTML与CSS>,感觉 ...

  6. werkzeug源码阅读笔记(二) 下

    wsgi.py----第二部分 pop_path_info()函数 先测试一下这个函数的作用: >>> from werkzeug.wsgi import pop_path_info ...

  7. CSS学习笔记二:css 画立体图形

    继上一次学了如何去运用css画平面图形,这一次学如何去画正方体,从2D向着3D学习,虽然有点满,但总是一个过程,一点一点积累,然后记录起来. Transfrom3D 在这一次中运用到了一下几种属性: ...

  8. 论文阅读笔记二十七:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(CVPR 2016)

    论文源址:https://arxiv.org/abs/1506.01497 tensorflow代码:https://github.com/endernewton/tf-faster-rcnn 室友对 ...

  9. 论文阅读笔记二十五:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPPNet CVPR2014)

    论文源址:https://arxiv.org/abs/1406.4729 tensorflow相关代码:https://github.com/peace195/sppnet 摘要 深度卷积网络需要输入 ...

随机推荐

  1. centos运行netcore error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.

    Error: Another program is already listening on a port that one of our HTTP servers is configured to ...

  2. oracle 导入sql文件乱码

    查看  http://blog.csdn.net/fireofjava/article/details/53980966

  3. asp.net core系列 64 结合eShopOnWeb全面认识领域模型架构

    一.项目分析 在上篇中介绍了什么是"干净架构",DDD符合了这种干净架构的特点,重点描述了DDD架构遵循的依赖倒置原则,使软件达到了低藕合.eShopOnWeb项目是学习DDD领域 ...

  4. GTK+学习笔记(一)

    你将学到什么 如何实现弹出式菜单 菜单简介 菜单(GtkMenu)由菜单项(GtkMenuItem)构成,菜单项可以是任意构件比如按钮.菜单(子菜单) 菜单项的管理 菜单外壳(GtkMenuShell ...

  5. foreach 加 &

  6. 未能加载文件或程序集“Oracle.DataAccess, Version=4.112.2.0, Culture=neutral, PublicKeyTok”

    1.首先看一下C:\Windows\assembly目录下是不是只有一个Oracle.DataAccess,我的版本是10,如果是只有一个,则往下看: 2.将完整的odp.net(目录下包含注册文件) ...

  7. VS2010 不显示 最近使用的项目 解决办法(转)

    昨天重装了VS2010,然后开了项目看了下今天早上再打开发现起始页近使用项目列表是空白的,每次打开项目都要去到指定目录去找解决方案才能打开,感觉很麻烦,在网上找了下解决方案,解决步骤下:菜单 —— 运 ...

  8. springBoot2.0 配置shiro实现权限管理

    一.前言 基于上一篇springBoot2.0 配置 mybatis+mybatisPlus+redis 这一篇加入shiro实现权限管理 二.shiro介绍 2.1 功能特点 Shiro 包含 10 ...

  9. 线程池、Lambda表达式

    线程池.Lambda表达式 线程池.Lambda表达式 线程池.Lambda表达式 线程池.Lambda表达式 线程池.Lambda表达式 线程池.Lambda表达式 线程池.Lambda表达式 (正 ...

  10. 20165224 陆艺杰 Exp7 网络欺诈防范

    通常在什么场景下容易受到DNS spoof攻击 一样的局域网环境下 在日常生活工作中如何防范以上两攻击方法 使用攻击检查工具 简单应用SET工具建立冒名网站  打开 apache服务 apache 是 ...