2019.7.9

22个必备的CSS小技巧

  1. 渐变边框 设置渐变背景,然后index在下面 ```css .box { margin: 80px 30px; width: 200px; height: 200px; position: relative; background: #fff; float: left; } .box:before { content: ‘’; z-index: -1; position: absolute; width: 220px; height: 220px; top: -10px; left: -10px; background-image: linear-gradient(90deg, yellow, gold); }
  1. 2. img object-fit
  2. ```css
  3. .box { width: 160px; height: 160px; background-color: #beceeb; }
  4. .box > img { width: 100%; height: 100; }

image.png

fill为拉伸图片填满容器, contain保持宽高比,但会全部显示,cover为按短边截取,none不做任何操作

  1. sticky属性 在容器里

学习和复习(第28周) - 图2

BEM使用中容易遇到的问题

命名域
image.png
比如容器使用l-,然后容器中的卡片c-开头,这样代码结构很清晰。

  1. 动态规划

  2. 回溯法

回溯法,首先明确回溯和穷举不同。
第一步,回溯应当确定问题的状态空间树,即问题的解空间。例如:八皇后问题,解空间即8的向量空间,解决问题即找到符合要求的解集;
第二步,应当明确搜索的优势,即在查找解空间时,是可以从向量的每一级进行查询的。如:8皇后第一级为第一个棋子放的位置,当某一级出现问题(不符合需求)则说明以该向量前面其对应的所有向量都不符合要求,可以舍弃,此为剪枝。(与穷举不同,穷举要求生成解空间然后对解空间所有结果进行判定);
第三步,核心点,需要问题可以深度搜索,考虑树的结构。如果某一层出现问题,及时回溯到上一级,同时恢复上一级的状态。
回溯模式:
非递归

  1. int a[n],i;
  2. 2: 初始化数组a[];
  3. 3: i = 1;
  4. 4: while (i>0(有路可走) and (未达到目标)) // 还未回溯到头
  5. 5: {
  6. 6: if(i > n) // 搜索到叶结点
  7. 7: {
  8. 8: 搜索到一个解,输出;
  9. 9: }
  10. 10: else // 处理第i个元素
  11. 11: {
  12. 12: a[i]第一个可能的值;
  13. 13: while(a[i]在不满足约束条件且在搜索空间内)
  14. 14: {
  15. 15: a[i]下一个可能的值;
  16. 16: }
  17. 17: if(a[i]在搜索空间内)
  18. 18: {
  19. 19: 标识占用的资源;
  20. 20: i = i+1; // 扩展下一个结点
  21. 21: }
  22. 22: else
  23. 23: {
  24. 24: 清理所占的状态空间; // 回溯
  25. 25: i = i 1;
  26. 26: }
  27. 27: }

递归

      int a[n];
   2: try(int i)
   3: {
   4:     if(i>n)
   5:        输出结果;
   6:      else
   7:     {
   8:        for(j = 下界; j <= 上界; j=j+1)  // 枚举i所有可能的路径
   9:        {
  10:            if(fun(j))                 // 满足限界函数和约束条件
  11:              {
  12:                 a[i] = j;
  13:               ...                         // 其他操作
  14:                 try(i+1);
  15:               回溯前的清理工作(如a[i]置空值等);
  16:               }
  17:          }
  18:      }
  19: }

2019.7.10

ng-alain创建组件业务页

ng g ng-alain:curd help-activity