@TOC
CSS规则
主要由两部分构成:选择器和声明;
h1 /*选择器*/
{	属性1:值;
    属性2:值  /*可以多个声明,每个声明由分号隔开*/
}
选择器还可以是想要设定的HTML元素,以id属性来设置id选择器,CSS 中 id 选择器以 “#” 来定义。ID和class属性不要以数字开头,数字开头的ID和class 在 Mozilla/Firefox 浏览器中不起作用 以class属性来设置class选择器,可以设定一组元素的样式,在 CSS 中,类选择器以一个点 . 号显示,比如
p.center {text-align:center;} /*所有的 p 元素使用 class="center" 让该元素的文本居中*/
样式表分为外部,内部和内联:
外部:当样式运用于很多页面时使用,每个页面使用 <link> 标签链接到样式表。 <link> 标签在(文档的)头部,比如
<head>
<link rel="stylesheet" type="text/css" href="样式表.css">
</head>
浏览器会从文件 样式表.css 中读到样式声明,并根据它来格式文档。
内部:当单个文档需要特殊的样式时,就应该使用内部样式表,使用<style>标签在文档头部<head>定义.
内联:仅在一个元素上应用一次,比如
<p style="what">段落。</p>
如果具有多重样式,优先级:
如果外部样式放在内部样式的后面,则外部样式将覆盖内部样式
CSS背景
- background-color:
颜色有以下定义方式:
十六进制:如 “ff0000″
RGB:如”rgb(255,0,0)”
颜色名称 如”red” - background-image
默认情况下,背景图像进行平铺重复显示,以覆盖整个元素实体 - background-repeat
background-repeat:repeat-x;(水平方向平铺)
no-repeat;(不平铺) - background-attachment
 - 背景图像是否固定或者随着页面的其余部分滚动。
 - background-position
设置背景图像的起始位置,比如background-position:right top; 
CSS文本
- 文本颜色直接
color就行; - 文本对齐方式:
 
text-align:center;(居中对齐
text-align:right;(右对齐
text-align:justify;(两端对齐,会根据当前浏览器窗口大小自适应
- 文本修饰:
text-decoration:overline/line-through...; - 文本转换:指定为文本字母大小写
 
text-transform:uppercase;(大写
text-transform:lowercase;(小写
text-transform:capitalize;(首字母大写
- 文本缩进:指定文本第一行缩进,ex.
text-indent:50px;letter-spacing:5px;字符之间的空间
同理,word-spacing:5px;单词之间的空间line-height:200%;行高,大多数浏览器的默认行高约为110%至120%。white-space:nowrap;元素内的文字不换行 
CSS字体
- 字体系列
font-family属性设置文本的字体系列。
ps:如果字体系列的名称超过一个字,必须用引号引起来
font-family 属性应该设置几个字体名称作为一种”后备”机制,如果浏览器不支持第一种字体,他将尝试下一种字体,每种字体之间用逗号隔开。 - 字体样式
font-style:normal;(正常
font-style:italic;(斜体
font-style:oblique;(倾斜的文字 - 字体大小
font-size:50px;或者可以不用像素用em单位,1em的默认大小是16px
也可以用百分比和em的组合,设置<body>元素的默认字体大小的是百分比 
CSS链接
- a:link {color:#000000;} /* 未访问链接*/
 - a:visited {color:#00FF00;} /* 已访问链接 */
 - a:hover {color:#FF00FF;} /* 鼠标移动到链接上 */
 - a:active {color:#0000FF;}  /* 鼠标点击时 */ 	
注:
a:hover 必须跟在 a:link 和 a:visited后面
a:active 必须跟在 a:hover后面 
CSS列表
ul.a {list-style-type: circle;} ul.b {list-style-type: square;}
ol.c {list-style-type: upper-roman;} ol.d {list-style-type: lower-alpha;} 和html差不多
CSS表格
- 指定CSS表格边框,使用border属性。
 
table
{
    border-collapse:collapse;/*折叠边框,没有就是双边框*/
}
table,th, td
{
    border: 1px solid black;/*设置黑色边框
}
- 表格的高和宽用
width和height属性
text-align 文本对齐,vertical-align 垂直对齐
控制边框和表格内容之间的间距,用td和th元素的填充属性padding 
td
{
    padding:15px;
}
设置颜色和之前大差不差
CSS边框
border-style属性用来定义边框的样式
none: 默认无边框
dotted: 定义一个点线边框
dashed: 定义一个虚线边框
solid: 定义实线边框
double: 定义两个边框。 两个边框的宽度和 border-width 的值相同
groove: 定义3D沟槽边框。效果取决于边框的颜色值
ridge: 定义3D脊边框。效果取决于边框的颜色值
inset:定义一个3D的嵌入边框。效果取决于边框的颜色值
outset: 定义一个3D突出边框。 效果取决于边框的颜色值
- 边框宽度 border-width,颜色border-color,也可以单独设置四面边框
 
css轮廓
outline属性,具体用法和边框类似
css margin(外边距)
margin属性可以设置1-4个值按顺序为上,右,下,左边距
css padding(填充)
可以看成内边距
display与visibility
display属性设置一个元素应如何显示,visibility属性指定一个元素应可见还是隐藏
- 隐藏元素:
display:none;(隐藏但不会占用空间)或者visibility:hidden;(隐藏但是会占用空间) - 在内联与块元素之间转换:
 
li {display:inline;}   //把列表项显示为内联元素
span {display:block;}  //span元素作为块元素
CSS Position(定位)
- static
html默认值,静态定位的元素不会受到 top, bottom, left, right影响 - fixed
元素的位置相对于浏览器窗口是固定位置 - relative
相对定位元素的定位是相对其正常位置,移动相对定位元素,但它原本所占的空间不会改变。 
h2.pos_left
{
    position:relative;
    left:-20px; /*从元素的原始左侧位置减去 20 像素,也就是相对于其正常位置向左移动*/
}
h2.pos_right
{
    position:relative;
    left:20px; /*向元素的原始左侧位置增加 20 像素,也就是相对于其正常位置向右移动*/
}
相对定位元素经常被用来作为绝对定位元素的容器块,就是说,相对定位元素包住绝对定位元素,带着他去你想要的位置,实现更精确的布局控制。
- absolute
绝对定位使元素的位置与文档流无关,因此不占据空间。 - sticky
可以理解为粘性定位,跟着鼠标滚动来定位,滚动到超过目标区域后就会固定在某一特定位置,这个特定位置只能设定为 top, right, bottom 或 left 之一, - 重叠元素
z-index属性指定了一个元素的堆叠顺序,可以为正负值overflow属性规定在一个元素溢出指定范围的处理: 
- scroll 显示滚动条
 - hidden 隐藏溢出的内容
 - auto 浏览器自动处理
 - visible 全展示 但会超出区域(默认
 
css float(浮动)
float 会使元素向左或向右移动,其周围的元素也会重新排列,浮动元素之后的元素将围绕它。 元素浮动之后,周围的元素会重新排列,为了避免这种情况,使用 clear 属性指定元素两侧不能出现浮动元素。
css布局
- 元素居中对齐:水平居中对齐一个元素(如 <
div>), 可以使用margin: auto; - 文本对齐还是 
text-align属性 - 图片居中对齐, 可以使用 
margin: auto;并将它放到 块 元素中,放到块元素用display:block; - 左右对齐可以用
position和float - 垂直居中可以用
line-height - 如果要水平和垂直都居中,可以使用 
padding和text-align: center: transform
transform:rotate(30deg);旋转transform:translate(100px,20px):根据左(X 轴)和顶部(Y 轴)位置给定的参数,从当前元素位置移动- scale 缩放
 - skew 扭曲
 - transform-origin 改变元素基点
清除浮动,用于解决父元素因为子元素浮动而导致高度塌陷的问题,让父元素能够正确包裹浮动的子元素。 
 /* 列后面清除浮动 */
.row:after {
  content: "";
  display: table;
  clear: both;
}
 
CSS组合选择符
- 后代选择器(以空格
分隔)
用于选取某元素的后代元素 - 子元素选择器(以大于 
>号分隔)
只能选择作为某元素直接/一级子元素的元素 - 相邻兄弟选择器(以加号 
+分隔)
可选择紧接在另一元素后的元素,且二者有相同父元素 - 后续兄弟选择器(以波浪号 
~分隔)
选取所有指定元素之后的相邻兄弟元素 
CSS伪类
用来添加一些选择器的特殊效果。 anchor伪类 就是修饰链接的 CSS :first-child 伪类:
- 匹配第一个 
<p>元素 
 p:first-child
{
    color:blue;
}
- 匹配所有
<p>元素中的第一个<i>元素 
p:first-child i
{
    color:blue;
}
- 匹配所有作为第一个子元素的 
<p>元素中的所有<i>元素 
p:first-child i
{
    color:blue;
}
CSS :focus伪类 选择元素输入后具有焦点
input:focus
{
	background-color:yellow; //当鼠标选择所修饰的元素后,该元素的背景颜色变为黄色
}
CSS伪元素
语法:
selector::pseudo-element {  /*也支持单冒号*/
    property: value;
}
:first-line 伪元素 :用于向文本的首行设置特殊样式。(只能用于块级元素) 下面的属性可应用于 “first-line” 伪元素:
- font properties 字体属性 包括:
font-size(字体大小
font-weight(字体粗细
font-style(字体样式 包括:normal“正常”,italic“斜体”,oblique“倾斜”
font-variant(设置小型大写字母字体,有normal,small-caps
line-height(行高
还可以简写为font,例如 
body {
    font: italic bold 16px Arial, sans-serif; 
    /* 依次为 font-style, font-weight, font-size, font-family */
}
- color properties
 - background properties
 - word-spacing
 - letter-spacing
 - text-decoration
 - vertical-align
 - text-transform
 - line-height
 - clear
“first-letter” 伪元素用于向文本的首字母设置特殊样式
“:before” 伪元素可以在元素的内容前面插入新内容
“:after” 伪元素可以在元素的内容之后插入新内容 
CSS导航栏
导航条基本上是一个链接列表 我觉得可能常用的几种设计:
- 全屏高度的固定导航条
 
ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
    width: 25%;
    background-color: #ffffff;
    height: 100%; /* 全屏高度 */
    position: fixed; 
    overflow: auto; /* 如果导航栏选项多,允许滚动 */
}
- 水平导航栏
有两种方式,一种是内联: 
li
{
    display:inline; 
}
一种是浮动(float)
li
{
    float:left;
}
a
{
    display:block;
    width:60px;
}
- 添加分割线
 
/* 除了最后一个选项(last-child) 其他的都添加分割线 */
li {
    border-right: 1px solid #bbb;
}
 
li:last-child {
    border-right: none;
}
- 下拉菜单
实现鼠标悬浮显示菜单: 
 .dropdown-content {
     display: none;  /*先让他看不见*/
     position: absolute;
     /* 默认相对于<html>进行绝对定位 */
     background-color: #f9f9f9;
     min-width: 100px;
     box-shadow: 0 8px 16px 0 rgba(0, 0, 0, .2);
 }
 .dropdown:hover .dropdown-content {
     display: block;
     /* 中间的空格表示,鼠标悬念在.dropdown上时,dropdown的子元素.dropdown-content变为块元素 */
 }
菜鸟上的一个实例
CSS提示工具(Tooltip)
提示工具在鼠标移动到指定元素后触发,显示所指定的信息
<style>
.tooltip {
    position: relative;
    display: inline-block;
    border-bottom: 1px dotted black;
}
.tooltip .tooltiptext {
    visibility: hidden;
    width: 120px;
    background-color: black;
    color: #fff;
    text-align: center;
    border-radius: 6px;
    padding: 5px 0;
    /* 定位 */
    position: absolute;
    z-index: 1;
}
.tooltip:hover .tooltiptext {
    visibility: visible;
}
</style>
CSS属性选择器
根据元素的属性或属性值来选择元素 常见的属性选择器:
 [attribute]{ /* 属性 */
/*描述你想要的效果*/
}这种直接匹配有这种属性的元素
属性值匹配选择器:
/* 选择所有 `type` 属性等于 `text` 的元素 */
[type="text"] {
  /*描述你想要的效果*/
} /*如果是=,就是完全匹配;如果是~=,选择属性值中包含指定单词(单词以空格分隔)的元素。(就是说这个指定单词是独立的
如果是 |=,则是选择具有指定值或者以指定值开头并紧跟着连字符 - 的属性值的元素,常用于语言代码。
如果是^=,则是选择属性值以指定值开头的元素
如果是$=,则是选择属性值以指定值结尾的元素
如果是*=,则是选择属性值中包含指定值的元素(只要有指定的这个字眼就行
CSS计数器
- counter-reset – 创建或者重置计数器
 - counter-increment – 递增变量
 - content – 插入生成的内容
 - counter() 或 counters() 函数 – 将计数器的值添加到元素
要使用 CSS 计数器,得先用 counter-reset 创建 
- 先创建和初始化计数器,比如:
 
/* 创建并初始化一个名为 "sectionCounter" 的计数器,初始值为 0 */
body {
    counter-reset: sectionCounter; 
}
/* 创建并初始化多个计数器 */
body {
    counter-reset: sectionCounter 0 chapterCounter 1; 
}
- 增加计数器的值,默认每次加1,也可以自定义
 
h2 {
    counter-increment: sectionCounter; 
}
/* 每次遇到 h3 元素,将 chapterCounter 计数器增加 2 */
h3 {
    counter-increment: chapterCounter 2; 
}
- 显示计数器的值
使用
counter()函数在元素的内容中显示计数器的值,counter()函数接受计数器的名称作为参数,还可以指定显示格式(如十进制、罗马数字等)。 
h2:before { 
    content: "Section " counter(sectionCounter) ": "; 
}  /*在每个h2元素的内容前面添加文本,并显示sectionCounter计数*/
h3:before {
    content: "Chapter " counter(chapterCounter, upper-roman) ": "; 
}
计数器还可以嵌套
CSS !important 规则
CSS 中的 !important 规则用于增加样式的权重。
!important 与优先级无关,但它与最终的结果直接相关,使用一个 !important 规则时,此声明将覆盖任何其他声明。
不要轻易使用!importsnt规则
大佬求带飞【动画表情】