实训日志day 2

Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。

任何一个容器都可以指定为 Flex 布局。

.box{

  display: flex;

}

行内元素也可以使用 Flex 布局。

.box{

  display: inline-flex;

}

 

容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。

项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。

 

容器的属性

以下6个属性设置在容器上。

  • flex-direction
  • flex-wrap
  • flex-flow
  • justify-content
  • align-items
  • align-content

1)flex-direction属性决定主轴的方向(即项目的排列方向)

    .box {

      flex-direction: row(默认) | row-reverse | column | column-reverse;

}

  • row(默认值):主轴为水平方向,起点在左端。
  • row-reverse:主轴为水平方向,起点在右端。
  • column:主轴为垂直方向,起点在上沿。
  • column-reverse:主轴为垂直方向,起点在下沿。

2)justify-content属性定义了项目在主轴上的对齐方式。

    .box {

      justify-content: flex-start | flex-end | center | space-between | space-around;

}

  • flex-start(默认值):左对齐
  • flex-end:右对齐
  • center: 居中
  • space-between:两端对齐,项目之间的间隔都相等。
  • space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

3)align-items属性定义项目在交叉轴上如何对齐。

    .box {

      align-items: flex-start | flex-end | center | baseline | stretch;

}

  • flex-start:交叉轴的起点对齐。
  • flex-end:交叉轴的终点对齐。
  • center:交叉轴的中点对齐。
  • baseline: 项目的第一行文字的基线对齐。
  • stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

 

4)flex-wrap属性定义,如果一条轴线排不下,如何换行

    .box{

      flex-wrap: nowrap | wrap | wrap-reverse;

}

  1. nowrap(默认):不换行。
  2. wrap:换行,第一行在上方。
  3. wrap-reverse:换行,第一行在下方。

5)align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

.box {

  align-content: flex-start | flex-end | center | space-between | space-around | stretch;

}

  • flex-start:与交叉轴的起点对齐。
  • flex-end:与交叉轴的终点对齐。
  • center:与交叉轴的中点对齐。
  • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
  • space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
  • stretch(默认值):轴线占满整个交叉轴。

 

:nth-of-type(n)选择器匹配同类型中的第n个同级兄弟元素。

n可以是一个数字,一个关键字,或者一个公式。

实践:

touzi.html 

<!DOCTYPE html>
<html>
<head>
	<title>骰子排列</title>
	<link rel="stylesheet" type="text/css" href="box.css">
</head>
<body>
<!--骰子整个容器-->
	<div class="first-box">
		<!--骰子中每个点-->
		<span class="dot"></span>
	</div>
	<div class="second-box">
		<span class="dot"></span>
		<span class="dot"></span>
	</div>
	<div class="third-box">
		<span class="dot"></span>
		<span class="dot"></span>
		<span class="dot"></span>
	</div>
	<div class="fourth-box">
		<div class="column">
			<span class="dot"></span>
			<span class="dot"></span>
		</div>
		<div class="column">
			<span class="dot"></span>
			<span class="dot"></span>
		</div>
	</div>
	<div class="fifth-box">
		<div class="column">
			<span class="dot"></span>
			<span class="dot"></span>
		</div>
		<div class="column">
			<span class="dot"></span>
		</div>
		<div class="column">
			<span class="dot"></span>
			<span class="dot"></span>
		</div>
	</div>
	<div class="sixth-box">
		<div clsas="column">
			<span class="dot"></span>
			<span class="dot"></span>
			<span class="dot"></span>
		</div>
		<div clsas="column">
			<span class="dot"></span>
			<span class="dot"></span>
			<span class="dot"></span>
		</div>
	</div>
</body>
</html>

box.css 

* {
  box-sizing: border-box;
}
html,body {
  height: 100%;
}
body {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  align-content: center;
  background-color: #2b2b2b;
}
[class$="box"]{
  width: 104px;
  height: 104px;
  margin: 16px;
  padding: 4px;
  background-color: #e7e7e7;
  border-radius: 10%;
  object-fit: contain;
  box-shadow:
    inset 0 5px white, 
    inset 0 -5px #bbb,
    inset 5px 0 #d7d7d7, 
    inset -5px 0 #d7d7d7;
}
.dot {
  display: block;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background-color: #333;
  margin: 4px;
  box-shadow: inset 0 3px #111,inset 0 -3px #555;
}
.first-box{
	display: flex;
	justify-content: center;
	align-items: center;
}
.second-box{
	display: flex;
	justify-content: space-between;
}
.second-box .dot:nth-of-type(2){
	align-self: flex-end;
}
.third-box{
	display: flex;
}
.third-box .dot:nth-of-type(2){
	align-self: center;
}
.third-box .dot:nth-of-type(3){
	align-self: flex-end;
}
.fourth-box{
	display: flex;
	justify-content: space-between;
}
.fourth-box .column{
	display: flex;
	flex-direction: column;
	justify-content: space-between;
}
.fifth-box{
	display: flex;
}
.fifth-box .column{
	display: flex;
	flex-direction: column;
	justify-content: space-between;
}
.fifth-box .column:nth-of-type(2){
	align-self: center;
}
.sixth-box{
	display: flex;
	justify-content: space-between;
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值