html-->木偶 css--->化妆 js--->跳舞

css:

1.什么是css?
层叠样式表;不能脱离html而单独存在。
2.基础语法
属性名和属性值之间使用冒号连接;多对属性之间使用分号连接;

最后一对属性可以不加分号

    选择器{
        width:100px;
        height:100px;
        color:red;
    }
    p{
        width:100px;
        height:100px;
        color:blue;
    }
    注释:不能嵌套使用
        /*注释内容*/
        作用:html中注释作用一致
    速记写法:
        简写形式:
        td{
            border:1px solid red
        }
        border-top-width:1px;
        border-top-style:solid;
        border-top-color:red;
        border-left-width
        border-left-style
        border-left-color
        -->
        border:width style color
内外边距:
    盒子:
        内容+内边距+边框+外边距
    padding:10px;
    -->
    padding-top:10px;
    padding-left:10px;
    padding-right:10px;
    padding-bottom:10px;
    padding:10px;                //上下左右
    padding:10px 20px;            //上下10px 左右20px
    padding:10px 20px 30px;    //上 左右 下
    padding:10px 20px 30px 40px;//上 右 下 左
    margin:同上

3.如何将css作用在html上?
1.行内样式 style
2.内联样式 css
3.外部引入
创建一个以.css为后缀名的文件
建议: 先加载css,再加载html
@import url():先去加载html再加载css
优先级: 行内样式>内联/外部引入
就近原则: 哪一个样式距离标签更近,谁的优先级就更高
4.选择器
标签选择器:根据标签名称选择一类元素
id选择器:根据元素的id属性选择一个元素 #value
类选择器:通过class属性来选择一类元素 .value
后代选择器:
>:选择当前元素的直接子元素
空格:选择当前元素的所有子元素(包含孙代元素)
兄弟选择器:
+:选择当前元素之后的一个兄弟
~:选择当前元素之后的所有兄弟
普遍选择器:*:所有
多选择器:
使用逗号连接多个选择器
div,p{} #one,.two{}
组合选择器:
直接将选择器拼接到一起使用
div.one{}
属性选择器:
根据元素的属性去选择一类元素

        [id]:选择当前页面中具有id属性的元素
        [class='one']:选择当前页面中具有class属性并且属性值为one的元素
        [class~='one']:选择当前页面中具有class属性并且属性值之一为one的元素
        [class^='o']:选择当前页面中具有class属性的并且class属性以o开头
        [class$='o']:选择当前页面中具有class属性的并且class属性以o结尾
        [class*='o']:选择当前页面中具有class属性的并且class属性值中包含o字符的

伪类选择器:

        :伪类名称
        :first-child:选择当前元素作为父元素的第一个时
        :last-child:最后一个孩子
        :only-child:当前元素作为父元素的唯一一个孩子
        :nth-child(number/odd/even):
        :hover    当鼠标悬停在元素上时
        :active: 当鼠标按下时触发
        :link:         当未被点击时触发
        :visited     被访问过之后触发

书写顺序:link-->visited--〉hover-->active
伪元素选择器:

    ::伪元素名称
        ::first-letter:第一个字符
        ::first-line:选择第一行
        ::selection:当文字被选择时

选择器优先级:

    @important:优先级最高
    行内样式:1000    id选择器:100
    类/伪类/属性:10    元素/伪元素:1

特性值:特性值越大,优先级越高
当特性值相同时,越靠下的优先级越高
!important;//不计入特性值中,优先级最高

5.盒模型:
盒子:内容区域+内边距+边框+外边距
分为两类:
标准盒模型(w3c盒子):
默认都是标准盒子
box-sizing:content-box;
width=content
1.div的内容区域的宽度?
2.div的盒子宽度?
3.div在浏览器中所占据的空间的宽度?
边框盒模型(怪异盒子):
box-sizing:border-box;
width=content+padding+border

6.布局:

默认文档流:从上到下,从左到右

1.display属性:改变盒子默认特性
    inline:将块级元素转换为行内元素;block:将行内元素转换为块级元素
    inline-block:将当前元素转换为兼具行内和块级特性的元素
    display:
        none;//元素的隐藏,隐藏元素所占据的空间
        block;//元素的显示
    visbility:
        hidden:元素的隐藏,不隐藏元素所占据的空间(将元素的透明度设置为0)
        visible;//元素的显示
2.浮动:
    float:left:左浮动    right:右浮动    none:不浮动
    元素浮动不会遮挡普通文本
    浮动何时停止?
        1.遇到父级元素边框的时候停止浮动
        2.遇到其他浮动元素时
    清除浮动:
        clear:left    right    both
        1.设置给浮动元素之后的块级元素

1) 块元素脱离默认文档流
1. 默认宽度为0
2. 失去了对父元素支撑的能力 【伪元素】
2) 在浮动流中,多个同级别浮动元素在一行中显示,当这一行容纳不下,会自动换行
2.伪元素选择器

div::after{
        clear:both;
        display:block;
        content:''
}
官方解释:
overflow:
    超出元素部分如何设置
    hidden:超出元素部分隐藏
    scroll:超出元素部分以滚动条方式显示

3.列级布局:行级布局和列级布局
先进行行级布局,再进行列级布局

4.定位布局:

position:    
    static:静态布局
    absolute:绝对定位
        1.脱离默认文档流
        2.不保留定位前的空间
        3.默认情况下,绝对定位的元素根据body的左上角进行定位
        4.如果父级元素设置了定位属性时,子元素会根据父级元素的左上角进行定位
    relative:相对定位
        1.默认情况下,相对定位元素会根据元素本身的位置进行定位
        2.不会脱离默认文档流
        3.保留定位前的空间
    fixed:固定定位
        特点和绝对定位是类似
        定位元素不会随着滚动条的滚动而滚动
    sticky:粘性定位
        定位前元素按照relative来定位
        设置了配合属性后,到达设置的属性之后停止滚动
配合属性:left: top: right: bottom:
z-index: number
    两个元素必须使用绝对定位属性
    设置元素的层叠顺序,值越大,越靠上

5.伸缩盒布局:

父元素:display:flex;
子元素:item的float属性自动失效;flex: 1;

外边距合并问题:
1.父子级之间

    1.给父级元素添加边框属性
    2.将本应该设置给子元素的外边距设置给父元素的内边距(注意父元素的盒模型)
    3.给父子级设置浮动属性
    4.给父子级添加position:absulute属性
    5.给父子级元素设置display: inline-block;
        6.给父级元素添加overflow: hidden;属性

2.兄弟级

    将本应该设置给两个元素的外边距设置给一个元素
计算规则:
    1.当两个外边距均为正数时,取较大的一个
    2.当两个外边距均为负数时,取较小的一个
    3.当两个外边距一正一负时,直接相加即可

7.文本样式

针对于盒子内容来进行修饰。具有可继承性
text-align:center;         定义行内内容(例如文字)如何相对它的块父元素对齐
vertical-align:middle;     调整行内元素的垂直排列
line-height:32px;
text-transform:
    lowercase/
text-decoration-color
text-decoration-style:solid/dotted/dashed
text-decoration-line:underline/light-through/overline
text-decoration:underline/light-through/overline/none
overflow-x: overflow-y: overflow: visible/hidden/scroll

颜色:

关键字:
    rgb(r,g,b):0-255之间
    rgba(r,g,b,a):0-255,a:透明度0-1;0:完全透明;1:完全不透明
    16进制的颜色值 :通过拾色器获取        #fff        #ccc
尺寸:
    width:50%;
    px:绝对单位,像素,
    em:相对单位 1em=16px
    百分比:50%(相对单位)
字体:
    针对于盒子内容来进行修饰。具有可继承性
font-family:'李氏字体','Microsoft YaHei','微软雅黑','宋体';
font-size:12px;
font-weight:normal/bold
font-style:normal/italic
color:#333;
font: font-size/line-height font-family;
font: 12px/1.5 Microsoft YaHei,Heiti SC,tahoma,arial,Hiragino Sans GB,sans-serif

网络字体:iconfont font-awesome
    1\. 获取字体文件: woff、 eot、...
    2\. 定义网络字体
        @font-face {
            font-family: "iconfont";
            //字体文件
            src: ""
        }
    3\. 使用
        // 基础样式
        .iconfont {
            font-family: "iconfont" !important;
            font-size: 16px;
            font-style: normal;
        }    
        // 特殊样式
        .icon-aixin:before {
            content: "\e8ab";
        }

8.其他规则:

display: block; inline; inline-bolck;
列表规则: list-style:none
表格规则
    border-collapse:collapse;     当td添加边框,加在table上可以合并隔壁的边框
    opacity:

9.单位

绝对单位:10px
相对单位:
    1em , em相对于当前元素的字体大小
    1rem , rem相对于html元素选择器中设定的字体大小
颜色:
    关键字         pink
    十六进制     #ffffff     #000    #f4f4f4
    函数             rgb(114,141,153)     => #8f8d98
    函数             rgba(114,141,153,1)

10. 背景色

background-image: url('图片地址')            背景图片
background-repeat : repeat/repeat-x/repeat-y/no-repeat    背景图片重复方式
background-origin : border-box/padding-box/content-box    背景铺设的起点    
background-clip :    border-box/padding-box/content-box    背景裁切的方式    
background-size :contain;cover            图片大小
    等比例     100px 200px
background-position :center        背景图片的位置
background-color                 背景***ackground: url() #ccc no-repeat center; 速写

11.定位布局

position: static;    // 默认,静态
    relative
        相对点:该元素在文档流中初始的位置
        是否脱离文档流:不脱离
        最佳实践:一般不移动,作为相对点
    absolute
        相对点:距离它最近的父定位元素,如果没有父定位元素,那么就只能相对于浏览器视口
        是否脱离文档流:
    fixed
        相对点:相对于视口,并且不会随着浏览器的滚动而滚动
        是否脱离文档流:脱离
    sticky
        相对点:
        是否脱离文档流:
当元素上的position的取值为relative absolute fixed sticky之一,我们就认为当前这个元素为定位元素。定位布局可以使用定位属性,比如 left、right、top、bottom。

12.伸缩盒布局

作用:与浮动布局的作用类似,用于将一个容器中多个子元素【块元素】在一行中多列排列,常用于响应式布局(移动端)
概念:主轴:flex-direction定义,row - x; column - y
    交叉轴:与主轴垂直的轴 y, x
        1\. 子元素都是沿着主轴来排列的
        2\. 一般建议给容器添加宽高,子元素在容器中排列
使用:
    ul 容器:
        display: flex;                     让容器成为伸缩盒容器
        flex-direction: row;         容器中子元素的排列方式,row-沿着x轴
        flex-wrap: wrap;
        justify-content: space-around;
    li 子元素:
        flex-basis                 主轴中基准值,主轴是x轴,相等于width
        flex-grow                 主轴中剩余空间分配所占据份数
    flex-shrink             主轴中如果有亏损,所占亏损的份数
        flex                             速写
    ul {    display: flex;    }

13. bootstrap : 栅格布局(栅格系统)

bootstrap3             浮动
bootstrap4            伸缩盒

14.动画:

动画轨迹--》元素
@keyframes run{
    from{}
    to{}
}
 @keyframes run{
    0%{}
    50%{}
    100%{}
}

动画、过渡、变形: animation-* transition-* transform

动画设定:

animation-name     
animation-duration    10s    10000ms
animation-delay 10s    10000ms
animation-timing-function:    linear/steps/ease/ease-in/...
animation-direction    : reverse; alternate; alternate-reverse
animation-iteration-count: 4; infinite。
animation-fill-mode: forwards;backwards;both;

动画库

1\. 打开网页的时候可能一开始有白屏(*)
    1) 加强服务器!
    2) faster mini
        1\. 图片压缩
        2\. 图片合并(图标)
        3\. cdn加速 : 将库【iconfont、】放到cdn服务器
2\. 使用
    1\. 获取cdn连接
        2\. 使用class    
            基础规则: animate__animated
            特殊规则: animate__pulse
    库太多!(html、css、js): 50个
iconfont、animate.css、bootstrap、jquery、vue、vuerouter、vuex、react、redux、redux-saga、reat-router、webpack、babel、webpack-server、axios、moment、lodash、....
3) 过渡
    1\. 更加简单的动画,没有动画帧
    2\. 需要触发(:hover)
    transition-property    需要过渡的属性    all
    transition-duration    持续时间    2s
    transition-timing-function     时间曲线函数    linear    steps()    easy
    transition-delay: 0s;                延迟时间
    transition: property duration delay timing;
4) 变形
    transform-origin:    center    top    left
    transform:
        scale(2)
        rotate(45deg)    rotateX(45deg)    rotateY(45deg)    rotateZ(45deg)
        skew()    skewX()    skewY()
        translate()    translateX()    translateY()

15. 响应式布局

1) pc端
    1\. 类似于腾讯视频: 容器的宽度随着屏幕的分辨率大小的改变而改变
    2\. 纯响应式(与mobile兼容): 完全兼容移动的设备
2) mobile端
    手机型号不同,宽度不同
    1\. 不要给容器【块元素】指定宽度,让他默认为100%
    2\. 子元素【列元素】宽度使用相对单位,百分数
媒体查询技术
    .products {
        width: 990px;
        margin: 0 auto;
    }
    .products > ul > li {
        width: 19.5%;
        height: 100px;
        background-color: rebeccapurple;
    }
    @media screen and (min-width: 1300px) {
        .prodmucts {
            width: 1200px;
        }
        .products > ul > li {
            width: 16.5%;
        }
    }
    @media screen and (min-width: 1500px) {
        .products {
            width: 1400px;
        }
        .products > ul > li {
            width: 14%;
        }
   }
前端                        服务器端
css文件                     css文件 「Content-Type:text/html」

16. less

1) 安装
    npm install -g cnpm --registry=[https://registry.npm.taobao.org](https://registry.npm.taobao.org)
    cnpm install -g less
    less --version