HTML+CSS的学习笔记
使用的工具——vscode
文档类型声明标签——<!DOCTYPE>文档类型声明,作用就是告诉浏览器使用哪个HTML版本来显示网页,它本身不属于HTML标签
lang语言种类——用来定义当前文档显示的语言
en定义语言为英语
zh-CN定义语言为中文
简单来说定义为en就是英文网页,定义为zh-CN就是中文网页
字符集——(Character set)是多个字符的集合,以便计算机能够识别和存储各种文字,在charset属性来规定HTML文档应该使用哪种字符编码
charset常用的值有——GB2312、BIG5、GBK和UTF-8,其中UTF-8也被称为万国码,基本包含了世界所有国家需要用到的字符
上面的语法是必须要写的代码,否则可能引起乱码的情况,一般情况下,统一使用UTF-8编码,尽量统一写成标准的UTF-8,不要写成utf-8或者UTF8等模样
1//文档类型声明2<html lang="en">//定义网页语言3<head>4 <meta charset="UTF-8">//字符集定义了使用万国码5 <meta http-equiv="X-UA-Compatible" content="IE=edge">6 <meta name="viewport" content="width=device-width, initial-scale=1.0">7 <title>Document</title>8</head>9<body>10 11</body>12</html>语义化
语义化(SEO):了搜索引擎优化,为了浏览器理解网页
可替换元素和非可替换元素
大部分元素,页面上显示的结果,取决于元素内容,称为“非可替换元素”。例如:div、p、span等,写什么显示什么。
少部分元素,页面上显示的结果,取决于元素属性,称为“可替换元素”。例如:img、video、audio等,引用其他值进行进行显示。
绝大部分可替换元素均为行盒,不会独占一行。在行盒中,可替换元素是一个特例,可以设置宽高。
例如
在img中,有object-fit属性(默认值为fill)
object-fit:contain;保持图片的比例,同时不能将某些部分隐藏;因此可能会导致某些区域显示空白。
object-fit:cover;保持图片比例,必须将图片填充满区域;因此可能会导致图片的某些部分被隐藏。
object-fit:fill;不需要保持图片比例,全部填充满。
HTML 预留字符
| 显示字符 | 十进制编号 | 实体字符 |
|---|---|---|
| '' | " | "; |
| & | & | &; |
| < | < | <; |
| > | > | >; |
| 空格 |   |  ; |
| ¥ | ¥ | ¥; |
| € | € | &euro; |
| © | © | ©; |
| ® | ® | ®; |
| ™ | ™ | &trade; |
| × | × | ×; |
| ÷ | ÷ | ÷; |
这里是摘要部分。点击展示更多细节
这里是细节部分。表单标签
使用表单是为了收集用户信息的
表单的组成
表单域——一般用form标签做为表单域
<form></form>——把范围内的表单信息提交给服务器xxxxxxxxxx31<form action="url地址" method="提交方式" name="表单名">2//各种表单控件3</form>表单控件(也称为表单元素)
提示信息
form表单(表单域)
用于生成表单域
属性
action——用于指定单击表单内的确定按钮时,该表单被提交到的地址,这个属性必须有
method——用于指定提交表单时发送那种类型的请求,属性值是
get,post,取决于后端程序员的APIget——将请求参数的名和值转换成字符串
post——请求、通过HTML的post机制,将所有请求参数的名和值放在HTMLHEADAER中传输
enctype——用于指定表单内的编码使用的字符集
name——指定表单的唯一名字
target——用于那种方式打开目标URL,值——
_blank``_parent_self_top用法与a元素的target相同
表单元素
<input 输入框
xxxxxxxxxx31<form>2<input type="">3</form>
type的值
text 单行文本
password 密码输入框
radio 单选按钮(页面上还有可能出现其他的单选,所以要用name属性来区分)(默认选中用checked)
xxxxxxxxxx21<input checked typt="radio" name="xingbie">男/*在男女中默认选中为男*/2<input type="radio" name="xingbie">女/*在这里边就可以二选一了*/checkbox 多选按钮(默认选中用checked)(用法与radio一样)
submit 提交按钮——提交后就会把表单域里的信息提交给服务器
xxxxxxxxxx41<form>2<input type="text">3<input type="submit" value="提交">4</form>reset 重置按钮——清除表单里的所有数据或者说还原初始内容
xxxxxxxxxx41<from>2<input type="text">3<input type="reset" >4</from>button 按钮 ——value=""可以写入按钮里面的信息,如:
input type="botton" value="这是一个按钮"就会显示一个按钮里面有“这是一个按钮”的字样(不建议使用这样的方式来制作按钮,建议使用botton元素来设置按钮),一般用于响应JavaScript脚本,不提交form表单数据image 图片形式提交按钮,用src赋予图片的URL 如:
input type="image" src=""可以用width和height设置图片的大小file 选择文件控件 用于文件上传
color——用于创建一个允许用户使用的颜色选择器,或输入兼容的css语法颜色代码区域,调出操作系统的颜色选择器,一般配合js使用
time——生成一个时间选择器,包括小时和分
datetime——生成一个日期选择器,支持性不太好,可通过min和max限制选择范围
datetime-local——生成一个本地化日期选择器,包括年月日小时和分,可通过min和max限制选择范围
date——可以让用户输入一个日期输入区域,也可以使用日期选择器,它的结果包括年月日,可通过min和max限制选择范围,有兼容性问题,调用操作系统的日期,样式不能更改
month——生成一个月份选择器,可通过min和max限制选择范围
week——生成周期选择器,可通过min和max限制选择范围
email——生成一个email输入框,用户可以在输入框里输入email地址,如果指定了multip属性,可以输入多个email地址,每个地址之间需要用、英文逗号隔开,会自动检查email地址是否合法
number——生成一个只输入数字的输入框,可通过min和max限制选择范围,可以使用step更改每次增长(减少)的值(由一个数值到另一个数值的增量)
xxxxxxxxxx11<input type="number" step="10">range——生成一个拖动条,用户只能输入指定范围内的值,可通过min和max限制选择范围,step可以更改增量,显示的值要靠js来实现
search——生成一个搜索文本框(一般在手机上用)
tel——生成电话本文本框
url——生成一个URL输入框,浏览器会自动检测内容
其他属性
name——定义input元素的名称,属性值用户自定义,radio和checkbox里每个input里的name值都要一样,目的是把input里对应的值传送给后台人员,这样input才会有值
checked——设置单选框、复选框初始状态为选中,属性值仅有checked
disabled——设置首次加载禁用该元素,属性值仅为disab
maxlength——设置文本框允许输入的最大字符数
readonly——设置文本框内容不允许被用户修改
size——设置该元素的宽度
src——设置图像所显示的图像url
value——input元素的值
placeholder——显示提示的文本,文本框没有内容时显示一些内容,只要在输入框里输入东西显示的内容就会自动消失,当删掉内容时又会显示
<input typr="text" placehoder="请输入账号">无论使用什么类型的文本框都可以使用
name和value是每个表单元素都有的属性值,主要给后台人员使用
name表单元素的名字,要求单选按钮和复选按钮要有相同的name值
<label——标注标签
用于对其他表单元素进行说明,主要用于单击
label生成标签,浏览器会自动将焦点转移到与标签相关的表单控件上属性for,指定为关联表单控件的id即可
将说明和表单控件一起放入
label元素内部xxxxxxxxxx21<label for="id">用户名:</label>2<input id="id" type="text"/>//只要点击用户名文字就可以在文本框里进行输入
<select 下拉表单元素
size 设置选项栏的高度
multiple 用来决定是多选项列表还是单选列表,它的值只能是multiple
option 定义列表项,要让某个值默认选中,给它加上selected="selected"
用法:
xxxxxxxxxx51<select >2<option value="">北京</option>3<option value="">上海</option>4<option selected=“selected/*在html5里可以简写成selected不用写值*/” value="">广州</option>/*默认选中的是广州*/5</select>
option
代表一个下拉菜单选项或列表项
属性为:
selected——用于指定该列表项初始状态为选中状态,属性值只能为selecte
value——用于指定该列表项对应请求参数
optgroup
表示一个列表项组,该元素只能有option子元素
属性为:
label——指定该选项组的标签,这个属性必须设置
xxxxxxxxxx111选择你喜欢的美食:2<select multiple/*在分组里多选,每一个组都可以选择多个*/>3<optgroup label="北京美食">4<option value="goubuli">狗不理</option>5<option>北京烤鸭</option>6</optgroup>7<optgroup label="广州美食">8<option>乌龙茶</option>9<option>王老吉</option>10<option>加多宝</option>11</select>
outline(乱廓线)
不占具尺寸
给表单添加outline:0;或者outline:none;后就可以去掉默认的蓝色边框
<textarea 多行文本域
用于生产多行文本域
属性为
cols:指定文本域宽度,必须设置(表示一行内可以写的字的长度(通常为字母的个数))
rows:指定文本域高度,必须设置(表示可以写多少行文字)
readonly:指定文本域只读,属性值只能是readonly
xxxxxxxxxx11<textarea cols="50" rows="100" readonly="readonly">这个文本域只读/*默认显示内容写在这里*/</textarea>没有空白折叠!
属性:name 、cols(用于定义文本框的列数)、rows(用于定义文本框的行数)相当于宽度和高度
xxxxxxxxxx11<textarea rows="10" cols="30"></textarea>
防止文本域拖拽——resize
xxxxxxxxxx11<textarea style="resize:none"></textarea>
<box-shadow 设置盒模型的阴影
h-shadow设置阴影水平偏移距离,必须填写变量
v-shadow设置垂直方向偏移距离,必须填写变量
blur模糊半径距离,变量可以不写
sprend阴影额外增加的尺寸
color阴影的颜色
insert切换为内部阴影
xxxxxxxxxx41<style>2div{3box-shadow:10px 10px 20px red insert;4}<border-radius圆角边框
速写属性
含义如下
border-top-left-radius
border-top-right-radius
border-bottom-right(left)-radius
border-left-right(left)-radius
xxxxxxxxxx41<style>2div{3border-radius:50px;/*表示圆角半径大小*/4}
透明度
opacity——设置整个元素(元素里所有的东西,包括文字)的透明度,取值0~1
rgba——在颜色位置设置alpha通道,取值0~1
xxxxxxxxxx11div{bcakground-color:rgba(0,0,0,0.5);}/*前面三个数字代表颜色,后面的小数代表透明度*/鼠标——cursor
使用cursor设置
它的值太多,不便展示,默认值为auto
也可以用图片做鼠标样式,但图片格式要是.ico格式或.cur格式
xxxxxxxxxx11div{cursor:url(图片地址),auto(加入auto是为了防止万一图片失效了,浏览器可以使用默认的鼠标样式。);}
盒子的隐藏
display:none——不生成盒子(可能影响到其他盒子的排版)
visibility:hidden——生成盒子,只是从视觉上移除盒子,盒子仍然占据空间
背景图
img元素是属于HTML的概念、背景图片属于CSS的概念
当图片属于网页的内容时,必须使用img元素
当图片仅用于美化页面时必须使用背景图
属性
background-image:
选中图片
background-image:url("图片地址(必须相对CSS文件的路径)"
background-repeat
背景图片重复设置,值为no-repeat、repeat-y、repeat-x
background-size:
图片尺寸设置
预设值——cover、contain
数值——数值或百分比
background-size:100% 100%;第一个值表示横向、第二个值表示纵向比值、相对于盒子的比值。
background-position
图片的位置
预设值——center(横向居中同时纵向居中)、
center top、center bottom、left center、right center、left bottom、right bottom数值或百分比——数值相对位置
background-position:40px 50px(第一个数值表示距离左边的距离、第二个数值表示里上边的距离)数值可以是负数雪碧图(精灵图)(spirit)——把很多的小图标合并成一张大图片。
background-attachment
通常用来控制背景图是否固定——内容滑动时背景图片不动,背景图相对于视口
xxxxxxxxxx11div{background-attachment:fixed;}
背景图和背景颜色混用的情况
设置背景图,在盒子里没有被图片覆盖住的地方由颜色填充
background(速写属性)可以设置关于背景的所有属性
xxxxxxxxxx11div{background:url() no-repeat 50% 50%/*这两个数字代表位置,后面的数值代表尺寸,注意要用斜杆隔开,如果不写位置,只写尺寸也要用斜杆加在尺寸数值的前面*//100% 50% fixed red}
<ul 无序列表
定义无序列表,可以用type=“”属性定义图形符号样式,属于值为:disc(点),square(方形),circle(圆),none(无)。
如下:
xxxxxxxxxx31<ul type="circle">2 <li>无序列表</li>3</ul><ol 有序列表
有序列表:ordered list
xxxxxxxxxx31<ol type="1">2<li></li>3</ol><type>值——1,a,i.
<dl 定义列表
定义列表
dt
dd
<p 段落
段落
p*n>lorem j (n,j代表数字)
@所有元素与展示效果无关(浏览器带有默认CSS样式),元素展示到页面的效果由CSS决定。
每隔一段时间搜索引擎都会抓取页面源代码。
<i 斜体字
定义斜体字 LOVE
<del 删除线
定义删除字
LOVE
<ins 插入字下划线
定义插入字 LOVE
<strong 加粗字
定义加重语句 LOVE
<sub 定义小标
定义小标字 LOve
<sup 定义上标
定义上标字 LOVE
<bdo
定义文字方向
如:
<bdo dir="ltr"> 文字从左往右——LOVE
<bdo dir="rtl"> 文字从右往左——EVOL
<pre
预格式化文本元素、不会空白折叠(在网页里显示的文本格式与代码里一样)
通常用于网页显示代码,有CSS属性加成
<blockquote
定义长的引用
<br
<br>元素在文本中生成一个换行(回车)符号。此元素在写诗和地址时很有用,这些地方的换行都非常重要。
<a
超链接
href属性:
1)表示跳转地址
2)跳转到某一个锚点(跳转到当前页面的某一个位置)
3 )功能性连接——触发某一个功能 javascript:<a href="javascript:"
4)发送邮件 mailto:<a href="mailto:2028876581@qq.com"></a>
5) 拨打电话 tel :<a href="tel:19977853174"></a>
<a href="#"></a>返回首页target属性:决定新窗口在哪里打开
| 值 | 描述 |
|---|---|
| _blank | 在新窗口中打开链接 |
| _self | (默认) |
| _parent | 在父窗口中打开链接文档 |
| _top | 在整个浏览器窗口打开文档 |
| framename | 在指定框架中打开窗口,若不存在,则打开一个新的窗口 |
图片元素<img
<img>image的缩写,为空元素alt属性:当图片资源失效时,将使用该属性的文字内容alt="图片正在加载中"<a href=""><img src=""></a><map>元素:地图,点击图片某一地方跳转页面:<map name="solar-map">划分区域<img usemap="#solar-map">xxxxxxxxxx31<map name="solar-map">2<area shape="" coords="" href="" alt="">3</map>shape形状——
cricle(圆形)、rect(矩形)、poly(多边形)coords坐标——原点在图片的左上角
figure元素,指代,用于把图片标题、描述包裹起来
xxxxxxxxxx41<figure>2<a href=""><img src=""></a>3<map name="">4<area shape="" coords="" href="" alt="">
多媒体元素<video <audio
<video> 视频——<video src="" controls autoplay loop muted></video>
controls控件(控制面板播放显示)autoplay自动播放muted静音播放loop循环播放
audio 音频(用法与
容器元素
<div
没有语义,不带来任何显示效果,用来划分区域
xxxxxxxxxx41<div>2<div></div>3<div></div>4</div>*
划分区域是非常重要的事,编写代码时是很重要的步骤
语义化容器元素
<header
通常用来表示页头,文章头部等
<footer
通常用来表示页脚,文章尾部等
<article
用来表示整篇文章
<section
表示文章的章节
<aside
用于表达侧边栏(附加信息)
元素的包含关系
容器元素可以包含任何元素
a元素几乎可以包含任何元素
某些元素有固定的子元素
标题元素和段落元素不能相互嵌套,并且不能包含容器元素
元素的包含关系由内容类别决定
块级元素、行级元素,行级元素不包含块级元素,a元素除外(如今已经弃用块级元素和行级元素的说法了)
CSS(层叠样式表)
css规则:选择器+声明块
选择器为元素的对应关系(包括元素的名称、元素id的名称、元素类的名称等)
声明块出现在{}里,包含很多声明,也叫做属性,每一种属性表示一种样式规则
css代码的书写位置:
内部样式表:书写在
<style>元素内部,通常放在<head></head>里面(便于浏览器读写样式)内联样式表(元素样式表):书写在元素里,如
<h1 style=""></h1>此时不需要写选择器外部样式表(推荐使用):将样式书写在独立的CSS文件里,
需要在<head></head>里写入一个<link>元素,调用另一个文件里的CSS文件
如:
xxxxxxxxxx31<head>2<link rel="stylesheet" href="CSS文件地址">3</head>此时CSS文件里直接书写选择器和声明块,不用写
<style></style>外部样式表可以解决多页面样式重复的问题
外部样式表有利于缓存从而提高页面响应速度
外部样式表有利于代码分离(html代码和css代码),有利于维护和修改
选择器
元素选择器
选择页面所有选中的元素
xxxxxxxxxx31<style>2元素名{}3</style>
id选择器
选择id值对应的元素,单独选中id改变样式
xxxxxxxxxx31<style>2#id{}3</style>
类选择器
类:
class=""仅为CSS服务xxxxxxxxxx31<style>2.类名{}3</style>一个元素里可以添加多个类样式。如
<p class="red blue green">期中red``blue``green都是类名。
通配选择器
*,选中所有元素
xxxxxxxxxx31<style>2*{}3</style>
属性选择器:
根据属于名和属性值选中元素
xxxxxxxxxx31<style>2[属性+属性值]{}3</style>
伪类选择器
选中某些元素的某些状态
hover——当鼠标移动到时才显示样式,写法
:hover{}active——激活状态,鼠标按下时才显示样式,写法
:active{}link——超链接未访问时的状态,只有
<a>元素能用,写法:link{}visited——超链接访问过后的状态,只有
<a>元素能用,写法:visited如果这四个伪类都要书写的话,书写顺序因为:
xxxxxxxxxx61<style>2a:link{}3a:visited{}4a:hover{}5a:active{}6</style>focus——用于获取焦点的表单元素,焦点就是光标,一般情况下,类表单元素才能获取,因此这个选择器也主要针对于表单元素来说
xxxxxxxxxx31input:focus{2 background-color:yellow;3}
伪元素选择器
生成并选中某个元素内部的第一个子元素或最后一个子元素
before:
after:
xxxxxxxxxx31<style>2a::after{}3</style>
选择器的组合
并且,连着写,如:
xxxxxxxxxx41<style>2p{}3p.red{}4</style>后代元素——空格,如:
xxxxxxxxxx31<style>2.red li{}3</style>子元素——> ,如
xxxxxxxxxx31<style>2.red>li{}3</style>相邻兄弟元素——+ ,如:
xxxxxxxxxx31<style>2.red+li{}3</style>后边出现的所有兄弟元素——~ ,如:
xxxxxxxxxx31<style>2.red~li{}3</style>
常见的样式声明
color:内部文字颜色,输入值——定义好的颜色单词、十六进制(#+六位六进制数)、由rgb(数字和数字和数字期间有‘,’分隔)的类似坐标系
xxxxxxxxxx51{2color:blue;3color:rgb(0,255,0);4color:#oo8c8c;5}background-color:文字背景颜色(用法和color一样)
font-size :元素内部文字的尺寸大小
px:像素
em:相对单位,相对于父元素的字体大小,加数字表示倍数
图片底部空白缝隙解决方案
因为行内块元素是和文字的基线对齐的,这就导致了图片底部会留有一个空白缝隙
给图片添加vertical-align:middle|top|bottom等(提倡使用)——
img{vertical-align:middle/top/bottom}把图片转换为块级元素
display:block
vertical-align:图片、表单、文字垂直对齐
经常使用设置图片或者表单(行内块元素)和文字垂直对齐
用于设置垂直的对齐方式,但它只能针对行内元素或者行内块元素有效
值:
baseline——默认,元素放置在父元素基线上
top——把元素的顶端与行中最高的元素的顶端对齐
middle——把此元素放置在父元素的中部
bottom——把元素的顶端与行中最低的元素的顶端对齐
vertical-align属性可被用于两种环境:
使行内元素盒模型与其行内元素容器垂直对齐。例如,用于垂直对齐一行文本内的图片
垂直对齐表格单元内容
font-weigh:文字粗细
文字粗细程度,可以取值数字,也可以为预设值(一般为两个值:bold(加粗)、normal(不加粗))
font-family:文字类型
(必须在计算机中所拥有的字体才有效)
font-serif:通用字体,防止输入的字体在浏览器里都没有,则可以调用浏览器跟随系统的字体
font-style:字体样式,
通常用于设置斜体,值为italic
text-decoration:文本修饰,给文本加线
line-through 删除线
LOVE(除此外,<del>和<s>元素也可以显示下划线)overline 字体上划线
underline 字体下划线 LOVE
none 取消下划线,如取消
<a>元素的下划线
text-indent:首行缩进
可以写像素值
em,数字+em表示缩进多少个字符(相对于中文)
line-height:每行文本的高度,值越大每行文本的距离越大
值为px
值为em
设置行高为容器的高度,可以让单行文本垂直居中
width、height:背景的宽高
letter-spacing:文字间的间隔
px
em
word-spacing: 单词间的间隔
px
em
text-align:内部文字的水平排列方式
center(居中)
left(左对齐)
right(右对齐)
也可以是行盒居中(包括行块盒)
text-shadow(文本加阴影)
给文本添加阴影
x-position 阴影在x轴上偏移的距离(单位为px,下同)
y-position 阴影在y轴上偏移的距离
blur 周围的模糊程度
color 阴影的颜色
text-transform(改变大小写)
用于改变文本的大小写
capitalize 文本每个单词以大写字母开头
uppercase 全部大写字母
lowercase 全部小写字母
none 和原文一致
默认值为none
padding(内边距)
border(设置边框)
border属性是一个用于设置各种单独的边界属性的[简写属性]
border可以用于设置一个或多个以下属性的值:border-width,border-style,border-color。solid(实线)
dashed(虚线)
thick double(带有间隔的线)
可以在值的后面再加上属性
font
font属性可以用来作为font-style,font-variant,font-weight,font-size,line-height和font-family属性的简写,或将元素的字体设置为系统字体。
background-image
用于指定一个容器的背景图片,主要的值有三个:
none 无背景图片(默认)
url(/* image path */) 指定的图片地址
inherit 继承自父容器
当背景图片默认不设置的时候,默认值为
none,表示没有背景图片。如果设置了背景图而不可用时,同时又设置了背景色,那么背景色可以代替。当背景图片通过
url来指定值的时候,该容器的背景图就会被设置为指定的图片地址。背景图可以设置多张,用background-image: url<path1>, url<path2>,…的形式
background-clip背景覆盖的区域设置
值为要覆盖的区域盒子,如
background-clip:content-box;
background-origin
指定了背景图片原点相对于背景容器的位置,默认值为
padding-box,表示和padding区域的原点对齐border-box 背景图片会和容器的border原点对齐。
padding-box 背景图片会和容器的padding区域的原点对齐
content-box 背景图片会和容器的内容区域原点对齐
background-attachment
决定背景是在视口中固定的还是随包含它的区块滚动
fixed 背景图片相对于当前视口
scroll 背景图片相对于图片容器滚动,不随内容滚动
local 如果容器内容有滚动情况,背景图片相对于内容滚动,而与包含它的容器无关
background-clip
MDN上说的是背景色是否能够延伸到边框下面,其实简单的理解就是:背景的裁剪区域。这点在MDN上面的一个例子已经很清楚地解释了这点。
border-box 背景色以边框为边界开始裁剪
padding-box 背景色以padding区域开始裁剪
content-box 背景色以内容区域开始裁剪(这点其实在我们工作中经常会被用到)
默认的属性的值为
border-box
background-size
指定了背景图片的尺寸,可取属性有如下几个:
一个固定的值:contain/cover/auto
一个固定值auto,一个具体数值
两个具体的数值
盒模型
box:盒子,每一个元素在页面中都会生成一个矩形区域
盒子类型:
行盒:display等于inline的元素
块盒:display等于block的元素
行盒在页面中不换行,块盒独占一行,display默认值是inline
无论是行盒还是快盒都由一下几个部分组成:
content(内容)、padding(填充)、border(边框)、margin(外边距)
content(内容)
蓝色区域,表示盒子的内容
属性值:width,height
内容区=内容盒
padding(填充)
盒子边框到盒子内容的距离,又叫内边距,如上图紫色区域,是速写属性
padding-top(上边距)
padding-bottom(下边距)
padding-left(左边距)
padding-right(右边距)
padding:20px 30px 40px 50px(顺序为上,右,下,左的边距),若四个都相同,则只写一个数值,如padding:30px填充区+内容区=填充盒
border(边框)
边框=边框样式(border-style)+边框宽度(border-width)+边框颜色(border-color)
border-style——值:solid(实线),dashed(虚线),double(双线边框效果,双线间的宽度由border-width的值决定)等等
不设置边框颜色时默认为字体颜色
border-width:
border-top-width border-bottom-width border-left-width border-right-width border:20px solid red(一般的写法)
margin(外边距)
边框到其他盒子的距离
margin-top,margin-bottom,margin-left,margin-right
可以速写包含其他的属性
display(更改盒模型)
block(块盒)
inline(行盒)
inline-block(行块盒)
1.不独占一行,可以与行盒排在同一排
2.盒模型中所有尺寸都有效
flex(设置弹性盒子的必要选项设置)
两个元素中,若其中有一个是块盒也不能排列在同一行。
CSS浮动属性
float浮动布局
浮动可以让多个块盒元素一行内排列显示
网页布局第一标准:多个块级元素纵向排列找标准流,多个块级元素横向排列找浮动
float CSS属性指定一个元素应沿其容器的左侧或右侧放置,允许文本和内联元素环绕它。该元素从网页的正常流动(文档流)中移除,尽管仍然保持部分的流动性(与绝对定位相反)。
left 左边
right 右边
none 不改变原来位置
float
设置框是否需要浮动以及浮动方向
left(左浮动)
right(右浮动)
none(不浮动)
inherit
clear
设置元素哪一侧不允许出现其他浮动元素
left(左)
right(右)
none
inherit
clip
裁剪绝对定位元素
auto
rect()
inherit
overflow(溢出处理)
设置溢出的处理方式
visible
默认值,显示溢出的内容既不裁切也不添加滚条,溢出内容显示在元素外
auto
自动添加滚条和隐藏溢出内容
hidden
超出的内容隐藏
scroll
设置一条显示滚动条
CSS定位属性
position(定位)
用来设置元素的定位方式
属性值——
static(默认值,没有定位)absolute(生成绝对定位元素)relative(生成相对父元素,相对其正常位置进行定位但不会脱离文档流)用法:
xxxxxxxxxx41<style>2div{3position:absolute/relative;top:30px;4}
position:fixed
固定定位,相对于视口(浏览器的可视窗口)
z-index(定位层序)
用于设置目标对象的定位层序,数值越大所在的层级越高,覆盖在其它层之上
仅在position:absolute时有效,默认值为auto,堆叠顺序与父元素相同
xxxxxxxxxx41<style>2div{3position:absolute;top:20px;z-index:2;4}
层叠
声明冲突:同一个样式多次应用到同一个元素
层叠(权重计算):解决声明冲突的过程,浏览器自动处理
比较重要性
重要性从高到低:1)作者样式表>2)作者样式中的普通样式>3)浏览器默认样式
增加!important时全打败其他样式(不建议加)
比较特殊性
完成比较重要性时冲突还没有解决时进行到比较特殊性
总体规则:选择器选中的范围越来越窄,越特殊
具体规则:选择器计算出一个四位数(数值越大越特殊)
千位:如果有内联样式,记为1,否则为0
百位:将选择器所有id选择器的数量相加
十位:等于选择器中所有类选择器、属性选择器、伪类选择器的数量
个位:等于选择器中所有的元素选择器、伪元素选择器的数量
比较源次序
(特殊性相同时)代码书写靠后的胜出
继承
子元素会继承父元素某些css属性(通常跟文字内容相关的属性都会被继承)
属性值的计算过程
一个元素一个元素一次渲染,顺序按照页面文档的树形目录结构进行
渲染每一个元素的前提条件:该元素所有属性必须有值
一个元素从没有值到所有属性都有值,这个计算过程叫属性的计算过程
1、确定声明——2、层叠冲突——3、使用继承——4、使用默认值
inherit——强制继承父元素样式
特殊的两个css取值:
1、inherit(继承):将父元素的值取出应用到该元素上
2、initial:初始值。将该属性设置为默认值
盒模型应用
1、改变宽高范围
默认情况下。width和height设置的是内容盒的宽高
衡量设计稿尺寸时往往使用的是边框盒,但设置width和height时设置的是内容盒
解决方法:
1)精确计算
2)css3:box-sizing:border-box——这样设置的宽高就是盒子的实际尺寸了
2、背景覆盖范围
默认情况下,背景覆盖边框盒
background-clip:padding-box
border-box
content-box
3、溢出处理
有手动设置边框宽高时内容可能会溢出
overflow(速写属性 overflow-x、overflow-y):控制内容溢出边框后的处理方式
取值
visible(可见)
hidden(不可见)——溢出部分隐藏
scroll——溢出部分不可见生成滚动条
auto——看情况出现滚动条
4、断词规则:
word-break 会影响在什么位置被截断换行
norml:普通,cj字符(中日韩字符)在文字位置截断,非cj字符在单词位置截断
break-all:截断所有,所有字符在文字处截断
keep-all:保持所有,文字在单词之间截断
5、空白处理
滚动缓冲——scroll-behavior
两个属性
overflow:scroll;
scroll-behavior: smooth;
这两个属性要设置在父级容器中
xxxxxxxxxx41body{2 overflow:scroll;3 scroll-behavior:s4}
滚动条样式-webkit-scrollbar
使用伪元素-webkit-scrollbar——设置的是整条滚动条
xxxxxxxxxx41body::scrollbar{2width:1vw;3background:red;4}使用伪元素-webkit-scrollbar-thumb——设置滚动条滑块的样式
xxxxxxxxxx31body::scrollbar-thumb{2//注意的是滑块的宽度是和滚动条的宽度时一致的更改不了,最多只能设置颜色和圆角等样式3}
white-space:nowrap——控制文本不换行
overflow:hidden——隐藏溢出部分的内容
text-overflow:ellipsis——文本溢出部分不显示在盒内形成三个小点
适用于单行文本隐藏
前提是要在常规流盒子模式下使用
xxxxxxxxxx91<style>2 p{3 overflow:hidden;4 text-overflow:ellipsis;5 }6</style>7<P>8 我爱你大爷,你他娘的的真是个天才9</P>多行文本省略号
多行文本溢出显示有较大的兼容性问题,适合于webKit浏览器或移动端(移动端大部分是webKit内核)
xxxxxxxxxx51overflow:hidden;2text-overflow:ellipsis;3display:box;//弹性伸缩盒子模型4line-clamp:2;//限制文本的行数5box-orient:vertical;//设置或检索伸缩对象盒子的子元素的排列方式行盒的盒模型
常见的行盒:包含具体内容的元素
如:span、strong、em、i、img、video、audio等
显著特点:
盒子沿着内容延伸,行盒跟着内容走、它的高度取决于内容的宽高
行盒不能设置宽高,要调整行盒的宽高,应该使用字体大小等属性间接调整
填充区,水平方向有效,垂直方向仅会影响背景
边框(border)水平方向有效,垂直方向仅会影响背景
外边距(margin)水平方向有效,垂直方向仅会影响背景
行块盒
display:inline-block
不独占一行
盒模型中尺寸都有效
空白折叠发生在行盒内部或行盒间
视觉格式化模型(布局规则)
页面中的多个盒子排列规则
视觉格式化模型大致上将页面中的盒子分为三种方式:
常规流布局(常规流、文档流、普通文档流)
所有元素,默认情况下都属于常规流布局
总体规则:块盒独占一行,行盒水平依次排列
包含块:每个盒子都有它的包含块,包含块决定盒子的活动范围
*绝大多情况下,盒子的包含块为其父元素的内容盒
块盒规则:
每个块盒的总宽度,必须刚好等于包含块的宽度,宽度默认值为auto:将剩余空间吸收掉;margin的取值也可以是auto,默认为0 ,width的吸收能力强于margin
若宽度、边框、内边距。外边距计算后,仍有剩余空间,该剩余空间被margin-right全部吸收
在常规流中,块盒在其包含块中居中,可以定义宽度,然后左右margin设置为auto
将margin的值设置为负数,剩余空间变多,显示溢出包含块
每个块盒垂直方向上的auto值
height:auto,适应内容高度
margin垂直方向auto,表示0
百分比取值:
padding、宽度、margin可以取值为百分比,这些百分比相对包含块的宽度
高度的百分比:
包含块的高度是否取决于子元素,设置百分比无效
包含块的高度不取决于子元素(认为定义高度值)百分比相对于父元素的高度
上下外边距的合并:两个常规流块盒,上下外边距相邻,会进行合并,两个相邻外边距取值不同时,他们之间的间隔的值为其中取值最大的外边距值
浮动——float
脱离标准文档流的控制移动到指定位置(俗称脱标)
浮动的盒子不在保留原先的位置
应用场景:
文字环绕
浮动不会挡住文字——前提是文字不被包装在另一个盒子里,简答的说文字和浮动盒子同为一个盒子之下的“子元素”
xxxxxxxxxx71<div>2<div class="float" style="float:left">3</div>4<p>5文字我是文字文字文字文字文字文字文字文字文字文字6</p> //这样文字就会自动环绕在浮动元素周围不会占据浮动元素脱离后的空间7</div>横向排列
浮动的基本特点:
如果浮动所在的盒子剩余的空间不够装配了,那她就会自动另起一行来显示浮动的盒子
修改float的属性值为:
left:左浮动,元素靠左靠上
right:右浮动,元素靠右靠上
none:默认值,不浮动
在包含块中排列时,会避开常规流盒子
常规流块盒在排列时无视浮动盒子
当一个元素浮动后元素必定会成为块盒(给该display属性值为block)
浮动元素包含块和常规流一样,为父元素的内容盒
行盒在排列时会避开浮动盒子,如果文字没有在行盒中,浏览器会自动生成一个行盒包裹文字,该行盒叫做匿名行盒
盒子尺寸:
宽度为auto时表示适应内容宽度
高度为auto时与常规流一致,适应内容高度
margin为auto时,为0
边框、内边距百分比设置与常规流一样
高度坍塌
高度坍塌根源:常规流盒子的自动高度在计算时不会考虑浮动盒子
清除浮动盒子:
clear 默认值为none
left:清除左浮动,该元素必须出现在前面所有左浮动盒子的下方(他还是浮动盒子,只不过更改了浮动的样式)
right:清除右浮动,该元素必须出现在前面所有右浮动盒子的下方(他还是浮动盒子,只不过更改了浮动的样式)
button定义一个按钮
定义一个按钮
属性为type,值只能为button(按钮)、submit(提交)、reset(重置)
xxxxxxxxxx21<button type="三个属性值"></button>2<button type="button"><img src=""></bytton>/*用图片作为按钮*/
HTML进阶
<iframe元素(网页中嵌入另一个网页)
用于在网页中嵌入另一个页面
框架页
可以调用别人的网址播放别人的视屏等
xxxxxxxxxx11<iframe src="要嵌入页面的网址" frameborder/*设置边框/*="0"></iframe>如若要同一页面跳转到插入的网页中,则在
iframe元素里添加name=”名称“然后再在超链接里的target里配备到name名,如:xxxxxxxxxx21<a href="" target="name"></a>2<iframe src="https://www.baidu.com" name="name"></iframe>
可替换元素
iframe元素是可替换元素——通常是行盒
通常显示的内容取决于元素的属性
可替换元素css不能完全控制其中的样式
具有行块盒的特点
表单元素
!主要用于收集用户数据
input元素
主要做输入框(前面有介绍)
select元素
下拉列表元素(前面有介绍)
textarea元素
文本域、多行文本框(前面有介绍)
button按钮元素
按钮元素
type属性
reset(重置按钮)、submit(提交按钮)、button(普通按钮)、默认值是
submitxxxxxxxxxx11<botton type="botton/submit/reset">按钮<!--按钮里面的内容写在这里--></botton>也可以使用图片作为按钮
xxxxxxxxxx31<botton>2<img src="图片地址">3</botton>可以在
button里添加其他元素
配合表单元素的其他元素
label
普通元素、通常配合单选和多选框使用
显示关联——可以通过for属性让label关联表单元素,for属性值为表单元素的id
xxxxxxxxxx51选择性别:2<input id="boy" name="xingbie" type="radio">3<label for="boy">男</label><!--此时点击男这个文字也会选中,不需要一定点击前面的选择圈-->4<input id="g" name="xingbie" type="radio">5<label for="girl">女</label><!--此时点击女这个文字也会选中,不需要一定点击前面的选择圈-->隐式关联
xxxxxxxxxx81<label>2<input name="xingbie" type="radio">3男4</label>5<label>6<input name="xingbie" type=:"radio">7女8</label><!--效果与显示关联一样-->更多用法在前面有介绍
datalist数据列表
数据列表
该元素不会在页面上显示,通常用于和普通文本框配合使用
xxxxxxxxxx61<input type="text" list="id">2<datalist id="id">3<option value="chrome">谷歌浏览器</option>4<option value="firefox">火狐浏览器</option>5<option value="ie">IE浏览器</option>6</datalist>美化表单元素
focus元素聚焦时的样式
伪类选择器
focus——元素聚焦时的样式(即当选择当前盒子时盒子表现出来的样式)
cheaked——
重置表单元素样式
设置
textarea多行文本框是否允许调整尺寸
xxxxxxxxxx61textarea{2resize:both/*默认值,表示两个方向上都可以调整尺寸*/;3resize:none;/*不能调整尺寸*/4resize:horizontal;/*只在水平方向上可以调整尺寸*/5resize:vertical;/*表示在垂直方向上能调整尺寸*/6}文本框边缘到内容的距离
使用padding
使用text-indent(首行缩进,只有第一个文字离边框有距离)
xxxxxxxxxx41input{2padding:0 20px;3/*text-indent:1em;/*4}控制单选和多选的样式
表格元素<table
在css技术出现之前,网页通常使用表格布局。
现在一般在后台管理系统中可能使用表格
前台:面向用户
后台:面向管理员,对界面要求不高,对功能性要求高。
表格不再适用于网页布局,表格渲染速度慢。
合计<.td>` – [ ] 在表格里添加rowspan=”数值”来表示合并的单元列数,如`
合计 `属性
border-collapse——边框的折叠方式(这个属性要写到table里才生效)
值——collapse(折叠,把相邻的边框合并成一个)、separate(分离(默认值))
伪类选择器
tbody tr:nth-child(event<!--偶数-->/odd<!--奇数-->)表示选中的子元素偶数(奇数),例如用来实现隔行变色等效果<abbr
表示缩写词
<abbr title="cascading style sheet">css</abbr>abbr>表示css是缩写的,它的全称是cascading style sheet,在页面上显示时会在css下留下一条点虚线,当鼠标悬停时会显示全称
<time
提供给浏览器或搜索引擎阅读的时间
xxxxxxxxxx31<p>2今年<time datatime="2019-5-1">5月</time>,发大水。3</p>运行出来在网页上没有效果,目的是给浏览器阅读
<b(bold)
以前是无语义元素,主要用于加粗字体
<q 一小段引用文本
一小段引用文本
属性cite——表示引用的链接地址
<blockquote 大段引用文本
大段引用文本
属性cite——表示引用的链接地址
<br 换行
用于在文本中换行
不能调整样式
<hr 分割线
无语义
用于分割
<meta
用来给网页添加源数据
也可以用来给搜索引擎提示关键字,如在搜索框里输入一个关键字,搜索引擎就会提示一些与之相关的链接,主要用于方便用户查找内容,用法
<meta name="keywoords" content="美女,购物,衣装,美容">xxxxxxxxxx21<meta name="author" content="zuozhe ,jkwky@qq.com"><!--表示对网站作者的描述-->2<meta name="description" content="dui wangzhangde miaoshu jiejie"<!--表示对网站的描述,描述的内容会出现在浏览器搜索后的网站旁边-->还可以用于搜索引擎优化(SEO)
<link 链接外部资源
链接外部资源(可以是css文件、js文件、图标等
属性
rel属性:表示的是关系,链接的资源和当前网页的关系
type属性:表示链接的资源是MIME类型,标准格式的字符串,可以不写
链接图标
里<link rel="icon" href="图标地址">用来制作网页名称前的图标,即为定义的网页名称前的图标 <link rel="shortcut icon" href="图标地址">另一种写法实现同样的效果
css 进阶
@规则
at-rule:@规则(也叫@语句、css语句、css指令)
import
@import“路径” ;——表示导入另外的css文件 相当于在外部样式表里引用一个重置的css文件,则在HTML代码页面只需要引用自己的css样式文件即可,自己的css文件包含了重置的css样式表文件
charset
@charset “utf-8";——告诉浏览器该css文件使用的字符编码集是utf-8;该指令必须写在第一行,同样的写在自己的外部样式css文件里,也可以不写(要写就必须写在第一行)
web字体和图标
web字体
解决用户电脑上用户没有安装相应字体的问题,强制让用户下载该字体(用户感觉不到下载)
制作一个新字体出来,使用到指令@font-face制作一个新字体
xxxxxxxxxx41@font-face{2font-family:"字体名";3src:url("字体文件的位置");4}
字体图标
一个网站——iconfont——专门收集各种图标——图标代表的是字体
使用方法——
块级格式化上下文(BFC)
全称
block formatting context简称BFC它是一块独立渲染区域,它规定了在该区域中 ,常规流盒子的布局
常规流块盒在水平方向上,必须撑满包含块
常规流块盒在包含块的垂直方向上依次摆放
常规流块盒若外边距无缝相邻,则进行外边距合并
常规流块盒的自动高度和摆放位置,无视浮动元素
BFC渲染区域:
这个区域由某个HTML元素创建,以下元素 会在其内部创建BFC区域:
根元素——意味着,元素创建的BFC区域,覆盖了网页中所有的元素
浮动和绝对定位元素
overflow不等于visible(是overflow的默认值)的块盒
不同的BFC区域,它们进行渲染时互不干扰
创建BFC的元素,隔离了它内部和外部的联系,内部的渲染不会影响到外部
具体规则:
创建的BFC的元素,它的自动高度需要计算浮动元素
一般会出现的高度坍塌可以用这样的方法来解决,即在创建BFC的元素里样式表更改为浮动元素或者定位元素(绝对定位元素),但这样也会带来一些副作用,则可以采用副作用最小的方法——
设置overflow不是默认值的时候,更改其值,如hidden、auto等来实现解决高度坍塌的问题。建议,如果仅仅是为了解决高度坍塌的问题,最好使用
.clearfix::after{content:"";display:blok;clear:both;}清除浮动的方法
创建的BFC的元素,它的边框不会与浮动元素重叠
创建的BFC的元素,不会和它的子元素进行外边距合并(处在不同的BFC区域它们的外边距是不会合并的)
布局
排列页面中的区域
多栏布局
两栏布局
三栏布局
等高问题:
css3的弹性盒
js控制
伪等高——侧边栏的高度跟随主体的高度
x1body{2overflow:hidden;3}4.aside{5width:200px;6background-color:blue;7height:1000000px;8margin-bottom:-99999px;9}10
元素书写顺序
通常浮动元素书写在前面
若浏览器要求主区域代码靠前书写
主区域不需要BFC了
设置左右的margin把空间留出来,然后设置左右两个侧边栏为绝对定位,注意设置它们的包含块为定位元素
后台页面
文本和段落
@font-face{}——加载web字体
color——设置字体颜色
font-size——设置字体大小
letter-spacing——设置字符间距
writing-mode——设置文本方向
vertical-rl设置垂直方向,结合text-orientation让文本保持竖直或倾斜text-decoration——设置文本样式
line-height——设置行间距
text-indent——首行缩进
white-space——设置文本是否换行,nowrap不换行
文本省略
xxxxxxxxxx31white-space:nowrap;2overflow:hidden;3text-overflow:ellipsis;text-align——设置文本对齐
background-color——设置背景颜色
background-image——加载背景图片,url()
background-size——调整背景尺寸
background-repeat——调整背景是否平铺
background-position——调整背景图片位置
background-size:contain——调整图片拉伸
background-size:cover——调整背景图片尽可能占满容器
cursor——设置鼠标样式,即指针如——pointer(小手)、wait(等待效果)、可以用url()加载自定义的图片作为指针样式
list-style——更改无序列表的属性,可以用url()自定义图片作为列表前面的小图标
滤镜filter
blur——高斯模糊——值为0px不模糊,像素值越大越模糊
contrast——对比度——默认值100%,上下调整值
grayscale——灰度——值为0~1,0为正常显示颜色,1我为黑白样式
hue-rotate——色度——默认值为0deg
drop-shadow——后方阴影
xxxxxxxxxx11filter:drop-shadow(10px 10px 30px red)invert(30%)
盒子位置
左浮动的盒子向上向左排列
右浮动的盒子向上向右排列
浮动盒子的顶边不得高于上一个盒子的顶边
若剩余的空间无法放下浮动的盒子,则该盒子向下移动,直到具备足够的空间能够容纳盒子,然后再向左或向右移动
行高的取值
像素值——px——多行文不建议使用
直接书写无单位——当前元素字体大小的倍数,先继承在计算
em单位——当前元素字体大小的倍数,先计算在继承
百分比%
body的背景
背景超出内容盒、边框盒
画布
一块区域,用来填充背景
特点
最小宽度为视口宽度(有可能比视口大)
最小高度为视口高度(有可能比视口大)
HTML元素的背景
覆盖画布
给HTML设置背景后body的背景就正常了
给body设置背景
给HTML设置背景了,body元素的背景设置一切正常
如果没有设置HTML的背景,那么body元素的背景覆盖画布
设置这样的规则是为了给整个网页设置背景的机会
body背景图片
背景的宽度的百分比是相对于视口的
背景的高度百分比相对于HTML元素高度
背景图的横向位置都是相对于视口
背景图的纵向位置相对于网页高度
(这tm简直是个坑)
CSS文档流—盒模型—定位—布局—响应式设计
盒子模型
margin(外边距)
paddin(内边距)
border(边框)
content(内容盒)
默认情况下设置盒子的高度和宽度时是在设置content的宽高度——这对于整个网页的排版而言是不合适的,盒子中的举个边框区域都没有被计算进来,我们需要修改盒子模型的大小设置方式
通过box-sizing属性就可以修改盒子模型的大小设置,该属性默认情况下值为——content box,即按内容区域计算盒子大小
实际项目中会将box-sizing属性修改为border box,即安边框区域计算盒子大小,同时还会将所有的HTML元素默认的margin外边框设置为0,这样当我们设置宽度和高度时就是设置了盒子在页面中的实际大小,也就是内容盒加上变宽的大小就是设置的宽度和高度的大小
xxxxxxxxxx61*{2margin:0;//设置所有的html元素的外边距为03}4.box{5box-sizing:border box;//修改盒子模型的大小设置方式为border box6}文档流
各种元素盒子在文档中的排列
由display更改盒子的排列属性:
block——普通元素排列方式——竖向排列
inline——行内块元素——横向排列
定位与布局
定位——关注元素本身的位置
布局——关注的是容器的区域位置
元素定位
坐标定位——position
静态定位——static——默认情况下所有元素均为静态定位——严格按照文档流排列——对偏移量不受影响
相对定位——relative——元素相对于其所在文档流的位置——受坐标偏移量的影响,即使文档流偏移其原有在文档流的位置仍然保留,不会影响其他元素所在文档流的位置
绝对定位——absolute——会脱离所属的文档流位置影响其他元素的在文档流中的位置,受偏移量的影响,还会跳出容器(当容器没有设置为相对点位时绝对定位会跳出容器而坐标会相对于页面然后偏移,如果容器设置了相对定位则绝对定位坐标相对于容器偏移),所原有的文档流的位置不会被保留,会被其他元素占据
固定定位——fixed——也称为窗口定位,即按视口坐标定位——固定定位元素会脱离文档流,不会占用所在文档流中的位置,影响其他元素的在文档流中的位置——这个定位不会依赖于容器是否设置了相对定位属性,它会永远相对于视口坐标
浮动定位——float
浮动定位
浮动定位主要采用容器与元素联动的方式进行定位——浮动定位主要应用在图文混合排版
clear属性——控制器内部浮动元素的所在浮动位置
元素浮动之后,周围的元素会重新排列,为了避免这种情况,使用 clear 属性。
clear 属性指定元素两侧不能出现浮动元素。
clear:both两侧不能出现浮动元素
页面布局
目前最流行的布局方式是flex布局——弹性布局、Grid布局——网格布局
flex布局——采用容器和元素联动的方式布局
flex容器(container)
flex容器设置
display:flex
排列方向(flex-direction)
设置横向——row(横向)、row-reverse
设置纵向——column(纵向)、column-reverse
溢出处理(flex-wrap)
no-wrap(允许溢出)
warp
wrap-reverse
对齐方式
justify-content(横向对齐)
flex-start、center、flex-end、space-between、space-around
align-items(纵向对齐)
flex-start、center、flex-end、stretch、baseline
flex元素设置(item)
flex:flex-grow flex-shrink flex-basis
flex-grow(扩展)——值为0或者1——当值为1时元素自动伸展填满剩余空间
flex-shrink(收缩)——值为0或者1——当值为1时表示容器空间不足时元素将进行等比例缩小,默认情况所有flex-shrink的值均为1
flex-basis(基础长度)——是用来设置元素的基础长度,可以使像素值或者百分比
xxxxxxxxxx391/*弹性布局设置*/2<html lang="en">3<head>4<meta charset="UTF-8">5<meta http-equiv="X-UA-Compatible" content="IE=edge">6<meta name="viewport" content="width=device-width, initial-scale=1.0">7<title>Document</title>8<style>9*{10margin: 0px;11box-sizing: border-box;/* 盒子的宽高就是盒子的实际大小 */12}13.body{/* 容器 */14background-color: brown;15width: 400px;16height: 400px;17display: flex;/* 默认情况下flex布局盒子横向排列 */18flex-direction:row;/* 元素纵向排列 */19flex-wrap: nowrap;/*溢出处理 nowarp表示允许溢出 */20justify-content: center;/* 横向对齐方式 */21align-items: center;/* 纵向对齐方式 */22}23.one{24flex-shrink: 1;/* 默认情况下flex-shrink值为1,表示容器空间不足时元素等比例缩放不会溢出容器,值为0时按照文档流排列,即可以溢出容器 */25width: 100px;26flex-grow: 1;/* flex-grow属性默认情况下值为0,当值为1时元素盒子会自动填充容器空间直到占满容器空间 */27height: 100px;28border: 1px solid black;29background-color: white;30}31</style>32</head>33<body>34<div class="body">35<div class="one"></div>36<div class="one"></div>37</div>38</body>39</html>Grid布局
grid布局是将容器设置成为一个二维的坐标系统,通过间具体单元格设置为区域的方式进行布局,即在grid布局中控制定位的方式是容器与区域,将一个普通的容器进行划分定义其行和列。同时还可以定义由行盒列划分出的单元格之间的间距
Grid容器——container
display:grid;
Grid区域——area
坐标区域
命名区域
浮动区域
SVG
svg:scalable vector graphics 可缩放的矢量图
该图片使用代码书写而成
缩放不会失真
内容轻量
svg使用
svg可以嵌入浏览器,也可以单独成为一个文件
xml语言,svg是使用该语言来定义
应用——在HTML文件里引用,用法为
<img src="svg文件位置">,也可以使用背景图引用位置链接就可以,还有embed src="svg文件位置" type="",object data="svg文件位置" type="",ifarame src="svg文件位置"
书写svg文件
xxxxxxxxxx41<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg">/*相当于一个图片的容器。再由人为的控制图片里面都有些什么,svg是根文件,一般书写svg文件时都不会给单位,如果在这里不写图片的宽高的话,它的默认宽高是300*150,也可以在这里设置svg的样式,浏览器已经默认将svg文件当做图片处理*/2<rect width="100" height="100" fill="red" stroke="blue" />/*在这里要改变颜色的话就使用fill来定义,使用stroke来设置矩形的边框颜色,颜色的写法和css里一样,像这条命令就是定义了一个100*100的红色边框蓝色的矩形*/3<cricle cx="200" cy="400" r="50" fill="red"/>/**/4</svg>svg可以由一个一个的图形组成的
矩形:rect
颜色设置:fill——在svg里使用fill来设置图片的颜色
边框设置:stroke——在svg里使用stroke来设置图片的边框颜色,stroke-width来设置边框的粗细
位置设置:x和y,坐标系的原点在svg的左上角
圆形:circle,cx和cy代表圆形的圆心,r代表圆形的半径
椭圆:ellipse,rx和ry分别代表椭圆的两条
PS切图
关于PS的学习详细请自学PS教程
B站(www.bilibili.com)一搜一大把
CSS3
filter滤镜
filter:函数();例如: filter:blur(3px);blur模糊处理,数字越大越模糊
CSS3过渡属性
transition-delay
设置经过多少时间的延迟后才开始过渡效果
transition-duration
设置过渡动画效果持续的时间,单位为秒或毫秒,不设置默认为0,不产生动画过渡效果
transition-timing-function
设置过渡动画时间曲线
属性值如下:
ease——慢速开始然后变快
linear——匀速
ease-in——慢速开始
ease-out——一慢速结束
ease-in-out——以慢速开始和结束
cubic-bezier——曲线控制动画速度
transition-property
设置元素那个CSS属性进行动画过渡效果处理,默认值为all
transition
用一条声明设置
transition-delay 、transition-duration、transition-timing-function、transition-property4个属性
CSS3动画属性
@keyframes
通过@keyframes规则可以创建关键帧动画。以百分百规定改变发生的时间,或者通过关键词
fame和to定义,等价于0或100%,0 是动画开始时间,100%是动画结束时间
animation-name
属性值为@keyframes动画规定名称,表示可以使用@keyframes预先定义的动画,赋值为0表示无动画
animation-delay
设置经过多少时间延迟才开始执行动画效果,单位为秒和毫秒
animation-duration
设置动画持续的时间,单位为秒和毫秒
animation-timing-function
设置动画过渡的时间曲线
animation-iteration-count
设置动画播放次数,如果设置为
infinite则为无限次播放
animation-direction
设置动画是否轮流反向播放
animation-play-state
设置动画播放状态
属性值为
running(播放中)、paused(暂停)
transition
过渡动画属性简写
transform:rotate()绕盒子中心旋转
值为旋转角度——单位为deg
transform-origin()元素旋转中心点
默认值为50% 50%
第一个值表示水平位置
第二个值表示垂直位置
CSS3 渐变(Gradients)
线性渐变(Linear Gradients)

– 向下/向上/向左/向右/对角方向
xxxxxxxxxx11background-image: linear-gradient(direction, color-stop1, color-stop2, ...);线性渐变 – 从上到下(默认情况下)
xxxxxxxxxx31#grad {2background-image: linear-gradient(#e66465, #9198e5);3}线性渐变 – 从左到右
xxxxxxxxxx41#grad {2height: 200px;3background-image: linear-gradient(to right, red , yellow);4}线性渐变 – 对角
xxxxxxxxxx41#grad {2height: 200px;3background-image: linear-gradient(to bottom right, red, yellow);4}使用角度
如果你想要在渐变的方向上做更多的控制,你可以定义一个角度,而不用预定义方向(to bottom、to top、to right、to left、to bottom right,等等)。
语法
xxxxxxxxxx11background-image: linear-gradient(angle, color-stop1, color-stop2);
xxxxxxxxxx61#grad {2background-image: linear-gradient(-90deg, red, yellow);3}4#grad {5background-image: linear-gradient(to right, rgba(255,0,0,0), rgba(255,0,0,1));6}repeating-linear-gradient() 函数用于重复线性渐变:
xxxxxxxxxx41#grad {2/* 标准的语法 */3background-image: repeating-linear-gradient(red, yellow 10%, green 20%);4}
xxxxxxxxxx51#grad {2background-image: linear-gradient(-90deg, red, yellow);3}#grad {4background-image: linear-gradient(-90deg, red, yellow);5}径向渐变(Radial Gradients)

由它们的中心定义
xxxxxxxxxx11background-image: radial-gradient(shape size at position, start-color, ..., last-color);shape 参数定义了形状。它可以是值 circle 或 ellipse。其中,circle 表示圆形,ellipse 表示椭圆形。默认值是 ellipse。
size 参数定义了渐变的大小。它可以是以下四个值:
closest-side
farthest-side
closest-corner
farthest-corner
repeating-radial-gradient() 函数用于重复径向渐变:
xxxxxxxxxx31#grad {2background-image: repeating-radial-gradient(red, yellow 10%, green 15%);3}
xxxxxxxxxx31#grad {2background-image: radial-gradient(red 5%, yellow 15%, green 60%);3}Web服务器
服务器(也称之为主机)是提供计算机服务的设备,它也是一台计算机,在网络环境下,根据服务器提供的服务类型不同。服务器分为文件服务器·、数据库服务器、应用程序服务器、web服务器等
web服务器一般指网络服务器,是驻留于因特网上某种类型计算机的程序,可以向浏览器等web客户端提供文档,也可以放置网络文件,让全世界浏览;可以放置数据文件,让全世界下载。
根据网络的不同,服务器又可以分为本地服务器和远程服务器
本地服务器
可以把自己的电脑设置为本地服务器,这样同一个局域网内的计算机就可以访问自己设置的网站了
远程服务器
通常是别的公司为我们提供的一台电脑,我在只要把网站项目上传到这台电脑上,任何人都可以利用域名访问我们的网站
申请免费空间
推荐网站——http://free.3v.do/
一些有趣的CSS属性
resize——设置元素可以调整大小
设置元素可以调整大小
前提是只针对于块级元素,且要设置overflow属性值为auto/hidden/scroll
常用属性值
horizontal——控制是否可以水平缩放
vertical——控制是否可以垂直缩放
both——控制垂直水平缩放
none——不能缩放
xxxxxxxxxx191<html>2<head>3<style>4div{5overflow:auto;6resize:both;7}8img{9width:100%;10height:100%;11}12</style>13</head>14<body>15<div>16<img src="img.jpg">17</div>18</body>19</html>progress——进度条
此标签既有语义又有进度条的功能。兼容性也不错
可以通过value来获取进度条的信息
details——详细
这是一个段落
Lorem ipsum dolor sit amet consectetur adipisicing elit. Inventore, at?
字面意思是详细
该标签包裹的标签会被隐藏起来,点击时会显示
可以使用
标签修改默认显示信息
datalist——输入时提供可选值
该标签适用于输入框提供可选值的一个列表标签,类似于select组件
xxxxxxxxxx81<input type="text" list="datalist">2<datalist id="datalist">3<option value="123"></option>4<option value="234"></option>5<option value="345"></option>6<option value="145"></option>7<option value="145"></option>8</datalist>noscript——浏览器不支持JavaScript时展示
当浏览器不支持JavaScript代码时显示标签下的内容,大多用于对js依赖的应用
xxxxxxxxxx41<script src="vue.mim.js"></script>2<noscript>3this page is no want javascript4</noscript>页面横线滚动
首先需要设置父级元素为flex布局,设置overflow属性为scroll
然后设置子元素的flex-shrink属性值为0
利用JavaScript代码
xxxxxxxxxx71<script>2let body=document.querySelector(".body")//获取父级容器3//给父级元素添加监听事件4body.addEventListener('wheel',(event)=>{5event.preventDefault()6body.scrollLeft +=event.deltaY7})</script>
scroll-behavior: smooth;——滚动缓冲
在父级元素设置该属性和属性值,即可得到滚动缓冲效果
设置a标签进行点击时就会触发该效果
同时父级元素要设置overflow的属性值为hidden
::-webkit-scrollbar——设置滚动条样式
这是一个伪元素
在父级元素上使用
父级元素的overflow属性设置为scroll
::-webkit-scrollbar-thumb——设置滚动条滑块
用法与滚动条样式相同
::-webkit-scrollbar-track——设置滚动条里面的轨道
用法都一样
flex-shrink: 0;——flex布局元素不压缩
在flex布局或者grid布局下的元素不会被压缩