01_浏览器相关知识
五大主流浏览器:
Chrome Safari IE Firefox Opera (拥有自己的内核)
四大内核:
webkit Trident Gecko blink.
02_网页相关知识
构成
网址 网站 网页
网页标准:
结构 表现 行为 分别对应 HTML CSS JavaScript
03_HTML简介
HTML是什么
译为:标记语言
超文本:比普通的文本信息含量更多
04_HTML初体验
保存:Ctrl+S
后缀:.html
程序员写的叫源代码
滚动效果标签:
<marquee> </marquee>
效果:
滚动
05_HTML标签
标签又称元素
<>起始标签 < />结束标签 中间为标签体
输入框<input>
(单标签)
标签可以嵌套
可以使用tab键缩进
输入框效果:
06_HTML初体验
属性名+属性值
不同标签能写的属性不同
标签里不要出现同名属性
一个标签里的属性不能重复
有些特殊属性没有属性名只有属性值 如:<input disabled>
效果:
其他标签属性演示:
滚动一次
07_HTML基本结构
基本结构如下
<html>
<head></head>
<body>
</body>
</html>
标题<title></title>
08_HTML注释
注释作用
为了让自己或者同事以后能看懂代码
解释说明代码
增加代码可读性
注释代码
<!-- -->
注:注释不能嵌套
注释的额外功能
使某些代码暂时不运行
注释快捷键
ctrl+/
09_HTML文档声明
文档声明的作用
告诉网页用的什么版本的语言
不同版本有不同的文档声明写法
旧的文档声明写法去W3C官网查(了解即可)
HTML5的文档声明写法
<!DOCTYPE html>
h5文档声明必须放在第一行且放在html标签的外侧
010_HTML字符编码
编码与解码
编码:将文本对应字符集转换成机器语言
解码:将机器语言对应字符集转换回文本
编码一般默认为UTF-8编码
为了防止浏览器出现问题可加入
<head>
<meta charset="UTF-8"/>
</head>
编码
ASCLL编码
包含 大写字母 小写字母 数字 一些符号 共计128个
ISO 8859-1
在ASCLL基础上扩充一些希腊字符 共计256个
GB2312
GB:国标
继续扩充 收录6763个常用汉字 682个字符
GBK
K:扩充
收录汉字符号共计20000+ 支持繁体中文
UTF-8
万国码
包含世界上所有语言的 所有文字与符号
很常用
编码原则
原则1
存储时 务必采用合适的字符编码
否则 无法存储 数据会丢失
原则2
存储时采用的哪种方式编码 读取时就必须采用相同方式解码
否则数据能呈现 但数据错乱(乱码)
011_HTML设置语言
主要作用
让浏览器显示对应的翻译提示
有利于搜索引擎优化
具体写法
<html> lang="zh-CN"
扩展:
第一种写法:语言-国家/地区
第二种写法:语言-具体种类(不推荐使用)
012_HTML标准结构
结构快捷键
英文!+enter
剪切快捷键
ctrl+shift+k 快速剪切
配置网页图标后缀
.ico
013_HTML开发者文档
优质网站
W3c
W3school
MDN (最常用)
014_HTML排版标签
标题标签
<h1></h1>
一级标题 标题共6级
一级标题最好只写一个
h1到h6不能互相嵌套
段落标签
<p></p>
p标签不能嵌套 h标签 p标签 div
套入盒子
<div></div>
不打断文本回车快捷键
ctrl+enter
015_HTML语义化标签
概念
特定的标签表达特定的含义
原则
标签默认的效果不重要,语义最重要!
语义化的好处
代码的可读性强
有利于SEO(搜索引擎优化)
方便设备解析(屏幕阅读器,盲人阅读器)
016_HTML块级元素与行级元素
快速向下复制快捷键
alt+shift+↓
块级元素
独占一行的元素
行内元素
只占自己一小部分地方的元素
规则
- 块级元素中几乎什么都能写(块级元素,行级元素)
- 行内元素里能写行内元素 但不能写块级元素
- h1到h6不能嵌套
- p标签中不能写块级元素
marquee标签废除的原因
设计初衷是想要动画效果 但是如今已经有css可以实现动画效果 所以过时了
017_HTML常用的文本标签
- 用于包裹词汇 短语等
- 通常写在排版标签里面
- 排版标签更宏观(大段的文字),文本标签更微观(词汇,短语)[[]]
- 文本标签通常都是行内元素
常用的
- em 要着重阅读的内容 双标签
- strong 十分重要的内容(语气比em要强) 双标签
- span 没有语义,用于包裹短语的通用容器 双标签
018_HTML不常用的文本标签
- cite 作品标题 双
- dfn 特殊术语或专属名词 双
- del与ins 删除的文本与插入的文字 双
- sub与sup 下标文字与上标文字 双
- code 一段代码 双
- samp 从正常的上下午中,将某些内容提取出来,例如:标识设备输出 双
- kbd 键盘文本,表示文本是通过键盘输入的,经常在与计算机相关的手册中 双
- abbr 缩写,最好配合上title属性 双
- bdo 更改文本方向,要配合dir属性,可选值:ltr(默认值),rtl 双
- var 标记变量,可以与code标签一起使用 双
- small 附属细则,例如:包括版权,法律文本,——很少使用 双
- b 摘要中的关键字,评论中的产品名称——很少使用 双
- i 本意是:任务的思想活动,所说的话等等。现在多用于:呈现字体图标 双
- u 与正常内容有反差文本,例如:错的单词,不合适的描述等——很少使用 双
- q 短引用——很少使用 双
- blockquote 长引用——很少使用 双 块级元素
- address 地址信息 双 块级元素
- br 分行 单
- hr 分割线 单
HTML标签太多了! 记住重要的 语义感强的就行
019_HTML图片标签
基本使用
img 图片 单
常用属性
arc:图片路径
alt图片描述
width:图片宽度
height:图片高度
单位:px
尽量不同时修改图片宽高,可能会导致失真
alt属性作用:
- 搜索引擎通过alt属性,得知图片内容——最主要的作用
- 当图片无法显示的时候,有些浏览器会呈现alt属性的值
- 盲人阅读器会阅读alt属性的值
020_HTML相对路径与绝对路径
相对路径
写下程序不能随便改文件位置,否则位置发生变化,程序运行失败
./ 当前位置
上一级加 . ./
下一级加/
绝对路径
本地绝对路径(几乎不用)
最大特点:从盘符出发
盘符名后加“:”
最大缺点:不方便他人使用代码 不能换设备
网络绝对路径
网址对应的必须是一个图片
防盗链:不允许他人使用他的图片
整个界面快捷键
ctrl+shift+“+” 整个界面放大
021_常见图片格式
jpg格式:
- 概述:扩展名为.jpg或.jpeg,是一种有损的压缩格式(把肉眼不容易观察出来的细节丢弃了)。
- 主要特点:支持的颜色丰富、占用空间较小、不支持透明背景、不支持动态图.
- 使用场景:对图片细节没有极高要求的场景,例如:网站的产品宣传图等。–该格式网页中很常见。
png格式:
- 概述:扩展名为.png,是一种无损的压缩格式,能够更高质量的保存图片。
- 主要特点:支持的颜色丰富、占用空间略大、支持透明背景、不支持动态图。
- 使用场景:①想让图片有透明背景;②想更高质量的呈现图片;例如:公司logo图、重要配图等。
bmp格式:
- 概述:扩展名为.bmp,不进行压缩的一种格式,在最大程度上保留图片更多的细节。
- 主要特点:支持的颜色丰富、保留的细节更多、占用空间极大、不支持透明背景、不支持动态图。
- 使用场景:对图片细节要求极高的场景,例如:一些大型游戏中的图片。(网页中很少使用)
gif格式
- 概述:扩展名为.gif,仅支持256种颜色,色彩呈现不是很完整。
- 主要特点:支持的颜色较少、支持简单透明背景、支持动态图。
- 使用场景:网页中的动态图片。
webp格式
- 概述:扩展名为.webp,谷歌推出的一种格式,专门用来在网页中呈现图片。
- 主要特点:具备上述几种格式的优点,但兼容性不太好,一旦使用务必要解决兼容性问题。
- 使用场景:网页中的各种图片。
base64格式
- 1.本质:一串特殊的文本,要通过浏览器打开,传统看图应用通常无法打开。
- 2.原理:把图片进行base64编码,形成一串文本。
- 3.如何生成:靠一些工具或网站。
- 4.如何使用:直接作为img标签的src属性的值即可,并且不受文件位置的影响。
- 5.使用场景:一些较小的图片,或者需要和网页一起加载的图片。
022_超链接_跳转页面
主要作用:
从当前页面进行跳转
超链接基本知识
标签名
`
常用属性
href: 要跳转到的具体位置
target:跳转时如何打开页面,常用值如下;
_self:在本页签中打开
_blank:在新页签中打开
跳转到页面
<!-- 跳转其他网页-->
<a href="https://www.jd.com/" target="_blank">去京东</a>
<!--跳转本地网页-->
<a href="./10_HTML排版标签,html"target="_self">去看排版标签</a>
注意:
1.代码中的多个空格、多个回车,都会被浏览器解析成一个空格!
2.虽然a是行内元素,但a元素可以包裹除它自身外的任何元素!
023_超链接_跳转文件
跳转到文件
<!-- 浏览器能直接打开的文件-->
<a
href="./resource/自拍,jpg“>看自拍
</a>
<a href="./resource/小电影.mp4">看小电 影
</a>
<a href="./resource/小姐姐,gif">看小 姐姐
</a>
<a href="./resource/如何一夜暴富.pdf"> 点我一夜暴富
</a>
<!--浏览器不能打开的文件,会自动触发下载-->
<a
href="./resource/内部资源.zip">内部 资源
</a>
<!--强制触发下载-->
<a href="./resource/小电影.mp4" download="电影片段,mp4">下载小电影
</a>
注意1:若浏览器无法打开文件,则会引导用户下载。
注意2:若想强制触发下载,请使用download属性,属性值即为下载文件的名称。
024_超链接_跳转锚点
什么是锚点
网页中的标记点
具体使用方式
第一步:设置锚点
<!-- 第一种方式:a标签配合name属性-->
<a name="test1"></a>
<!-- 第二种方式:其他标签配合id属性-->
<h2 id="test2">我是一个位置</h2>
注意点:
- 具有href 属性的a标签是超链接,具有name属性的a标签是锚点。
- name和id都是区分大小写的,且id 最好别是数字开头。
第二步:跳转锚点
<!--跳转到test1锚点-->
<a href="#test1">去test1锚点</a>
<!-- 跳到本页面顶部 -->
<a href="#">回到顶部</a>
<!-- 跳转到其他页面锚点-->
<a href="demo.html#test1">去demo.html页面的test1锚点</a>
<!-- 刷新本页面-->
<a href="">刷新本页面</a>
<!-- 执行一段js,如果还不知道执行什么,可以留空,javascript:;-->
<a href="javascript:alert(1);">点我弹窗</a>
025_超链接_跳转锚点
通过a标签可以换起应用程序
<!-- 唤起设备拨号-->
<a href="tel:10010“>电话联系</a>
<!-- 唤起设备发送邮件-->
<a href="mailto:10@10@qq.com">邮件联系</a>
<!--唤起设备发送短信-->
<a href="sms:10086">短信联系</a>
026_超文本的真正含义
超文本:是一种组织信息的方式,通过超链接将不同空间的文字、图片、等各种信息组织在一起,能从当前阅读的内容,跳转到超链接所指向的内容。
内容:页面 文件 锚点 应用、
027_列表
有序列表(Ordered list) <ol>
无序列表(Unordered list) <ul>
自定义列表(Definition List) <dI>
- 有序
- 有序
- 无序
- 无序
028_列表_注意事项
有序列表
概念:有顺序或侧重顺序的列表
<h2>要把大象放冰箱总共分几步</h2>
<ol>
<li>把冰箱门打开</li>
<li>把大象放进去</li>
<li>把冰箱门关上</li>
</0l>
无序列表
概念:无顺序或不侧重顺序的列表
<h2>我想去的几个城市</h2>
<ul>
<li>成都</li>
<li>上海</li>
<li>西安</li>
<li>武汉</li>
</ul>
列表嵌套
概念:列表中的某项内容,又包含一个列表(注意:嵌套时,请务必把解构写完整)。
<h2>我想去的几个城市</h2>
<ul>
<li>成都</li>
<li>
<span>上海</span>
<ul>
<li>外滩</li>
<li>杜莎夫人蜡像馆</li>
<li><a href="https://www.opg.cn/">东方明珠 </a>
</li>
<li>迪士尼乐园</li>
</ul>
</li>
<li>西安</li>
<li>武汉</li>
</ul>
注意:li标签最好写在ul或ol中,不要单独使用。
自定义列表
1.概念:所谓自定义列表,就是一个包含术语名称以及术语描述的列表。
2.一个d1就是一个自定义列表,一个dt就是一个术语名称,一个dd就是术语描述(可以有多个)。
<h2>如何高效的学习?</h2>
<dl>
<dt>做好笔记</dt>
<dd>笔记是我们以后复习的一个抓手 </dd>
<dd>笔记可以是电子版,也可以是纸 质版</dd>
<dt>多加练习</dt>
<dd>只有敲出来的代码,才是自己的 </dd>
<dt>别怕出错</dt>
<dd>错很正常,改正后并记住,就是 经验</dd>
</dl>
029_表格_基本结构
结构
一个完整的表格由:表格标题 表格头部 表格主体 表格脚注 四部分组成
涉及到的标签
table:表格
caption:表格标题
thead:表格头部
tbody:表格主体
tfoot:表格脚注
tr:每一行
tr,td:每一个单元格(备注: 表格头部中用th,表格主体 表格脚注中用:td
030_表格_常用属性
table
表格 双标签
- width:设置表格宽度
- height:设置表格最小高度,表格最终高度可能比设置的值大
- border:设置表格边框的宽度
- cellspacing:设置单元格之间的间距
thead
表格头部 双标签
- height:设置表格头部高度
- align:设置单元格的水平对齐方式,可选值如下
- left 左对齐
- center 中间对齐
- eight 右边对齐
- valign:设置单元格的垂直对齐方式,可选值如下
- top 顶部对齐
- middle 中间对齐
- bottom 底部对齐
tbody
表格主体 双标签
常用属性与thead相同
tr
行 双标签
常用属性与thead相同
tfoot
表格脚注 双标签
常用属性与thead相同
td
普通单元格 双标签
- width:设置单元格的宽度,同列所有单元格全都受影响
- height:设置单元格的高度,同行所有单元格全都受影响
- align:设置单元格的水平对齐方式
- valign:设置单元格的垂直对齐方式
- rowspan:指定要跨的行数
- colspan:指定要跨的列数
th
表格单元格 双标签
常用属性与td相同
注意:
1.<table>
元素的border 属性可以控制表格边框,但border值的大小,并不控制单元格边框的宽度。
2.给某个th或td设置了宽度之后,他们所在的那一列的宽度就确定了。
3.给某个th或td设置了高度之后,他们所在的那一行的高度就确定了。
031_表格_跨行与跨列
- rowspan:指定要跨的行数
- colspan:指定要跨的列数
032_补充几个常用的标签
br:换行 单标签
hr:分隔 单标签
pre:按原文显示(一般用于在页面内嵌入大段代码)双标签
注意:
1.不要用<br>
来增加文本之间的行间隔,应使后面即将学到的CSS margin 属性。
2.<hr>
的语义是分隔,如果不想要语义,只是想画一条水平线,那么应当使用CSS完成。
033_表单_基础结构
form
表单 双标签
- acyion:用于指定表单的提交地址(需要与后端人员沟通后确定)
- target:用于控制表单提交后,如何打开页面 常用值如下
-self
:在窗口打开__blank
:在新窗口打开_
- method:用于控制表单的提交方式
input
输入框 单标签
- type:设置输入框的类型,目前用到的值是text,表示普通文本
- name:用于指定提交数据的名字,(需要与后端人员沟通后确定)
button
按钮 双标签
示例:
<form action="https://www.baidu.com/s"<input type="text" name="wd">
<button>去百度搜索</button>
034_表单_文本框与密码框
文本输入框
<input type="text">
常用属性如下:
- name:数据的名称
- value:输入框的默认输入值
- maxlength:输入框最大可输入长度
密码输入框
<input type="password">
常用属性如下:
- name数据的名称
- value:输入框的默认输入值(一般不用,无意义)
- maxlength:输入框最大可输入长度
单选框
<input type="radio" name="sex" value="female">女
<input type="radio" name="sex" value="male">男
常用属性如下:
- name 属性:数据的名称,注意:想要单选效果,多个radio的name属性值要保持一致。
- value 属性:提交的数据值。
- checked属性:让该单选按钮默认选中。
复选框
<input type="checkbox" name="hobby" value="smoke">吸烟
<input type="checkbox" name="hobby" value="drink">喝酒
<input type="checkbox" name="hobby" value="perm">烫头
常用属性如下:
- name 属性:数据的名称。
- value 属性:提交的数据值。
- checked 属性:让该复选框默认选中。
影藏域
<input type="hidfen" namr="tag" value="100">
- 用户不可见的一个输入区域,
- 作用是:提交表单的时候,携带一些固定的数据。
- name属性:指定数据的名称。
- value 属性:指定的是真正提交的数据。
提交按钮
<input type="submit"value="点我提交表单“>
<button>点我提交表单</button>
注意:
- button 标签type属性的默认值是submit。
- button 不要指定name 属性
- input 标签编写的按钮,使用value 属性指定按钮文字。
重置按钮
<input type="reset"
value=“点我重置“><button type="reset">点我重置</button>
注意:
- button 不要指定name 属性
- input 标签编写的按钮,使用value 属性指定按钮文字。
普通按钮
<input type="button"value="普通按钮”>
<button type="button">普通按钮</button>
注意点:
普通按钮的type值为button,若不写type值是submit会引起表单的提交。
文本域
<textarea name="msg" rows="22"
cols="3">我是文本域</textarea>
常用值如下:
- rows 属性:指定默认显示的行数,会影响文本域的高度。
- cols 属性:指定默认显示的列数,会影响文本域的宽度。
- 不能编写type属性,其他属性,与普通文本输入框一致。
下拉框
select name="from">
<option value="黑”>黑龙江</option> <option value="辽">辽宁</option><option value="吉">吉林</option><option value="粤"
selected>广东</option>
</select>
常用属性及注意事项:
- name 属性:指定数据的名称。
- option 标签设置value 属性,如果没有value属性,提交的数据是option中间的文字;如果设置了value 属性,提交的数据就是value的值(建议设置value属性)
- option 标签设置了selected 属性,表示默认选中
禁用表单控件
- 表单控件的标签设置disable既可禁用表单控件
- input tsextarea button select option都可以设置disable属性
label标签
label标签可与表单控件相关联,关联之后点击文字,与之对应的表单控件就会获取焦点。
两种与label关联方式如下:
- 让label标签的for 属性的值等于表单控件的id。
- 把表单控件套在labe1标签的里面。
fieldset 与legend 的使用
fieldset 可以为表单控件分组、legend标签是分组的标题。
<fieldset>
<legend>主要信息</legend>
<label for="zhanghu">账户:</label>
<input id="zhanghu" type="text" name="account" maxlength="10"><br>
<label>
密码:
<input id="mima" type="password" name="pwd" maxlength="6">
</label>
<br>
性别:
<input type="radio" name="gender" value="male" id="nan">
<label for="nan">男</label>
<label>
<input type="radio" name="gender"
</label>
</fieldset>
035_框架标签
iframe
双标签
功能和语义:框架(在网页中嵌入其他文件)
属性:
- name:框架名字 可以写target属性配合
- width:框架的宽
- height:框架的高度
- frameborder:是否显示边框 值:0或1
iframe 标签的实际应用:
- 在网页中嵌入广告。
- 与超链接或表单的target配合,展示不同的内容。
036_HTML实体
在HTML中我们可以用一种特殊的形式的内容,来表示某个符号,这种特殊形式的内容,就是HTML实体。比如小于号<用于定义HTML标签的开始。如果我们希望浏览器正确地显示这些字符,我们必须在HTML 源码中插入字符实体。
字符实体由三部分组成:一个&和一个实体名称(或者一个#和一个实体编号),最后加上一个分号;
常用字符实体总结
- 空格
 
- 小于号
< <
- 大于号
> >
- 和号
& &
- 元
¥ ¥
- 版权
© ©
- 乘号
× ×
- 除号
÷ ÷
037_HTML全局属性
常用的全局属性:
id
含义:
给标签指定唯一标识,注意:id是不能重复的。
作用:可以让label标签与表单控件相关联;也可以与CSS、JavaScript配合使用。
注意:不能在以下 HTML元素中使用:
<head>、<html>、<meta>、
<script>、<style>、<title>
class
含义:
给标签指定类名,随后通过CSS就可以给标签设置样式。
style
含义:
给标签设置css样式
dir
含义:
内容的方向,值:ltr、rtl。
注意:不能在以下 HTML元素中使用:
<head>、<html>、<meta>、
<script>、<style>、<title>。
title
含义:
给标签设置一个文字提示,一般超链接和图片用的比较多
lang
含义:
给标签指定语言,具体规范和可选值请参考【10.HTML设置语言】。
注意:不能在以下 HTML 元素中使用:
<head>、<html>、<meta>、
<script>、<style>、<title>
完整列表查看:MDN网站
038_meta元信息
举例
- 配置字符编码
<meta charset="utf-8">
- 针对IE浏览器的兼容性配置。
<meta http-equiv="X-UA-Compatible" content="IE=edge">
- 针对移动端的配置(移动端课程中会详细讲解)
<meta name="viewport" content="width=device-width, initial-scale=1.0">
- 配置网页关键字
<meta name="keywords"content="8-12个以英文逗号隔开的单词/词语“>
- 配置网页描述信息
<meta name="description" content="80字以内的一段话,与网站内容相关“>
- 针对搜索引擎爬虫配置:
<meta name="robots" content="此处可选值见下表">
- 配置网页作者:
<meta name="author" content="tony">
- 配置网页生成工具
<meta name="generator" content="Visual Studio Code">
- 配置定义网页版权信息:
<meta name="copyright"content="2023-2027e版权所有“>
- 配置网页自动刷新
<meta http-equiv="refresh" content="10;url=http://www.baidu.com">
index
允许搜索爬虫索引此页面
noindex
要求搜索爬虫不索引此页面
follow
允许搜索爬虫跟随此页面上的链接
nofollow
要求搜索爬虫不跟随此页面上的链接
all
与 index follow等价
none
与 noindex nofollow等价
noarchive
要求搜索引擎不缓存页面内容
nocache
noarchive的替代名称
040_CSS基础
- css 的全称为:层叠样式表(Cascading StyleSbeets)。
- css 也是一种标记语言,用于给HTML结构设置样式,例如:文字大小、颜色、元素宽高等。
- 简单理解:CSS可以美化HTML,让HTML 更漂亮。
- 核心思想:HTML 搭建结构,CSS 添加样式,实现了:结构与样式的分离。
041_CSS的编写位置
行内样式
- 写在标签的sryle属性中。(又称:内嵌样式)
- 语法:
<h1 style="color:red;font-size:60px;">欢迎来到尚硅谷学习</h1>
- 注意点:
- style 属性的值不能随便写,写要符合CSS 语法规范,是(名:值;)的形式。
- 行内样式表,只能控制当前标签的样式,对其他标签无效。
- 存在的问题:
书写繁琐、样式不能复用、并且没有体现:出结构与样式分离 的思想,不推荐大量使用,只有对当前元素添加简单样式时,才偶尔使用。
内部样式
- 写在html页面内部,将所有的css代码提取出来,单独放在
<style>
标签中。 - 语法:
<style>
h1 {
color: red;
font-size:40px;
}
</style>
- 注意点:
<style>
标签理论上可以放在HTML文档的任何地方,但一般都放在<head>
标签中。- 此种写法:样式可以复用、代码结构清晰。
- 存在的问题:
- 并没有实现:结构与样式完全分离。
- 多个HTML页面无法复用样式。
外部样式
- 写在单独的,css文件中,随后在HTML文件中引入使用。
- 语法:
- 新建一个扩展名为.css的样式文件,把所有CSS代码都放入此文件中。
h1{
color: red;
font-size: 40px;
}
- 在HTML文件中引入.css文件。
<link rel="stylesheet"
href=./xxx.css>
- 注意点:
<link>
标签要写在<head>
标签中。<link>
标签属性说明:
- href:引入的文档来自于哪里。
- rel:(relation:关系)说明引入的文档与当前文档之间的关系。
- 外部样式的优势:样式可以复用、结构清晰、可触发浏览器的缓存机制,提高访问速度,实现了结构与样式的完全分离。
- 实际开发中,几乎都使用外部样式,这是最推荐的使用方式!
042_样式表的优先级
- 优先级规则:行内样式>内部样式=外部样式
- 内部样式、外部样式,这二者的优先级相同,且:后面的会覆盖 前面的(简记:“后来者居上”)。
- 同一个样式表中,优先级也和编写顺序有关,且:后面的 会覆盖 前面的(简记:“后来者居上”)。
行内样式
优点: 优先级最高
缺点:
- 结构与样式未分离
- 代码结构混乱
- 样式不能复用
使用频率:很低
作用范围:当前标签
内部样式
优点:
- 样式可复用
- 代码结构清晰
缺点: - 结构与样式未彻底分离
- 样式不能多页面复用
使用频率:一般
作用范围:当前页面
外部样式
优点:
- 样式可多页面复用
- 代码结构清晰
- 可触发浏览器的缓存机制
- 结构与样式彻底分离
缺点:需要引入才能使用
使用频率:最高
作用范围:多个页面
043_CSS语法规范
css语法由两部分组成:
- 选择器:找到要添加样式的元素。
- 声明块:设置具体的样式(声明块是由一个或多个声明组成的),声明的格式为:属性名:属性值;
(备注1:最后一个声明后的分号理论上能省略,但最好还是写上。
备注2:选择器与声明块之间,属性名与属性值之间,均有一个空格,理论上能省略,但最好还是写上。) - 注释的写法:
/*给h1元素添加样式*/
h1{
/*设置文字颜色为红色 */
color: red;
/*设置文字大小为48px*/
font-size:40px
}
044_CSS代码风格
- 展开风格——开发时推荐,便于维护和调试
h1{
color: red;
font-size:40px;
}
- 紧凑风格——项目上线时推荐,可减小文件的体积。
h1{color:red;font-size:40px;}
备注:项目上线时,我们会通过工具将【展开风格】的代码,变成【紧凑风格】,这样可以减小文件体积,节约网络流量,同时也能让用户打开网页时速度更快。
045_CSS基本选择器
基本选择器包括:
- 通配选择器
- 元素选择器
- 类选择器
- id选择器
通配选择器
- 作用:可以选中所有的HTML元素。
- 语法:
*{
属性名:属性值;
}
- 举例:
*{
/*选中所有元素 */color: orange;
font-size:40px;
}
备注:目前来看通配选择器貌似有点鸡肋,但后面清除样式时,会对我们有很大帮助,后面会详细讲。
元素选择器
- 作用:为页面中 某种元素 统一设置样式。
- 语法:
标签名{
属性名:属性值;
}
- 举例:
/*选中所有h1元素*/
h1{
color:orange;
font-size: 40px;
}
/*选中所有p元素*/
p{
color:
blue;font-size:60px;
}
备注:元素选择器无法实现差异化设置,例如上面的代码中,所有的p元素效果都一样。
类选择器
- 作用:根据元素的class值,来选中某些元素。(class 翻译过来有:种类、类别的含义,所以class值,又称:类名。)
- 语法:
.类名{
属性名:属性值;
}
- 举例:
/*选中所有class值为speak的元素*/
.speak{
color: red;
}
/*选中所有class值为answer的元素*/
.answer {
color:blue;
}
- 注意点:
- 元素的class属性值不带,,但CSS的类选择器要带
- class值,是我们自定义的,按照标准:不要使用纯数字、不要使用中文、尽量使用英文与数字的组合,若由多个单词组成,使用一做连接,例如:left-menu,且命名要有意义,做到“见名知意”。
- 一个元素不能写多个class 属性,下面是错误示例:
<!--该写法错误,元素的属性不能重复,后写的会失效-->
<h1 class="speak"class="big">你好啊</h1>
- 一个元素的class属性,能写多个值,要用空格隔开,例如:
<!--该写法正确,class属性,能写多个值
<h1 class="speak big">你好啊</h1>
ID选择器
- 作用:根据元素的id属性值,来精准的选中某个元素。
- 语法:
#id值{
属性名:属性值;
}
- 举例:
/*选中id值为earthy的那个元素*/
#earthy{
color:red;
font-size: 60px;
}
- 注意:
- id属性值:尽量由字母、数字、下划线( _ )、短杠(-)组成,最好以字母开头、不要包含空格、区分大小写。
- 一个元素只能拥有一个id 属性,多个元素的id 属性值不能相同。
- 一个元素可以同时拥有id和class属性。
总结
- 通配选择器:选中所有标签,一般用于清除样式。
- 元素选择器:选中所有同种标签,但是不能差异化选择。
- 类选择器:选中所有特定类名(class值)的元素-—使用频率很高。
- ID选择器:选中特定id值的那个元素(唯一的)。
046_ 交集选择器
- 作用:选中同时符合多个条件的元素。(交集有并且的含义(通俗理解:即………又……的意思),例如:年轻且长得帅。)
- 语法:
选择器1选择器2选择器3…选择器n {}
- 举例:
/*选中:类名为beauty的p元素,为此种写法用的非常多!!!!*/
p.beauty{
color:blue;
}
/*选中:类名包含rich和beauty的元素
.rich.beauty {
color: green;
}
- 注意:
- 有标签名,标签名必须写在前面。
- id选择器、理论上可以作为交集的条件,但实际应用中几乎不用—-因为没有意义。
- 交集选择器中不可能出现两个元素选择器,因为一个元素,不可能即是p元素又是span元素。
- 用的最多的交集选择器是:元素选择器配合类名选择器,例如:p.beauty。
047_并集选择器
- 作用:选中多个选择器对应的元素,又称:分组选择器。(所谓并集就是或者的含义(通俗理解:要么……要么……的意思),例如:给我转10万块钱或者我报警。)
- 语法:
选择器1,选择器2,选择器3,…选择器n {}
(多个选择器通过,连接,此处,的含义就是:或。) - 举例:
/*选中id为peiqi,或类名为rich,或类名为beauty的元素 */
#peiqi,
.rich,
.beauty {
font-size: 40px:
background-color: skyblue;
width:200px;
}
- 注意:
- 并集选择器,我们一般竖着写。
- 任何形式的选择器,都可以作为并集选择器的一部分。
- 并集选择器,通常用于集体声明,可以缩小样式表体积。
048_元素辈分关系
- 父元素:
包裹某个元素的元素,就是该元素的父元素。 - 子元素:
被父元素包含的元素(简记:儿子元素)。 - 祖先元素:
父亲的父亲….,一直往外找,都是祖先。
(备注:父元素,也算是祖先元素的一种。
例如:张三的父亲,也算是张三的祖先,但一般还是称呼:父亲。) - 后代元素:儿子的儿子…,一直往里找,都是后代。
(备注:子元素,也算是后代元素的一种。
例如:张三的儿子,也算是张三的后代,但一般还是称呼:儿子。) - 兄弟元素:具有相同父元素的元素,互为兄弟元素。
049_后代选择器
- 作用:选中指定元素中,符合要求的后代元素。
- ·语法:
选择器1 选择器2 选择器3 …… 选择器n {}
(选择器之间,用空格隔开,空格可以理解为:“xxx中的”,其实就是后代的意思。
选择器1234…n,可以是我们之前学的任何一种选择器。) - 举例:
/* 选中ul中的所有li*/
ul li{
color:red;
}
/*选中ul中所有11中的a*/
ul l1 a{
color:orange:
}
/*选中类名为subject元素中的所有li*/
.subject li {
color:blue;
}
/* 选中类名为subject元素中的所有类名为front-end的li*/
.subject li.front-end {
color: blue;
}
- 注意:
- 后代选择器,最终选择的是后代,不选中祖先。
- 儿子、孙子、重孙子,都算是后代。
- 结构一定要符合之前讲的 HTML 嵌套要求,例如:不能p中写h1~h6。
050_子代选择器
- 作用:选中指定元素中,符合要求的子元素(儿子元素)。(先写父,再写子)
(子代选择器又称:子元素选择器、子选择器。) - 语法:
选择器1>选择器2>选择器3>……选择器n {}
(选择器之间,用>隔开,>可以理解为:”xxx的子代",其实就是儿子的意思。选择器1234…n,可以是我们之前学的任何一种选择器。) - 举例:
/* div中的子代a元素 */
div>a {
color: red;
}
/*类名为person的元素中的子代a元素*/
.persons>a {
color:red;
}
- 注意:
- 子代选择器,最终选择的是子代,不是父级。
- 子、孙子、重孙子、重重孙子 …… 统称后代!子就是指儿子.
051_兄弟选择器
相邻兄弟选择器
- 作用:选中指定元素后,符合条件的相邻兄弟元素。(所谓相邻,就是紧挨着他的下一个,简记:睡在我下铺的兄弟。)
- 语法:
选择器1+选择器2 {}
- 示例:
/* 选中div后相邻的兄弟p元素 */
div+p{
color:red;
}
通用兄弟选择器
- 作用:选中指定元素后,符合条件的所有兄弟元素。(简记:睡在我下铺的所有兄弟)
- 语法:
选择器1~选择器2 {}
- 示例:
/*选中div后的所有的兄弟p元素 */
div~p{
color:red;
}
- 注意:两种兄弟选择器,选择的是下面的兄弟。
052_属性选择器
- 作用:选中属性值符合一定要求的元素。
- 语法:
- [属性名]选中具有某个属性的元素。
- [属性名=“值”] 选中包含某个属性,且属性值等于指定值的元素。
- [属性名^="值”] 选中包含某个属性,且属性值以指定的值开头的元素。
- [属性名$=“值”]选中包含某个属性,且属值以指定的值结尾的元素。
- [属性名*=“值”]选择包含某个属性,属性值包含
- 举例:
/*选中具有title属性的元素*/
div[title]{color:red; }
/*选中title属性值为atguigu的元素 */
div[title="atguigu"]{color:red;}
/*选中title属性值以a开头的元素*/
div[title^="a"]{color:red;}
/*选中title属性值以u结尾的元素 */
div[titleS="u"]{color:red; }
/*选中title属性值包含g的元素 */
div[title*="g"]{color:red;}
053_伪类选择器
- 作用:选中特殊状态的元素。
- 如何理解“伪”——虚假的,不是真的。
- 如何理解“伪类”?——像类(class),但不是类,是元素的一种特殊状态。
常用的伪类选择器
动态伪类
- :link 超链接未被访问的状态
- :visited 超链接访问过的状态
- :hover 鼠标悬停在元素上的状态
- :active 元素激活的状态
(什么是激活?—-按下鼠标不松开。
注意点:遵循LVHA 的顺序,即:1ink、visited、hover、active) - :focus 获取焦点的元素
(表单类元素才能使用:focus伪类。
当用户:点击元素、触摸元素、或通过键盘的“tab”键等方式,选择元素时,就是获得焦点。)
结构伪类
常用的
- :first-child 所有兄弟元素中的第一个
- :last-child 所有兄弟元素中的最后一个
- :nth-child(n) 所有兄弟元素中的第n个
- :first-of/type 所有同类型兄弟元素中的第一个
- :last-of-type 所有同类型兄弟元素中的最后一个
- :nth-of-type(n) 所有同类型兄弟元素中的第n个
- 关于n的值:
- 0或不写:什么都选不中——几乎不用。
- n:选中所有子元素——几乎不用。
- 1~正无穷的整数:选中对应序号的子元素。
- 2n或even:选中序号为偶数的子元素。
- 2n+1或odd:选中序号为奇数的子元素。
- -n+3:选中的是前3个。
了解即可
- :nth-last-child(n) 所有兄弟元素中的倒数第n个
- :nth-last-of-type(n)所有同类型兄弟元素中的倒数第n个
- :only-child 选择没有兄弟的元素(独生子女)
- :only-of-type 选择没有同类型兄弟的元素
- :root 根元素
- :empty 内容为空元素(空格也算元素)
否定伪类
:int(选择器) 排除满足括号条件中的元素
UI伪类
- :checked 被选中的复选框或单选按钮
- :enable 可用的表单元素(没有disabled属性)
- :disable 不可用的表单元素(有disabled属性)
目标伪类(了解)
:target 选中锚点指向的元素
语言伪类(了解)
:lang() 根据指定的语言选择元素(本质是看lang属性的值)
054_伪元素选择器
- 作用:选中元素中的一些特殊位置
- 常用伪元素:
- ::first-letter 选中元素中的第一个文字
- ::first-line 选中元素中的第一行文字
- ::selection 选中被鼠标选中的内容
- ::placeholder 选中输入框中的提示文字
- ::before 在元素最开始的位置,创建一个子元素(必须用content属性指定内容)
- ::after 在元素最后的位置,创建一个子元素(必须用content属性指定内容)
055_选择器的优先级
通过不同的选择器,选中相同的元素,并且为相同的样式名设置不同的值时,就发生了样式的冲突。
到底应用哪个样式,此时就需要看优先级了。
简单描述:
行内样式>ID选择器>类选择器>元素选择器>通配选择器>继承过来的属性
详细描述
1. 计算方式:每个选择器,都可计算出一组权重,格式为:(a,b,c)
- a:1D选择器的个数。
- b:类、伪类、属性选择器的个数。
- c:元素、伪元素 选择器的个数。
例如:
ul>li
(0,0,2)
div ul>li p a span
(0,0,6)
#atguigu .slogan
(1,1,0)
#atguigu .slogan a
(1,1,1)
#atguigu .slogan a:hover
(1,2,1)
2. 比较规则
按照从左到右的顺序,依次比较大小,当前位胜出后,后面的不再对比,
例如:
- (1,0,0)>(0,2,2)
- (1,1,0)>(1,0,2)
- (1,1,3)>(1,1,2)
特殊规则
- 行内样式权重大于所有选择器。
- !important的权重,大于行内样式,大于所有选择器,权重最高!
056_CSS三大特性
层属性
- 概念:如果发生了样式冲突,那就会根据一定的规则(选择器优先级),进行样式的层叠(覆盖)。
- 什么是样式冲突?——元素的同一个样式名,被设置了不同的值,这就是冲突。
继承性
- 概念:元素会自动拥有其父元素、或其祖先元素上所设置的某些样式。
- 规则:优先继承离得近的。
- 常见的可继承属性: text-??,font-??,line-??,color…
- 备注:参照MDN网站 可查询属性是否可被继承
优先级
- 简单聊:
!important >行内样式 >ID选择器 >类选择器 >元素选择器 >*>继承的样式。 - 详细聊:需要计算权重。
计算权重时需要注意:并集选择器的每一个部分是分开算的!
057_颜色的表示
方式一:颜色名
- 编写方式:直接使用颜色对应的英文单词,编写比较简单,例如:
-
红色:red
-
绿色:green
-
蓝色:blue
-
紫色:purple
-
橙色:orange
-
灰色:gray
- 颜色名这种方式,表达的颜色比较单一,所以用的并不多。
- 具体颜色名参考MDN官方文档:
https://developer.mozilla.org/en-US/docs/Web/CSS/named-color
方式二:rgb或rgba
- 编写方式:使用 红、黄、蓝 这三种光的三原色进行组合。
- r表示 红色
- g表示 绿色
- b表示 蓝色
- a表示 透明度
- 举例:
/*使用 0~255之间的数字表示一种颜色*/
color:rgb(255,0,0);/*红色*/
color:rgb(0,255,0);/*绿*/
color:rgb(0,0,255);/*蓝色*/
color:rgb(0,0,0);/*黑色*/
color: rgb(255,255,255);/* 白色 */
/*混合出任意一种颜色 */
color:rgb(138,43,226)/*紫罗兰色 */
color:rgba(255,0,0,0.5);/*半透明的红色 */
/*也可以使用百分比表示一种颜色(用的少)*/
color:rgb(100%,0%,0%);/*红色 */
color:rgba(100%,0%,0%,50%);/*半透明的红色 *
- 小规律:
- 若三种颜色值相同,呈现的是灰色,值越大,灰色越浅。
- rgb(0,0,0)是黑色,rgb(255,255,255)是白色。
- 对于rbga来说,前三位的rgb形式要保持一致,要么都是0~255的数字,要么都是百分比。
方式三:HEX或HEXA
HEX的原理同与rgb一样,依然是通过:红、绿、蓝色 进行组合,只不过要用6个数字,分成3组 来表达
- 格式为:#rrggbb
(每一位数字的取值范围是:0~f,所以每一种光的最小值是:00,最大值是:ff)
color:#ff0000;/*红色 */
color:#00ff0O;/*绿色 */
color:#0000ff;/*蓝色 */
color:#000000;/*黑色 */
color:#ffffff;/*白色*/
/*如果每种颜色的两位都是相同的,就可以简写*/
color:#ff9988;/*可简为:#f98 */
/*但要注意前三位简写了,那么透明度就也要简写*/
color:#ff998866;/*可简为:#f986 */
- 注意点:IE浏览器不支持HEXA,但支持HEX。
方式四:HSL或HSLA
- HSL是通过:色相、饱和度、亮度,来表示一个颜色的,格式为:hsl(色相,饱和度,亮度)
- 色相:取值范围是0~360度,具体度数对应的颜色上网搜(从红色开始顺时针转)
- 饱和度:取值范围是0%~100%。(向色相中对应颜色中添加灰色,0%全灰,100%没有灰)
- 亮度:取值范围是0%~100%。(0%亮度没了,所以就是黑色。100%亮度太强,所以就是白色了)
- HSLA其实就是在HSL的基础上,添加了透明度。
058_CSS字体属性
字体大小
- 属性名:font-size
- 语法:
div{
font-size
font-size:40px;
}
- 注意点:
- Chrome 浏览器支持的最小文字为12px,默认的文字大小为16px,并且0px会自动消失。
- 不同浏览器默认的字体大小可能不一致,所以最好给一个明确的值,不要用默认大小。
- 通常以给body 设置font-size属性,这样body中的其他元素就都可以继承了。
- 可借助控制台查看样式
字体族
- 属性名:font-family
- 语法:
div{
font-family: "STCaiyun","Microsoft YaHei",sans-serif
}
- 注意:
- 使用字体的英文名字兼容性会更好,具体的英文名可以自行查询,或在电脑的设置里去寻找。
- 如果字体名包含空格,必须使用引号包裹起来。
- 可以设置多个字体,按照从左到右的顺序逐个查找,找到就用,没有找到就使用后面的,且通常在最后写上serif(衬线字体)或sans-serif(非衬线字体)
- windows 系统中,默认的字体就是微软雅黑。
059_字体
字体风格
- 属性名:font-style
- 常用值:
- normal:正常(默认值)
- italic:斜体( 推荐 使用字体自带的斜体效果)
- oblique:斜体(强制倾斜产生的斜体效果)
- 语法:
div {
font-style:italic;
}
字体粗细
- 属性名:font-weight
- 常用值:
- 关键词
- lighter: 细
- normal: 正常
- bold: 粗
- bolder: 很粗 (多数字体不支持)
- 数值
- 100~1000旦无单位,数值越大,字体越粗(或一样粗,具体得看字体设计时的精确程度)。
- 100300等同于lighter,400500等同于normal,600及以上等同于bold。
- 语法:
div{
font-weight: bold;
}
div{
font-weight:600;
}
字体的复合写法
- 属性名:font,可以把上述字体合并成一个属性
- 编写规则:
- 字体大小、字体族必须都写上。
- 字体族必须是最后一位、字体大小必须是倒数第二位。
- 各个属性间用空格隔开。
- 实际开发中更推荐复合写法,但这也不是绝对的,比如只想设置字体大小,那就直接用font-size属性。
060_文本
文本颜色
- 属性名:color
- 可选值:
- 颜色名
- rgb&rgba(常用)
- HEX&HEXA(十六进制)(常用)
- HSL&HSLA
- 举例:
div {
color:rgb(112,45,78);
}
文本间距
- 字母间距:letter-spacing
- 单词间距:word-spacing(通过空格识别词)
- 属性值为像素(px),正值让间距增大,负值让间距缩小
文本修饰
- 属性名:text-decoration
- 可选值:
- none:无装饰线(常用)
- underline:下划线(常用)
- overline:上划线
- line-through:删除线
可搭配如下值使用: - dotted:虚线
- wavy:波浪线
- 也可以指定颜色
- 举例:
a {
text-decoration:none;
}
文本缩进
- 属性名:text-indent
- 属性值:css中的长度单位 例如:px
- 举例:
div {
text-indent:40px;
}
文本对齐_水平
- 属性名:text-align
- 常用值:
- left:左对齐(默认值)
- right:右对齐
- center:居中对齐
- 举例:
div {
text-align:center;
}
行高
- 属性值:line-height
- 可选值:
- normal:由浏览器根据文字大小决定的一个默认值
- 像素(px)
- 数字:参考自身font-size的倍数(很常用)
- 百分比:参考自身font-size的百分比
- 备注:由于字体设计问题,文字在一行中,并不是绝对垂直居中,若一行中都是文字,不会太影响观感
- 举例:
div {
line-height:60px;
line-height: 1.5;
line-height:150%;
}
- 行高注意事项:
- line-height过小会怎样?—-文字产生重叠,且最小值是0,不能为负数。
- line-height是可以继承的,且为了能更好的呈现文字,最好写数值。
- line-height和height是什么关系?
- 设置了height,那么高度就是height的值。
- 不设置height的时候,会根据line-height计算高度。
- 应用场景:
- 对于多行文字:控制行与行之间的距离。
- 对于单行文字:让height等于line-height,可以实现文字垂直居中。
- 备注:
由于字体设计原因,靠上述办法实现的居中,并不是绝对的垂直居中,但如果一行中都是文字,不会太影响观感。
文本对齐_垂直
- 顶部:无需任何属性,在垂直方向上,默认就是顶部对齐。
- 居中:对于单行文字,让height=line-height即可。
- 问题:多行文字垂直居中怎么办?—- 后面我们用定位去做。
- 底部:对于单行文字,目前一个临时的方式:让line-height =(height x2)-font-size-x。
- 备注:×是根据字体族,动态决定的一个值。
- 问题:垂直方向上的底部对齐,更好的解决办法是什么?—-后面我们用定位去做。
vertical-align
- 属性名:vertical-align
- 作用:用于指定同一行元素之间,或表格单元格内文字垂直对齐方式
- 常用值:
- baseline(默认值):使元素的基线与父元素的基线对齐。
- top:使元素的顶部与其所在行的顶部对齐。
- middle:使元素的中部与父元素的基线加上父元素字母×的一半对齐。
- bottom:使元素的底部与其所在行的底部对齐。
- 特别注意:vertical-align不能控制块元素。
061_细说font-size
- 由于字体设计原因,文字最终呈现的大小,并不一定与font-size的值一致,可能大,也可能小。
- 例如:font-size设为40px,最终呈现的文字,可能比40px大,也可能比40px小。
- 通常情况下,文字相对字体设计框,并不是垂直居中的,通常都靠下一些。
062_CSS列表属性
列表相关属性,可以作用在ul,ol,li元素上
list-style-type
- 功能:设置列表符号
- 常用值:
- none:不显示前面的标识(很常用!)
- square:实心方块
- disc:圆形
- decimal:数字
- lower-roman:小写罗马字
- upper-roman:大写罗马字
- lower-alpha:小写字母
- upper-alpha:大写字母
list-style-position
- 功能:设置列表符号的位置
- 常用值:
- inside:在li的里面
- outside:在li的外面
list-sryle-image
- 功能:自定义列表符号
- 属性值:
- url(图片地址)
list-style
- 功能:符合属性
- 属性值:
- 没有数量、顺序的要求
063_CSS表格属性
1.边框相关属性(其他元素也能用):
border-width
- 功能:边框宽度
- 属性值:CSS中可用的长度值
border-color
- 功能:边框颜色
- 属性值:CSS中可用的颜色值
border-style
- 功能:边框风格
- 属性值:
- none 默认值
- solid 实线
- dashed 虚线
- dotted 点线
- double 双实线
border
- 功能:边框复合属性
- 属性值:没有数量、顺序要求
注意:
- 以上4个边框相关的属性,其他元素也可以用,这是我们第一次遇见它们。
- 在后面的盒子模型中,我们会详细讲解边框相关的知识。
2.表格独有属性(只有table标签才能使用):
table-layout
- 功能:设置列宽度
- 属性值:
- auto:自动,列表根据内容计算(默认值)
- fixed:固定列宽,平均分
border-spacing
- 功能:单元格间距
- 属性值:
- CSS中可用的长度值
- 生效的前提:单元格边框不能合并
border-collapse
- 功能:合并单元格边框
- 属性值:
- collapse:合并
- separate:不合并
empty-cells
- 功能:影藏没有内容的单元格
- 属性值:
- show:显示(默认值)
- hide:影藏
- 生效前提:单元格不能合并
caption-side
- 功能:设置表格标题位置
- 属性值:
- top:上面(默认值)
- bottom:在表格下面
注意:
以上五个属性,只有表格才能使用,即:<table>
标签
064_CSS背景属性
background-color
- 功能:设置背景颜色
- 属性值:
- 符合CSS中颜色规范的值。
- 默认背景颜色是transparent。
background-image
- 功能:设置背景图片
- 属性值:
- url(图片的地址)
background-repeat
- 功能:设置背景重复方式
- 属性值:
- repeat:重复,铺满整个元素,默认值。
- repeat-x:只在水平方向重复。
- repeat-y:只在垂直方向重复。
- no-repeat:不重复。
background-position
- 功能:设置背景图位置
- 属性值:
- 通过关键字设置位置:
写两个值,用空格隔开
水平:left、center、right
垂直:top、center、bottom
如果只写一个值,另一个方向的值取center - 通过长度指定坐标位置:
以元素左上角,为坐标原点,设置图片左上角的位置。
两个值,分别是×坐标和y坐标。
只写一个值,会被当做×坐标,y坐标取center
- 通过关键字设置位置:
background
- 功能:复合属性
- 属性值:
- 没有数量和顺序要求
065_CSS鼠标属性
cursor
- 功能:设置鼠标光标的样式
- 属性值:
- pointer:小手
- move:移动图标
- text:文字选择器
- crosshair:十字架
- wait:等待
- help:帮助
扩展:自定义鼠标图标
/*自定义鼠标光标 */
cursor: url("./arrow.png"),pointer;
066_CSS盒子模型
1.CSS长度单位
- px:像素
- em:相对font-size的倍数
- rem:相对根字体大小,html标签就是根
- %:相对父元素计算
- 注意:CSS中设置长度,必须加单位,否则样式无效!
2.元素的显示模式
块元素(block)
- 又称:块级元素
- 特点:
- 1.在页面中独占一行,不会与任何元素共用一行,是从上到下排列的。
- 默认宽度:撑满父元素。
- 默认高度:由内容撑开。
- 可以通过CSS设置宽高。
行内元素(inline)
- 又称:内联元素
- 特点:
- 在页面中不独占一行,一行中不能容纳下的行内元素,会在下一行继续从左到右排列。
- 默认宽度:由内容撑开。
- 默认高度:由内容撑开。
- 无法通过CSS设置宽高。
行内块元素(inline-block)
- 又称:内联块元素
- 特点:
- 1.在页面中不独占一行,一行中不能容纳下的行内元素,会在下一行继续从左到右排列。
- 默认宽度:由内容撑开。
- 默认高度:由内容撑开。
- 可以通过CSS设置宽高。
注意:元素早期只分为:行内元素、块级元素,区分条件也只有一条:“是否独占一行”,如果按照这种分类方式,行内块元素应该算作行内元素。
3.总结各元素的显示模式
块元素(block)
- 主题结构标签:
<html>,<body>
- 排版标签:
<h1>-<h6>,<hr>,<p>,<pre>,<div>
- 列表标签:
<ul>,<ol>,<li>,<dl>,<dt>,<dd>
- 表格相关标签:
<table>,<tbody>,<thead>,<tr>,<caption>
<form>
与<option>
行内元素(inline)
- 文本标签:
<br>,<em>,<strong>,<sub>,<del>,<ins>
<a>
与<label>
行内块元素(inline-block)
- 图片:
<img>
- 单元格:
<td>,<th>
- 表单控件:
<input>,<textarea>,<select>,<button>
- 框架标签:
<iframe>
4.修改元素显示模式
通过CSS中的display属性可以修改元素的默认显示效果,常用值如下:
none
- 描述:元素会被隐藏
block
- 描述:元素会被作为块级元素展示
inline
- 描述:元素会被作为行内(内联)元素展示
inline-block
- 描述:元素会被作为行内块元素展示
5.盒子模型的组成
- CSS会把所有的HTML元素都看做一个盒子,所有的样式也都基于这个盒子
- margin(外边距):盒子与外界的蹈离。
- border(边框):盒子的边框。
- padding(内边距):紧贴内容的补白区域。
- content(内容):元素中的文本或后代元素都是它的内容
- 盒子的大小=content+左右padding+左右border
- 注意:外边距margin不会影响盒子的大小,但会影响盒子的位置
6.盒子的内容区(content)
width
- 功能:设置内容区域宽度
max-width
- 功能:设置内容区域的最大宽度
min-width
- 功能:设置内容区域的最小宽度
height
- 功能:设置内容区域的高度
max-height
- 功能:设置内容区域的最大高度
min-height
- 功能:设置内容区域的最小高度
注意:
- max-width、min-width 一般不与width一起使用。
- max-height、min-height 一般不与height—起使用。
7.关于默认宽度
- 所谓的默认宽度,就是不设置width属性时,元素所呈现出来的宽度。
- 总宽度=父的content -自身的左右margin。
- 内容区的宽度=父的content -自身的左右margin -自身的左右border -自身的左右padding。
8.盒子内边距(padding)
padding-top
- 功能:上内边距
- 属性值:长度
padding-right
- 功能:右内边距
- 属性值:长度
padding-bottom
- 功能:下内边距
- 属性值:长度
padding-left
- 功能:左内边距
- 属性值:长度
padding
- 功能:复合属性
- 属性值:长度
padding复合属性的使用规则:
- padding:18px;四个方向内边距都是10p×。
- padding: 10px 20px;上10p×,左右20px。(上下、左右)
- padding:10px20px30px;上10px,左右20px,下30px。(上、左右、下)
- padding:10px20px30px40px;上18px,右28px,下38px,左48px。(上、右、下、左)
注意点:
- padding的值不能为负数。
- 行内元素的左右内边距是没问题的,上下内边距不能完美的设置。
- 块级元素、行内块元素,四个方向内边距都可以完美设置。
9.盒子的边框(border)
border-style
- 功能:边框线风格 复合了四个方向的边框风格
- 属性值:
- none 默认值
- solid 实线
- dashed 虚线
- dotted 点线
- double 双实线
- …
border-width
- 功能:边框线宽度 复合了四个方向的边框宽度
- 属性值:长度,默认3px
border-color
- 功能:边框线颜色 复合了四个方向的边框颜色
- 属性值:颜色,默认黑色
border
- 功能:复合属性
- 属性值:值没有顺序和数量的要求
分别设置各个方向的边框
属性值同上
- border-left
- border-left-style
- border-left-width
- border-left-color
- border-right
- border-right-style
- border-right-width
- border-right-color
- border-bottom
- border-bottom-style
- border-bottom-width
- border-bottom-color
注意:
- 边框相关属性共20个。
- border-style、border-width、border-color其实也是复合属性。
10.盒子外边距(margin)
margin-left
- 功能:左外边距
- 属性值:CSS中的长度值
margin-right
- 功能:右外边距
- 属性值:CSS中的长度值
margin-top
- 功能:上外边距
- 属性值:CSS中的长度值
margin-bottom
- 功能:下外边距
- 属性值:CSS中的长度值
margin
- 功能:复合属性,可以写1~4个值,规律同padding(顺时针)(上右下左)
- 属性值:CSS中的长度值
10.1 margin注意事项
- 子元素的margin,是参考父元素的content计算的。(因为是父亲的content中承装着子元素)
- 上margin、左margin:影响自己的位置;下margin、右margin:影响后面兄弟元素的位置。
- 块级元素、行内块元素,均可以完美地设置四个方向的margin;但行内元素,左右margin可以完美设置,上下margin设置无效。
- margin的值也可以是auto,如果给一个块级元素设置左右margin都为auto,该块级元素会在父元素中水平居中。
- margin的值可以是负值。
10.2 margin塌陷问题
- 什么是margin 塌陷?
- 第一个子元素的上margin会作用在父元素上,最后一个子元素的下margin会作用在父元素上。
- 如何解决margin塌陷?
- 方案一:给父元素设置不为0的padding。
- 方案二:给父元素设置宽度不为0的border。
- 方案三:给父元素设置css样式overflow:hidden
10.3 margin合并问题
- 什么是margin合并?
- 上面兄弟元素的下外边距和下面兄弟元素的上外边距会合并,取一个最大的值,而不是相加。
- 如何解决margin 塌陷?
- 无需解决,布局的时候上下的兄弟元素,只给一个设置上下外边距就可以了。
11.处理内容溢出
overflow
- 功能:溢出内容的处理方式
- 属性值:
- visible:显示,默认值
- hidden:隐藏
- scroll:显示滚动条,不论内容是否溢出
- auto:自动显示滚动条,内容不溢出不显示
overflow-x
- 功能:水平方向溢出内容的处理方式
- 属性值:同overflow
overflow-y
- 功能:垂直方向溢出内容的处理方式
- 属性值:同overflow
注意:
- overflow-x、overflow-y不能一个是hidden,一个是visible,是实验性属性,不建议使用。
- overflow 常用的值是hidden和auto,除了能处理溢出的显示方式,还可以解决很多疑难杂症。
12.隐藏元素的方式
方式一:visibility属性:
visibility 属性默认值是show,如果设置为hidden,元素会隐藏。
元素看不见了,还占有原来的位置(元素的大小依然保持)。
方式二:display属性:
设置display:none,就可以让元素隐藏。
彻底地隐藏,不但看不见,也不占用任何位置,没有大小宽高。
13.样式的继承
- 有些样式会继承,元素如果本身设置了某个样式,就使用本身设置的样式;但如果本身没有设置某个样式,会从父元素开始一级一级继承(优先继承离得近的祖先元素)。
会继承的css属性
- 字体属性、文本属性(除了vertical-align)、文字颜色等。
不会继承的css属性
- 边框、背景、内边距、外边距、宽高、溢出方式等。
一个规律:
- 能继承的属性,都是不影响布局的,简单说:都是和盒子模型没关系的。
14.默认样式
- 元素一般都些默认的样式,例如:
<a>
元素:下划线、字体颜色、鼠标小手。<h1>~<h6>
元素:文字加粗、文字大小、上下外边距。<p>
元素:上下外边距<ul>
、<ol>
元素:左内边距- body元素:8px外边距(4个方向)
- 优先级:元素的默认样式>继承的样式,所以如果要重置元素的默认样式,选择器一定要直接选择器到该元素。
15.布局小技巧
- 行内元素、行内块元素,可以被父元素当做文本处理。
- 即:可以像处理文本对齐一样,去处理:行内、行内块在父元素中的对齐。
- 例如:text-align、line-height、text-indent等。
- 如何让子元素,在父亲中 水平居中:
- 若子元素为块元素,给父元素加上:margin:0 auto;
- 若子元素为行内元素、行内块元素,给父元素加上:text-align:center
- 如何让子元素,在父亲中 垂直居中:
- 若子元素为块元素,给子元素加上:margin-top,值为:(父元素content-子元素盒子总高)/2
- 若子元素为行内元素、行内块元素:
- 让父元素的height = line-height,每个子元素都加上:vertical-align:middle;
- 补充:若想绝对垂直居中,父元素font-size设置为0。
16.元素之间的空白问题
- 产生的原因:
- 行内元素、行内块元素,彼此之间的换行会被浏览器解析为一个空白字符。
- 解决方案:
- 方案一:去掉换行和空格(不推荐)。
- 方案二:给父元素设置font-size:0,再给需要显示文字的元素,单独设置字体大小(推荐)
17.行内块的幽灵空白问题
- 产生原因:
- 行内块元素与文本的基线对齐,而文本的基线与文本最底端之间是有一定距离的。
- 解决方案:
- 方案一:给行行内块设置vertical,值不为 baseline 即可,设置为middel、bottom、top均可。
- 方案二:若父元素中只有一张图片,设置图片为display:block。
- 方案三:给父元素设置font-size:0。如果该行内块内部还有文本,则需单独设置font-size。
067_浮动
1.浮动的简介
- 在最初,浮动是用来实现文字环绕图片效果的,现在浮动是主流的页面布局方式之一。
2.元素浮动后的特点
- 脱离文档流
- 不管浮动前是什么元素,浮动后:默认宽与高都是被内容撑开(尽可能小),而且可以设置宽高。
- 不会独占一行,可以与其他元素共用一行。
- 不会margin合并,也不会margin塌陷,能够完美的设置四个方向的margin和padding。
- 不会像行内块一样被当做文本处理(没有行内块的空白问题)。