This commit is contained in:
xugaoyi 2019-12-17 14:40:02 +08:00
parent 2adb10ce55
commit 796308064c
22 changed files with 3435 additions and 38 deletions

View File

@ -29,4 +29,4 @@ jobs: # 工作流
BASE_BRANCH: master # 要部署的文件夹所在的分支.
BRANCH: gh-pages # 部署到的分支
FOLDER: docs/.vuepress/dist # 要部署的文件夹.
BUILD_SCRIPT: npm install && npm run build && cd docs/.vuepress/dist && echo 'b.evanblogweb.com' > CNAME # 部署前要执行的命令 #&& npm run list
BUILD_SCRIPT: npm install && npm run build && && ls && cd docs/.vuepress/dist && echo 'b.evanblogweb.com' > CNAME # 部署前要执行的命令 #&& npm run list

View File

@ -7,13 +7,12 @@ module.exports = [
//{text: 'vue', link: '/web/vue/'},
//{text: 'TypeScript', link: '/web/TypeScript/'},
//{text: 'ES6', link: '/web/ES6/'},
{text: 'CSS/HTML', link: '/web/CSS-HTML/01.flex布局基础'},
]
},
{
text: 'python',
text: '页面',
items: [
{text: 'python', link: '/python/'}
{text: 'HTML/CSS', link: '/ui/00.flex布局语法'},
]
},
{text: '技术杂谈',items:[
@ -22,11 +21,15 @@ module.exports = [
{text: 'GitHub高级搜索技巧', link: '/other/github'},
{text: 'Markdown使用教程', link: '/other/markdown'},
{text: 'npm使用教程', link: '/other/npm'},
{text: 'yaml教程', link: '/other/yaml'},
]},
{text: '学习',items:[
{text: '学习效果低,忘性很大怎么办?',link: '/other/LearningAndMemory'},
{text: '学习网站分享', link: '/other/study'},
]},
{text: '学习笔记',items:[
{text: '小程序笔记',link: '/other/note/01.小程序笔记'},
]},
{text: '面试',items:[
{text: '面试问答集锦', link: '/other/interview'},
]},

View File

@ -12,21 +12,24 @@ module.exports = { // 侧边栏
['JavaScript/06.多种数组去重性能对比','多种数组去重性能对比'],
]
},
],
'/ui/': [
{
title: 'CSS/HTML',
title: 'HTML/CSS',
collapsable: false,
children: [
['CSS-HTML/01.flex布局基础','flex布局基础'],
['CSS-HTML/02.flex布局案例-骰子','flex布局案例-骰子'],
['CSS-HTML/03.flex布局案例-网格布局','flex布局案例-网格布局'],
['CSS-HTML/04.flex布局案例-圣杯布局','flex布局案例-圣杯布局'],
['CSS-HTML/05.flex布局案例-输入框布局','flex布局案例-输入框布局'],
['CSS-HTML/06.CSS3之transform过渡','CSS3之transform过渡'],
['CSS-HTML/07.CSS3之animation动画','CSS3之animation动画'],
['00.flex布局语法','flex布局语法'],
['01.flex布局案例-基础','flex布局案例-基础'],
['02.flex布局案例-骰子','flex布局案例-骰子'],
['03.flex布局案例-网格布局','flex布局案例-网格布局'],
['04.flex布局案例-圣杯布局','flex布局案例-圣杯布局'],
['05.flex布局案例-输入框布局','flex布局案例-输入框布局'],
['06.CSS3之transform过渡','CSS3之transform过渡'],
['07.CSS3之animation动画','CSS3之animation动画'],
]
},
],
'/other/': [// 针对不同页面设置不同侧边栏
'/other/': [
{
title: '技术',
collapsable: false, //是否可折叠可选的默认true
@ -36,9 +39,9 @@ module.exports = { // 侧边栏
['github','GitHub高级搜索技巧'],
['markdown','Markdown使用教程'],
['npm','npm使用教程'],
['yaml','yaml教程'],
]
},
{
title: '学习',
collapsable: false,
@ -47,7 +50,13 @@ module.exports = { // 侧边栏
['study','学习网站分享'],
]
},
{
title: '学习笔记',
collapsable: false,
children: [
['note/01.小程序笔记','小程序笔记'],
]
},
{
title: '面试',
collapsable: false,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

@ -157,6 +157,7 @@ export default {
.feature {
max-width: 100%;
padding: 0 2.5rem;
margin: 0 auto;
}
}
}

File diff suppressed because it is too large Load Diff

340
docs/other/yaml.md Normal file
View File

@ -0,0 +1,340 @@
# yaml教程
## 简介
YAML 是 "YAML Ain't a Markup Language"YAML 不是一种标记语言的递归缩写。在开发的这种语言时YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。
YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别**适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲**例如许多电子邮件标题格式和YAML非常接近
YAML 的配置文件后缀为 **.yml**,如:**runoob.yml** 。
> yaml常用来用作配置文件和json类似
## 基本语法
- 大小写敏感
- 使用缩进表示层级关系
- 缩进不允许使用tab只允许空格
- 缩进的空格数不重要,只要相同层级的元素左对齐即可
- '#'表示注释
## 数据类型
YAML 支持以下几种数据类型:
- **对象**键值对的集合又称为映射mapping/ 哈希hashes / 字典dictionary
- **数组**一组按次序排列的值又称为序列sequence / 列表list
- **纯量**scalars单个的、不可再分的值
## YAML 对象
对象的几种表示形式:
1、对象键值对使用冒号结构表示 **key: value**,冒号后面要加一个空格。
```yaml
key: value
```
2、也可以使用 **key:{key1: value1, key2: value2, ...}**
```yaml
key:{child-key1:value1,child-key2:value2}
```
3、还可以使用缩进表示层级关系
```yaml
key:
child-key1: value1
child-key2: value2
```
同2只是表示形式不同。
4、较为复杂的对象格式可以使用问号加一个空格代表一个复杂的 key配合一个冒号加一个空格代表一个 value
```yaml
?
- complexkey1
- complexkey2
:
- complexvalue1
- complexvalue2
```
意思即对象的属性是一个数组 [complexkey1,complexkey2],对应的值也是一个数组 [complexvalue1,complexvalue2]
## YAML 数组
**-** 开头的行表示构成一个数组:
```yaml
- A
- B
- C
```
YAML 支持多维数组,可以使用行内表示:
```yaml
key: [value1, value2, ...]
```
数据结构的子成员是一个数组,则可以在该项下面缩进一个空格。
```yaml
-
- A
- B
- C
```
一个相对复杂的例子:
```yaml
companies:
-
id: 1
name: company1
price: 200W
-
id: 2
name: company2
price: 500W
```
意思是 companies 属性是一个数组,每一个数组元素又是由 id、name、price 三个属性构成。
数组也可以使用流式(flow)的方式表示:
```yaml
companies: [{id: 1,name: company1,price: 200W},{id: 2,name: company2,price: 500W}]
```
## 复合结构(对象和数组组合)
数组和对象可以构成复合结构,例:
```yaml
languages:
- Ruby
- Perl
- Python
websites:
YAML: yaml.org
Ruby: ruby-lang.org
Python: python.org
Perl: use.perl.org
```
转换为 js 为:
```yaml
{
languages: [ 'Ruby', 'Perl', 'Python'],
websites: {
YAML: 'yaml.org',
Ruby: 'ruby-lang.org',
Python: 'python.org',
Perl: 'use.perl.org'
}
}
```
## 纯量
纯量是最基本的,不可再分的值,包括:
- 字符串
- 布尔值
- 整数
- 浮点数
- Null
- 时间
- 日期
使用一个例子来快速了解纯量的基本使用:
```yaml
boolean: # 布尔值
- TRUE #true,True都可以
- FALSE #falseFalse都可以
float: # 浮点数
- 3.14
- 6.8523015e+5 #可以使用科学计数法
int: # 整数
- 123
- 0b1010_0111_0100_1010_1110 #二进制表示
null: # Null
nodeName: 'node'
parent: ~ #使用~表示null
string: # 字符串
- 哈哈 # 字符串默认不使用引号表示
- 'Hello world' #可以使用双引号或者单引号包裹特殊字符
- newline
newline2 #字符串可以拆成多行,每一行会被转化成一个空格
date:
- 2018-02-17 #日期必须使用ISO 8601格式即yyyy-MM-dd
datetime:
- 2018-02-17T15:02:31+08:00 #时间使用ISO 8601格式时间和日期之间使用T连接最后使用+代表时区
```
多行字符串可以使用`|`保留换行符,也可以使用`>`折叠换行。
```yaml
this: |
Foo
Bar
that: >
Foo
Bar
```
转为js代码如下。
```json
{ this: 'Foo\nBar\n', that: 'Foo Bar\n' }
```
`+`表示保留文字块末尾的换行,`-`表示删除字符串末尾的换行。
```yaml
s1: |
Foo
s2: |+
Foo
s3: |-
Foo
```
转为json代码如下
```json
{ s1: 'Foo\n', s2: 'Foo\n\n\n', s3: 'Foo' }
```
字符串之中可以插入 HTML 标记。
```yaml
message: |
<p style="color: red">
段落
</p>
```
## 转换数据格式
允许使用两个感叹号,强制转换数据类型。
```yaml
e: !!str 123
f: !!str true
```
转换js结果同
```json
{ e: '123', f: 'true' }
```
## 锚点引用
**&** 锚点和< span class="marked">* 别名,可以用来引用:
```yaml
defaults: &defaults # 添加锚点
adapter: postgres
host: localhost
development:
database: myapp_development
<<: *defaults # <<表示合并*引用锚点
test:
database: myapp_test
<<: *defaults # <<表示合并*引用锚点
```
相当于:
```yaml
defaults:
adapter: postgres
host: localhost
development:
database: myapp_development
adapter: postgres
host: localhost
test:
database: myapp_test
adapter: postgres
host: localhost
```
**&** 用来建立锚点defaults**<<** 表示合并到当前数据,***** 用来引用锚点。
下面是另一个例子:
```yaml
- &showell Steve
- Clark
- Brian
- Oren
- *showell
```
转为js代码如下:
```yaml
[ 'Steve', 'Clark', 'Brian', 'Oren', 'Steve' ]
```
> 参考:
>
> - yaml官网<https://yaml.org/>
> - yaml与js的转换demo<http://nodeca.github.io/js-yaml/>
> - 菜鸟教程:<https://www.ruanyifeng.com/blog/2016/07/yaml.html>

View File

@ -1 +0,0 @@
> 敬请期待

View File

@ -6,13 +6,13 @@ tagline: web前端工程师热衷于学习与总结
features:
- title: 前端
details: web前端开发相关技术
details: JavaScript、ES6、vue框架等相关技术
url: /web/JavaScript/01.JavaScript中的名词概念
imgname: /img/web.png
- title: python
details: 人生苦短我学python
url: /python/
imgname: /img/python.png
- title: 页面
details: html(5)/css(3),前端页面相关技术
url: /ui/00.flex布局语法
imgname: /img/ui.png
- title: 技术杂谈
details: 技术文档、教程、技巧、学习笔记等
url: /other/git
@ -28,19 +28,12 @@ footer: Copyright © 2019-present evanblog
* [多种数组去重性能对比](web/JavaScript/06.多种数组去重性能对比)
* [更多... 👉](web/JavaScript/01.JavaScript中的名词概念)
* CSS/HTML
* [flex布局基础](web/CSS-HTML/01.flex布局基础)
* [flex布局案例-圣杯布局](web/CSS-HTML/04.flex布局案例-圣杯布局)
* [CSS3之animation动画](web/CSS-HTML/07.CSS3之animation动画)
* [更多... 👉](web/CSS-HTML/01.flex布局基础)
## 🐍python
> 敬请期待
## 🎨 页面
* HTML/CSS
* [flex布局语法](ui/00.flex布局语法)
* [flex布局案例-圣杯布局](ui/04.flex布局案例-圣杯布局)
* [CSS3之animation动画](ui/07.CSS3之animation动画)
* [更多... 👉](ui/00.flex布局语法)
@ -50,17 +43,17 @@ footer: Copyright © 2019-present evanblog
* [Git使用文档](other/git)
* [GitHub高级搜索技巧](other/github)
* [Markdown使用教程](other/markdown)
* [更多... 👉](other/git)
* 学习
* [学习效果低,忘性很大怎么办?](other/LearningAndMemory)
* [学习网站分享](other/study)
* [更多... 👉](other/LearningAndMemory)
* 面试
* [面试问题集锦](other/interview)
* 其他
* [在线工具](other/utils)
* [关于本博客搭建](https://github.com/xugaoyi/evanblog)
* [更多... 👉](other/git)
## :email: 联系
- **Github**: <https://github.com/xugaoyi>

View File

@ -0,0 +1,305 @@
# flex布局语法
## 一、flex 布局是什么?
Flex是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。
**任何一个容器** 都可以指定为 Flex 布局。
```css
.box{
display: flex;
}
```
**行内元素** 也可以使用 Flex 布局。
```css
.box{
display: inline-flex;
}
```
Webkit 内核的浏览器,必须加上`-webkit`前缀。
```css
.box{
display: -webkit-flex; /* Safari */
display: flex;
}
```
**注意**,设为 Flex 布局以后,子元素的`float`、`clear`和`vertical-align`属性将失效。
## 二、基本概念
采用 Flex 布局的元素,称为 Flex 容器flex container简称"容器"。它的所有子元素自动成为容器成员,称为 Flex 项目flex item简称"项目"。
![img](http://www.ruanyifeng.com/blogimg/asset/2015/bg2015071004.png)
容器默认存在两根轴水平的主轴或x轴main axis和垂直的交叉轴或y轴cross axis。主轴的开始位置与边框的交叉点叫做`main start`,结束位置叫做`main end`;交叉轴的开始位置叫做`cross start`,结束位置叫做`cross end`。
项目默认沿主轴排列。单个项目占据的主轴空间叫做`main size`,占据的交叉轴空间叫做`cross size`。
## 三、容器的属性
以下6个属性设置在容器上。(即设置在 display: flex; 的元素上)
>- flex-direction 方向 决定项目的排列方向
>
>- flex-wrap 换行
>
>- flex-flow 方向和换行的简写
>
>
>
>- justify-content 主轴对齐方式
>
>- align-items 交叉轴对齐方式
>
>- align-content 多轴线的对齐方式
### 3.1 flex-direction属性
`flex-direction`属性决定主轴的方向(即项目的排列方向)。
> ```css
> .box {
> flex-direction: row | row-reverse | column | column-reverse;
> }
> ```
![img](http://www.ruanyifeng.com/blogimg/asset/2015/bg2015071005.png)
它可能有4个值。
> - `row`(默认值):主轴为水平方向,起点在左端。
> - `row-reverse`:主轴为水平方向,起点在右端。
> - `column`:主轴为垂直方向,起点在上沿。
> - `column-reverse`:主轴为垂直方向,起点在下沿。
### 3.2 flex-wrap属性
默认情况下,项目都排在一条线(又称"轴线")上。`flex-wrap`属性定义,如果一条轴线排不下,如何换行。
![img](http://www.ruanyifeng.com/blogimg/asset/2015/bg2015071006.png)
> ```css
> .box{
> flex-wrap: nowrap | wrap | wrap-reverse;
> }
> ```
它可能取三个值。
1`nowrap`(默认):不换行。会压缩项目的宽度
![img](http://www.ruanyifeng.com/blogimg/asset/2015/bg2015071007.png)
2`wrap`:换行,第一行在上方。
![img](http://www.ruanyifeng.com/blogimg/asset/2015/bg2015071008.jpg)
3`wrap-reverse`:换行,第一行在下方。
![img](http://www.ruanyifeng.com/blogimg/asset/2015/bg2015071009.jpg)
### 3.3 flex-flow
`flex-flow`属性是`flex-direction`属性和`flex-wrap`属性的简写形式,默认值为`row nowrap`。
> ```css
> .box {
> flex-flow: <flex-direction> || <flex-wrap>;
> }
> ```
### 3.4 justify-content属性
`justify-content`属性定义了项目在主轴上的对齐方式。
> ```css
> .box {
> justify-content: flex-start | flex-end | center | space-between | space-around;
> }
> ```
![img](http://www.ruanyifeng.com/blogimg/asset/2015/bg2015071010.png)
它可能取5个值具体对齐方式与轴的方向有关。下面假设主轴为从左到右。
> - `flex-start`(默认值):左对齐
> - `flex-end`:右对齐
> - `center` 居中
> - `space-between`:两端对齐,项目之间的间隔都相等。
> - `space-around`:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
### 3.5 align-items属性
`align-items`属性定义项目在交叉轴上如何对齐。
> ```css
> .box {
> align-items: flex-start | flex-end | center | baseline | stretch;
> }
> ```
![img](http://www.ruanyifeng.com/blogimg/asset/2015/bg2015071011.png)
它可能取5个值。具体的对齐方式与交叉轴的方向有关下面假设交叉轴从上到下。
> - `flex-start`:交叉轴的起点对齐。
> - `flex-end`:交叉轴的终点对齐。
> - `center`:交叉轴的中点对齐。
> - `baseline`: 项目的第一行文字的基线对齐。
> - `stretch`默认值如果项目未设置高度或设为auto将占满整个容器的高度。
### 3.6 align-content属性
`align-content`属性定义了多根轴线的对齐方式(**一排项目为一根轴线**)。如果项目只有一根轴线,该属性不起作用。
> ```css
> .box {
> align-content: flex-start | flex-end | center | space-between | space-around | stretch;
> }
> ```
![img](http://www.ruanyifeng.com/blogimg/asset/2015/bg2015071012.png)
该属性可能取6个值。
> - `flex-start`:与交叉轴的起点对齐。
> - `flex-end`:与交叉轴的终点对齐。
> - `center`:与交叉轴的中点对齐。
> - `space-between`:与交叉轴两端对齐,轴线之间的间隔平均分布。
> - `space-around`:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
> - `stretch`(默认值):轴线占满整个交叉轴。
## 四、项目的属性
以下6个属性设置在项目上。
> - `order`
> - `flex-grow`
> - `flex-shrink`
> - `flex-basis`
> - `flex` `flex-grow`, `flex-shrink``flex-basis`的简写
> - `align-self`
### 4.1 order属性
`order`属性定义项目的排列顺序。数值越小排列越靠前默认为0。
> ```css
> .item {
> order: <integer>;
> }
> ```
![img](http://www.ruanyifeng.com/blogimg/asset/2015/bg2015071013.png)
### 4.2 flex-grow属性
`flex-grow`属性定义项目的放大比例,默认为`0`,即如果存在剩余空间,也不放大。
> ```css
> .item {
> flex-grow: <number>; /* default 0 */
> }
> ```
![img](http://www.ruanyifeng.com/blogimg/asset/2015/bg2015071014.png)
如果所有项目的`flex-grow`属性都为1则它们将等分剩余空间如果有的话。如果一个项目的`flex-grow`属性为2其他项目都为1则前者占据的剩余空间将比其他项多一倍。
### 4.3 flex-shrink属性
`flex-shrink`属性定义了项目的缩小比例默认为1即如果空间不足该项目将缩小。
> ```css
> .item {
> flex-shrink: <number>; /* default 1 */
> }
> ```
![img](http://www.ruanyifeng.com/blogimg/asset/2015/bg2015071015.jpg)
如果所有项目的`flex-shrink`属性都为1当空间不足时都将等比例缩小。如果一个项目的`flex-shrink`属性为0其他项目都为1则空间不足时前者不缩小。
负值对该属性无效。
### 4.4 flex-basis属性
`flex-basis`属性定义了在分配多余空间之前项目占据的主轴空间main size。浏览器根据这个属性计算主轴是否有多余空间。它的默认值为`auto`,即项目的本来大小。
> ```css
> .item {
> flex-basis: <length> | auto; /* default auto */
> }
> ```
它可以设为跟`width`或`height`属性一样的值比如350px则项目将占据固定空间。
### 4.5 flex属性
`flex`属性是`flex-grow`, `flex-shrink``flex-basis`的简写,默认值为`0 1 auto`。后两个属性可选。
> ```css
> .item {
> flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
> }
> ```
该属性有两个快捷值:`auto` (`1 1 auto`) 和 none (`0 0 auto`)。
**建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。**
### 4.6 align-self属性
`align-self`属性允许单个项目有与其他项目不一样的对齐方式,可覆盖`align-items`属性。默认值为`auto`,表示继承父元素的`align-items`属性,如果没有父元素,则等同于`stretch`。
> ```css
> .item {
> align-self: auto | flex-start | flex-end | center | baseline | stretch;
> }
> ```
![img](http://www.ruanyifeng.com/blogimg/asset/2015/bg2015071016.png)
该属性可能取6个值除了auto其他都与align-items属性完全一致。
(完)
> 来源:
>
> <http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html>
>
> <http://www.ruanyifeng.com/blog/2015/07/flex-examples.html>

View File

@ -1,4 +1,4 @@
# flex布局基础
# flex布局案例-基础
先上代码,[效果](#效果)在后面

View File

@ -1 +0,0 @@
> 敬请期待