HTML&CSS笔记 {ignore}
文章目录
- HTML&CSS笔记 {ignore}
-
- 查询资料的途径
- 一些小技巧
- HTML常见元素的使用方法和属性
-
- 一些全局属性
- 标题元素——h元素(h1~h6)
- 段落元素——p元素
- 无语义元素——span元素
- 预格式化文本元素(无语义)——pre元素
- 实体(entity)
- a元素(超链接)
-
- href属性
- target属性
- id属性
- 路径的写法
- 图片元素——img元素
- 多媒体元素
- 列表元素
-
- 有序列表
- 无序列表
- 定义列表
- 容器元素
-
- div元素
- 语义容器元素
- 元素包含关系
- CSS——添加网页样式
-
- 术语解释
- CSS代码书写位置
- 常见的样式声明
- 选择器
-
- 简单选择器
- 组合选择器
- 并列选择器
- 层叠(权重计算)
-
- 层叠的过程
- 继承
- 计算属性值的过程
-
- 介绍了属性值计算过程
- 盒模型
-
- 盒子的组成部分
- 应用盒模型
-
- 改变宽高范围
- 改变背景覆盖范围
- 溢出处理
- 断词规则
- 空白处理
- 盒模型
-
- 显着特点
- 行块盒
- 空白折叠
- 可替换元素 和 非可替代元素
- 视觉格式化模型
查询数据的方式
- 使用查询元素:HTML5元素周期表
- 查询各种互联网标准:万维网联盟w3c。网址:w3.org
- 查询官方文件:mozilla(MDN)
一些小技巧
- 在HTML想直接从直接从一行转到下一行:Ctrl 回车
- 在HTML想直接从直接从一行转到上一行:Ctrl shift 回车
- 加缩进:选择代码,tab 缩进:选择代码,shift tab
- 元素的自动生成 以下(以标题为例):
h$*6>{$级标题}
- 乱数假文(lorem):没有实际意义的文字主要用于测试。lorem不要使用大括号 以下(以段落为例):
p*3>lorem
在lorem1:只生成一个单词(以此类推)
HTML常见元素的使用方法和属性
一些全局属性
- title:鼠标位置放在上面时,显示一个完整的描述,有点类似于文本框
- id:文档中唯一的元素编号
标题元素——h元素(h1~h6)
- 多个标题一次生成:
h$*6>{$级标题}
“$:表示占位符。从1开始,每生成一个元素后,下一个自增1。 “*六、表示重复六次 “>表示子元素 {}
段落元素——p元素
- 生成一个段落
无语义元素——span元素
- 无语义,可用于设计风格
- span默认不换行
- 过去,有些元素在显示时会独占一行(块级元素),而有些元素不会(行级元素) HTML5.这种说法已经被抛弃(因为语义化而被抛弃)
预格式化文本元素(无语义)——pre元素
- 空白折叠:源代码中的连续空白字符(空格、换行、tab),页面显示将被折叠成空格
- pre元素:不会空白折叠,什么是源代码?
- 它通常用于在网页上显示一些代码
显示代码时,通常外套code元素,code代码区表示
- pre元素本质:有默认css属性
实体(entity)
- 实体常用于显示保留字符(这些字符将被分析为 HTML 代码)和不可见字符(如不换行空格)
- 实体格式:& 文本 ; 或 & 数字 ;
- 常见实体:(MDN上搜索entity) “<”
<
“<”>
" "
a元素(超链接)
href属性
hyper reference:跳转地址通常表示
- 跳转地址(网址)
- 跳转锚点(类似于网页中的目的)
- 跳转网址要写全,跳转锚点要在id属性前加上#
连接:a[href="#chapter$"]*6>{章节$}
标题+段落:((h2[id="chapter$"]>{章节$})+p>lorem10)*6
- 回到顶部:#后不加任何东西
<a href="#">回到顶部</a>
- 功能链接:点击后,触发某个功能
- 触发JS代码:(javascript:)
<a href="javascript:alert('hello world!')">弹出你好</a>
- 发送邮件:(mailto:) 要求用户计算机上安装邮件发送软件:exchange等
- 拨号:(tel:) 手机端触发或电脑安装拨号软件
- 等等等等
target属性
表示跳转窗口位置 target的取值(通常两种):
- _self:在当前页面窗口中打开,默认值
- _blank:在新窗口打开
id属性
全局属性,表示元素在文档中的唯一编号
路径的写法
- 绝对路径:站外资源
- 协议名://主机名:端口号/路径
https://www.baidu.com/
- 相对路径:站内资源
- 以./开头 ./ 表示当前资源所在目录 …/ 表示返回上一级 相对路径中./可以省略
图片元素——img元素
- src属性(source):插入图片的地址(相对路径,绝对路径)
- alt属性:当图片资源失效时,使用该属性的文字替代图片
- 可以将图片元素和其他元素联合使用
- 和a元素连用(点击图片执行跳转)
<a href="">
<img src="" alt="">
</a>
- 和map元素连用(点击图片某个区域执行跳转) 具体使用方法参考网路,或bilibili渡一教育.图片元素章节.13分钟
- 和figure元素连用(通常用于把图片、图片标题、描述包裹起来),为了语义化
多媒体元素
- video:视频
- audio:音频
- 一些属性: 布尔属性:不写或取值为属性名
- controls(布尔属性):控制控件的显示
- autoplay(布尔属性):自动播放
- muted(布尔属性):静音播放
- loop(布尔属性):循环播放
列表元素
有序列表
ol元素(父元素) li元素(子元素) type属性:列表的序号类型,可以不写默认为1(一般不用,用CSS描述) reverse属性(布尔属性):反序 例:
<ol type="1">
<li>first</li>
<li>second</li>
</ol>
无序列表
把ol改为ul 无序列表常用于制或
定义列表
通常用于一些 dl元素(父元素):定义列表 dt元素(子元素):术语的标题 dd元素(子元素):术语描述
<dl>
<dt>html</dt>
<dd>超文本标记语言...</dd>
<dt>c++</dt>
<dd>编程语言...</dd>
</dl>
容器元素
该元素代表一个区域,内部用于放置其他元素
div元素
没有语义
语义化容器元素
header元素:通常用于表示页头,也可以用于表示文章的头部 footer元素:通常用于表示页脚,也可以用于表示文章的尾部 article元素:通常用于表示文章正文 section元素:通常用于表示章节 aside元素:通常用于表示额外信息(侧边栏)
元素包含关系
- 容器元素中可以包含任意元素
- a元素几乎可以包含任意元素
- 某些元素有固定的子元素(ul>li,ol>li,dl>dt+dd)
- 标题元素和段落元素不可以互相嵌套,并且不能包含容器元素
- 具体能否包含可以上MDN查询
CSS——为网页添加样式
术语解释
例:
h2
{
color: aqua;
background-color: blue;
}
CSS规则:选择器+声明块
- 选择器:选中元素
- 声明块 出现在大括号中,包含很多声明(属性),每一个声明(属性)表达了某一方面的样式
CSS代码书写位置
- 内部样式表 书写在style元素中(如上例)
- 内联样式表,元素样式表 直接书写在元素的style属性中
- 外部样式表(开发最常使用) 将样式书写在外部独立的CSS文件中 需要连接自己写的CSS文件 例:
<link rel="stylesheet" href="./CSS/index.css">
- 外部样式可以减少重复代码书写
- 有利于浏览器缓存,从而提高页面响应速度
- 有利于代码分离(HTML和CSS)更容易阅读和维护
常见的样式声明
- color 元素内部的颜色
- 预设值:定义好的单词
- 三原色(色值):光学三原色(红、绿、蓝),每个颜色可以用0~255之间的数字来表达(色值)
rgb表示法:
color:rgb(57, 197, 187)
hex(16进制)表示法:
color:#39c5bb
-
background-color 元素背景颜色
-
font-size 元素内部文字的尺寸大小 两种单位: (1)px:像素,绝对单位 (2)em:相对单位,相对于父元素的字体大小
-
font-weight 文字粗细程度,可以取值数字,可以取值预设值
label:重要不能忽略的内容(默认加粗)
- font-family 文字类型 必须用户计算机存在的字体才会显示,可以使用多个字体以匹配不同环境
font-family: consolas,微软雅黑,Arial,sans-serif
- sans-serif:非衬线字体(如果上述字体都没有,就让电脑自己选一个)
- font-style 字体样式,通常用它设置字体倾斜 italic:斜体
i元素:特殊的文本(专业术语等)(实际使用中通常当图标) em元素:表示强调的元素
normal:正常
- text-decoration 文本修饰,给文本加线
a元素:超链接 del元素:错误的内容 s元素:过期的内容
-
text-indent 首行文本缩进 可以书写数字表示缩进像素,也可以写几em表示缩进几个字体大小
-
line-height 每行文本的高度(该值越大,每行文本的距离越大) 设置行高为容器的高度,可以让单行文本垂直居中 行高可以设置为纯数字,表示当前数字的字体大小倍数
-
width 宽度
-
height 高度
-
letter-space 文字间隙
-
text-align 元素内部文字的水平排列样式(居左、中、右等)
选择器
帮助你精准的选中你想要的元素
简单选择器
- ID选择器:选中的是对应ID值的元素(ID前加一个“#”)
- 元素选择器:选中某个元素的所有(如上述例子)
- 类选择器(最常见):类似于C语言中的class,使用方便( class前加一个“.”) 例:
head中(先加载,放body也行但不好): .lei
{
color: blue;
font-size: small;
}
.st{
text-align: center;
}
body中:
<h2 class="lei st">
123
</h2>
<h2 class="lei">
1
</h2>
- 通配选择器 选中所有元素
*{
color:red;
}
- 属性选择器 根据属性名和属性值选中元素 例1:选中所有具有href属性的元素
[href]{
color:red;
}
例2:选中所有href元素值等于https://www.baidu.com 的元素
[href="https://www.baidu.com"]{
color:red;
}
还有很多写法,具体可以上MDN上查询
- 伪类选择器 选中某些元素的某种状态
-
link:超链接未被访问时的状态 写法同上
-
visited:超链接已被访问时的状态 写法同上
-
hover:鼠标移动上边的状态
/* 选中鼠标悬停时的a元素(a位置可以不写,即为所有元素) */
a:hover{
color:red;
}
- active:激活状态,鼠标按下状态 写法同上
!写法要按顺序(爱恨法则):l-v-h-a
- 伪元素选择器
- before
- after 例: 选中span元素之前 content:插入文本 color:插入的文本颜色
span::before{
content:"<";
color:blue;
}
选择器的组合
- 后代元素 —— 空格
- 子元素 —— >
- 相邻兄弟元素 —— +
- 兄弟元素 —— ~
- 并且 —— .
- 举个例子(后代选择器):
.me .he
{
color: #39c5bb;
}
<div class="me">
<p>Lorem.</p>
<p class="he">Aut?</p>
<p>Unde?</p>
</div>
选择器的并列
多个选择器用逗号分隔,减少代码量
层叠(权重计算)
- 声明冲突:同一个样式多次运用到同一个元素
- 层叠:解决生名冲突的过程,浏览器自动处理
层叠的过程
比较顺序如下:
- 比较重要性 重要性从高到低:
- 作者样式表中的!important样式(一般不要加)
color:#39c5bb !important
- 作者样式表(开发者书写的样式)
- 浏览器默认样式表
-
比较特殊性 看选择器 总体规则:选择器选择的范围越窄,越特殊 具体规则(讲透):通过选择器,计算出一个4位数(xxxx)(256进1),谁大选谁 千位:如果是内联样式记为1,否则记为0 百位:等于选择器中所有id选择器的数量 十位:等于选择器中所有类选择器、属性选择器、伪类选择器的数量 个位:等于选择器中所有元素选择器、伪元素选择器的数量
-
比较源次序 代码书写靠后的胜出
-
应用
- 重置样式表 书写一些作者样式,覆盖浏览器的默认样式 常见的重置样式表(网上的模板)normalize.css、reset.css、meyer.css
继承
子元素会继承父元素的某些CSS属性 通常跟文字相关的属性都可以被继承(背景不会继承)
属性值的计算过程
一个元素,从所有属性都没有值,到所有属性都有值这个计算过程,叫做属性值计算过程
特殊的两个CSS取值:
- inherit:手动(强制)继承,将父元素的值取出应用到该元素
- initial:初始值,将该属性的值设置为默认值
属性值计算过程简介
- 确定声明值:参考样式表中没有冲突的声明,作为CSS的属性值
- 层叠冲突:对样式表有冲突的声明使用重叠规则,确定CSS的属性值 1)比较重要性 2)比较特殊性 3)比较源次序
- 使用继承:对仍没有值的属性,若可继承,则继承父元素的值
盒模型
box:盒子,每个元素在页面中都会生成一个矩形区域(盒子) 盒子类型:
- 行盒:display属性等于inline的元素
- 块盒:display属性等于block的元素
注:
- 行盒在页面中不换行、块盒独占一行
- display属性默认值为inline
- 常见的块盒:容器元素、h1~h6、p
- 常见的行盒:span、a、img、video、audio
盒子的组成部分
无论是行盒还是块盒,都由下面几个部分组成,从内到外分别是:
-
内容 content 属性width、height,设置的是盒子内容的宽高 内容部分通常叫做整个盒子的
-
填充(内边距) padding 盒子边框到盒子内容的距离 属性:padding-left、padding-right、padding-top、padding-bottom 简写属性:padding
padding:上 左 下 右
padding:上下 左右
padding:上下左右
填充区 + 内容区 =
- 边框 border 三个属性
- 边框宽度:border-width
- 边框样式:border-style
- 边框颜色:border-color CSS3:
- 边框弧度:border-radius (圆形为50%)
简写属性:border
border: 宽度 样式 颜色
边框 + 填充区 + 内容区 =
- 外边距 margin 边框到其他盒子的距离 属性:margin-left、margin-right、margin-top、margin-bottom 速写属性:margin
margin:上 左 下 右
margin:上下 左右
margin:上下左右
盒模型的应用
改变宽高范围
默认情况下,width和height设置的是宽高 衡量设计稿尺寸时,往往使用的是边框盒,但设置width和height时则是内容盒 解决方法:
- 精确计算
- CSS3:box-sizing
改变背景覆盖范围
默认情况下,背景覆盖边框盒 可以通过background-clip进行修改
溢出处理
overflow属性,控制内容溢出边框后的处理方式 text-overflow属性,控制文本溢出边框后的处理方式 例:(文本溢出后,变为…)
text-overflow: ellipsis;
断词规则
word-break属性,控制文字在什么位置断行
空白处理
white-space属性是用来设置如何处理元素中的空白
行盒的盒模型
常见的行盒:包含具体内容的元素 span、label、em、i、img、video、audio
显著特点
- 盒子沿着内容延申
- 行盒不能设置宽高 (调整行盒的宽高,应该使用字体大小、行高、字体类型,间接调整)
- 内边距(填充区) 水平方向有效,垂直方向不会实际占用空间
- 边框 水平方向有效,垂直方向不会实际占用空间
- 外边距 水平方向有效,垂直方向不会实际占用空间
行块盒
display:inline-block 的盒子
- 不独占一行
- 盒模型中所有尺寸都有效
空白折叠
空白折叠,发生在行盒内部 或 行盒之间
可替换元素 和 非可替换元素
非可替换元素:大部分元素,页面上显示的结果,取决于元素 可替换元素:少部分元素,页面上显示的结果,取决于元素,(img、audio、video…)
- 绝大部分可替换元素为行盒
- 可替换元素类似于行块盒,盒模型中所有尺寸都有效
视觉格式化模型
- 盒模型:规定单个盒子的规则
- 视觉格式化模型(布局规整):页面中多个盒子的排布规则 视觉格式化模型,大体分为以下三种:
- 常规流
- 浮动
- 定位
常规流布局
常规流也成为,文档流、普通文档流、常规文档流 所有元素,默认情况下,都属于常规流布局 总体规则:块盒独占一行,行盒水平以此排列
- 包含快(containing block):每个盒子都有它的包含快,包含快决定了盒子的排列区域 绝大部分情况下:盒子的包含快,为其父元素的内容盒
-
每个块盒的总宽度,必须等于包含块的宽度 width属性默认值是auto(将剩余空间吸收) margin属性默认值是0(也可以设置为auto) width吸收能力大于margin 若宽度、边框、内边距、外边距计算后,仍有剩余空间,该剩余空间被margin-right全部吸收 · 在中,在其包含快中居中:设定宽度,左右margin设置为auto
-
每个块盒垂直方向上的auto值 height :auto适应内容的高度 margin :auto表示0
-
百分比取值 padding、weight、height、margin取值可以为百分比取值 以上所有百分比相对于
-
上下外边距合并 两个常规流块盒,上下外边距相邻,会进行合并 合并规则:两个值取最大值
浮动
应用场景
- 文字环绕
- 横向排列
浮动的基本特点
修改float的属性值为:
- left:左浮动,元素向上靠左
- right:右浮动,元素向上靠右
默认值为none
- 当一个元素浮动后,该元素变为块盒(更改display属性为block)
- 浮动元素的包含块,和常规流一样,为父元素的内容盒
盒子尺寸
- 宽度为auto时,表示适应内容宽度
- 高度为auto时,和常规流一样,为适应内容的高度
- margin为auto,表示0
- 边框、内边距,百分比设置与常规流一样
盒子排列
- 左浮动的盒子靠上靠左
- 右浮动的盒子靠上靠右
- 浮动盒子在包含块中排列时,回避开常规流块盒
- 常规流块盒在排列时,无视浮动盒子
- 行盒在排列时,会避开浮动盒子
如果文字没有在行盒中,浏览器会自动生成一个包裹文字
- 外边距不会发生合并
高度坍塌
高度坍塌的原因:常规流盒子的自动高度,在计算时,不会考虑浮动盒子
解决方法:清除浮动(css属性clear)
- 默认值:none
- left:清除左浮动,该元素必须出现在前面所有左浮动盒子的下方
- right:清除右浮动,该元素必须出现在前面所有右浮动盒子的下方
- both:清除左右浮动,该元素必须出现在前面所有浮动盒子的下方
一般解决方法:在所有的浮动盒子下面手动添加常规流元素,之后设置其clear属性,使其出现在所有浮动盒子下方,这样高度就不会坍塌
定位
手动控制元素在包含块中的精准位置
涉及CSS属性:position
- 默认值:static ,静态定位(不定位)
- relative:相对定位
- absolute:绝对定位
- fixed:固定定位
定位元素:它的position属性的取值不是static
定位元素会脱离文档流(相对定位除外)
一个脱离了文档流的元素:
- 文档中的元素摆放时,会忽略脱离了文档流的元素
- 文档流中元素自动计算高度时,会忽略脱离了文档流的元素
绝对定位、固定定位一定为块盒 绝对定位、固定定位一定不是浮动 定位没有外边距合并
相对定位(relative)
不会导致元素脱离文档流,只是让元素在原来的位置进行偏移
可以通过四个CSS属性对其设置位置
- left
- right
- top
- bottom
盒子的偏移不会对其盒子造成任何影响
一般为绝对定位提供包含块
绝对定位(absolute)
- 宽高为auto,盒子尺寸适应内容
- 包含块变化:找祖先元素中第一个定位元素,该元素的填充盒为其包含块。若找不到,则他的包含块为整个网页(初始化包含块)
可以通过四个CSS属性对其设置位置 表示距离其包含块的距离
- left
- right
- top
- bottom
固定定位(fixed)
其他情况和绝对定位一样。
包含块不同:固定为视口(浏览器的可视窗口)
定位下的居中
某个方向居中
- 定宽(高)
- 将左右(上下)距离设置为0
- 将左右(上下)margin设置为auto
- 绝对定位和固定定位中,margin为auto时,会自动吸收剩余空间
多个定位元素重叠时
设置z-index,通常情况下,该值越大,越靠近用户
- 只有定位元素设置z-index有效
- z-index可以为负数,如果是负数,则遇到常规流元素会被常规流元素覆盖