CSS3从入门到深入(复习查漏向

pre_section

CSS:层叠样式表,决定网页表现

网页为多层结构,CSS为每一层设置样式,最后显示最上一层

CSS语句 = 选择器 + 声明块


形式

  • 内联样式

    style="CSS语句"作为标签属性,仅本标签可以使用

  • 内部样式表

    head标签中使用style标签+CSS语句,仅当前文件可以使用

  • 外部样式表

    CSS语句作为独立文件,HTML需要使用时通过<link rel="stylesheet" href="CSS文件位置">


常用选择器

  • 元素选择器

    根据标签选择元素,如,p{}、h1{}、div{}

  • id选择器

    根据id属性值选择元素,如,#key{}

  • 类选择器

    根据class属性选择元素,如,.key{}

  • 通配选择器

    全部元素,*{}

  • 属性选择器

    [attribute=value]attributevalue的元素

    [attribute^=value]attributevalue开头的元素

    [attribute$=value]attributevalue结尾的元素

    [attribute*=value]attribute含有value的元素

    xx[attribute],含有attributexx元素

复合选择器

  • 交集选择器

    div.classdiv标签的有class的元素

  • 分组选择器

    key1,key2多个选择器如果相同则组合

关系选择器(父子祖先关系

  • 子元素选择器

    div > span{}

  • 后代选择器

    div span{}

  • 兄弟选择器

    p + span{} p下一个span元素

    p ~ span{} p下面所有span元素

伪类选择器

:first-child 第一个且是某个标签的元素

:last-child 最后一个且是某个标签的元素

xx:only-child 选择xx是其他元素的唯一孩子

:nth-child(n,2n,2n+1,even,odd) 第n个且是某个标签的元素

相对元素的所有子元素中的指定位置

:first-of-type 第一个是某个标签的元素

xx xxx:only-of-type 选择xx内存在xxx唯一的元素

相对所有指定类型的指定位置

xx:empty 无后代的xx标签

xx:not(选择器kk)kk以外的xx元素

伪元素选择器

::first-letter 第一个字母

::first-line 第一行

::selection 选中部分

::before 元素开始,结合content属性

::after 元素结束,结合content属性

超链接选择器

a:link{} 链接未访问过的

a:visited{} 链接访问过的

a:hover{} 鼠标移入时

a:active{} 链接点击未释放时

建议顺序:LVHA

选择器练习

CSS Diner

选择器优先级

选择器 权重
内联样式 1000
id选择器 0100
类 伪类选择器 0010
元素选择器 0001
通配选择器 0000
继承样式

比较优先级时会将选择器权重累加,如div#id > #id,(但始终不会越级

同等优先级后者有效


声明块

长度单位

像素px固定像素点数,20px

百分比:相对于父元素属性的百分比

em$ \text(x)em = \text(x)*fontsize(父) px$

rem$ \text(x)em = \text(x)*fontsize() px$

颜色单位

颜色英文名:red···

RGB值:rgb(255,255,255)-白

RGBA值:rgb+不透明度rgb(255,255,255,255)

16进制:rgb16进制表示,#xxyyzz

HSL值:hsl(277,50%,50%),H:色相(0 - 360),S:饱和度(0% - 100%),L:亮度(0% - 100%)

盒子模型

CSS将任何元素视为矩形,盒子由内容区(content)、内边距(padding)、边框(border)、外边距(margin)

内容区widthheight决定

边框border-widthborder-colorborder-style

border-width :默认3px

border-color :默认黑色

border-style:线性solid、点状虚线dotted、线状虚线dashed、双线double

border: 10px red solid

内边距

边框内容区共同决定可见区大小,背景颜色会延伸至内边距上

padding: xx xx xx xx

外边距

  1. margin-top
  2. - 上外边距,设置一个正值,元素会向下移动
  3. margin-right
  4. - 默认情况下设置margin-right不会产生任何效果
  5. margin-bottom
  6. - 下外边距,设置一个正值,其下边的元素会向下移动
  7. margin-left
  8. - 左外边距,设置一个正值,元素会向右移动
  9. margin - 类似于 padding
  10. - margin也可以设置负值,如果是负值则元素会向相反的方向移动

外边距不会影响盒子可见框的大小,margin会影响到盒子实际占用空间

水平布局

  1. 元素的水平方向的布局:
  2. 元素在其父元素中水平方向的位置由以下几个属性共同决定
  3. margin-left
  4. border-left
  5. padding-left
  6. width
  7. padding-right
  8. border-right
  9. margin-right
  10. 一个元素在其父元素中,水平布局必须要满足以下的等式
  11. margin-left+border-left+padding-left+width+padding-right+border-right+margin-right = 其父元素内容区的宽度 (必须满足)
  12. - 如果相加结果使等式不成立,则称为过度约束,则等式会自动调整
  13. - 调整的情况:
  14. - 如果这七个值中没有为 auto 的情况,则浏览器会自动调整margin-right值以使等式满足
  15. - 这七个值中有三个值和设置为auto
  16. width
  17. margin-left
  18. maring-right
  19. - 如果某个值为auto,则会自动调整为auto的那个值以使等式成立
  20. - 如果将一个宽度和一个外边距设置为auto,则宽度会调整到最大,设置为auto的外边距会自动为0
  21. - 如果将三个值都设置为auto,则外边距都是0,宽度最大
  22. - 如果将两个外边距设置为auto,宽度固定值,则会将外边距设置为相同的值

垂直布局

  1. 子元素是在父元素的内容区中排列的,
  2. 如果子元素的大小超过了父元素,则子元素会从父元素中溢出
  3. 使用 overflow 属性来设置父元素如何处理溢出的子元素
  4. 可选值:
  5. visible 默认值 子元素会从父元素中溢出,在父元素外部的位置显示
  6. hidden 溢出内容将会被裁剪不会显示
  7. scroll 生成两个滚动条,通过滚动条来查看完整的内容
  8. auto 根据需要生成滚动条
  9. overflow: auto

margin折叠

  1. 垂直外边距的重叠(折叠)
  2. - 相邻的垂直方向外边距会发生重叠现象
  3. - 兄弟元素
  4. - 兄弟元素间的相邻垂直外边距会取两者之间的较大值(两者都是正值)
  5. - 特殊情况:
  6. 如果相邻的外边距一正一负,则取两者的和
  7. 如果相邻的外边距都是负值,则取两者中绝对值较大的
  8. - 父子元素
  9. - 父子元素间相邻外边距,子元素的会传递给父元素(上外边距)

行内元素盒模型

  1. 行内元素的盒模型
  2. - 行内元素不支持设置宽度和高度
  3. - 行内元素可以设置padding,但是垂直方向padding不会影响页面的布局
  4. - 行内元素可以设置border,垂直方向的border不会影响页面的布局
  5. - 行内元素可以设置margin,垂直方向的margin不会影响布局
  6. display 用来设置元素显示的类型
  7. 可选值:
  8. inline 将元素设置为行内元素
  9. block 将元素设置为块元素
  10. inline-block 将元素设置为行内块元素
  11. 行内块,既可以设置宽度和高度又不会独占一行
  12. table 将元素设置为一个表格
  13. none 元素不在页面中显示
  14. visibility 用来设置元素的显示状态
  15. 可选值:
  16. visible 默认值,元素在页面中正常显示
  17. hidden 元素在页面中隐藏 不显示,但是依然占据页面的位置

box-sizing 盒子大小

  1. 默认情况下,盒子可见框的大小由内容区、内边距和边框共同决定
  2. box-sizing 用来设置盒子尺寸的计算方式(设置widthheight的作用)
  3. 可选值:
  4. content-box 默认值,宽度和高度用来设置内容区的大小
  5. border-box 宽度和高度用来设置整个盒子可见框的大小
  6. width height 指的是内容区 内边距 边框的总大小
  7. width*height就是整个盒子大小

盒子轮廓圆角及阴影

轮廓:

  1. outline 用来设置元素的轮廓线,用法和border一模一样
  2. 轮廓和边框不同的点,就是轮廓不会影响到可见框的大小

阴影:

  1. box-shadow 用来设置元素的阴影效果,阴影不会影响页面布局
  2. box-shadow: 10px 10px 10px 颜色
  3. 第一个值 水平偏移量 设置阴影的水平位置 正值向右移动 负值向左移动
  4. 第二个值 垂直偏移量 设置阴影的水平位置 正值向下移动 负值向上移动
  5. 第三个值 阴影的模糊半径
  6. 第四个值 阴影的颜色

圆角:

  1. border-radius: 用来设置圆角 圆角设置的圆的半径大小
  2. border-top-left-radius:
  3. border-top-right-radius
  4. border-bottom-left-radius:
  5. border-bottom-right-radius:
  6. border-top-left-radius:50px 100px;
  7. border-radius 可以分别指定四个角的圆角
  8. 四个值 左上 右上 右下 左下
  9. 三个值 左上 右上/左下 右下
  10. 两个个值 左上/右下 右上/左下
  11. border-radius: 20px / 40px; 设置椭圆 //横向 - 纵向
  12. 将元素设置为一个圆形
  13. border-radius: 50%;

浮动

  1. 通过浮动可以使一个元素向其父元素的左侧或右侧移动
  2. 使用 float 属性来设置于元素的浮动
  3. 可选值:
  4. none 默认值 ,元素不浮动
  5. left 元素向左浮动
  6. right 元素向右浮动
  7. 注意,元素设置浮动以后,水平布局的等式便不需要强制成立
  8. 元素设置浮动以后,会完全从文档流中脱离,不再占用文档流的位置,
  9. 所以元素下边的还在文档流中的元素会自动向上移动
  10. 浮动的特点:
  11. 1、浮动元素会完全脱离文档流,不再占据文档流中的位置
  12. 2、设置浮动以后元素会向父元素的左侧或右侧移动,
  13. 3、浮动元素默认不会从父元素中移出
  14. 4、浮动元素向左或向右移动时,不会超过它前边的其他浮动元素
  15. 5、如果浮动元素的上边是一个没有浮动的块元素,则浮动元素无法上移
  16. 6、浮动元素不会超过它上边的浮动的兄弟元素,最多最多就是和它一样高

  1. 脱离文档流的特点:
  2. 块元素:
  3. 1、块元素不在独占页面的一行
  4. 2、脱离文档流以后,块元素的宽度和高度默认都被内容撑开
  5. 行内元素:
  6. 行内元素脱离文档流以后会变成块元素,特点和块元素一样
  7. 另外,CSS貌似默认会将字体独立出来,效果同块元素特性
  8. 可结合上图分析

浮动的高度坍塌及BFC

高度塌陷的问题:

  1. 在浮动布局中,父元素的高度默认是被子元素撑开的,
  2. 当子元素浮动后,其会完全脱离文档流,子元素从文档流中脱离
  3. 将会无法撑起父元素的高度,导致父元素的高度丢失
  4. 父元素高度丢失以后,其下的元素会自动上移,导致页面的布局混乱

BFC(Block Formatting Context) 块级格式化环境

  1. - BFC是一个CSS中的一个隐含的属性,可以为一个元素开启BFC
  2. 开启BFC该元素会变成一个独立的布局区域
  3. - 元素开启BFC后的特点:
  4. 1.开启BFC的元素不会被浮动元素所覆盖
  5. 2.开启BFC的元素子元素和父元素外边距不会重叠
  6. 3.开启BFC的元素可以包含浮动的子元素
  7. - 可以通过一些特殊方式来开启元素的BFC
  8. 1、设置元素的浮动(不推荐)
  9. 2、将元素设置为行内块元素(不推荐)
  10. 3、将元素的overflow设置为一个非visible的值
  11. - 常用的方式 为元素设置 overflow:hidden 开启其BFC 以使其可以包含浮动元素

clear

  1. 如果我们不希望某个元素因为其他元素浮动的影响而改变位置,
  2. 可以通过clear属性来清除浮动元素对当前元素所产生的影响
  3. clear
  4. - 作用:清除浮动元素对当前元素所产生的影响
  5. - 可选值:
  6. left 清除左侧浮动元素对当前元素的影响
  7. right 清除右侧浮动元素对当前元素的影响
  8. both 清除两侧中最大影响的那侧
  9. 原理:
  10. 设置清除浮动以后,浏览器会自动为元素添加一个上外边距,
  11. 以使其位置不受其他元素的影响

防止高度坍塌的最优法

  1. 高度塌陷块选择器::after{
  2. content: '';
  3. clear: both;
  4. display: block;
  5. }
  6. // 推荐-经典
  7. .clearfix::before,
  8. .clearfix::after{
  9. content: '';
  10. display: table;
  11. clear: both;
  12. }
  13. 只需在需要防止度塌陷和外边距重叠的元素加上这个类 - clearfix

定位-position

  1. 定位(position
  2. - 定位是一种更加高级的布局手段
  3. - 通过定位可以将元素摆放到页面的任意位置
  4. - 使用position属性来设置定位
  5. 可选值:
  6. static 默认值,元素是静止的没有开启定位
  7. relative 开启元素的相对定位
  8. absolute 开启元素的绝对定位
  9. fixed 开启元素的固定定位
  10. sticky 开启元素的粘滞定位
  11. 偏移量(offset
  12. left - right - top - bottom

相对定位

  1. 相对定位: position: relative;
  2. - 相对定位的特点:
  3. 1.元素开启相对定位以后,如果不设置偏移量元素不会发生任何的变化
  4. 2.相对定位是参照于元素在文档流中的位置进行定位的
  5. 3.相对定位会提升元素的层级
  6. 4.相对定位不会使元素脱离文档流
  7. 5.相对定位不会改变元素的性质块还是块,行内还是行内

包含块

  1. 包含块( containing block )
  2. - 正常情况下:
  3. 包含块就是离当前元素最近的祖先块元素
  4. - 绝对定位的包含块:
  5. 包含块就是离它最近的开启了定位的祖先元素,
  6. 如果所有的祖先元素都没有开启定位则根元素就是它的包含块
  7. - html(根元素、初始包含块)

绝对定位

  1. 绝对定位: position: absolute;
  2. -绝对定位的特点:
  3. 1.开启绝对定位后,如果不设置偏移量元素的位置不会发生变化
  4. 2.开启绝对定位后,元素会从文档流中脱离
  5. 3.绝对定位会改变元素的性质,行内变成块,块的宽高被内容撑开
  6. 4.绝对定位会使元素提升一个层级
  7. 5.绝对定位元素是相对于其包含块进行定位的

固定定位

  1. 固定定位: position: fixed;
  2. - 固定定位也是一种绝对定位,所以固定定位的大部分特点都和绝对定位一样
  3. 唯一不同的是固定定位永远参照于浏览器的视口进行定位
  4. 固定定位的元素不会随网页的滚动条滚动

粘滞定位

  1. 粘滞定位: position: sticky;
  2. - 粘滞定位和相对定位的特点基本一致,
  3. 不同的是粘滞定位可以在元素到达某个位置时将其固定
  4. 如:
  5. position: sticky;
  6. top: 10px;

定位下布局规则

  1. 水平布局
  2. left + margin-left + border-left + padding-left + width +
  3. padding-right + border-right + margin-right + right = 包含块父元素的内容区的宽度
  4. 当发生过度约束:
  5. 如果9个值中没有 auto 则自动调整right值以使等式满足
  6. 如果有auto,则自动调整auto的值以使等式满足
  7. - 可设置auto的值
  8. margin width left right
  9. - 因为left right的值默认是auto,所以如果不指定leftright
  10. 则等式不满足时,会自动调整这两个值
  11. 垂直方向布局的等式的也必须要满足
  12. top + margin-top/bottom + padding-top/bottom + border-top/
  13. bottom + height = 包含块的高度

定位下层级

  1. 对于开启了定位元素,可以通过z-index属性来指定元素的层级
  2. z-index需要一个整数作为参数,值越大元素的层级越高
  3. 元素的层级越高越优先显示
  4. 如果元素的层级一样,则优先显示靠下的元素
  5. 祖先的元素的层级再高也不会盖住后代元素

字体-font

  1. color 字体颜色
  2. font-size 字体大小
  3. 相关单位
  4. em 相当于当前元素的一个font-size
  5. rem 相对于根元素的一个font-size
  6. font-family 字体族(字体的格式)
  7. serif 衬线字体
  8. sans-serif 非衬线字体
  9. monospace 等宽字体
  10. - 指定字体的类别,浏览器会自动使用该类别下的字体
  11. - font-family 可以同时指定多个字体,多个字体间使用,隔开
  12. 字体生效时优先使用第一个,第一个无法使用则使用第二个 以此类推
  13. ===========================
  14. @font-face {
  15. /* 指定字体的名字 */
  16. font-family:'myfont' ;
  17. /* 服务器中字体的路径 */
  18. src: url('···'); //format("truetype")
  19. }
  20. 引用: font-family: myfont;
  1. line height
  2. - 行高指的是文字占有的实际高度
  3. - 可以通过line-height来设置行高
  4. 行高可以直接指定一个大小(px em
  5. 也可以直接为行高设置一个整数
  6. 如果是一个整数的话,行高将会是字体的指定的倍数
  7. - 行高经常还用来设置文字的行间距
  8. 行间距 = 行高 - 字体大小
  9. 字体框
  10. - 字体框就是字体存在的格子,设置font-size实际上就是在设置字体框的高度
  11. 行高会在字体框的上下平均分配

font: font-weight font-style font-size/font-height font-family

  1. font-weight 字重 字体的加粗
  2. 可选值:
  3. normal 默认值 不加粗
  4. bold 加粗
  5. 100-900 九个级别 ···
  6. font-style 字体的风格
  7. normal 正常的
  8. italic 斜体 ···

文本

  1. text-align 文本的水平对齐
  2. 可选值:
  3. left 左侧对齐
  4. right 右对齐
  5. center 居中对齐
  6. justify 两端对齐
  7. vertical-align 设置元素垂直对齐的方式(子元素相对父元素
  8. 可选值:
  9. baseline 默认值 基线对齐
  10. top 顶部对齐
  11. bottom 底部对齐
  12. middle 居中对齐
  13. img{
  14. vertical-align: !baseline; //消除底部缝隙
  15. }
  16. text-decoration 设置文本修饰
  17. 可选值:
  18. none 什么都没有
  19. underline 下划线
  20. line-through 删除线
  21. overline 上划线
  22. text-decoration: overline red dotted;
  23. white-space 设置网页如何处理空白
  24. 可选值:
  25. normal 正常
  26. nowrap 不换行
  27. pre 保留空白
  28. overflow: hidden;
  29. text-overflow: ellipsis;

背景

  1. background-color 设置背景颜色
  2. background-image 设置背景图片
  3. - 可以同时设置背景图片和背景颜色,这样背景颜色将会成为图片的背景色
  4. - 如果背景的图片小于元素,则背景图片会自动在元素中平铺将元素铺满
  5. - 如果背景的图片大于元素,将会一个部分背景无法完全显示
  6. - 如果背景图片和元素一样大,则会直接正常显示
  7. background-repeat 用来设置背景的重复方式
  8. 可选值:
  9. repeat 默认值 背景会沿着x y轴双方向重复
  10. repeat-x 沿着x轴方向重复
  11. repeat-y 沿着y轴方向重复
  12. no-repeat 背景图片不重复
  13. background-position 用来设置背景图片的位置
  14. 设置方式:
  15. 通过 top left right bottom center 几个表示方位的词来设置背景图片的位置
  16. 使用方位词时必须要同时指定两个值,如果只写一个则第二个默认就是center
  17. 通过偏移量来指定背景图片的位置:
  18. 水平方向的偏移量 垂直方向变量
  19. background-clip
  20. 可选值:
  21. border-box 默认值,背景会出现在边框的下边
  22. padding-box 背景不会出现在边框,只出现在内容区和内边距
  23. content-box 背景只会出现在内容区
  24. background-origin 背景图片的偏移量计算的原点
  25. padding-box 默认值,background-position从内边距处开始计算
  26. content-box 背景图片的偏移量从内容区处计算
  27. border-box 背景图片的变量从边框处开始计算
  28. background-size 设置背景图片的大小
  29. 第一个值表示宽度
  30. 第二个值表示高度
  31. - 如果只写一个,则第二个值默认是 auto
  32. cover 图片的比例不变,将元素铺满
  33. contain 图片比例不变,将图片在元素中完整显示
  34. ===========================
  35. background-color
  36. background-image
  37. background-repeat
  38. background-position
  39. background-size
  40. background-origin
  41. background-clip
  42. background-attachment
  43. - backgound 背景相关的简写属性,所有背景相关的样式都可以通过该样式来设置
  44. 并且该样式没有顺序要求,也没有哪个属性是必须写的
  45. 注意:
  46. background-size必须写在background-position的后边,并且使用/隔开
  47. background-position/background-size
  48. background-origin background-clip 两个样式 orgin要在clip的前边

渐变

线性渐变

  1. linear-gradient()
  2. linear-gradient(red,yellow) 红色在开头,黄色在结尾,中间是过渡区域
  3. - 线性渐变的开头,我们可以指定一个渐变的方向
  4. to left
  5. to right
  6. to bottom
  7. to top
  8. deg deg表示度数
  9. turn 表示圈
  10. - 渐变可以同时指定多个颜色,多个颜色默认情况下平均分布,
  11. 也可以手动指定渐变的分布情况
  12. repeating-linear-gradient() 可以平铺的线性渐变
  13. // 例:
  14. background-image: linear-gradient(red,yellow,#bfa,orange);
  15. background-image: linear-gradient(red 50px,yellow 100px, green 120px, orange 200px);
  16. background-image: repeating-linear-gradient(to right ,red, yellow 50px);

径向渐变

  1. radial-gradient(大小 at 位置, 颜色 位置 ,颜色 位置 ,颜色 位置)
  2. 大小:
  3. circle 圆形
  4. ellipse 椭圆
  5. closest-side 近边
  6. closest-corner 近角
  7. farthest-side 远边
  8. farthest-corner 远角
  9. 位置:
  10. top right left center bottom
  11. //background-image: radial-gradient(farthest-corner at 100px 100px, red , #bfa)

表格样式

  1. border-spacing: 指定边框之间的距离
  2. border-spacing: 0px;
  3. border-collapse: collapse; 设置边框的合并
  4. 如果表格中没有使用tbody而是直接使用tr
  5. 那么浏览器会自动创建一个tbody,并且将tr全都放到tbody
  6. tr不是table的子元素
  7. // 如:
  8. tbody > tr:nth-child(odd){
  9. background-color: #bfa;
  10. }

过渡(transition)

  1. - 通过过渡可以指定一个属性发生变化时的切换方式
  2. - 通过过渡可以创建一些非常好的效果,提升用户的体验
  3. transition-property: 指定要执行过渡的属性
  4. 多个属性间使用,隔开 如:transition-property: height , width;
  5. 如果所有属性都需要过渡,则使用all关键字
  6. 大部分属性都支持过渡效果,注意过渡时必须是从一个有效数值向另外一个有效数值进行过渡(ps: auto -> xx 过渡失效)
  7. transition-duration: 指定过渡效果的持续时间
  8. transition-timing-function: 过渡的时序函数
  9. 指定过渡的执行的方式
  10. 可选值:
  11. ease 默认值,慢速开始,先加速,再减速
  12. linear 匀速运动
  13. ease-in 加速运动
  14. ease-out 减速运动
  15. ease-in-out 先加速 后减速
  16. cubic-bezier() 来指定时序函数
  17. https://cubic-bezier.com
  18. steps() 分步执行过渡效果
  19. 可以设置第二个值:
  20. end 在时间结束时执行过渡(默认值)
  21. start 在时间开始时执行过渡
  22. transition-delay: 过渡效果的延迟,等待一段时间后在执行过渡
  23. transition 可以同时设置过渡相关的所有属性,只有一个要求,如果要写延迟,则两个时间中第一个是持续时间,第二个是延迟
  24. 例:transition:2s margin-left 1s cubic-bezier(.24,.95,.82,-0.88);

动画

  1. 动画和过渡类似,都可以实现动画效果
  2. 不同的是过渡需要在某个属性发生变化时才会触发
  3. 动画可以自动触发动态效果
  4. # 关键帧
  5. 设置动画效果,必须先要设置一个关键帧,关键帧设置了动画执行每一个步骤
  6. 例:
  7. @keyframes test {
  8. /* from表示动画的开始位置 也可以使用 0% */
  9. from{
  10. margin-left: 0;
  11. background-color: orange;
  12. }
  13. /* to动画的结束位置 也可以使用100%*/
  14. to{
  15. background-color: red;
  16. margin-left: 700px;
  17. }
  18. }
  19. # 给元素设置动画
  20. animation-name: 要对当前元素生效的关键帧的名字
  21. animation-duration: 动画的执行时间
  22. animation-delay: 动画的延时
  23. animation-timing-function: ease-in-out; 同过渡时序函数
  24. animation-iteration-count:(n 次数|infinite 无限执行) 动画执行的次数
  25. animation-direction 指定动画运行的方向
  26. 可选值:
  27. normal 默认值 from to运行 每次都是这样
  28. reverse to from 运行 每次都是这样
  29. alternate from to运行 重复执行动画时反向执行
  30. alternate-reverse to from运行 重复执行动画时反向执行
  31. animation-play-state: 设置动画的执行状态
  32. 可选值:
  33. running 默认值 动画执行
  34. paused 动画暂停
  35. animation-fill-mode: 动画的填充模式
  36. 可选值:
  37. none 默认值 动画执行完毕元素回到原来位置
  38. forwards 动画执行完毕元素会停止在动画结束的位置
  39. backwards 动画延时等待时,元素就会处于开始位置
  40. both 结合了forwards backwards
  41. animation: name duration timing-function delay iteration-count direction fill-mode;

变形

  1. 变形指通过CSS来改变元素的形状或位置
  2. - 变形不会影响到页面的布局,不会脱离文档流
  3. transform 设置元素的变形效果
  4. - 平移:
  5. translateX() 沿着x轴方向平移
  6. translateY() 沿着y轴方向平移
  7. translateZ() 沿着z轴方向平移
  8. - 平移元素,百分比是相对于自身计算的
  9. - z轴平移,调整元素在z轴方向的位置,z轴平移属于立体效果(近大远小),默认情况下网页不支持透视,
  10. 可以通过设置网页的视距呈现效果,
  11. /* 设置当前网页的视距为800px,即人眼距离网页的距离 */
  12. perspective: 800px;
  13. - 旋转:使元素沿着 x y z 旋转指定的角度
  14. rotateX()、rotateY()、rotateZ()
  15. `n`deg `n`turn
  16. transform: rotateY(180deg) translateZ(400px); 先转后平移
  17. transform: translateZ(400px) rotateY(180deg); 先平移后转
  18. - 缩放:对元素进行缩放
  19. scaleX() 水平方向缩放
  20. scaleY() 垂直方向缩放
  21. scale() 双方向的缩放
  22. transform-origin: 20px 20px; 变形的原点
  23. 默认:center

CSS预处理-less

  1. # css原生也支持变量的设置
  2. /* html根元素样式中设置变量 */
  3. html{
  4. --color:#ff0;
  5. --length:200px;
  6. }
  7. 变量使用:
  8. /* calc()计算函数 */
  9. width: calc(200px*2);
  10. height: var(--length);
  11. background-color: var(--color);
  12. /* css原生变量设置兼容性差 */
  13. # less是一门css的预处理语言
  14. - less是一个css的增强版,通过less可以编写更少的代码实现更强大的样式
  15. - less中添加了许多的新特性:像对变量的支持、对mixin的支持... ...
  16. - less的语法大体上和css语法一致,但是less中增添了许多对css的扩展,
  17. 所以浏览器无法直接执行less代码,要执行必须向将less转换为css,然后再由浏览器执行

less语法

  1. # 直接利用层级关系
  2. body{
  3. width: 100px;
  4. height: 100px;
  5. div{
  6. color: red;
  7. }
  8. > .box{}
  9. &:hover{} // &表示外层父元素名字,这里即 &=body
  10. }
  11. # 注释
  12. /**/ 会被解析到css文件中
  13. // less注释,不会解析到css文件中
  14. # 变量
  15. @color: red;
  16. .box{
  17. color: @color;
  18. }
  19. @classname: boxclass;
  20. .@{classname}{
  21. background-image: url("@{name}···");
  22. }
  23. div{
  24. width: 300px;
  25. height: $width;
  26. }
  27. # extend 扩展
  28. .p1{
  29. width: 100px;
  30. height: 200px;
  31. }
  32. //:extend() 对当前选择器扩展指定选择器的样式(选择器分组)
  33. .p2:extend(.p1){
  34. color: red;
  35. }
  36. # mixin 混合
  37. .p3{
  38. //直接对指定的样式进行引用,这里就相当于将p1的样式在这里进行了复制
  39. //mixin 混合
  40. .p1();
  41. }
  42. // 在选择器后边添加一个括号,这时我们就创建了一个mixins:混合函数
  43. .p4(){
  44. width: 100px;
  45. height: 100px;
  46. }
  47. .p5{
  48. .p4;
  49. }
  50. //混合函数 在混合函数中可以直接设置变量
  51. .test(@w:100px,@h:200px,@bg-color:red){
  52. width: @w;
  53. height: @h;
  54. border: 1px solid @bg-color;
  55. }
  56. div{
  57. //调用混合函数,按顺序传递参数
  58. // .test(200px,300px,#bfa);
  59. .test(300px);
  60. // .test(@bg-color:red, @h:100px, @w:300px);
  61. }
  62. // less内部定义好的原生函数 ···
  63. span{
  64. color: average(red,blue);
  65. }
  66. span:hover{
  67. background-color: darken(#bfa,50%);
  68. }
  69. # 运算
  70. - less中所有的数值都可以直接进行运算( + - * /
  71. width: 100px + 100px;
  72. height: 100px/2;
  73. # 导入less进行合并
  74. - import用来将其他的less引入到当前的less
  75. @import "xxx.less";
  76. # 配置less.map.css
  77. - 将以下文件写入less配置文件settings.json
  78. "editor.minimap.enabled": true,
  79. "less.compile": {
  80. "compress": true, // true => remove surplus whitespace
  81. "sourceMap": true, // true => generate source maps (.css.map files)
  82. "out": true // false => DON'T output .css files (overridable per-file, see below)
  83. }

flex-弹性盒

pre

  1. flexCSS3新的布局手段,兼容性比浮动差,但减少了很多浮动带来的问题
  2. 但随着微软首先提出放弃IE支持,相信以后前端会紧跟这种趋势,flex会用的越来越多

简介

  1. flex使元素具有弹性,让元素可以跟随页面的大小的改变而改变
  2. - 弹性容器
  3. - 要使用弹性盒,必须先将一个元素设置为弹性容器
  4. - 我们通过 display 来设置弹性容器
  5. display:flex 设置为块级弹性容器
  6. display:inline-flex 设置为行内的弹性容器
  7. - 弹性元素
  8. - 弹性容器的子元素是弹性元素(弹性项)
  9. - 弹性元素可以同时是弹性容器

属性

  1. # flex-direction 指定容器中弹性元素的排列方式
  2. 可选值:
  3. row 默认值,弹性元素在容器中水平排列(左向右)
  4. - 主轴 自左向右
  5. row-reverse 弹性元素在容器中反向水平排列(右向左)
  6. - 主轴 自右向左
  7. column 弹性元素纵向排列(自上向下)
  8. column-reverse 弹性元素方向纵向排列(自下向上)
  9. 主轴:
  10. 弹性元素的排列方向称为主轴
  11. 侧轴:
  12. 与主轴垂直方向的称为侧轴
  13. # flex-grow 指定弹性元素的增长系数
  14. - 当父元素有多余空间的时,子元素如何伸展
  15. - 父元素的剩余空间,会按照比例进行分配
  16. # flex-shrink 指定弹性元素的收缩系数
  17. - 当父元素中的空间不足以容纳所有的子元素时,如果对子元素进行收缩
  18. # flex-wrap:
  19. 设置弹性元素是否在弹性容器中自动换行
  20. 可选值:
  21. nowrap 默认值,元素不会自动换行
  22. wrap 元素沿着辅轴方向自动换行
  23. wrap-reverse 元素沿着辅轴反方向换行
  24. # flex-flow: wrap 和 direction 的简写属性
  25. - flex-flow: row wrap;
  26. # justify-content(主轴
  27. - 如何分配主轴上的空白空间(主轴上的元素如何排列)
  28. - 可选值:
  29. flex-start 元素沿着主轴起边排列
  30. flex-end 元素沿着主轴终边排列
  31. center 元素居中排列
  32. space-around 空白分布到元素两侧
  33. space-between 空白均匀分布到元素间
  34. space-evenly 空白分布到元素的单侧
  35. # align-items(辅轴
  36. - 元素在辅轴上如何对齐
  37. - 元素间的关系
  38. - 可选值:
  39. stretch 默认值,将元素的长度设置为相同的值
  40. flex-start 元素不会拉伸,沿着辅轴起边对齐
  41. flex-end 沿着辅轴的终边对齐
  42. center 居中对齐
  43. baseline 基线对齐
  44. # align-content: 辅轴空白空间的分布,属性类比justify-content
  45. # align-self: 用来覆盖当前弹性元素上的align-items
  46. # flex-basis 指定的是元素在主轴上的基础长度
  47. 如果主轴是 横向的 该值指定的就是元素的宽度
  48. 如果主轴是 纵向的 该值指定的是就是元素的高度
  49. - 默认值是 auto,表示参考元素自身的高度或宽度
  50. - 如果传递了一个具体的数值,则以该值为准
  51. # flex 可以设置弹性元素所有的三个样式
  52. flex 增长 缩减 基础;
  53. initial "flex: 0 1 auto".
  54. auto "flex: 1 1 auto"
  55. none "flex: 0 0 auto" 弹性元素没有弹性
  56. # order 决定弹性元素的排列顺序

移动端适配

pre

  1. # 分辨率:1920 x 1080 屏幕中像素点的数量
  2. # 物理像素,上述所说的点就属于物理像素
  3. # CSS像素,编写网页时,我们所用像素都是CSS像素
  4. - 浏览器在显示网页时,需要将CSS像素转换为物理像素然后再呈现
  5. - 一个css像素最终由几个物理像素显示,由浏览器决定:
  6. 默认情况下在pc端,一个css像素 = 一个物理像素
  7. # 视口(viewport)
  8. - 视口就是屏幕中用来显示网页的区域
  9. - 可以通过查看视口的大小,来观察CSS像素和物理像素的比值
  10. - 默认情况下:
  11. 视口宽度 1920pxCSS像素)
  12. 1920px(物理像素)
  13. - 此时,css像素和物理像素的比是 1:1
  14. - 放大两倍的情况:
  15. 视口宽度 960pxCSS像素)
  16. 1920px(物理像素)
  17. - 此时,css像素和物理像素的比是1:2
  18. - 我们可以通过改变视口的大小,来改变CSS像素和物理像素的比值

完美适配

  1. 每一款移动设备设计时,都会有一个最佳的像素比
  2. https://material.io/resources/devices/
  3. 设置视口大小 device-width表示设备的(完美视口)宽度
  4. <meta name="viewport" content="width=device-width">
  5. # vm、vh
  6. 100vw = 一个视口的宽度
  7. 1vw = 1%视口宽度
  8. # rem
  9. 1 rem = 1 html的字体大小

响应式布局-RWD

  1. RWD - 即网页可以根据不通的设备或窗口大小呈现出不同的效果
  2. 网页在不同设备上会响应式布局以呈现出最好的视觉效果。
  3. # 媒体查询
  4. 语法: @media 查询规则{}
  5. 媒体类型:
  6. all 所有设备
  7. print 打印设备
  8. screen 带屏幕的设备
  9. speech 屏幕阅读器
  10. - 可以使用,连接多个媒体类型,这样它们之间就是一个或的关系
  11. 可以在媒体类型前添加一个only,表示只有。
  12. only的使用主要是为了兼容一些老版本浏览器
  13. # 媒体特性:
  14. width 视口的宽度
  15. height 视口的高度
  16. min-width 视口的最小宽度(视口大于指定宽度时生效)
  17. max-width 视口的最大宽度(视口小于指定宽度时生效)

网格系统

  1. # 设置
  2. display: grid|inline-grid;
  3. # 属性
  4. 网格列(Grid Columns
  5. 网隔行(Grid Rows
  6. 网格间隙(Grid Gaps
  7. - 设置网格间隙
  8. grid-column-gap
  9. grid-row-gap
  10. grid-gap
  11. 网格行(Grid Lines
  12. - 设置网格元素大小范围
  13. grid-column-start: 1;
  14. grid-column-end: 3;
  15. grid-row-start: 1;
  16. grid-row-end: 3;
  17. - 定义网格布局中的列数,并可定义每列的宽度
  18. grid-template-columns
  19. - 定义每列的高度
  20. grid-template-rows
  21. - 在容器内对齐整个网格
  22. justify-content
  23. - 垂直对齐容器内的整个网格
  24. align-content
  25. - 将元素放置在哪些列上
  26. grid-column
  27. - grid-column: 1 / 5; 1 列开始并在第 5 列之前结束
  28. - grid-column: 1 / span 3; 1 列开始,并跨越 3
  29. grid-row grid-column
  30. grid-area: grid-row-startgrid-column-startgrid-row-end grid-column-end 属性的简写属性。
  31. - grid-area: 1 / 2 / 5 / 6;
  32. grid-area/grid-template-area 命名网格项
  33. - grid-area: myArea;
  34. - grid-template-areas: 'myArea myArea myArea myArea myArea';
  35. - grid-template-areas: 'myArea myArea . . .';
  36. - grid-template-areas:
  37. 'header header header header header header'
  38. 'menu main main main right right'
  39. 'menu footer footer footer footer footer';
  40. 元素顺序
  41. grid-area: 1 / 3 / 2 / 4; row-start/column-start/row-end/column-end

计数器

  1. counter-reset - 创建或重置计数器
  2. counter-increment - 递增计数器值
  3. content - 插入生成的内容
  4. counter() counters() 函数 - 将计数器的值添加到元素

示例

  1. # example-1
  2. body {
  3. counter-reset: section;
  4. }
  5. h1::before {
  6. counter-increment: section;
  7. content: "Section " counter(section) ": ";
  8. }

嵌套计数器

  1. body {
  2. counter-reset: section;
  3. }
  4. h1 {
  5. counter-reset: subsection;
  6. }
  7. h1::before {
  8. counter-increment: section;
  9. content: "Section " counter(section) ". ";
  10. }
  11. h2::before {
  12. counter-increment: subsection;
  13. content: counter(section) "." counter(subsection) " ";
  14. }
  15. # 为页面(section)创建一个计数器,为每个 <h1> 元素(subsection)创建一个计数器。

【CSS】CSS3从入门到深入(复习查漏向的更多相关文章

  1. 《CSS权威指南》基础复习+查漏补缺

    前几天被朋友问到几个CSS问题,讲道理么,接触CSS是从大一开始的,也算有3年半了,总是觉得自己对css算是熟悉的了.然而还是被几个问题弄的"一脸懵逼"... 然后又是刚入职新公司 ...

  2. 【JavaScript】JS从入门到深入(复习查漏向

    [JavaScript]JS从入门到深入(复习查漏向 pre 精细得学过一遍JS后才发现,原来之前CTF中有些nodejs的题目以及一些游戏题的payload就变得很好理解了. 基础知识 ECMASc ...

  3. 【HTML】HTML5从入门到深入(复习查漏向

    HTML5从入门到深入(复习查漏向 冷知识 万维网之始:第一个网站·蒂姆伯纳斯-李 HTML5 html5文档类型声明: 头部: <!doctype html> 字符集(charset): ...

  4. CSS基础面试题,快来查漏补缺

    本文大部分问题来源:50道CSS基础面试题(附答案),外加一些面经. 我对问题进行了分类整理,并给了自己的回答.大部分知识点都有专题链接(来源于本博客相关文章),用于自己前端CSS部分的查漏补缺.虽作 ...

  5. CSS3基础入门03

    CSS3 基础入门03 线性渐变 在css3当中,通过渐变属性实现之前只能通过图片实现的渐变效果.渐变分为线性渐变和径向渐变以及重复渐变三种.线性渐变的模式主要是颜色从一个方向过渡到另外一个方向,而径 ...

  6. CSS3基础入门02

    CSS3 基础入门02 边框相关属性 border-radius 通过这个属性我们可以设置边框圆角,即可以将四个角设置为统一的圆角,也可以单独的设置具体的某一个角的圆角. grammer: borde ...

  7. CSS3基础入门01

    CSS3 基础入门 01 前言 相对于css2来说,css3更新了很多的内容,其中包括选择器.颜色.阴影.背景.文本.边框.新的布局方案.2d.3d.动画等等. 而如果想要学习css3的诸多部分,不妨 ...

  8. HTML5+CSS3从入门到精通随书光盘 ISO 镜像视频教程​

    HTML5+CSS3从入门到精通(清华社“视频大讲堂”大系)通过基础知识+中小实例+综合案例的方式,讲述了用HTML5+ CSS3设计构建网站的必备知识,相对于权威指南.高级程序设计.开发指南同类图书 ...

  9. HTML5+CSS3从入门到精通 中文pdf版​

    HTML5+CSS3从入门到精通是通过基础知识+中小实例+综合案例的方式,讲述了用HTML5+ CSS3设计构建网站的必备知识,相对于专业指南.高级程序设计.开发指南同类图书,本书是一本适合快速入手的 ...

随机推荐

  1. 运用arcgis将标签图片(栅格图)转换为shp矢量文件

    最近在做图像分割校正,需要将ecognition分割好的shp文件做优化,但是如果直接对shp文件修改非常不友好,可以先对导出的tif标签图进行修改,然后将修改后的标签图转换为新的shp文件进行输出. ...

  2. golang实现已知三角形三点坐标,求三角形面积

    代码如下: func GetTriangleAreaByVector(x vector.Vector3,y vector.Vector3,z vector.Vector3) float64 { //根 ...

  3. imagemagick 之 Fred's ImageMagick Scripts 在Ubuntu 下的实践

    Fred's ImageMagick Scripts 官网:http://www.fmwconcepts.com/imagemagick/index.php Windows 10 (64-bit) u ...

  4. Nodejs学习笔记(3) 创建服务器:Web 模块(http)与 express 框架

    目录 参考资料 1. 使用 http 模块创建服务器 1.1 实现思路及代码 1.2 HTTP 结构 1.2.1 Request中的重要字段 1.2.2 Response 头信息:文件类型.状态码.连 ...

  5. 在C#中使用 CancellationToken 处理异步任务

    在 .NET Core 中使用异步编程已经很普遍了, 你在项目中随处可见 async 和 await,它简化了异步操作,允许开发人员,使用同步的方式编写异步代码,你会发现在大部分的异步方法中,都提供了 ...

  6. 利用matplotlib和cmaps根据已有的colormap,重新定义colormap

    算法网上这哥们总结的还可以[1] ,但是使用matplotlib自定义colormap自己掌握的还不够,写在这里 希望达到的目标 使用什么样的颜色,可以自己定义 方便的调用其他人的色标, 使用一部分c ...

  7. 通过《第一行代码》学习 Android 开发

    第一行代码 Android --第 2 版-- 郭霖 著 第 1 章:开始启程--你的第一行 Android 代码 •1.2 手把手带你搭建开发环境  Android Studio 的安装及配置  A ...

  8. Day1---Java 基本数据类型 - 四类八种 --九五小庞

    一.Java四大数据类型分类 1.整型 byte .short .int .long 2.浮点型 float . double 3.字符型 char 4.布尔型 boolean 二.八种基本数据类型 ...

  9. Kafka 消息存储机制

    Kafka 消息以 Partition 作为存储单元,那么在 Partition 内消息是以什么样的格式存储的呢,如何处理 Partition 中的消息,又有哪些安全策略来保证消息不会丢失呢,这一篇我 ...

  10. SpringBoot+Dubbo+Zookeeper 实例

    前言 当下Java 生态环境里面,微服务占据了非常大的份额,现在大部分新开发的 Java选型的后台程序都很奇妙的会跟微服务发生一些关系.那目前市面上主流的微服务方向主要有 Spring 家族推出的Sp ...