margin负值问题
这两种经典布局都会用到margin负值,所以先了解一下margin负值元素是怎么移动的。
-
marin-top和margin-left负值,元素向上、向左移动
-
margin-right负值,右侧元素左移,自身不受影响
-
margin-bottom负值,下方元素上移,自身不受影响
圣杯布局
<div className={styles.wrap}>
<div className={styles.header}>header</div>
<div className={styles.container}>
<div className={styles.content}>content</div>
<div className={styles.left}>left</div>
<div className={styles.right}>right</div>
</div>
<div className={styles.footer}>footer</div>
</div>
.wrap{
.header, .footer{
background: rgb(133, 133, 133);
height: 50px;
width: 100%;
text-align: center;
}
.container{
overflow: hidden;
padding-left: 200px;
padding-right: 150px;
text-align: center;
.left{
width: 200px;
background-color: aquamarine;
float: left;
margin-left: -100%;
position: relative;
right: 200px;
}
.right{
width: 150px;
background-color: cadetblue;
float: left;
margin-right: -150px;
}
.content{
width: 100%;
background-color: chocolate;
float: left;
}
}
}
双飞翼布局
<div className={styles.wrap}>
<div className={styles.header}>header</div>
<div className={styles.container}>
<div className={styles.content}>
<div className={styles.inner}>content</div>
</div>
<div className={styles.left}>left</div>
<div className={styles.right}>right</div>
</div>
<div className={styles.footer}>footer</div>
</div>
.wrap{
.header, .footer{
background: rgb(133, 133, 133);
height: 50px;
width: 100%;
text-align: center;
}
.container{
overflow: hidden;
.left{
width: 200px;
background-color: aquamarine;
float: left;
margin-left: -100%;
}
.right{
width: 150px;
background-color: cadetblue;
float: left;
margin-left: -150px;
}
.content{
width: 100%;
background-color: chocolate;
float: left;
.inner{
margin: 0 150px 0 200px;
}
}
}
}
使用flex画一个骰子
<div className={styles.box}>
<div className={styles.item}></div>
<div className={styles.item}></div>
<div className={styles.item}></div>
</div>
.box{
width: 200px;
height: 200px;
border: 2px solid #ccc;
border-radius: 10px;
padding: 20px;
display: flex;
justify-content: space-around;
.item {
width: 40px;
height: 40px;
border-radius: 50%;
background-color: #666;
}
.item:nth-child(2){
align-self: center;
}
.item:nth-child(3){
align-self: flex-end;
}
}