日记

日记

  • Diary
  • GitHub

›All Blog Posts

All Blog Posts

  • 再看高程3
  • 面试
  • 个人简历
  • react的高性能
  • webpack源码学习
  • 树莓派
  • 布局
  • 模块化
  • 攻击与安全
  • 异步
  • TODO
  • React状态管理比较
  • 性能优化
  • HTTP缓存
  • (译)JS中数据的改变与发现
  • CSS杂记
  • XML与SVG
  • 个人简历
  • Workspaces是什么
  • NPM包测试之低高级策略
  • 谈谈version
  • 减肥之道
  • 问题汇总
  • 一个nginx配置
  • 好用的工具
  • 好用的npm包
  • 流行框架学习对比

CSS杂记

June 22, 2018

Shiyong Yin

box-sizing

2个取值(inherit不计算在内)

  • content-box 简单来说,整个元素宽度=width+border+margin+padding,高度类似
  • border-box 简单来说,整个元素宽度=width,width=内容宽度+border+margin+padding

建议将所有元素的border-boxing都设置为border-box

示例

box-sizing: content-box; width: 100%; padding: 0; border-width: 0;
box-sizing: content-box; width: 100%; padding: 0; border-width: 0;
box-sizing: border-box; width: 100%; padding: 0; border-width: 0;

flex布局

.a {
  flex: 1 1 100px;
}

这表示什么意思?

上面的样式等价于

.a {
  flex-grow: 1; //扩展比率
  flex-shrink: 1; //收缩比率
  flex-basic: 100px; //伸缩基准值
}

flex-shrink示例

wrapper的总长度是500,根据基准值算出的总长度是200+200+200=600,显然超出了,所以根据收缩比率进行压缩 (600-500) / (1+2+3) = 16.666,那么green块收缩16.666x1,black块收缩16.666x2,blue块收缩16.666x3 所以最后的宽度green = 200 - 16.666x1, 同理,black,blue类似

<style>
.ysy-f-wrapper {
  display: flex;
  width: 500px;
  height: 50px;
}
.ysy-f-green{
  flex: 1 1 200px;
  background: green;
  height: 50px;
}
.ysy-f-black{
  flex: 2 2 200px;
  background: black;
  height: 50px;
}
.ysy-f-blue{
  flex: 3 3 200px;
  height: 50px;
  background: blue;
}
</style>
<div class="ysy-f-wrapper">
  <div class="ysy-f-green"></div>
  <div class="ysy-f-black"></div>
  <div class="ysy-f-blue"></div>
</div>

flex-grow示例

这个省略了,比flex-shrink好理解

作业

要求如下

  1. 内容居中,左右边距10px
  2. A元素垂直居中
  3. A元的内容垂直居中
A
Recent Posts
  • box-sizing
  • flex布局
    • flex-shrink示例
    • flex-grow示例
    • 作业
Copyright © 2018-2019 Shiyong Yin