1. 盒子模型 https://segmentfault.com/a/1190000013069516 CSS - 图1
    2. BFC https://zhuanlan.zhihu.com/p/25321647 CSS - 图2
    3. position

    https://developer.mozilla.org/zh-CN/docs/Learn/CSS/CSS_layout/%E5%AE%9A%E4%BD%8D
    https://www.ruanyifeng.com/blog/2019/11/css-position.html
    文档流

    • 正常文档流
    • 浮动文档流
    • 定位文档流 CSS - 图3
    1. flex布局 https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox CSS - 图4CSS - 图5
    2. CSS 优先级 https://zhuanlan.zhihu.com/p/41604775
    3. CSS选择器 https://segmentfault.com/a/1190000013424772
    4. CSS3新特性 https://segmentfault.com/a/1190000010780991
    5. CSS样式隔离 https://juejin.cn/post/6844904034281734151#heading-9
    6. CSS性能优化 https://blog.csdn.net/weixin_43883485/article/details/103504171
    7. 双飞翼、圣杯布局 https://juejin.cn/post/6844903817104850952
    8. 层叠上下文 https://www.zhangxinxu.com/wordpress/2016/01/understand-css-stacking-context-order-z-index/
    9. div居中 https://juejin.cn/post/6844903821529841671
    10. 浮动 https://segmentfault.com/a/1190000012739764 CSS - 图6
    11. 如何绘制1px 的线

    产生的原因:
    devicePixelRatio(设备像素比:物理像素 / 逻辑像素 = 2 或者 3)
    也就是说如果DPR是2的设备,我们写的1px 在设备中相当于 1 DPR = 2px或者3px
    常用的解决方案
    *1、transform 加伪元素

    1. .border{
    2. position: relative;
    3. }
    4. .border::before{
    5. content: '';
    6. position: absolute;
    7. left: 0;
    8. top: 0;
    9. border:1px solid red;
    10. width: 200%;
    11. height: 200%;
    12. transform-origin: left top;
    13. transform: scale(0.5);
    14. }

    2、box-shadow

    1. box-shadow: 0px 0px 1px 0px red inset;

    3、border-image

    1. border: 1px solid transparent;
    2. border-image: url('./border-1px.png') 2 repeat;
    1. 文本超出显示省略号
    • 单行文本

      1. .text {
      2. width: 100px;
      3. white-space:nowrap; /* 使文本不可换行 */
      4. overflow:hidden; /* 隐藏溢出部分 */
      5. text-overflow:ellipsis; /* 显示省略符号来代表被隐藏的文本 */
      6. }
    • 多行文本

    方式1

    1. .text {
    2. width: 100px;
    3. word-wrap:break-word; /* 内容存在英语或数字时强制换行 */
    4. overflow: hidden; /* 隐藏溢出部分 */
    5. text-overflow: ellipsis; /* 显示省略符号来代表被隐藏的文本 */
    6. display: -webkit-box; /* 将对象作为弹性伸缩盒子模型显示 */
    7. -webkit-box-orient: vertical; /* 设置盒子内排列顺序为纵向 */
    8. -webkit-line-clamp: 2; /* 限制块元素显示的文本的行数 */
    9. }

    方式2

    1. .text {
    2. width: 100px;
    3. position: relative;
    4. word-wrap:break-word; /* 英文字符换行 */
    5. line-height: 20px;
    6. max-height: 40px;
    7. overflow: hidden;
    8. }
    9. .text::after{
    10. content: "...";
    11. position: absolute;
    12. bottom: 0;
    13. right: 0;
    14. padding-left: 40px;
    15. background: -webkit-linear-gradient(left, transparent, #fff 55%);
    16. background: -o-linear-gradient(right, transparent, #fff 55%);
    17. background: -moz-linear-gradient(right, transparent, #fff 55%);
    18. background: linear-gradient(to right, transparent, #fff 55%);
    19. }
    1. 如何居中div?如何居中一个浮动元素?如何让绝对定位的div居中?

    https://juejin.cn/post/6844903693142196238

    1. // html部分(这部分不做变化,下面例子直接共用)
    2. <body>
    3. <div id='container'>
    4. <div id='center' style="width: 100px;height: 100px;background-color: #666">center</div>
    5. </div>
    6. </body>

    方法1:绝对定位与负边距实现(已知高度宽度)

    1. // css部分
    2. #container {
    3. position: relative;
    4. }
    5. #center {
    6. position: absolute;
    7. top: 50%;
    8. left: 50%;
    9. margin: -50px 0 0 -50px; // 向上和左 移动自身宽度的一半
    10. }

    方法2:绝对定位与margin:auto(已知高度宽度)

    这种方式无需知道被垂直居中元素的高和宽,但不能兼容低版本的IE浏览器。

    1. #container {
    2. position: relative;
    3. height:100px; //必须有个高度
    4. }
    5. #center {
    6. position: absolute;
    7. top: 0;
    8. left: 0;
    9. right: 0;
    10. bottom: 0;
    11. margin: auto;//注意此处的写法
    12. }

    方法3:绝对定位+CSS3(未知元素的高宽)

    利用Css3的transform,可以轻松的在未知元素的高宽的情况下实现元素的垂直居中

    1. #container {
    2. position: relative;
    3. }
    4. #center {
    5. position: absolute;
    6. top: 50%;
    7. left: 50%;
    8. transform: translate(-50%, -50%);
    9. }

    方法4:flex布局

    利用flex布局,其中justify-content 用于设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式;而align-items属性定义flex子项在flex容器的当前行的侧轴(纵轴)方向上的对齐方式

    1. #container { //直接在父容器设置即可
    2. height: 100vh;//必须有高度
    3. display: flex;
    4. justify-content: center;
    5. align-items: center;
    6. }

    方法5 flex/grid与margin:auto(最简单写法)

    容器元素设为 flex 布局或是grid布局,子元素只要写 margin: auto 即可,不能兼容低版本的IE浏览器。

    1. #container {
    2. height: 100vh;//必须有高度
    3. display: grid;
    4. }
    5. #center {
    6. margin: auto;
    7. }