盒子水平垂直居中

  1. 绝对定位+margin-left(盒子有宽高) ``` .box{
    position: absolute;
    width: 100px; height: 100px; background-color: #bfa; top: 50%; left: 50%; margin-top: -50px; margin-left: -50px; }
  1. 2. 绝对定位+margin:auto(盒子有宽高)

.box{
position: absolute;
width: 100px; height: 100px; background-color: #bfa; top: 0; bottom: 0; left: 0; right: 0; margin: auto; }

  1. 3. 绝对定位+translate(盒子无宽高)

.box{
position: absolute;
background-color: #bfa; top: 50%; left: 50%; transform: translate(-50%,-50%); }

  1. 4. display:flex;

html{ height: 100%; overflow: hidden; display: flex; justify-content: center;//主轴(横轴) align-items: center; }

  1. 5. display:table-cell;

.father{ width: 100px; height: 100px; display: table-cell; vertical-align: middle;//垂直对齐 text-align: center; } .box{ display: inline-block; }

  1. <a name="B2ZkD"></a>
  2. ## 三角形

.box{ width: 0px; height: 0px; border: 20px solid; border-color: transparent transparent blue transparent; }

  1. <a name="heieL"></a>
  2. ## position
  3. <a name="OriNl"></a>
  4. ### absolute 绝对定位
  5. 1. 开启绝对定位后,如果不设置偏移量元素的位置不会发生改变;
  6. 1. 开启绝对定位后,**会从文档流中脱离**;
  7. 1. 绝对定位**会改变元素的性质**,行内变成块,块的宽高被内容撑开;
  8. 1. 绝对定位会使元素提升一个层级;
  9. 1. 绝对定位是相对于其包含块定位的。
  10. <a name="uERyw"></a>
  11. ### relative 相对定位
  12. 1. 开启相对定位后,如果不设置偏移量元素的位置不会发生改变;
  13. 1. 相对定位是参照元素在文档流中的位置进行定位的;
  14. 1. 相对定位会提升元素的层级;
  15. 1. 相对定位**不会使元素脱离文档流**;
  16. 1. 相对定位**不会改变元素的性质**。
  17. <a name="AmtrZ"></a>
  18. ### fixed 固定定位
  19. 也是一种绝对定位,唯一不同的是固定定位永远参照于浏览器的视口定位。<br />固定定位的元素不会随网页的滚动条滚动。
  20. <a name="qkNYl"></a>
  21. ### inherit 从父元素继承position的值
  22. <a name="oCkZp"></a>
  23. ### sticky 粘滞定位
  24. <a name="ZxQCr"></a>
  25. ### static 默认值
  26. <a name="Nao0r"></a>
  27. ## display
  28. - flex
  29. - inline 默认值
  30. - block
  31. - inline-block
  32. - table
  33. - none 元素不在页面中显示
  34. <a name="q3vm6"></a>
  35. ## visibility
  36. - visible 默认值 元素在页面中正常显示
  37. - hidden 元素在页面中隐藏不显示,但依然占据页面的位置
  38. <a name="pZ06w"></a>
  39. ## px em rem
  40. - px 像素
  41. - 百分比 属性值相对于其父元素属性的百分比
  42. - em 相对于**元素的字体大小**计算
  43. eg. 10em 16px<br /> width=10*16=160
  44. - rem 相对于**根元素**(html)的字体大小计算
  45. <a name="md4vj"></a>
  46. ## vh vw vm
  47. - vh 相对于视口的高度
  48. - vw 相对于视口的宽度
  49. - vm 相对于视口的宽度或高度中较小的那个
  50. <a name="fSzB0"></a>
  51. ## 垂直外边距的重叠/折叠
  52. - 相邻的垂直方向外边距会发生重叠现象
  53. - 兄弟元素 取绝对值最大(对开发有利)
  54. - 父子元素(会影响页面布局 俗称“坑爹”)
  55. <a name="BDtHT"></a>
  56. ## 高度塌陷
  57. 在浮动布局中,父元素默认是被子元素撑开的。<br />当子元素设置浮动后,其会完全脱离文档流,子元素从文档流中脱离,将会无法撑起父元素的高度,导致父元素的高度丢失。<br />父元素高度丢失后,其下的元素会自动上移,导致页面的布局混乱。
  58. <a name="r5ZqK"></a>
  59. ## BFC(块级格式化环境)
  60. **开启元素的BFC:**
  61. 1. 设置元素的浮动(float:left)
  62. 1. 将元素设置为行内块元素(display:inline-block)
  63. 1. 将元素的overflow设置为一个非visible的值
  64. -**常为元素设置overflo:hidden开启其BFC**,以使其可以包含浮动元素。<br />**元素开启BFC后的特点:**
  65. 1. 开启BFC的元素不会被浮动元素所覆盖
  66. 1. 子元素和父元素外边距不会重叠
  67. 1. 可以包含浮动的元素
  68. <a name="A20dX"></a>
  69. ## 解决高度塌陷和外边距重叠

  1. <a name="deJzt"></a>
  2. ## 网页处理溢出文本内容

white-space:nowrap;//设置网页如何处理空白 nowrap-不换行 overflow:hidden; text-overflow:ellipsis;//省略号 ```

盒子模型

标准盒模型(box-sizing:content-box)

bf87fcb7ab972914ed580e0b5e79d775_1258515-20171023230013051-545804378.png
width和height是内容区域即content的width和height

怪异盒模型(box-sizing:border-box)

dc91d4152447a9d0338fd183499d326e_1258515-20171023230320941-1160589931.png
width已经包含了padding和border值

flex弹性伸缩盒模型

https://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

页面布局

https://blog.csdn.net/William_bb/article/details/99697369

哪个CSS 属性可能会触发 GPU 硬件加速?

  1. transform
  2. opacity
  3. filter
  4. will-change