css-flex布局

  1. flex 应该是最常用的布局了

想写一个左边(内容撑开)右边自适应的布局 不知道啥影响的, 右边不会自适应, 没办法, 回来看看flex

  1. flex-basis比width 优先级高, 当然前提是flex 的直接子元素, 而且子元素的空间富裕, 子元素的内容, 没有超出的情况下, 同时设置这两个, flex-basis比width 优先级高, 如果不是, width 还是有用的. 自己写宽度或者覆盖已有样式, 用 flex-basis吧 其实用到了flex了, 讨论width 是没有意义的…
  2. min-width > max-width > flex-basis > width
  3. 弹性盒的子元素, 尽量不用width 除非需求要求宽度写死.

flex-basis: 50px;

  1. 有的子元素宽度小于50, 则变为 50, 有的元素大于50, 则该元素保持不变
  2. 它还和高度有关?

display: flex | inline-flex;

  1. 子项块状话.(inline-grid/grid => grid inline-block/inline/block => block flow-root => flow-root) 文本节点会转为匿名块级标签(不过还是最好不用这种文本的)
  2. 子项浮动失效.
  3. 子项也支持 z-index
  4. 子项margin不合并. (块级元素,上下margin合并,取大的值…还有子元素的margin挤走父元素, 父元素写border可以解决.)
  5. 三个元素的话,justify-content margin: auto; 可以让其居中; margin: 0 auto; margin-left: auto;

flex-xx

  1. flex-direction
  2. flex-basis
  3. flex-wrap: nowrap | wrap | wrap-reverse; img 设置 max-with: 100%; 可以用来避免宽度溢出. 因为实际上img的( div>div>img)
.container{
	flex-flow: row-reverse wrap-reverse;  flex-direction flex-wrap的合写; 单写一个也是支持的; 也没有书写顺序
}
word-break: break-all;

justify-content 主轴对齐

  1. space-around 和 space-evenly 的区别在于, evenly是完全等分空白区域.

align-items侧轴对齐

  1. stretch 优先级低于 height

align-content 多行的时候生效

  1. stretch | flex-start | flex-end | center | space-xxx

默认情况下, 元素的宽度是不会小于内容宽度的


.box {
	display: flex;
	justify-content: space-between;
	background-color: lightblue;
}
.box > div {
	white-space: nowrap;
	overflow: auto;
	flex-basis: 0;
	flex-grow: 1;
	flex-shrink: 2; 你会发现这个flex-shrink的比例根本没生效
}

.box > div:nth-child(2) {
	flex-grow: 1;
	flex-shrink: 1;
}

flex-shrink: 2;

<style>
	body {
		margin: 0;
	}

	.box {
		display: flex;
		justify-content: space-between;
	}
	.box > div {
		flex-basis: 200px;
		flex-shrink: 2;
		background-color: lightgrey;
	}

	.box > div:nth-child(2) {
		background-color: lightcoral;
		flex-shrink: 1;
	}
</style>
</head>

<body>
	<div class="box">
		<div>1</div>
		<div>2</div>
	</div>
</body>

1 比如两个元素的宽度都是200,总共400 实际宽度只有 250; 减少的这个150(2的减少100, 1的减少50)
在这里插入图片描述

<div class="box">
	<div>1</div>
	<div>2222222222222222222 发打发点阿斯顿发的阿斯顿 阿斯顿发的 打发沃尔夫 阿斯顿发的</div>
</div>

在这里插入图片描述

flex属性: grow shrink basis;顺序变是可以的,但是 第一个纯数字的是grow

basis 给一个基础值, grow shrink 设置放大 缩小, 及其比例.

  1. 默认值是 空值; === inital === 0 1 auto
  2. 1 => 1 1 0% 这个最常用, 强制让子元素强制均分… + over-flow:auto;
  3. 100px => 1 1 100px 目的是为了符合开发的需求;
  4. 0 => 0 0 0%
  5. auto => 1 1 auto 有弹性
  6. none => 0 0 auto 推荐 没弹性 很友善,很直观,语义化,
不要设置width, 设置flex-basis 一个基准的宽度, 然后在控制它放大还是缩小.
.box{
	flex-grow: 0;  grow 优先级更高. 放大和缩小要一致. 
	flex-shrink: 1; // 因为默认值是缩小, 所以设置width不管用
	flex-basis: auto; 基础值
}
<style>
.box {
	display: flex;

	background-color: lightblue;
}
.box > div:nth-child(1) {
	flex: 2 1 0;
}
.box > div {
	min-width: 100px;
	flex: 1 1 0;
}
</style>
<div class="box">
	<div>11111111111111111111111111111111</div>
	<div>222222222222222222222222222222222222222222222222</div>
</div>

flex-direction: row; // 默认 row 一行上....column

columns

设置列的, 非flex相关

ul {
	width: 200px;
	columns: 2;
	background: lightgreen;
}
<ul>
	<li>啊啊1</li>
	<li>啊啊2</li>
	<li>啊啊3</li>
	<li>啊啊4</li>
</ul>

在这里插入图片描述

参考链接

  1. https://www.zhangxinxu.com/wordpress/2019/12/css-flex-basis/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值