目录
CSS3入门
前言
准备工作
案例
第一面
第二面
第三面
第四面
第五面
第六面
预告和回顾
后话
CSS3入门
前言
在学习过flex布局的相关知识之后,我们调节成员在容器中的常规位置,比如居左、居中等,就方便很多了。
比较典型的例子就是骰子六个面的点的位置调节。
准备工作
软件:【参考版本】Visual Studio Code
插件(扩展包):Open in browser, Live Preview, Live Server
浏览器版本:Chrome
系统版本: Win10/11/其他非Windows版本
*我的电脑是Win10的版本,仅供参考*
案例
首先,我们来看一下六个面实现的效果:
公用的样式如下:
body {
min-width: 1500px;
}
/* 最外侧容器 */
.container {
width: 1400px;
height: 500px;
margin: 0 auto;
display: flex;
flex-wrap: wrap;
justify-content: space-evenly;
background: #444444;
}
/* 骰面 */
.box {
width: 120px;
height: 120px;
margin: 50px;
display: flex;
flex-wrap: wrap;
border-radius: 10px;
background: #fff;
}
/* 辅助定位盒子 */
.wrap {
width: 100%;
display: flex;
}
/* 辅助定位盒子调节属性 */
.whf {
width: 50%;
}
.hhf {
height: 50%;
}
/* 点 */
.point {
width: 26px;
height: 26px;
margin: 7px;
border-radius: 50%;
background: #000;
}
下面按照顺序讲解各个面:
第一面
第一个面只有一个点,但是要注意这个点的大小、颜色比较特殊。
样式上,只需要让唯一的点在主轴和交叉轴方向都居中即可。
html代码如下:
<div class="container">
<!-- 1 -->
<div class="box">
<div class="point"></div>
</div>
</div>
CSS样式如下:
.box:first-child {
justify-content: center;
align-items: center;
}
.box:first-child .point {
width: 52px;
height: 52px;
background: #990000;
}
至于这里为什么用了 .box:first-child,则是因为接下来我的每个骰面都要直接加在上一个骰面之后,直接在上面的container中添加即可。
第二面
第二面想要实现案例里的效果,其实没有看上去那么简单。
除了点的大小、颜色不同,点的相对骰面边界的边距还有细微变化——往中心稍微收了一些。
这个时候就需要使用到两个辅助定位盒子了,两个辅助定位盒子的高和宽都设置为骰面尺寸的50%,调节两个辅助盒子的位置在对角线上,然后让点在辅助盒子中居中即可。
html代码如下:
<!-- 2 -->
<div class="box">
<div class="wrap whf hhf">
<div class="point"></div>
</div>
<div class="wrap whf hhf">
<div class="point"></div>
</div>
</div>
CSS代码如下:
.box:nth-of-type(2) .wrap {
justify-content: center;
align-items: center;
}
.box:nth-of-type(2) .point {
width: 36px;
height: 36px;
background: #000099;
}
.box:nth-of-type(2) .wrap:last-child {
align-self: flex-end;
}
第三面
第三面相对来说就很简单了,在此之后点的样式无需再调节。
只需要调节第二个和第三个点在交叉轴上的位置即可。
html代码如下:
<!-- 3 -->
<div class="box">
<div class="point"></div>
<div class="point"></div>
<div class="point"></div>
</div>
CSS代码如下:
.box:nth-of-type(3) .point:nth-of-type(2) {
align-self: center;
}
.box:nth-of-type(3) .point:last-child {
align-self: flex-end;
}
第四面
第四面和第二面类似,点也需要向中心收一点。
设置两个辅助盒子,高度分别为骰面的一半,每个盒子中两个点,让这两个点在辅助盒子中沿主轴均匀分布,沿交叉轴居中。
html代码如下:
<!-- 4 -->
<div class="box">
<div class="wrap hhf">
<div class="point"></div>
<div class="point"></div>
</div>
<div class="wrap hhf">
<div class="point"></div>
<div class="point"></div>
</div>
</div>
CSS代码如下:
.box:nth-of-type(4) {
align-content: space-between;
}
.box:nth-of-type(4) .wrap {
justify-content: space-evenly;
align-items: center;
}
第五面
第五面需要三个辅助盒子,不需要额外设置尺寸(因为之前设置尺寸的时候,默认每个点占的水尺寸都是1/3)。
辅助盒子中的内容靠两侧分布,第二个盒子中的点居中。
html代码如下:
<!-- 5 -->
<div class="box">
<div class="wrap">
<div class="point"></div>
<div class="point"></div>
</div>
<div class="wrap">
<div class="point"></div>
</div>
<div class="wrap">
<div class="point"></div>
<div class="point"></div>
</div>
</div>
CSS代码如下:
.box:nth-of-type(5) .wrap {
justify-content: space-between;
}
.box:nth-of-type(5) .wrap:nth-of-type(2) {
justify-content: center;
}
第六面
第六个面也有一个向中间收拢的效果,用的是spacing-evenly。
还是需要设置三个辅助盒子。
html代码如下:
<!-- 6 -->
<div class="box">
<div class="wrap">
<div class="point"></div>
<div class="point"></div>
</div>
<div class="wrap">
<div class="point"></div>
<div class="point"></div>
</div>
<div class="wrap">
<div class="point"></div>
<div class="point"></div>
</div>
</div>
CSS代码如下:
.box:nth-of-type(6) .wrap {
justify-content: space-evenly;
}
预告和回顾
对网页布局和制作感兴趣的朋友,可以看下面的CSS专栏,里面有很多讲解详尽的案例,当前为第九期:
专栏 | CSS入门http://t.****img.cn/4bvCJ当然,也欢迎对全栈项目感兴趣的朋友查看我的其他专栏。
后话
在全栈领域,博主也只不过是一个普通的萌新而已。本系列的博客主要是记录一下自己学习的一些经历,然后把自己领悟到的一些东西总结一下,分享给大家。
文章全篇的操作过程都是笔者亲自操作完成的,一些定义性的文字加入了笔者自己的很多理解在里面,所以仅供参考。如果有说的不对的地方,还请谅解。
==期待与你在下一期博客中再次相遇==
——浓度骤降的【H2O2】