2019.7.9
22个必备的CSS小技巧
- 渐变边框 设置渐变背景,然后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); }
2. img object-fit
```css
.box { width: 160px; height: 160px; background-color: #beceeb; }
.box > img { width: 100%; height: 100; }
fill为拉伸图片填满容器, contain保持宽高比,但会全部显示,cover为按短边截取,none不做任何操作
- sticky属性 在容器里
BEM使用中容易遇到的问题
命名域
比如容器使用l-,然后容器中的卡片c-开头,这样代码结构很清晰。
回溯法
回溯法,首先明确回溯和穷举不同。
第一步,回溯应当确定问题的状态空间树,即问题的解空间。例如:八皇后问题,解空间即8的向量空间,解决问题即找到符合要求的解集;
第二步,应当明确搜索的优势,即在查找解空间时,是可以从向量的每一级进行查询的。如:8皇后第一级为第一个棋子放的位置,当某一级出现问题(不符合需求)则说明以该向量前面其对应的所有向量都不符合要求,可以舍弃,此为剪枝。(与穷举不同,穷举要求生成解空间然后对解空间所有结果进行判定);
第三步,核心点,需要问题可以深度搜索,考虑树的结构。如果某一层出现问题,及时回溯到上一级,同时恢复上一级的状态。
回溯模式:
非递归
int a[n],i;
2: 初始化数组a[];
3: i = 1;
4: while (i>0(有路可走) and (未达到目标)) // 还未回溯到头
5: {
6: if(i > n) // 搜索到叶结点
7: {
8: 搜索到一个解,输出;
9: }
10: else // 处理第i个元素
11: {
12: a[i]第一个可能的值;
13: while(a[i]在不满足约束条件且在搜索空间内)
14: {
15: a[i]下一个可能的值;
16: }
17: if(a[i]在搜索空间内)
18: {
19: 标识占用的资源;
20: i = i+1; // 扩展下一个结点
21: }
22: else
23: {
24: 清理所占的状态空间; // 回溯
25: i = i –1;
26: }
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