CSS语法规范

CSS规则由两个主要的部分构成:选择器以及一条或多条声明
h1 {color: red; font-size: 12px;}
选择器是用于指定CSS样式的HTML标签,花括号内是对该对象设置的具体样式
属性和属性值以”键值对”的形式存在
属性和属性值之间用英文“:”分开
多对“键值对”之间用英文“;”进行区分
<style></style>渲染

CSS基础选择器

选择器分类
选择器分为基础选择器和复合选择器两个大类
基础选择器是由单个选择器组成
基础选择器包括:标签选择器、类选择器、id选择器和通配符选择器
类选择器在修改样式中用的最多,id选择器一般用于页面唯一性的元素上,经常和JS搭配使用

标签选择器
用HTML标签名作为选择器,按标签名称分类
标签名 {
    属性1: 属性值;
    属性2: 属性值;
    属性3: 属性值;
    ...
}

类选择器
.类名 {
    属性1: 属性值1;
    ...
}
.red{
    color: red;
}
结构需要用class属性来调用class类
<div class='red'>变红色</div>
类选择器使用“.”(英文点好号)进行标识,后面紧跟类名(自定义,我们自己命名的)
可以理解为给这个标签起了一个名字,来表示
长名称或词组可以使用中横线来为选择器命名
使用英文字母来命名
命名要有意义,尽量让别人一眼就知道这个类名的目的

类选择器-多类名
在标签class属性中写多个类名
多个类名中间用空格分开
<div class="red font">瘦到100斤</div>


id选择器
id属性只能在每个HTML文档中出现一次
样式#定义,结构id调用,只能调用一次,别人切勿使用
#id名 {
    属性1: 属性值1;
    ...
}


通配符选择器
* {
    属性1: 属性值1;
    ...
}

CSS文字属性

字体系列
CSS使用font-family属性定义文本的字体系列
p {font-family: "思源宋体";}
/*多单词加引号,单双引号都可*/

font-size属性定义文本的字体大小
body {font-size: 20px;}
/*标题比较特殊,需要单独指定字体大小*/

font-weight属性设置文本的字体粗细
参数:nomal(400)|bold(700)|bolder|lighter|number
p {font-weight: 400;}

font-style属性设置文本的风格
参数:nomal|italic(斜体)
p {font-style: nomal}

**字体复合属性**
不能更改属性顺序,并且各个属性间以空格隔开
必须保留font-size和font-family属性
body {
    font: font-style font-weight font-size/line-height font-family;
}
body {
    italic 700 12px 'Microsoft yahei'
}

CSS文本属性

文本颜色
color属性定义文本的颜色
div {
    color: red;
}

对齐文本
text-align属性用于设置元素内文本内容的水平对齐方式
div {
    text-align: center;
}

装饰文本
text-decoration属性规定添加到文本的修饰,下划线、删除线、上划线等
属性值:none|underline|overline|line-through
div {
    text-decoration: underline;
}

文本缩进
text-indent属性用来指定文本的第一行的缩进
div {
    text-indent: 10px/2em;
}
em是一个相对单位,当前元素的一个文字大小

行间距
line-height属性设置行间的距离
p {
    line-height: 26px;
}

CSS的引入方式

内部样式表
嵌入式引用,写到html页面内部
<style>
    div {
        color: red;
        font-size: 20px;
    }
</style>

行内样式表
行内式引用,在元素标签内部的style属性中设定CSS样式
双引号
<div style="color: red; font-size: 12px;">今天的天气为晴转多云</div>

外部样式表(吐血推荐)
样式单独写到CSS文件中,之后把CSS文件使用link标签引入到HTML页面使用
<link rel="stylesheet" href="css文件路径">
/*rel定义当前文档与被链接文档之间的关系*/
/*在这里需要指定为“stylesheet”,表示被链接的文档是一个样式表文件*/
/*href定义所链接外部样式表文件的url,可以是相对路径,也可以是绝对路径*/

Chrome调试工具

打开调试工具
打开Chrome浏览器,按下F12键或右击页面空白处-检查
使用调试工具
Ctrl+滚轮 放大开发者工具代码大小;Ctrl+0 复原浏览器大小
右边CSS样式可以改动数值,但刷新后不会保存
如果有样式,但样式前面有黄色叹号提示,则样式属性书写错误

Emmet语法

Emmet语法
1.生成标签 直接输入标签名按tab键即可
2.如果想要生成多个相同的标签,加上 * 就可以了,比如 p*3
3.如果有父子级关系的标签,可以用 > ,比如 ul>li 
4.如果有兄弟关系的标签,可以用 + ,比如 div+p
5.如果生成带有类名或者id名字的,直接写 .demo 或者 #two
6.如果生成的div类名是有顺序的,可以用自增符号 $ ,比如 div.demo$*5
7.如果想要在生成的标签内部写内容,可以用 {} 表示,比如 p{今天好热啊$}*5

快速生成CSS样式语法
1.比如 w200 按tab 可以生成 width: 200px;
2.比如 lh26 按tab 可以生成 line-heught: 26px;

快速格式化代码
webstorm的快捷键ctrl+alt+l

CSS的复合选择器

后代选择器(重要)(较多)
元素1 元素2 {样式声明}
ul li {样式声明} /*选择ul里面所有li标签元素*/
ul li a {样式声明} /*ul里li中a标签元素*/
.nav li a {样式声明} /*类选择器里li中a标签元素*/

子选择器(重要)(较少)
元素1>元素2 {样式声明}
div>a {样式声明} /*选择div里面所有最近一级 a 标签元素*/

并集选择器(重要)(较多)
元素1,元素2 {样式声明}
div,
p,
.pig .peiqi {样式声明} /*选择div,p和类选择其中peiqi类里面的内容*/
并集选择器竖着写

链接伪类选择器(较多)
a:link      /*选择所有未被访问的链接*/
a:visited   /*选择所有已被访问的链接*/
a:hover     /*选择鼠标指针位于其上的链接*/
a:active   /*选择活动链接(鼠标按下未弹起的链接)*/
实际开发中按照LVHA的顺序进行书写
a链接在浏览器中具有默认样式,所以实际工作中需要给链接单独指定样式
链接伪标签选择器实际工作开发中的写法:
/* a 是标签选择器 所有的链接*/
a {
    color: gray;
}
/* :hover 是链接伪类选择器 鼠标经过*/
a:hover {
    color: red; /*鼠标经过的时候,由原来的 灰色 变成了 红色*/
}

focus伪类选择器(较少)
用于选取获得焦点的表单元素
input:focus {
    background-color: yellow;
}

CSS的元素显示模式

块元素
<h1>~<h6>|<p>|<div>|<ul>|<ol>|<li>等
特点:
1.独占一行
2.高度、宽度、外边距以及内边距都可以控制
3.宽度默认是容器的100%
4.是一个容器盒子,里面可以放行内或者块级元素
/*文字类标签里边不能再放块级元素*/

行内元素
<a>|<strong>|<b>|<em>|<i>|<del>|<s>|<ins>|<u>|<span>等
特点:
1.相邻行内元素在一行上,一行可以显示多个
2.高、宽直接设置是无效的
3.默认宽度就是它本身内容的宽度
4.行内元素只能容纳文本或其他行内元素
<a>里面可以放块级元素,但是给<a>转换一下块级模块最安全

行内块元素
<img/>|<input/>|<td>
特点:
1.和相邻行内元素在一行上,但它们之间会有空白缝隙,一行可以显示多个
2.默认宽度是它本身内容的宽度
3.高度、行高、外边距以及内边距都可以控制

元素显示模式转换
转换为块元素: display: block;
转换为行内元素: display: inline;
转换为行内块: display: inline-block;

CSS的背景

背景颜色
background-color: transparent(透明)|color(颜色值)
背景图片
background-image: none|url
背景平铺
background-repeat: repeat(平铺)|no-repeat(不平铺)|repeat-x(横向平铺)|repeat-y(纵向平铺)

背景图片位置(非常重要)
background-position: x y;
参数值
length      百分数|由浮点数字和单位标识符组成的长度值(x y有顺序,)
position    top |center|bottom|left|center|right 方位名词(x y无顺序)

背景图像固定(背景附着)
background-attachment: scroll(随对象内容滚动)|fixed(固定)

背景复合写法
没有特定的书写顺序
background:背景颜色 背景图片地址 背景平铺 背景图像滚动 背景图片位置
background: transparent url("../statia/img_src/猫猫.jpg") no-repeat fixed top;

背景色半透明
background: rgba(0,0,0,0.3);
最后一个参数是alpha透明度,取值范围在0~1之间

CSS的三大特性

层叠性
样式冲突,遵循就近原则,只覆盖冲突的样式
继承性
子标签会继承父标签的某些样式,如文字颜色和字号
优先级
选择器相同,则执行层叠行
选择器不同,则根据选择器权重执行
继承<元素选择器<类选择器<id选择器<行内样式style=""<!important
继承的权重是0,0,0,0
元素选择器是0,0,0,1
类选择器是0,0,1,0
id选择器是0,1,0,0
行内样式style是1,0,0,0
!important是无穷大

盒子模型

Box Model组成:
border边框
content内容(盒子里面的内容)
padding内边距(内容与盒子边框的距离)
margin外边距(盒子与盒子之间的距离)

边框(border)
border:border-width(边框的粗细,单位px)|border-style(边框样式)|border-color(边框颜色)
border-style: dotted(点线)|dashed(虚线)|solid(实线)
/*none(无边框)|hidden(隐藏边框)|double(双线)|groove(根据border-color的值画3D凹槽)|ridge(...菱形边框)|inset(...3D凹边)|outset(...3D凸边)*/
**边框复合写法**
border: 1px solid red;(没有顺序)
边框分开写法
border-top: 1px solid pink;
单元格边框
border-collapse:collapse;   (相邻边框合并在一起)

border会影响盒子实际大小

内边距
padding-left|padding-right|padding-top|padding-bottom
padding:5px;                 (四边)
padding:5px 10px;            (上下5,左右10)
padding:5px 10px 20px;       (上5,左右10,下20)
padding:5px 10px 20px 30px;  (上5,右10,下20,左30)
padding会影响盒子实际大小
若盒子本身没有指定width/height属性,此时padding不会影响盒子大小

外边距
margin-left|margin-right|margin-top|margin-bottom
margin简写方式与padding一致

外边距典型应用
外边距可以让块级盒子水平居中,需满足两个条件:
1.盒子必须指定了宽度width
2.盒子左右的外边距都设置为auto
对于行内元素或行内块元素想要水平居中,可以给其父元素添加text-align:center即可

外边距合并
对于两个嵌套关系的块元素,父元素有上外边距同时子元素也有上外边距,此时父元素会塌陷较大的外边距
1.可以为父元素定义上边框
2.可以为父元素定义上内边距
3.可以为父元素添加 overflow:hidden(最常用)
4.浮动、固定盒子

清除内外边距
网页元素很多都带有默认的内外边距,而且不同浏览器默认的也不一致
清除网页元素内外边距
* {
    padding: 0;     /*清除内边距*/
    margin: 0;      /*清除外边距*/
}

PS基本操作

前端大部分切图工作都是在PS里面完成的
1.文件——打开:打开我们要测量的图片
2.Ctrl+R:可以打开标尺,或者视图——标尺
3.右击标尺,把里面的单位改为像素
4.Ctrl+加号(+)可以放大视图,Ctrl+减号(-)可以缩小试图
5.用选区拖动可以测量大小
6.Ctrl+D可以取消选区,或者在旁边空白处点击一下也可以取消选区
7.用吸管工具进行取色

圆角边框(重点)

元素外边框圆角
border-radius: length;      (数值或百分比都可以)
后跟两个length,则设置的是两个对角
后跟四个length,则设置的是顺时针四个角
分开写:border-top-left-radius、border-top-right-radius、border-bottom-right-radius、border-bottom-left-radius

盒子阴影(重点)

box-shadow: h-shadow v-shadow blur spread color inset;
盒子阴影属性:水平阴影的位置|垂直阴影的位置|模糊距离|阴影尺寸|阴影颜色|外部阴影(outset)或内部阴影(inset)

文字阴影(了解)

text-shahow: h-shadow v-shadouw blur color;
文字阴影属性:水平阴影位置|垂直阴影位置|模糊距离|阴影颜色

CSS浮动(难点)

1.标准流(普通流/文档流)
标准流是最基本的布局方式,就是标签按照规定好默认方式排列
(1)块级元素会独占一行,从上向下顺序排列
(2)行内元素会按照顺序,从左到右顺序排列,碰到父元素边缘则自动换行
2.浮动
float属性用于创建浮动框,将其移动到一边,直到左边缘或右边缘触及包含块或另一浮动框的边缘
选择器{float: 属性值;}
属性值:none | left | right

浮动特性(重难点)

1.浮动元素会脱离标准流(脱标)            浮动的盒子不再保留原先的位置
2.如果多个盒子都设置了浮动,浮动的元素会一行内显示并且元素顶部对齐          盒子之间没有空隙
3.浮动的元素会具有行内块元素的特性          如果盒子没有设置宽度,默认宽度和父级一样宽,但添加浮动后,它的宽度根据内容多少来决定
先设置盒子大小,在设置盒子的位置
1.浮动和标准流的父盒子搭配
2.一个元素浮动了,理论上其余的兄弟元素也要浮动

清除浮动

选择器{clear: 属性值;}
属性值:left | right | both
实际开发中,基本只用 clear: both;
清除浮动的策略是 闭合浮动

给父级添加overflow属性,将其属性值设置为 hidden | auto | scroll

给父元素添加after伪元素
.clearfix:after {
    content: "";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}
.clearfix {
    *zoom: 1;
}

给父元素添加双伪元素清除浮动
.clearfix:before,.clearfix:after {
    content: "";
    display: table;
}
.clearfix:after {
    clear:both;
}
.clearfix {
    *zoom: 1;
}
3.定位=定位模式+边偏移
position属性来设置定位模式
属性值: static | relative | absolute | fixed
        静态定位 | 相对定位 | 绝对定位 | 固定定位
边偏移就是定位的盒子移动到最终位置
属性: top | bottom | left | right
示例:top: 80px        顶端偏移量,定义元素相对于其父元素上边线的距离

静态定位static(了解)

静态定位是元素默认定位方式,无定位的意思
选择器 {position: static;}

相对定位relative(重要)

移动位置的时候参照点是自己原来的位置
不脱标,继续保留原来的位置
选择器 {position: relative;
        top: 80px;
        left: 80px;
      }

绝对定位absolute(重要)

绝对定位是元素在移动位置的时候,是相对于它祖先元素来说的
如果没有祖先元素或者祖先元素没有定位,则以浏览器为准定位
如果祖先元素有定位(相对、绝对、固定定位),则以最近一级的有定位祖先元素为参考点移动位置
脱标,不再占有原来的位置
选择器 {position: absolute;
        top: 80px;
        left: 80px;
        }

固定定位fixed(重要)

固定定位是元素固定于浏览器可视区的位置。主要场景:可以在浏览器页面滚动时元素的位置不会改变
以浏览器的可视窗口为参照点移动元素
固定定位不占有原先的位置
选择器 {position: fixed;}

固定在版新的右侧
1.让固定定位的盒子left:50%.走到浏览器可视区的一半位置
2.让固定定位的盒子margin-left:版心宽度的一半距离。多走版心宽度的一半位置
就可以让固定定位的盒子贴着版心右侧对齐

粘性定位sticky(了解)

粘性定位可以被认为是相对定位和固定定位的混合
1.以浏览器的可视窗口为参照点移动元素(固定定位特点)
2.粘性定位占有原先的位置(相对定位特点)
3.必须添加 top | right | bottom | left 其中的一个才有效
选择器 {position: sticky; top: 10px;}

定位叠放次序 z-index

使用定位布局时,可能会出现盒子重叠的情况,此时,可以使用z-index来控制合资的前后次序(z轴)
选择器 {z-index: 1;}
数值可以是正整数、负整数或0,默认是auto,数值越大,盒子越靠上
如果属性值相同,则后来者居上
只有定位的盒子才有z-index属性

定位的拓展

1.绝对定位的盒子居中
加了绝对定位的盒子不能通过margin: 0 auto 水平居中,但是可以通过以下计算方法实现水平和垂直居中
(1)left: 50%;   让盒子的左侧移动到父级元素的水平中心位置
(2)margin-left: -100px;     让盒子向左移动自身宽度的一半

2.定位特殊特性
绝对定位和固定定位也和浮动类似
(1)行内元素添加绝对或者固定定位,可以直接设置高度和宽度
(2)块级元素添加绝对或者固定定位,如果不给宽度或者高度,默认大小是内容的大小

3.脱标的盒子不会触发外边距塌陷
浮动元素、绝对定位(固定定位)元素都不会触发外边距合并的问题

4.绝对定位(固定定位)会完全压住盒子
浮动元素只会压住它下面标准流的盒子,但是不会压住下面标准流盒子里面的文字(图片)
绝对定位或固定定位会压住下面标准流所有的内容
浮动产生的目的最初就是为了做文字环绕结果的,文字会围绕浮动元素

PS切图(必备技能)

jpg图像格式:产品类的图片经常用jpg格式
gif图像格式:经常用于一些图片小动画效果
png图像格式:想要切成背景透明的图片,就用png格式
PSD图像格式:Photoshop专用格式,前端人员可以直接从上面复制文字,测量大小

图层切图

右击图层----快速导出为PNG
图层菜单  shift相加----ctrl+E  合并图层
右击----快速导出为PNG

切片切图

利用切片工具手动划出
文件菜单----导出----存储为web设备所用格式----选择我们要的图片格式----存储

PS插件切图

Cutterman插件

元素的显示与隐藏

本质:让一个元素在页面中隐藏或者显示出来
1. display  显示隐藏
display: none;       隐藏对象
display: block;     除了转换为块级元素之外,同时还有显示元素的意思
display隐藏元素后,不在占有原来的位置

2.visibility    显示隐藏
visibility: inherit | visible | hidden | collapse
inherit:继承上一个父对象的可见性
visible:对象可视
hidden:对象隐藏
collapse:主要用来隐藏表格的行或列,隐藏的行或列能够被其他内容使用
visibility隐藏元素后,元素继续占有原来的位置

3.overflow  溢出显示隐藏
overflow: visible | auto | hidden | scroll
visible:不剪切内容也不添加滚动条
hidden:不显示超出对象尺寸的内容
scroll:不管内容超出否,总显示滚动条
auto:超出自动显示滚动条,不超出不显示滚动条
如果是有定位的盒子,慎用 overflow: hidden 因为它会隐藏多余的部分

精灵图

精灵技术目的:为了有效减少服务器接收和发送请求的次数,提高页面的加载速度

字体图标

P255

CSS三角

div {
    width: 0;
    height: 0;
    line-height: 0;
    font-size: 0;
    border: 50px solid transparent;
    border-top-color: pink;
}

CSS用户界面样式

1.鼠标样式cursor
li {cursor: pointer;}
属性值     default | pointer | move | text | not-allowed
            默认   |   小手  |  移动 |  文本 |  禁止
2.轮廓线outline
给表单添加 outline: 0; 或者 outline: none; 样式之后,就可以去掉默认的蓝色边框

vertical-align属性的应用

CSS的vertical-align属性使用场景:经常用于设置图片或者表单(行内块元素)和文字垂直对齐
vertical-align: baseline | top | middle | bottom

解决图片底侧空白缝隙
1.使用 vertical-align: top | middle | bottom 都可(提倡使用)
2.把图片转换为块级元素 display: block;

溢出文字省略号显示

1.单行文本溢出显示省略号
/*(1)先强制一行内显示文本*/
white-space: nowrap;    (默认 normal 自动换行)
/*(2)超出的部分隐藏*/
overflow: hidden;
/*(3)文字用省略号替代超出的部分*/
text-overflow: ellipsis;

常见布局技巧

1.margin负值的运用
盒子设置浮动后,让每个盒子 margin 往左侧移动 -1px 正好压住相邻盒子边框
鼠标经过某个盒子的时候,提高当前盒子的层级即可     如果没有定位,则 position:relative;  如果有定位,则加 z-index

2.文字围绕浮动元素
float 文字围绕

3.行内块的巧妙运用

4.css三角强化

CSS语法规范

CSS规则由两个重要的部分构成:选择器以及一条或多条声明

CSS字体属性

font-family 属性定义文本的字体属性
font-size 属性定义文本的字体大小
font-weight 设置文本的字体粗细		nomal(400) | bold(700) | bolder | lighter | number
font-style 设置文本的风格		nomal | italic(斜体)
<!-- 
文字复合属性  不能更改属性顺序,属性之间以空格隔开 
必须保留 font-size 和 font-family 属性
-->
body {
	font: font-style font-weight font-size/font-height font-family;
}
body {
	italic 700 12px 'Microsoft yahei'
}

CSS文本属性

color 属性定义文本的颜色
text-align 设置元素内文本内容的水平对齐方式
text-decoration 规定添加到文本的修饰  none | underline | overline | line-through(删除线)
text-indent 属性用来指定文本的第一行的缩进		10px/2em
line-height 属性设置行间距

CSS引入方式

内部样式表		<style></style>
行内样式表		<div style="color: red; font-size: 12px;">xxx</div>
外部样式表		<link rel="stylesheet" href="css文件路径">
		rel定义当前文档与被链接文档之间的关系, stylesheet表示被链接的文档是一个样式表文件
		href定义所链接外部样式表文件的url,可以是相对路径,也可以是绝对路径

CSS复合选择器

后代选择器(较多)

元素1 元素2 {样式声明}
.nav li a {样式声明}	类选择器里li中a标签元素

子选择器(较少)

元素1>元素2 {样式声明}
div>a {样式声明}	选择 div 里面所有最近一级 a 标签元素

并集选择器(较多)

元素1,元素2 {样式声明}
div,
p,
.pig .peiqi {样式声明}		选择 div,p 和类选择器  .pig 中 .peiqi 类里面的内容

链接伪类选择器(较多)

a:link		选择所有未被访问的链接
a:visited	选择所有已被访问的链接
a:hover		选择鼠标指针位于其上的链接
a:active	选择活动链接(鼠标按下未弹起的链接)
实际开发中按照 LVHA 的顺序进行书写
<!-- 鼠标经过的时候,链接由原来的灰色变成了红色 -->
a {
	color: gray;
}
a:hover {
	color: red;		
}

focus伪类选择器

用于选取获得焦点的表单元素
input: focus {
	bacjground-color: yellow;
}

CSS元素显示模式

块元素

<h1>~<h6>|<p>|<div>|<ul>|<ol>|<li>
特点:
 1.独占一行
 2.高度、宽度、外边距以及内边距都可以控制
 3.宽度默认是容器的100%
 4.是一个容器盒子,里面可以放行内元素或者块元素(文字类标签里面不能再放块级元素)

行内元素

<a>|<strong>|<b>|<em>|<i>|<del>|<s>|<ins>|<u>|<span>
特点:
 1.相邻行内元素在一行上,一行可以显示多个
 2.高、宽直接设置是无效的
 3.默认宽度就是它本身内容的宽度
 4.行内元素只能容纳文本或其他行内元素
 <a>里面可以放块级元素,但是给<a>转换一下块级模块最安全

行内块元素

<img>|<input>|<td>
特点:
 1.和相邻行内元素在一行上,但它们之间会有空白缝隙,一行可以显示多个
 2.默认宽度是它本身内容的宽度
 3.高度、行高、外边距以及内边距都可以控制

元素显示模块转换

转换为块元素:display: block;
转换为行内元素:display: inline;
转换为行内块元素:display: inline-block;

CSS的背景

背景颜色

background-color: transparent(透明)|color(颜色值)

背景图片

background-image: none|url

背景平铺

background-repeat: repeat(平铺)|no-repeat(不平铺)|repeat-x(横向平铺)|repeat-y(纵向平铺)

背景图片位置(重要)

background-position: x y;
参数值:
 length 百分数|由浮点数字和单位标识符组成的长度值(x y有顺序)
 position  top|center|bottom|left|center|right 方位名词(x y无顺序)

背景图像固定(背景附着)

background-attachment: scroll(随对象内容滚动)|fixed(固定)

背景复合写法(没有特定书写顺序)

background: 背景颜色  背景图片地址  背景平铺  背景图像滚动  背景图片位置
background: transparent url("../static/img_src/猫猫.jpg") no-repeat fixed top;

背景色半透明

background: rgba(0, 0, 0, 0.3);

CSS三大特性

层叠性  继承性  优先级

选择器权重

继承<元素选择器<类选择器<id选择器<行内样式style=""<!important
继承的权重: 0, 0, 0, 0
元素选择器: 0, 0, 0, 1
类选择器是: 0, 0, 1, 0
id选择器是: 0, 1, 0, 0
行内样式style: 1, 0, 0, 0
!important: 无穷大

盒子模型

Box Model组成:
border边框
content内容(盒子里面的内容)
padding内边距(内容与盒子边框的距离)
margin外边距(盒子与盒子之间的距离)

边框border

border: border-width(边框的粗细,单位px)|border-style(边框样式)|border-color|
border-style: dotted(点线)|dashed(虚线)|solid(实线)
none(无边框)|hidden(隐藏边框)|double(双线)

边框复合写法

border: 1px solid red;(没有顺序)

边框分开写法

border-top: 1px solid red;

单元格边框

border-collapse: collapse;(相邻边框合并在一起)

内外边距

padding: 5px(四边)	padding: 5px 10px(上下,左右)	padding: 5px 10px 20px(上,左右,下)
padding: 5px 10px 15px 20px(上,右,下,左)
margin 写法与 padding 一致

圆角边框(重点)

border-radius: length;(数值或百分比都可以)
后跟两个 length,则设置的是两个对角
后跟四个 length,则设置的是顺时针四个角
分开写:border-top-left-radius\border-top-right-radius\border-bottom-right-radius\border-bottom-left-radius

盒子阴影(重点)

box-shadow: h-shadow v-shadow blur spread color inset;
盒子阴影属性:水平阴影位置|垂直阴影位置|模糊距离|阴影尺寸|阴影颜色|外部阴影(outset)或内部阴影(inset)

文字阴影(了解)

text-shadow: h-shadow v-shadow blur color;
文字阴影属性:水平阴影位置|垂直阴影位置|模糊距离|阴影颜色

CSS浮动(难点)

1.标准流(普通流/文档流)

(1)块级元素会独占一行,从上向下顺序排列
(2)行内元素会按照顺序,从左到右顺序排列,碰到父元素边缘则自动换行

2.浮动

选择器{float: 属性值;}
属性值: none | left | right
浮动特性(重难点)
1.浮动元素会脱离标准(脱标),浮动的盒子不再保留原先的位置
2.如果多个盒子都设置了浮动,浮动的元素会一行内显示并且元素顶部对齐,盒子之间没有空隙
3.浮动的元素会具有行内块元素的特性,如果盒子没有设置宽度,默认宽度和父级一样,但添加浮动后,它的宽度根据内容多少来决定
4.浮动和标准流的父盒子搭配
5.一个元素浮动了,理论上其余的兄弟元素也要浮动
清除浮动
clear闭合浮动
选择器{clear: 属性值;}
属性值: left | right | both(最常用)
给父级添加overflow属性
将其属性值设置为 hidden | auto | scroll
给父元素添加after属性
.clearfix:after {
    content: "";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}
.clearfix {
    *zoom: 1;
}
给父元素添加双伪元素清除浮动
.clearfix:before,.clearfix:after {
    content: "";
    display: table;
}
.clearfix:after {
    clear:both;
}
.clearfix {
    *zoom: 1;
}

3.定位=定位模式+边偏移

position: static | relative | absolute | fixed
		   静态定位 | 相对定位 | 绝对定位 | 固定定位
边偏移属性: top | bottom | left | right
示例: 
选择器 {position: relative;
		top: 80px;
		left: 20px;
		}
相对定位relative
移动位置的时候参照点是自己原来的位置,不脱标,继续保留原来的位置
绝对定位absolute
绝对定位是元素在移动位置的时候,相对于它祖先元素来说的
如果没有祖先元素或者祖先元素没有定位,则以浏览器为准;如果祖先元素有定位(相对、绝对、固定定位),则以最近一级的有定位祖先元素为参考点移动位置,且脱标,不再占有原来的位置
固定定位fixed
固定定位是元素固定于浏览器可视区的位置(主要场景:可以在浏览器页面滚动时元素的位置不会改变),且固定定位不占有原先的位置
固定在版型的右侧:
1.让固定定位的盒子 left: 50% 走到浏览器可视区的一半位置
2.让固定定位的盒子 margin-left: 版型宽度的一半距离 
定位叠放次序z-index
选择器 {z-index: 1;}
数值可以是正整数、负整数或0,默认是auto,数值越大,盒子越靠上;如果属性值相同,则后来者居上;只有定位的盒子才有 z-index 属性
定位的拓展
绝对定位的盒子居中
加了绝对定位的盒子不能通过 margin: 0 auto 水平居中,但是可以通过以下计算方法实现水平和垂直居中
(1)left: 50%;	让盒子的左侧移动到父级元素的水平中心位置
(2)margin-left: -100px;	   让盒子向左移动自身宽度的一半
定位特殊特性
绝对定位和固定定位也和浮动类似
(1)行内元素添加绝对或者固定定位,可以直接设置高度和宽度
(2)块级元素添加绝对或者固定定位,如果不给宽度或者高度,默认大小是内容的大小
脱标的盒子不会触发外边距塌陷
浮动元素、绝对定位(固定定位)元素都不会触发外边距合并的问题
绝对定位(固定定位)会完全压住盒子
浮动元素只会压住它下面标准流的盒子,但是不会压住下面标准流盒子里面的文字(图片)
绝对定位或固定定位会压住下面标准流所有的内容
浮动产生的目的最初就是为了做文字环绕结果的,文字会围绕浮动元素

元素的显示与隐藏

display 显示隐藏

display: none;		隐藏对象
display: block;		除了转换为块级元素之外,同时还有显示元素的意思
diaplay隐藏元素后,不再占有原来的位置

visibility 显示隐藏

visibility: inherit | visible | hidden | collapse
inhreit: 继承上一个父对象的可见性
visible: 对象可视
hidden: 对象隐藏
collapse: 主要用来隐藏表格的行或列,隐藏的行或列能够被其它内容使用
visibility 隐藏元素后,元素继续占有原来的位置

overflow 溢出显示隐藏

overflow: visible | auto | hidden | scroll
visible: 不剪切内容也不添加滚动条
hidden: 不显示超出对象尺寸的内容
scroll: 不管内容是否超出,总显示滚动条
auto: 超出自动显示滚动条,不超出不显示滚动条
如果是有定位的盒子,慎用 overflow: hidden 因为它会隐藏多余的部分

CSS三角

<style>
        .box1 {
            width: 0;
            height: 0;
            border-top: 50px solid pink;
            border-right: 50px solid red;
            border-bottom: 50px solid blue;
            border-left: 50px solid green;
        }
        .box2 {
            width: 0;
            height: 0;
            border: 50px solid transparent;
            border-top-color: pink;
            margin: 0 auto;
        }
        .jingdong {
            position: relative;
            width: 120px;
            height: 249px;
            background-color: skyblue;
        }
        .jingdong span {
            position: absolute;
            right: 15px;
            top: -10px;
            width: 0;
            height: 0;
            /*为了照顾兼容性*/
            line-height: 0;
            font-size: 0;
            border: 5px solid transparent;
            border-bottom-color: skyblue;
        }
</style>

用户界面样式

鼠标样式cursor
li{cursor: pointer;}
属性值	default | pointer | move | text | not-allowed
		默认   |  小手   | 移动 |  文本  | 禁止
轮廓线outline
给表单添加 outline: 0; 或者 outline: none; 样式之后,就可以去掉默认的蓝色边框

vertical-align 属性的应用

经常用于设置图片或者表单(行内块元素)和文字垂直对齐
vertical-align: baseline | top | middle | bottom
解决图片底测空白缝隙:
1.使用 vertical-align: top | middle | bottom 都可(提倡使用)
2.把图片转换为块级元素 display: block;

溢出文字省略号显示

<style>
        div {
            width: 100px;
            height: 40px;
            background-color: pink;
            margin: 100px auto;
            /*white-space: normal; 的意思是 文字自动换行*/
            /*white-space: normal;*/
            /*1.white-space: nowrap; 的意思是 文字强制一行显示*/
            white-space: nowrap;
            /*2.溢出的部分隐藏起来*/
            overflow: hidden;
            /*3.文字用省略号替代超出的部分  ellipsis 省略号*/
            text-overflow: ellipsis;
        }
</style>

去掉li前面的 项目符号(小圆点)

语法:
list-style: none;

背景组合写法

background: rgba(0,0,0,.4) url(../static/img_src/猫猫.jpg) no-repeat center;

CSS样式外部引入

样式单独写到CSS文件中,之后把CSS文件使用link标签引入到HTML页面使用
<link rel="stylesheet" href="css文件路径">

清除浮动的方法

1.额外标签法 也称 隔墙法
(1)清除浮动的本质是清除浮动元素脱离标准流造成的影响
(2)清除浮动的策略是闭合浮动,只让浮动在父盒子内部影响,不影响父盒子外面的其他盒子
(3)额外标签法也叫隔墙法,就是在最后一个浮动的子元素后面添加一个额外标签,添加浮动样式
实际工作中可能会遇到,但不常用

2.父级添加overflow属性
给父级添加overflow属性,将其属性值设置为 hidden | auto | scroll
overflow: hidden;

3.父级添加after伪元素
.clearfix:after {
    content: "";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}
.clearfix {
    *zoom: 1;
}

4.父级添加双伪元素
.clearfix:before,.clearfix:after {
    content: "";
    display: table;
}
.clearfix:after {
    clear:both;
}
.clearfix {
    *zoom: 1;
}

案例准备工作

1.创建study目录文件夹(用于存放这个页面的相关内容)
2.软件打开这个目录文件夹
3.study目录内新建images文件夹,用于保存图片
4.新建首页文件index.html(网站首页统一规定为index.html)
5.新建style.css样式文件(外连接样式表)
6.将样式引入到HTML页面文件中
7.样式表写入清除内外边距的样式,来检测样式表是否引入成功

CSS属性书写顺序(重点)

1.布局定位属性: display | position | float | clear |visibility | overflow
2.自身属性: width | height | margin | padding | border | background
3.文本属性: color | font | text-decoration | text-align | vertical-align | white-space | break-word
4.其他属性(CSS3): content | cursor | border-radius | box-shadow | text-shadow | background:linear-gradient

定位

口诀:子绝父相     子级是绝对定位的话,父级要用相对定位
(1)子级绝对定位,不会占有位置,可以放到父盒子里面的任何一个地方,不会影响其它的兄弟盒子
(2)父盒子需要加定位限制子盒子在父盒子内显示
因为父级需要占有位置,因此是相对定位,子盒子不需要占有位置,则是绝对定位
如果父元素不需要占位置,子绝父绝也可以

PS切图(必备技能)

jpg图像格式:产品类的图片经常用jpg格式
gif图像格式:经常用于一些图片小动画效果
png图像格式:想要切成背景透明的图片,就用png格式
PSD图像格式:Photoshop专用格式,前端人员可以直接从上面复制文字,测量大小

图层切图

右击图层----快速导出为PNG
图层菜单  shift相加----ctrl+E  合并图层
右击----快速导出为PNG

切片切图

利用切片工具手动划出
文件菜单----导出----存储为web设备所用格式----选择我们要的图片格式----存储

PS插件切图

Cutterman插件