html笔记

2021-07-30  本文已影响0人  炎鸿

第一个网页

Emmet插件:自动生成HTML代码片段

注释

注释为代码的阅读者提供帮助,注释不参与运行

在HTML中,注释使用如下格式书写:

<!-- 注释内容 -->

元素

其他叫法:标签、标记

<a href="http://www.duyiedu.com" title="黑龙江渡一教育有限公司">渡一教育</a>
<title>Document</title>

整体:element (元素)

元素 = 起始标记(begin tag) + 结束标记(end tag) + 元素内容 + 元素属性

属性 = 属性名 + 属性值

属性的分类:

<meta charset="UTF-8">

有些元素没有结束标记,这样的元素叫做:空元素

空元素的两种写法:

  1. <meta charset="UTF-8">
  2. <meta charset="UTF-8" />

元素的嵌套

元素不能相互嵌套

父元素、子元素、祖先元素、后代元素、兄弟元素(拥有同一个父元素的两个元素)

标准的文档结构

HTML:页面、HTML文档

<!DOCTYPE html>

文档声明,告诉浏览器,当前文档使用的HTML标准是HTML5。

不写文档声明,将导致浏览器进入怪异渲染模式。

<html lang="en">
</html

根元素,一个页面最多只能一个,并且该元素是所有其他元素的父元素或祖先元素。

HTML5版本中没有强制要求书写该元素

lang属性:language,全局属性,表示该元素内部使用的文字是使用哪一种自然语言书写而成的。

<head>

</head>

文档头,文档头内部的内容,不会显示到页面上。

<meta>

文档的元数据:附加信息。

charset:指定网页内容编码。

计算机中,低压电(0~2 V)0,高压电(2~5 V)1,表示2,使用10

计算机中,只能存储数字

文字和数字进行对应

比如:a —— 97, A —— 64

该字典叫做字符编码表,GB2312,GBK

袁 —— GB2312 —— 100000 —— GBK —— ??

UTF-8 是 Unicode 编码的一个版本

<title>Document</title>

网页标题

<body>
</body>

文档体,页面上所有要参与显示的元素,都应该放置到文档体中。

语义化

什么是语义化

  1. 每一个HTML元素都有具体的含义

a元素:超链接
p元素:段落
h1元素:一级标题

  1. 所有元素与展示效果无关

元素展示到页面中的效果,应该由CSS决定。

因为浏览器带有默认的CSS样式,所以每个元素有一些默认样式。

重要:选择什么元素,取决于内容的含义,而不是显示出的效果

为什么需要语义化?

  1. 为了搜索引擎优化(SEO)

搜索引擎:百度、搜搜、Bing、Google

每隔一段时间,搜索引擎会从整个互联网中,抓取页面源代码

  1. 为了让浏览器理解网页

阅读模式、语音模式

文本元素

HTML5中支持的元素:HTML5元素周期表

h

标题:head

h1h6:表示1级标题6级标题

p

段落,paragraphs

lorem,乱数假文,没有任何实际含义的文字

span【无语义】

没有语义,仅用于设置样式

以前:某些元素在显示时会独占一行(块级元素),而某些元素不会(行级元素)
到了HTML5,已经弃用这种说法。

pre

预格式化文本元素

空白折叠:在源代码中的连续空白字符(空格、换行、制表),在页面显示时,会被折叠为一个空格

例外:在pre元素中的内容不会出现空白折叠

在pre元素内部出现的内容,会按照源代码格式显示到页面上。

该元素通常用于在网页中显示一些代码。

pre元素功能的本质:它有一个默认的css属性

显示代码时,通常外面套code元素,code表示代码区域。

HTML实体

实体字符, HTML Entity

实体字符通常用于在页面中显示一些特殊符号。

  1. &单词;
  2. &#数字;

<

>

 

©

&

a元素

超链接

href属性

hyper reference:通常表示跳转地址

  1. 普通链接
  2. 锚链接

id属性:全局属性,表示元素在文档中的唯一编号

  1. 功能链接

点击后,触发某个功能

要求用户计算机上安装有邮件发送软件:exchange

要求用户计算机上安装有拨号软件,或使用的是移动端访问

target属性

表示跳转窗口位置。

target的取值:

路径的写法

站内资源和站外资源

站内资源:当前网站的资源

站外资源:非当前网站的资源

绝对路径和相对路径

站外资源:绝对路径

站内资源:相对路径

  1. 绝对路径

绝对路径的书写格式:

url地址:

协议名://主机名:端口号/路径

schema://host:port/path

当跳转目标和当前页面的协议相同时,可以省略协议

  1. 相对路径

以./开头,./表示当前资源所在的目录

可以书写../表示返回上一级目录

相对路径中:./可以省略

图片元素

img元素

image缩写,空元素

src属性:source

alt属性:当图片资源失效时,将使用该属性的文字替代图片

和a元素联用

和map元素

map:地图

map的子元素:area

衡量坐标时,为了避免衡量误差,需要使用专业的衡量工具:

ps、pxcook、cutpro(本人开发)

和figure元素

指代、定义,通常用于把图片、图片标题、描述包裹起来

子元素:figcaption

多媒体元素

video 视频

audio 音频

video

controls: 控制控件的显示,取值只能为controls

某些属性,只有两种状态:1. 不写 2. 取值为属性名,这种属性叫做布尔属性

布尔属性,在HTML5中,可以不用书写属性值

autoplay: 布尔属性,自动播放。

muted: 布尔属性,静音播放。

loop: 布尔属性,循环播放

audio

和视频完全一致

兼容性

  1. 旧版本的浏览器不支持这两个元素
  2. 不同的浏览器支持的音视频格式可能不一致

mp4、webm

列表元素

有序列表

ol: ordered list

li:list item

无序列表

把ol改成ul

ul:unordered list

无序列表常用于制作菜单 或 新闻列表。

定义列表

通常用于一些术语的定义

dl: definition list

dt: definition title

dd: definition description

容器元素

容器元素:该元素代表一个块区域,内部用于放置其他元素

div元素

没有语义

语义化容器元素

header: 通常用于表示页头,也可以用于表示文章的头部

footer: 通常用于表示页脚,也可以用于表示文章的尾部

article: 通常用于表示整篇文章

section: 通常用于表示文章的章节

aside: 通常用于表示侧边栏

元素包含关系

以前:块级元素可以包含行级元素,行级元素不可以包含块级元素,a元素除外

元素的包含关系由元素的内容类别决定。

例如,查看h1元素中是否可以包含p元素

总结:

  1. 容器元素中可以包含任何元素
  2. a元素中几乎可以包含任何元素
  3. 某些元素有固定的子元素(ul>li,ol>li,dl>dt+dd)
  4. 标题元素和段落元素不能相互嵌套,并且不能包含容器元素

为网页添加样式

术语解释

h1{
    color:red;
    background-color:lightblue;
    text-align: center;
}

CSS规则 = 选择器 + 声明块

选择器

选择器:选中元素

  1. ID选择器:选中的是对应id值的元素
  2. 元素选择器
  3. 类选择器

声明块

出现在大括号中

声明块中包含很多声明(属性),每一个声明(属性)表达了某一方面的样式。

CSS代码书写位置

  1. 内部样式表

书写在style元素中

  1. 内联样式表,元素样式表

直接书写在元素的style属性中

  1. 外部样式表[推荐]

将样式书写到独立的css文件中。

1). 外部样式可以解决多页面样式重复的问题
2). 有利于浏览器缓存,从而提高页面响应速度
3). 有利于代码分离(HTML和CSS),更容易阅读和维护

常见样式声明

  1. color

元素内部的文字颜色

预设值:定义好的单词

三原色,色值:光学三原色(红、绿、蓝),每个颜色可以使用0-255之间的数字来表达,色值。

rgb表示法:
rgb(0, 255, 0)
hex(16进制)表示法:
#红绿蓝

淘宝红:#ff4400, #f40
黑色:#000000,#000
白色:#ffffff, #fff
红:#ff0000, #f00
绿:#00ff00, #0f0
蓝:#0000ff, #00f
紫:#f0f
青:#0ff
黄:#ff0
灰色:#ccc

  1. background-color

元素背景颜色

  1. font-size

元素内部文字的尺寸大小

1)px:像素,绝对单位,简单的理解为文字的高度占多少个像素
2)em:相对单位,相对于父元素的字体大小
每个元素必须有字体大小,如果没有声明,则直接使用父元素的字体大小,如果没有父元素(html),则使用基准字号。

user agent,UA,用户代理(浏览器)

  1. font-weight

文字粗细程度,可以取值数字,可以取值为预设值

strong,默认加粗。

  1. font-family

文字类型

必须用户计算机中存在的字体才会有效。

使用多个字体,以匹配不同环境

sans-serif,非衬线字体

  1. font-style

字体样式,通常用它设置斜体

i元素,em元素,默认样式,是倾斜字体; 实际使用中,通常用它表示一个图标(icon)

  1. text-decoration

文本修饰,给文本加线。

a元素
del元素:错误的内容
s元素:过期的内容

  1. text-indent

首行文本缩进

  1. line-height

每行文本的高度,该值越大,每行文本的距离越大。

设置行高为容器的高度,可以让单行文本垂直居中

行高可以设置为纯数字,表示相对于当前元素的字体大小

  1. width

宽度

  1. height

高度

  1. letter-space

文字间隙

  1. text-align

元素内部文字的水平排列方式

选择器

选择器:帮助你精准的选中想要的元素

简单选择器

  1. ID选择器
  2. 元素选择器
  3. 类选择器
  4. 通配符选择器

*,选中所有元素

  1. 属性选择器

根据属性名和属性值选中元素

  1. 伪类选择器

选中某些元素的某种状态

1)link: 超链接未访问时的状态

2)visited: 超链接访问过后的状态

3)hover: 鼠标悬停状态

4)active:激活状态,鼠标按下状态

爱恨法则:love hate

  1. 伪元素选择器

before

after

选择器的组合

  1. 并且
  2. 后代元素 —— 空格
  3. 子元素 —— >
  4. 相邻兄弟元素 —— +
  5. 后面出现的所有兄弟元素 —— ~

选择器的并列

多个选择器, 用逗号分隔

语法糖

层叠

声明冲突:同一个样式,多次应用到同一个元素

层叠:解决声明冲突的过程,浏览器自动处理(权重计算)

1. 比较重要性

重要性从高到底:

作者样式表:开发者书写的样式

1) 作者样式表中的!important样式

  1. 作者样式表中的普通样式
  2. 浏览器默认样式表中的样式

2. 比较特殊性

看选择器

总体规则:选择器选中的范围越窄,越特殊

具体规则:通过选择器,计算出一个4位数(x x x x)

  1. 千位:如果是内联样式,记1,否则记0
  2. 百位:等于选择器中所有id选择器的数量
  3. 十位:等于选择器中所有类选择器、属性选择器、伪类选择器的数量
  4. 个位:等于选择器中所有元素选择器、伪元素选择器的数量

3. 比较源次序

代码书写靠后的胜出

应用

  1. 重置样式表

书写一些作者样式,覆盖浏览器的默认样式

重置样式表 -> 浏览器的默认样式

常见的重置样式表:normalize.css、reset.css、meyer.css

  1. 爱恨法则

link > visited > hover > active

继承

子元素会继承父元素的某些CSS属性

通常,跟文字内容相关的属性都能被继承

属性值的计算过程

一个元素一个元素依次渲染,顺序按照页面文档的树形目录结构进行

[图片上传失败...(image-fde039-1627727215268)]

渲染每个元素的前提条件:该元素的所有CSS属性必须有值

一个元素,从所有属性都没有值,到所有的属性都有值,这个计算过程,叫做属性值计算过程

特殊的两个CSS取值:

盒模型

box:盒子,每个元素在页面中都会生成一个矩形区域(盒子)

盒子类型:

  1. 行盒,display等于inline的元素
  2. 块盒,display等于block的元素

行盒在页面中不换行、块盒独占一行

display默认值为inline

浏览器默认样式表设置的块盒:容器元素、h1~h6、p

常见的行盒:span、a、img、video、audio

盒子的组成部分

无论是行盒、还是块盒,都由下面几个部分组成,从内到外分别是:

  1. 内容 content

width、height,设置的是盒子内容的宽高

内容部分通常叫做整个盒子的内容盒 content-box

  1. 填充(内边距) padding

盒子边框到盒子内容的距离

padding-left、padding-right、padding-top、padding-bottom

padding: 简写属性

padding: 上 右 下 左

填充区+内容区 = 填充盒 padding-box

  1. 边框 border

边框 = 边框样式 + 边框宽度 + 边框颜色

边框样式:border-style
边框宽度:border-width
边框颜色:border-color

边框+填充区+内容区 = 边框盒 border-box

  1. 外边距 margin

边框到其他盒子的距离

margin-top、margin-left、margin-right、margin-bottom

速写属性margin

盒模型应用

改变宽高范围

默认情况下,width 和 height 设置的是内容盒宽高。

页面重构师:将psd文件(设计稿)制作为静态页面

衡量设计稿尺寸的时候,往往使用的是边框盒,但设置width和height,则设置的是内容盒

  1. 精确计算
  2. CSS3:box-sizing

改变背景覆盖范围

默认情况下,背景覆盖边框盒

可以通过background-clip进行修改

溢出处理

overflow,控制内容溢出边框盒后的处理方式

断词规则

word-break,会影响文字在什么位置被截断换行

normal:普通。CJK字符(文字位置截断),非CJK字符(单词位置截断)

break-all:截断所有。所有字符都在文字处截断

keep-all:保持所有。所有文字都在单词之间截断

空白处理

white-space: nowrap

行盒的盒模型

常见的行盒:包含具体内容的元素

span、strong、em、i、img、video、audio

显著特点

  1. 盒子沿着内容沿伸
  2. 行盒不能设置宽高

调整行盒的宽高,应该使用字体大小、行高、字体类型,间接调整。

  1. 内边距(填充区)

水平方向有效,垂直方向不会实际占据空间。

  1. 边框

水平方向有效,垂直方向不会实际占据空间。

  1. 外边距

水平方向有效,垂直方向不会实际占据空间。

行块盒

display:inline-block 的盒子

  1. 不独占一行
  2. 盒模型中所有尺寸都有效

空白折叠

空白折叠,发生在行盒(行块盒)内部 或 行盒(行块盒)之间

可替换元素 和 非可替换元素

大部分元素,页面上显示的结果,取决于元素内容,称为非可替换元素

少部分元素,页面上显示的结果,取决于元素属性,称为可替换元素

可替换元素:img、video、audio

绝大部分可替换元素均为行盒。

可替换元素类似于行块盒,盒模型中所有尺寸都有效。

常规流

盒模型:规定单个盒子的规则

视觉格式化模型(布局规则):页面中的多个盒子排列规则

视觉格式化模型,大体上将页面中盒子的排列分为三种方式:

  1. 常规流
  2. 浮动
  3. 定位

常规流布局

常规流、文档流、普通文档流、常规文档流

所有元素,默认情况下,都属于常规流布局

总体规则:块盒独占一行,行盒水平依次排列

包含块(containing block):每个盒子都有它的包含块,包含块决定了盒子的排列区域。

绝大部分情况下:盒子的包含块,为其父元素的内容盒

块盒

  1. 每个块盒的总宽度,必须刚好等于包含块的宽度

宽度的默认值是auto

margin的取值也可以是auto,默认值0

auto:将剩余空间吸收掉

width吸收能力强于margin

若宽度、边框、内边距、外边距计算后,仍然有剩余空间,该剩余空间被margin-right全部吸收

在常规流中,块盒在其包含快中居中,可以定宽、然后左右margin设置为auto。

  1. 每个块盒垂直方向上的auto值

height:auto, 适应内容的高度

margin:auto, 表示0

  1. 百分比取值

padding、宽、margin可以取值为百分比

以上的所有百分比相对于包含块的宽度。

高度的百分比:

1). 包含块的高度是否取决于子元素的高度,设置百分比无效
2). 包含块的高度不取决于子元素的高度,百分比相对于父元素高度

  1. 上下外边距的合并

两个常规流块盒,上下外边距相邻,会进行合并。

两个外边距取最大值。

浮动

视觉格式化模型,大体上将页面中盒子的排列分为三种方式:

  1. 常规流
  2. 浮动
  3. 定位

应用场景

  1. 文字环绕
  2. 横向排列

浮动的基本特点

修改float属性值为:

默认值为none

  1. 当一个元素浮动后,元素必定为块盒(更改display属性为block)
  2. 浮动元素的包含块,和常规流一样,为父元素的内容盒

盒子尺寸

  1. 宽度为auto时,适应内容宽度
  2. 高度为auto时,与常规流一致,适应内容的高度
  3. margin为auto,为0.
  4. 边框、内边距、百分比设置与常规流一样

盒子排列

  1. 左浮动的盒子靠上靠左排列
  2. 右浮动的盒子考上靠右排列
  3. 浮动盒子在包含块中排列时,会避开常规流块盒
  4. 常规流块盒在排列时,无视浮动盒子
  5. 行盒在排列时,会避开浮动盒子
  6. 外边距合并不会发生

如果文字没有在行盒中,浏览器会自动生成一个行盒包裹文字,该行盒叫做匿名行盒。

高度坍塌

高度坍塌的根源:常规流盒子的自动高度,在计算时,不会考虑浮动盒子

清除浮动,涉及css属性:clear

定位

视觉格式化模型,大体上将页面中盒子的排列分为三种方式:

  1. 常规流
  2. 浮动:float
  3. 定位:position

定位:手动控制元素在包含块中的精准位置

涉及的CSS属性:position

position属性

一个元素,只要position的取值不是static,认为该元素是一个定位元素。

定位元素会脱离文档流(相对定位除外)

一个脱离了文档流的元素:

  1. 文档流中的元素摆放时,会忽略脱离了文档流的元素
  2. 文档流中元素计算自动高度时,会忽略脱离了文档流的元素

相对定位

不会导致元素脱离文档流,只是让元素在原来位置上进行偏移。

可以通过四个CSS属性对设置其位置:

盒子的偏移不会对其他盒子造成任何影响。

绝对定位

  1. 宽高为auto,适应内容
  2. 包含块变化:找祖先中第一个定位元素,该元素的填充盒为其包含块。若找不到,则它的包含块为整个网页(初始化包含块)

固定定位

其他情况和绝对定位完全一样。

包含块不同:固定为视口(浏览器的可视窗口)

定位下的居中

某个方向居中:

  1. 定宽(高)
  2. 将左右(上下)距离设置为0
  3. 将左右(上下)margin设置为auto

绝对定位和固定定位中,margin为auto时,会自动吸收剩余空间

多个定位元素重叠时

堆叠上下文

设置z-index,通常情况下,该值越大,越靠近用户

只有定位元素设置z-index有效

z-index可以是负数,如果是负数,则遇到常规流、浮动元素,则会被其覆盖

补充

透明

每个颜色都具有透明通道, 0 ~ 1

  1. rgba(红, 绿, 蓝, alpha)
  2. hex: #红绿蓝透

更多的选择器

更多伪类选择器

  1. first-child

选择第一个子元素

first-of-type,选中子元素中第一个指定类型的元素

  1. last-child
  1. nth-child

选中指定的第几个子元素

even:关键字,等同于2n
odd: 关键字,等同于2n+1

  1. nth-of-type

选中指定的子元素中第几个某类型的元素

更多的伪元素选择器

  1. first-letter

选中元素中的第一个字母

  1. first-line

选中元素中第一行的文字

  1. selection

选中被用户框选的文字

更多的样式

透明度

  1. opacity,它设置的是整个元素的透明,它的取值是0 ~ 1
  2. 在颜色位置设置alpha通道(rgba )

鼠标

使用cursor设置

盒子隐藏

  1. display:none,不生成盒子
  2. visibility:hidden,生成盒子,只是从视觉上移除盒子,盒子仍然占据空间。

背景图

和img元素的区别

img元素是属于HTML的概念

背景图属于css的概念

  1. 当图片属于网页内容时,必须使用img元素
  2. 当图片仅用于美化页面时,必须使用背景图

涉及的css属性

  1. background-image

  2. background-repeat

默认情况下,背景图会在横坐标和纵坐标中进行重复

  1. background-size

预设值:contain、cover,类似于object-fit
数值或百分比

  1. background-position

设置背景图的位置。

预设值:left、bottom、right、top、center

数值或百分比

雪碧图(精灵图)(spirit)

  1. background-attachment

通常用它控制背景图是否固定。

  1. 背景图和背景颜色混用

  2. 速写(简写)background

iframe元素

框架页

通常用于在网页中嵌入另一个页面

iframe 可替换元素

  1. 通常行盒
  2. 通常显示的内容取决于元素的属性
  3. CSS不能完全控制其中的样式
  4. 具有行快盒的特点

在页面中使用flash

object

embed

它们都是可替换元素

MIME(Multipurpose Internet Mail Extensions)

多用途互联网邮件类型:

比如,资源是一个jpg图片,MIME:image/jpeg

表单元素

一系列元素,主要用于收集用户数据

input元素

输入框

type: text, 普通文本输入框
type:password,密码框
type: date, 日期选择框,兼容性问题
type: search, 搜索框,兼容性问题
type: number,数字输入框
type: checkbox,多选框
type: radio,单选框

input元素可以制作按钮

当type值为reset、button、submit时,input表示按钮。

select元素

下拉列表选择框

通常和option元素配合使用

textarea元素

文本域,多行文本框

按钮元素

button

type属性:reset、submit、button,默认值submit

表单状态

readonly属性:布尔属性,是否只读,不会改变表单显示样式

disabled属性:布尔属性,是否禁用,会改变表单显示样式

配合表单元素的其他元素

label

普通元素,通常配合单选和多选框使用

可以通过for属性,让label元素关联某一个表单元素,for属性书写表单元素id的值

datalist

数据列表

该元素本身不会显示到页面,通常用于和普通文本框配合

form元素

通常,会将整个表单元素,放置form元素的内部,作用是当提交表单时,会将form元素内部的表单内容以合适的方式提交到服务器。

form元素对开发静态页面没有什么意义。

fieldset元素

表单分组

美化表单元素

新的伪类

  1. focus

元素聚焦时的样式

  1. checked

单选或多选框被选中的样式

常见用法

  1. 重置表单元素样式

  2. 设置textarea是否允许调整尺寸

css属性resize:

  1. 文本框边缘到内容的距离

  2. 控制单选和多选的样式

表格元素

在css技术出现之前,网页通常使用表格布局。

后台管理系统中可能会使用表格。

前台:面向用户

后台:面向管理员。对界面要求不高,对功能性要求高。

表格不再适用于网页布局?表格的渲染速度过慢。

其他元素

  1. abbr

缩写词

  1. time

提供给浏览器或搜索引擎阅读的时间

  1. b (bold)

以前是一个无语义元素,主要用于加粗字体

  1. q

一小段引用文本

  1. blockquote

大段引用的文本

  1. br

无语义
主要用于在文本中换行

  1. hr

无语义
主要用于分割

  1. meta

还可以用于搜索引擎优化(SEO)

  1. link

链接外部资源(CSS、图标)

rel属性:relation,链接的资源和当前网页的关系

type属性:链接的资源的MIME类型

@规则

at-rule: @规则、@语句、CSS语句、CSS指令

  1. import

@import "路径";

导入另外一个css文件

  1. charset

@charset "utf-8";

告诉浏览器该CSS文件,使用的字符编码集是utf-8,必须写到第一行

web字体和图标

web字体

用户电脑上没有安装相应字体,强制让用户下载该字体

使用@font-face指令制作一个新字体

字体图标

iconfont.cn

web字体和图标

web字体

用户电脑上没有安装相应字体,强制让用户下载该字体

使用@font-face指令制作一个新字体

字体图标

iconfont.cn

块级格式化上下文

web字体

用户电脑上没有安装相应字体,强制让用户下

载该字体

全称Block Formatting Context,简称BFC

它是一块独立的渲染区域,它规定了在该区域中,常规流块盒的布局

1.常规流块盒在水平方向上,必须撑满包含块
2.常规流块盒在包含块的垂直方向上依次摆放
3.常规流块盒若外边距无缝相邻,则进行外边距合并
4.常规流块盒的自动高度和摆放位置,无视浮动元素

BFC渲染区域:
这个区域由某个HTML元素创建,以下元素会在其内部创建BFC区域:
1.根元素
2.浮动和绝对定位元素
3.overflow不等于visible的块盒

不同的BFC区域,它们进行渲染时互不干扰
创建BFC的元素,隔绝了它内部和外部的联系,内部的渲染不会影响到外部
具体规则:
创建BFC的元素,它的自动高度需要计算浮动元素
创建BFC的元素,它的边框盒不会与浮动元素重叠
创建BFC的元素,不会和它的子元素进行外边距合并

布局

多栏布局

两栏布局

三栏布局

等高

  1. CSS3的弹性盒
  2. JS控制
  3. 伪等高

元素书写顺序

后台页面的布局

盒子位置:

左浮动的盒子向上向左排列
右浮动的盒子向上向右排列
浮动盒子的顶边不得高于上一个盒子的顶边
若剩余空间无法放下浮动的盒子,则该盒子向下移动,直到具备足够的空间能容纳盒子,然后再向左或向右移动

行高的取值

line-height

  1. px, 像素值
  2. 无单位的数字
  3. em单位
  4. 百分比

body背景

画布 canvas

一块区域

特点:

  1. 最小宽度为视口宽度
  2. 最小高度为视口高度

HTML元素的背景

覆盖画布

BODY元素的背景

如果HTML元素有背景,BODY元素正常(背景覆盖边框盒)

如果HTML元素没有背景,BODY元素的背景覆盖画布

关于画布背景图

  1. 背景图的宽度百分比,相对于视口
  2. 背景图的高度百分比,相对于网页高度
  3. 背景图的横向位置百分比、预设值,相对于视口
  4. 背景图的纵向位置百分比、预设值,相对于网页高度

行盒的垂直对齐

多个行盒垂直方向上的对齐

给没有对齐元素设置vertical-align

预设值

数值

图片的底部白边

图片的父元素是一个块盒,块盒高度自动,图片底部和父元素底边之间往往会出现空白。

  1. 设置父元素的字体大小为0
  2. 将图片设置为块盒

参考线-深入理解字体

font-size、line-height、vertical-align、font-family

文字

文字是通过一些文字制作软件制作的,比如fontforge

制作文字时,会有几根参考线,不同的文字类型,参考线不一样。同一种文字类型,参考线一致。

font-size

字体大小,设置的是文字的相对大小

文字的相对大小:1000、2048、1024

文字顶线到底线的距离,是文字的实际大小(content-area,内容区)

行盒的背景,覆盖content-area

行高

顶线向上延申的空间,和底线向下延申的空间,两个空间相等,该空间叫做gap(空隙)

gap默认情况下,是字体设计者决定

top到botoom(看ppt图),叫做virtual-area(虚拟区)

行高,就是virtual-area

line-height: normal,默认值,使用文字默认的gap

文字一定出现一行的最中间——错误
content-area一定出现在virtual-area的中间

vertical-align

决定参考线:font-size、font-family、line-height

一个元素如果子元素出现行盒,该元素内部也会产生参考线

baseline:该元素的基线与父元素的基线对齐

super: 该元素的基线与父元素的上基线对齐

sub:该元素的基线与父元素的下基线对齐

text-top: 该元素的virtual-area的顶边,对齐父元素的text-top

text-bottom: 该元素的virtual-area的底边,对齐父元素的text-bottom

top:该元素的virtual-area的定边,对齐line-box的顶边

bottom:该元素的virtual-area的底边,对齐line-box的底边

middle: 该元素的中线(content-area的一半),与父元素的X字母高度一半的位置对齐

行盒组合起来,可以形成多行,每一行的区域叫做line-box,line-box的顶边是该行内所有行盒最高顶边,底边是该行行盒的最低底边。

实际,一个元素的实际占用高度(高度自动),高度的计算通过line-box计算。

行盒:inline-box
行框:line-box

数值:相对于基线的偏移量,向上为正数,向下为负数。

百分比:相对于基线的偏移量,百分比是相对于自身virtual-area的高度

line-box是承载文字内容的必要条件,以下情况不生成行框:

  1. 某元素内部没有任何行盒
  2. 某元素字体大小为0

可替换元素和行块盒的基线

图片:基线位置位于图片的下外边距。

表单元素:基线位置在内容底边

行块盒:

  1. 行块盒最后一行有line-box,用最后一行的基线作为整个行块盒的基线。
  2. 如果行块盒内部没有行盒,则使用下外边距作为基线

堆叠上下文

堆叠上下文(stack context),它是一块区域,这块区域由某个元素创建,它规定了该区域中的内容在Z轴上排列的先后顺序。

创建堆叠上下文的元素

  1. html元素(根元素)
  2. 设置了z-index(非auto)数值的定位元素

同一个堆叠上下文中元素在Z轴上的排列

从后到前的排列顺序:

  1. 创建堆叠上下文的元素的背景和边框
  2. 堆叠级别(z-index, stack level)为负值的堆叠上下文
  3. 常规流非定位的块盒
  4. 非定位的浮动盒子
  5. 常规流非定位行盒
  6. 任何 z-index 是 auto 的定位子元素,以及 z-index 是 0 的堆叠上下文
  7. 堆叠级别为正值的堆叠上下文

每个堆叠上下文,独立于其他堆叠上下文,它们之间不能相互穿插。

svg

svg: scalable vector graphics,可缩放的矢量图

  1. 该图片使用代码书写而成
  2. 缩放不会失真
  3. 内容轻量

怎么使用

svg可以嵌入浏览器,也可以单独成为一个文件

xml语言,svg使用该语言定义

书写svg代码

矩形:rect

圆形:circle

椭圆:ellipse

线条:line

折线:polyline

多边形:polygon

路径:path

M = moveto
L = lineto
H = horizontal lineto
V = vertical lineto
C = curveto
S = smooth curveto
Q = quadratic Belzier curve
T = smooth quadratic Belzier curveto
A = elliptical Arc

A
半径1
半径2
顺时针旋转角度
小弧(0)或大弧(1)
顺时针(1)逆时针(0)

Z = closepath

例子

画太极图

数据链接

data url

如何书写

数据链接:将目标文件的数据直接书写到路径位置

语法:data:MIME,数据

意义

优点:

  1. 减少了浏览器中的请求

请求

响应

减少了请求中浪费的时间

  1. 有利于动态生成数据

缺点:

  1. 增加了资源的体积

导致了传输内容增加,从而增加了单个资源的传输时间

  1. 不利于浏览器的缓存

浏览器通常会缓存图片文件、css文件、js文件。

  1. 会增加原资源的体积到原来的4/3

应用场景:

  1. 但请求单个图片体积较小,并且该图片因为各种原因,不适合制作雪碧图,可以使用数据链接。

  2. 图片由其他代码动态生成,并且图片较小,可以使用数据链接。

base64

一种编码方式

通常用于将一些二进制数据,用一个可书写的字符串表示。

浏览器兼容性

问题产生原因

厂商前缀

比如:box-sizing, 谷歌旧版本浏览器中使用-webkit-box-sizing:border-box

IE: -ms-
Chrome,safari: -webkit-
opera: -o-
firefox: -moz-

浏览器在处理样式或元素时,使用如下的方式:
当遇到无法识别的代码时,直接略过。

  1. 谷歌浏览器的滚动条样式

实际上,在开发中使用自定义的滚动条,往往是使用div+css+JS实现的

  1. 多个背景图中选一个作为背景

css hack

根据不同的浏览器(主要针对IE),设置不同的样式和元素

  1. 样式

IE中,CSS的特殊符号

IE5、6、7的外边距bug,浮动元素的左外边距翻倍

  1. 条件判断

渐近增强 和 优雅降级

两种解决兼容性问题的思路,会影响代码的书写风格

书写代码时,先尽量避免书写有兼容性问题的代码,完成之后,再逐步加入新标准中的代码。

书写代码时,先不用特别在意兼容性,完成整个功能之后,再针对低版本浏览器处理样式。

caniuse

查找css兼容性

[caniuse.com]

居中总结

居中:盒子在其包含块中居中

行盒(行块盒)水平居中

直接设置行盒(行块盒)父元素text-align:center

常规流块盒水平居中

定宽,设置左右margin为auto

绝对定位元素的水平居中

定宽,设置左右的坐标为0(left:0, right:0),将左右margin设置为auto

实际上,固定定位(fixed)是绝对定位(absolute)的特殊情况

单行文本的垂直居中

设置文本所在元素的行高,为整个区域的高度

行块盒或块盒内多行文本的垂直居中

没有完美方案

设置盒子上下内边距相同,达到类似的效果。

绝对定位的垂直居中

定高,设置上下的坐标为0(top:0, bottom:0),将上下margin设置为auto

样式补充

display:list-item

设置为该属性值的盒子,本质上仍然是一个块盒,但同时该盒子会附带另一个盒子

元素本身生成的盒子叫做主盒子,附带的盒子称为次盒子,次盒子和主盒子水平排列

涉及的css:

  1. list-style-type

设置次盒子中内容的类型

  1. list-style-position

设置次盒子相对于主盒子的位置

  1. 速写属性list-style

清空次盒子

list-style:none

图片失效时的宽高问题

如果img元素的图片链接无效,img元素的特性和普通行盒一样,无法设置宽高

行盒中包含行块盒或可替换元素

行盒的高度与它内部的行块盒或可替换元素的高度无关

text-align:justify

text-align:

制作一个三角形

direction 和 writing-mode

开始 start -> 结束 end
左 left -> 右 end

开始和结束是相对的,不同国家有不同的习惯

左右是绝对的

direction设置的是开始到结束的方向

writing-mode:设置文字书写方向

utf-8字符

上一篇下一篇

猜你喜欢

热点阅读