title: HTML与CSS学习记录
toc: true
date: 2018-09-10 14:04:59
《HTML与CSS进阶教程读书笔记》
HTML指超文本标记语言,是构成网页文档的主要语言。我们常说的HTML指HTML4.01。
XHTML指扩展的超文本标记语言,是XML风格的、更严格、更纯净的HTML。
两者的主要区别:
由于id属性具有唯一性,因此W3C建议,对于页面关键的结构或大结构,才能使用id属性,其他地方使用class属性。
因为搜索引擎是根据标签的语义和id属性来识别的,因此id属性的使用和命名都需要谨慎。
一般来说,定义多个class的目的在于:一个class抽取公共样式,一个class定义单独样式。
在head
标签内加入:
<link rel="shortcut icon" type="image/x-icon" href="图标路径.ico" />
其中rel
和type
是固定属性不用更改,只需要修改图片路径即可。
HTML的精髓在于标签的语义。搜索引擎根据HTML代码识别页面结构。
编写语意结构良好的页面的好处:
应优先使用正确的语义化标签,如果没有语义化标签可用,再考虑div或者span等无语义标签。
h1-h6是标题标签,相比于其他标签,它们在搜索引擎优化(SEO)中占有相当重要的地位。
一般用到h4,h5和h6权重和普通标签差不多,很少使用。
对于标题语义化,我们需要注意的是:
div是无语义的标签,如果使用div代替标题标签会使网页在SEO中丢失大量权重。
alt是给搜索引擎看的,title是给用户看的。
搜索引擎根据alt属性或上下文判断图片内容。
因此img标签必须添加alt属性。
对于图片+图注的效果,使用figure和figcaption来增强图片语义化。
例:
<figure>
<img src="xxx" alt="xxx" />
<figcaption>这是一个图注</figcaption>
</figure>
更详细的介绍可以看这一篇博客。
标签 | 说明 |
---|---|
table | 表格 |
caption | 标题 |
thead | 表头(语义划分) |
tbody | 表身(语义划分) |
tfoot | 表尾(语义划分) |
tr | 行 |
th | 表头单元格 |
td | 表格单元格 |
label标签的for属性有两个作用:
例:
<input id="rdo" name="rdo" type="radio" /><label for="rdo">单选框</label>
fieldset标签用于给表单元素进行分组并绘制一个边框,legend标签用于定义某一组表单的标题。
例如这个例子:
<form>
<fieldset>
<legend>Personalia:</legend>
Name: <input type="text"><br>
Email: <input type="text"><br>
Date of birth: <input type="text">
</fieldset>
</form>
作用:
W3C标准规定,<br />标签只能用于段落中的换行。即只能用于p标签内部。
对于列表型数据,不建议使用div实现,而应用无序列表或有序列表实现。
为了实现外观效果,一般使用无序列表而不是有序列表。
W3C对这两个标签赋予了“强调”的语义。
可以在CSS中重新定义它们的样式而不会改变它们的语义。
这两个标签一般是配合使用表示更新文本:“delete”和“insert”,被删除的文本和被更新的文本。
一般会用CSS重新定义它们的样式。
对于什么时候使用img标签,什么时候使用背景图片,应该根据HTML的语义来判断。
img标签:作为HTML的一部分,希望被搜索引擎识别。
背景图片: 只起到修饰作用,不希望被搜索引擎识别。
通过去掉CSS样式,观察页面是否还有很好的可读性来判断一个页面是否语义良好。
下边这些已经被舍弃的标签(仅为了定义样式的标签和很少使用或已经被新标签代替的标签)应停止使用:
<acronym>
定义首字母缩写,应用abbr代替。<applet>
定义嵌入的applet,应用object代替。<basefont>
<big>
<center>
<dir>
定义目录列表,应用ul代替。<font>
<frame>
<frameset>
<noframes>
<strike>
<tt>
pixel,像素,一个图片或计算机屏幕中最小的点。
CSS中支持百分比的属性:
1em等于当前元素的以px为单位的font-size值,
若当前元素的font-size值没有定义,则从父元素继承,
若当前元素的所有祖先元素都没有定义font-size,则继承浏览器默认的font-size值:16px。
使用em的小技巧:首行缩进使用 text-indent: 2em
实现。
CSS3新引入的单位,指相对根元素(即html元素)的字体大小。
指子元素继承了父元素的某些样式属性。
在CSS中,具有继承性的样式有三大类:
“后者居上”原则。
CSS的层叠性指样式的覆盖。对于具有相同权重的相同属性,以最后定义的值为准。
行内样式>(内部样式=外部样式)
若同时存在权重相同内部样式和外部样式,则以最后引入的样式为准。
以最近的祖先元素为准。
常见的伪元素——:before、:after、:first-letter、:first-line。
常见的伪类——:hover、:first-child等。
常用的选择器优先级:行内样式>id选择器>class选择器>元素选择器。
选择器权值表:
选择器 | 权值 |
---|---|
通配符 | 0 |
伪元素 | 1 |
元素选择器 | 1 |
class选择器 | 10 |
伪类 | 10 |
属性选择器 | 10 |
id选择器 | 100 |
行内样式 | 1000 |
指定样式权重更高。
权值最高,不推荐使用。
CSS出去基本的选择器(元素选择器、id选择器、class选择器、群组或分组选择器),
还有层次选择器:
选择器 | 说明 |
---|---|
M N | 后代选择器,选择M元素所有内部后代N元素 |
M>N | 子代选择器,选择M元素所有内部子代N元素 |
M~N | 兄弟选择器,选择M元素所有同级N元素 |
M+N | 相邻选择器,选择M元素相邻的下一个同级元素 |
开发阶段按照功能模块划分CSS文件。
文件名 | 说明 |
---|---|
reset.css | 重置样式,重置元素默认样式 |
global.css | 全局样式,全站公用,定义页面基础样式 |
themes.css | 主题样式,用于实现换肤功能 |
module.css | 模块样式,用于模块的样式 |
master.css | 母版样式,用于母版页的样式 |
columes.css | 专栏样式,用于专栏的样式 |
forms.css | 表单样式,用于表单的样式 |
mend.css | 补丁样式,用于维护、修改的样式 |
print.css | 打印样式,用于打印的样式 |
建议使用中划线命名,例如column-title
。
为了避免class命名的重复,一般取父元素的class名作为前缀,例如column-title
。
网页主体部分 | 命名 |
---|---|
最外层 | wrapper(一般用于包裹整个页面) |
头部 | header |
内容 | content |
侧栏 | sidebar |
栏目 | column |
热点 | hot |
新闻 | news |
下载 | download |
标志 | logo |
导航条 | nav |
主体 | main |
左侧 | main-left |
右侧 | main-right |
底部 | footer |
友情链接 | friendlink |
加入我们 | joinus |
版权 | copyright |
服务 | service |
登录 | login |
注册 | register |
导航部分 | 命名 |
---|---|
主导航 | main-nav |
子导航 | sub-nav |
边导航 | side-nav |
左导航 | leftside-nav |
右导航 | rightside-nav |
顶导航 | top-nav |
菜单部分 | 命名 |
---|---|
菜单 | menu |
子菜单 | submenu |
其他 | 命名 |
---|---|
标题 | title |
摘要 | summary |
登录条 | loginbar |
搜索 | search |
标签页 | tab |
广告 | banner |
小技巧 | tips |
图标 | icon |
法律声明 | siteinfolegal |
网站地图 | sitemap |
工具条 | tool、toolbar |
首页 | homepage |
子页 | subpage |
合作伙伴 | partner |
帮助 | help |
指南 | guide |
滚动 | scroll |
提示信息 | msg |
投票 | vote |
相关文章 | related |
文章列表 | list |
对于功能代码,应该集中放在一起,
对于其他代码,应按照如下顺序:
例如:
#main {
/* 影响文档流属性 */
display: inline-block;
position: absolute;
top: 0;
left: 0;
/* 盒子模型属性 */
width: 100px;
height: 100px;
border: 2px solid gray;
/* 文本性属性 */
font-size: 15px;
font-weight: bold;
text-indent: 2em;
/* 装饰性属性 */
color: white;
background-color: red;
/* 其他属性 */
cursor: pointer;
}
由于压缩工具会删除所有的注释,因此有时为了保留版权声明等注释信息,需要在注释内容前加一个叹号,如/*! 注释内容 */
,这样压缩工具就不会删除这条注释信息。
/*
*@description:说明
*@author:作者
*@update:更新时间,如2018-09-10 17:42
*/
/* 导航部分,开始 */
......
/* 导航部分,结束 */
/* 单行注释 */
或者
/*多行注释
*多行注释
*多行注释
*/
重置样式,去除元素在浏览器中的默认样式。
是否使用CSS reset根据实际开发需求而定。
又称为“margin叠加”,指当两个外边距相遇时会“合二为一”。叠加后的外边距为两个外边距的最大值。
只有普通文档流中块框的垂直外边距才会发生外边距合并。行内框、浮动框或绝对定位之间的外边距不会合并。
以下图片均来自w3school
这里有一篇文章讲得不错,可以参考一下。
圣杯布局、双飞翼布局就是利用这个实现的。
当浮动引起父元素高度塌陷时,可以为父元素加上overflow: hidden
来清除浮动。
属性值 | 说明 |
---|---|
inline | 行内元素 |
block | 块元素 |
inline-block | 行内块元素 |
table | 以表格形式显示,类似于table元素 |
table-row | 以表格行形式显示,类似于tr元素 |
table-cell | 以表格单元格形式显示,类似于td元素 |
none | 隐藏元素 |
常见的inline-block元素:img元素和input元素
可以用于实现:
在父元素中添加font-size: 0
文本属性 | 说明 |
---|---|
text-decoration | 下划线、删除线、顶划线 |
text-transform | 文本大小写 |
font-variant | 将英文文本转换为小型大写字母 |
text-indent | 段落首行缩进 |
text-align | 文本水平对齐 |
vertical-align | 文本垂直对齐 |
line-height | 行高 |
letter-spacing | 字距 |
word-spacing | 词距 |
可以使用 text-indent: -9999px;
来隐藏文本。
主要使用的值为left、right、center,对文字、inline元素、inline-block元素都起作用,对块元素不起作用。
利用margin: 0 auto
实现块元素的水平居中。
text-align: center
在父元素中定义,margin: 0 auto
在当前元素中定义。
关于顶线、中线、基线、底线可以自行查阅。
行高(line-height)指的是两行基线之间的距离。
vertical-align对inline、inline-block、table-cell元素有效,对块元素无效。
用于定义周围的文字、inline元素、inline-block元素相对于该元素基线的垂直对齐方式。
可以取负长度值和百分比值。
负值 : vertical-align: -2px
指的是该元素相对于基线向下偏移2px;
百分比 : 相对于当前元素继承的line-height值计算的,也是该元素相对于基线偏移的值;
关键字 (前四个比较常用):
值 | 描述 |
---|---|
top | 把元素的顶端与行中最高元素的顶端对齐 |
middle | 把此元素放置在父元素的中部。 |
baseline | 默认。元素放置在父元素的基线上。 |
bottom | 把元素的底端与行中最低的元素的顶端对齐。 |
text-top | 把元素的顶端与父元素字体的顶端对齐 |
text-bottom | 把元素的底端与父元素字体的底端对齐。 |
sub | 垂直对齐文本的下标。 |
super | 垂直对齐文本的上标 |
inherit | 规定应该从父元素继承 vertical-align 属性的值。 |
vertical-align: middle
可以实现图片与周围的文字居中对齐display: table-cell
默认情况下由于是基线对齐因此视觉上会感觉单选框或复选框旁边的文字比它们低,这个时候可以使用vertical-align来让他们垂直居中对齐。
可以使用关键字,也可以使用数值。
resize: none
来禁止拖拽要使textarea在不同浏览器中具有相同的外观,可以:
overflow: auto
来定义textarea滚动条自适应书上给了注册的例子:
实现方法:
text-align: right
使得文字右对齐overflow: hidden
来清除浮动然后我又去看了一下各网站的登录界面,基本上是一个icon+一个input的模式:
实现方法:
position: absolute
脱离文档流并盖在input上简单来说就是元素在页面中出现的先后顺序。
可以使元素移到左边或者右边,并且允许后边的文字和元素环绕着它。
浮动后使用margin来定义和其他元素之间的间距。
绝对定位的元素忽略float属性。
float的取值表如下,默认为none:
值 | 描述 |
---|---|
left | 元素向左浮动。 |
right | 元素向右浮动。 |
none | 默认值。元素不浮动,并会显示在其在文本中出现的位置。 |
inherit | 规定应该从父元素继承 float 属性的值。 |
overflow: hidden
来解决。若父元素和子元素都是浮动元素,则父元素会自适应地包含子元素。
若兄弟元素不是浮动元素,由于浮动元素脱离文档流,可能会出现覆盖等情况。
clear: both
,用于浮动元素后边的元素,表示两边不允许出现浮动元素。overflow: hidden
,用于浮动元素的父元素,但会隐藏超出父元素的内容部分。:after
伪元素结合clear: both
来实现。zoom: 1
来消除浮动。值 | 描述 |
---|---|
static | 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。 |
absolute | 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。 |
fixed | 生成固定定位的元素,相对于浏览器窗口进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。 |
relative | 生成相对定位的元素,相对于其正常位置进行定位。因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。 |
sticky | 粘性定位,该定位基于用户滚动的位置。它的行为就像 position:relative; 而当页面滚动超出目标区域时,它的表现就像 position:fixed;,它会固定在目标位置。注意: Internet Explorer, Edge 15 及更早 IE 版本不支持 sticky 定位。 Safari 需要使用 -webkit- prefix (查看以下实例)。 |
inherit | 规定应该从父元素继承 position 属性的值。 |
initial | 设置该属性为默认值,详情查看 CSS initial 关键字。 |
position: relative
,给子元素定义position: absolute
来实现。祖先元素同理。默认情况下设置z-index无效,只有当元素定义position为relative、absolute、fixed时才会激活,z-index值越大,其堆叠顺序越高,越靠上(z方向上的靠上)。
由于图片大小比较大,数据传输量大且一张图片会引发一次HTTP请求,因此对徐图形效果,一般更倾向于用CSS实现。
这里有一篇CSS制作图形速查表总结得比较全面,可以参考。
另外对于带有边框的图形,一般是用大小不同的两个相同图形实现,小的覆盖在大的上边。
border: 1px solid red
border-bottom: 0
border-bottom: 1px solid red
padding: 10px
指上右下左均为10pxpadding: 10px 20px
指上下为10px,左右为20pxpadding: 10px 20px 30px 40px
的顺序为上右下左,从上开始按照顺时针顺序background: url(‘xxx.jpg‘) no-repeat 80px 40px
,最后为background-positionfont: "微软雅黑" 12px/1.5em bold
font-family
、font-size
、line-height
、font-weight
font-family
和font-size
的值,其他属性没有指定则为默认值font-size
和line-height
之间需要加入一个斜杠/
color: #112233
可以缩写为color: #123
书中推荐了两个在线的压缩工具:CSS Compressor 和 YUI Compressor
以YUI Compressor为例,它会对CSS文件执行如下操作:
书中推荐的图片压缩工具:
在线的JPEGmini和TinyPNG以及本地的ImageOptim
浏览器对选择器规则是从右到左进行解析的。
CSS选择的匹配效率:
因此在使用选择器时应注意:
text-align: center
margin: 0 auto
vertical-align: middle
又称为CSS精灵或CSS雪碧图,它将零散的小背景图合并成一张大背景图,然后再利用background-position属性进行定位从而现实小背景图。
使用CSS Sprite技术时,需要注意:
书中推荐了两个CSS Sprite工具:CSS Sprite Generator 和 Sprite Cow
使用字体文件实现小图标效果,从而减少图片的使用。
推荐的Icon Font网站:http://www.iconfont.cn/
网站上就有使用教程
containing block,决定一个元素大小和定位的元素。
时视觉格式化模型中的一个重要概念,与CSS盒子模型类似。其作用主要是为其内部的后代元素提供一个参考。
一个元素在z轴上的堆叠顺序:
BFC: block formatting context, 块级格式上下文
IFC: inline formatting context, 行级格式上下文
若一个元素具备以下任何一个条件,则会创造创造一个新的BFC:
W3C描述BFC的特点为:
可以得到结论:
BFC的用途:
overflow: hidden
,利用结论第六条)好了到这里,这本书就看完了,一些细节的东西了解到了很多,下面开始看html5+css3。
- 2018 - 09 - 11 -
原文:https://www.cnblogs.com/zmj97/p/10161689.html