grid网格布局,单独设置子元素的水平对齐和竖直对齐方式
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
上一篇文章说的是如何整体设置grid
网格布局中子元素的对齐方式,结论就是除了stretch
方式外,其它的对齐方式都会把子元素的背景色也inline
掉(实际上是子元素inline
了)。
大家好,这里是苏南大叔的程序如此灵动博客,记录苏南大叔的所学所想。本文描述子元素在格子里面对齐方式,包括水平对方式齐和竖直对齐方式两种。本文涉及两个属性justify-self
和align-self
,是作用于父容器内部的某个或多个子元素上的,控制的是父容器内某个或者多个子元素的对齐方式。
前置内容
为了更好的理解本篇文章的内容,可以参考下面的两篇文章:
justify-items
、align-items
、place-items
是作用在父元素上的属性。justify-self
、align-self
、place-self
是作用在子元素上的属性。
水平对齐justify-self
justify-self
和大家熟知的text-align
是差不多的功用。
<style>
.box {
display: grid;
grid-auto-columns: 200px;
grid-template-columns: 1fr 1fr;
grid-auto-rows: 50px;
border: 1px solid black;
width: 320px;
margin-top:3px;
}
.box > div { background: red; color:white; }
.box > div:nth-child(2) { background: rgb(115, 255, 0); }
#b1 > div:nth-child(1){ justify-self: start; }
#b2 > div:nth-child(1){ justify-self: center; }
#b3 > div:nth-child(1){ justify-self: end; }
#b4 > div:nth-child(1){ justify-self: stretch; }
</style>
<div class="box" id="b0"><div>默认值</div><div>苏南大叔</div></div>
<div class="box" id="b1"><div>start</div><div>苏南大叔</div></div>
<div class="box" id="b2"><div>center</div><div>苏南大叔</div></div>
<div class="box" id="b3"><div>end</div><div>苏南大叔</div></div>
<div class="box" id="b4"><div>stretch</div><div>苏南大叔</div></div>
竖直对齐align-self
align-self
和大家熟知的vertical-align
是差不多的功用。
<style>
.box {
display: grid;
grid-auto-columns: 200px;
grid-template-columns: 1fr 1fr;
grid-auto-rows: 50px;
border: 1px solid black;
width: 320px;
margin-top:3px;
}
.box > div { background: red; color:white; }
.box > div:nth-child(2) { background: rgb(115, 255, 0); }
#b1 > div:nth-child(1){ align-self: start; }
#b2 > div:nth-child(1){ align-self: center; }
#b3 > div:nth-child(1){ align-self: end; }
#b4 > div:nth-child(1){ align-self: stretch; }
#b5 > div:nth-child(1){ align-self: baseline; }
</style>
<div class="box" id="b0"><div>默认值</div><div>苏南大叔</div></div>
<div class="box" id="b1"><div>start</div><div>苏南大叔</div></div>
<div class="box" id="b2"><div>center</div><div>苏南大叔</div></div>
<div class="box" id="b3"><div>end</div><div>苏南大叔</div></div>
<div class="box" id="b4"><div>stretch</div><div>苏南大叔</div></div>
<div class="box" id="b5"><div>baseline</div><div>苏南大叔</div></div>
两者的简写place-self
place-self
=align-self
+justify-self
。
注意是先设置竖直,再设置水平。
<style>
.box {
display: grid;
grid-auto-columns: 200px;
grid-template-columns: 1fr 1fr;
grid-auto-rows: 50px;
border: 1px solid black;
width: 320px;
margin-top:3px;
}
.box > div { background: red; color:white; }
.box > div:nth-child(2) { background: rgb(115, 255, 0); }
#b1 > div:nth-child(1){ place-self: start center; }
#b2 > div:nth-child(1){ place-self: center end; }
#b3 > div:nth-child(1){ place-self: end start; }
#b4 > div:nth-child(1){ place-self: stretch center; }
</style>
<div class="box" id="b0"><div>默认值</div><div>苏南大叔</div></div>
<div class="box" id="b1"><div>start center</div><div>苏南大叔</div></div>
<div class="box" id="b2"><div>center end</div><div>苏南大叔</div></div>
<div class="box" id="b3"><div>end start</div><div>苏南大叔</div></div>
<div class="box" id="b4"><div>stretch center</div><div>苏南大叔</div></div>
对比flex
值得说明的是:flex
布局也有类似的对齐属性。参考文章:
相关文章
- https://newsn.net/say/css-grid.html
- https://newsn.net/say/grid-auto-flow.html
- https://newsn.net/say/grid-auto-flow-dense.html
- https://newsn.net/say/grid-template.html
- https://newsn.net/say/grid-template-areas.html
- https://newsn.net/say/grid-minmax.html
- https://newsn.net/say/grid-row.html
- https://newsn.net/say/grid-zindex.html
- https://newsn.net/say/grid-template-2.html
- https://newsn.net/say/grid-auto-fill.html
- https://newsn.net/say/grid-auto-fit.html
- https://newsn.net/say/grid-align.html
总结
值得注意的是:不管是竖直还是水平,除了stretch
效果。设置了哪里的对齐方式,背景色都会被跟着inline
。似乎和预想的效果是不一样的。
更多css
经验文章,请点击下面的链接:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。