资料
https://css-tricks.com/snippets/css/a-guide-to-flexbox/
布局
flex 设定两列布局
场景:在设定两列布局时,如果给子元素设定 flex:1, 那么当其中一个子元素中的宽度超出时,会导致挤压另一个子元素,导致不是均分的两列布局
解决:使用 width:50%;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.container{
height: 500px;
width: 500px;
display: flex;
}
.left{
/* flex: 1; */
width: 50%;
border: 1px solid black;
}
.right{
/* flex: 1; */
width: 50%;
border: 1px solid black;
}
.desc-container{
margin: 100px 0 30px;
}
.desc-content{
width: 100%;
max-width: 352px;
}
</style>
</head>
<body>
<div class="container">
<div class="left">
<h2>Fluent Design System</h2>
<div class="desc-container">
<div class="desc-content">
Go ahead, pick a platform to get started.
Go ahead, pick a platform to get started.
Go ahead, pick a platform to get started.
</div>
</div>
</div>
<div class="right">
<img src="https://fluentdesign.blob.core.windows.net/assets/icon-fluent@1x.png" alt="">
</div>
</div>
</body>
</html>
延伸写法
- 给子元素设定 flex : 1 1 auto;
另一个子元素会进行挤压
- flex : 0 0 auto;
不会进行挤压
flex 表示的是 flex-grow , flex-shrink, flex-basis 。
其中 flex : 1.表示的就是 flex:1 1 0.
当 flex-basis 设置为0的时候,表示flexbox完全忽略flex子元素的尺寸,告诉 flexbox 所有空间都可以抢占,并按比例分享。
相关问题:当 父元素为 flex 时,给子元素设定 flex:50% 或者 width:50% 都是一样的效果
https://stackoverflow.com/questions/23779144/difference-between-width-50-and-flex-50-in-a-css-flexbox
类似菜单项可换行布局
如下案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.container {
/* width: 500px; */
display: flex;
flex-wrap: wrap; //*
}
.item {
box-sizing: border-box;
width: 25%; //*
height: 100px;
border: 1px solid black;
}
</style>
</head>
<body>
<div class="container">
<div class="item">
item
</div>
<div class="item">
item
</div>
<div class="item">
item
</div>
<div class="item">
item
</div>
<div class="item">
item
</div>
<div class="item">
item
</div>
</div>
</body>
</html>
同时设定 max-width 与 width
样式
鼠标移动到图片上,呈放大效果
知识点:scale
<div class="box">
box
</div>
.box {
margin: 10px auto;
width: 100px;
height: 100px;
border: 1px solid black;
transition: all 0.8s;
}
.box:hover {
transform: scale(1.2);
}
图标上下浮动的动画
知识点:animation
<div class="trans"></div>
<style>
.trans {
/* 随便来点样式 */
height: 200px;
width: 200px;
background: red;
/* END */
/* 引入动画(1.3s可控制速度) */
animation: heart 1.3s ease-in-out infinite alternate;
/* END */
}
@keyframes heart {
from {
transform: translate(0, 0)
}
to {
transform: translate(0, 30px)
}
/* 下浮高度 */
}
</style>