持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情
先上效果图
图如其名,接下来我讲解排版思路
实现思路
蘑菇分为头部,根部,俩大部分,头部还有一些不规则形状的蘑菇点
头部通过盒子先花一个半圆,然后通过伪元素的方式定位到头部盒子的最底部,实现头部的效果
根部就很简单了,这里就不说了
小圆点通过定位的方式实现不同位置的排列,其中还通过CSS的扭曲属性实现不规则的小圆点
transform: skew(0deg, 10deg);
页面结构
<!-- 大盒子 -->
<div class="mushroom_box">
<!-- 蘑菇头 -->
<div class="mushroom_top">
<!-- 不规则小圆点 -->
<i></i>
<i></i>
<i></i>
<i></i>
<i></i>
</div>
<!-- 蘑菇根部 -->
<div class="mushroom_bottom"></div>
</div>
先给大盒子排好基本布局样式免得最后样式错乱,大盒子采用flex布局的方式设置Y轴为主轴侧轴居中,实现盒子里面的子元素居中排列
/* 大盒子 */
.mushroom_box {
position: relative;
box-sizing: border-box;
width: 750px;
padding-top: 20px;
margin: 0 auto;
display: flex;
flex-direction: column;
align-items: center;
}
蘑菇头部
首先先画出来一个半圆
/* 蘑菇头 */
.mushroom_top {
position: relative;
width: 400px;
height: 200px;
background: #FE876F;
border-top-left-radius: 200px;
border-top-right-radius: 200px;
}
画出半圆后在通过伪元素的方式完成蘑菇头的基本样式,伪元素这里要采用定位的方式把他定位到半圆的底部,这样就实现了一个头部的基本轮廓
.mushroom_top::after {
content: '';
position: absolute;
top: 100%;
width: 400px;
height: 100px;
border-bottom-left-radius: 200px;
border-bottom-right-radius: 200px;
background: #FE876F;
}
头部完成后,需要在给上边框,这样才能实现一个初步的效果,伪元素也需要给边框,整个头部都需要有边框,伪元素有了边框之后会和头部的盒子对不起,这是因为伪元素是基准头部盒子的content部分进行定位的,但是边框不在content部分,这个时候需要给通过定位的left属性减去边框的宽度就可以实现对齐的效果了
/* 蘑菇头 */
.mushroom_top {
border: 4px solid #000;
}
.mushroom_top::after {
content: '';
position: absolute;
top: 100%;
left: -4px;
border: 4px solid #000;
border-top: none;
}
蘑菇头根部
蘑菇头根部比较简单,给宽高和边框就好了,最后在通过边框圆角的方式实现一个圆底
/* 蘑菇根部 */
.mushroom_bottom {
width: 120px;
height: 300px;
background: #FFF6E5;
border: 4px solid #000;
border-top-left-radius: 150px;
border-top-right-radius: 150px;
border-bottom-left-radius: 100px;
border-bottom-right-radius: 100px;
}
不规则蘑菇圆点
不规则蘑菇圆底,通过给蘑菇头里面的标签定位的方式结合css序选择器实现圆点的大小和不同位置的排列,在通过css3的skew扭曲属性实现不规则的圆点大小
/* 蘑菇小黄点 */
.mushroom_top>i {
position: absolute;
width: 30px;
height: 30px;
border-radius: 50%;
background: #FFF9D6;
border: 3px solid #000;
top: 20%;
left: 40%;
}
.mushroom_top>i:nth-child(2) {
top: 30%;
left: 20%;
width: 40px;
height: 50px;
transform: skew(30deg, 20deg);
}
.mushroom_top>i:nth-child(3) {
top: 70%;
left: 60%;
width: 70px;
height: 70px;
z-index: 8;
}
.mushroom_top>i:nth-child(4) {
top: 70%;
left: 20%;
width: 90px;
height: 90px;
transform: skew(0deg, 10deg);
z-index: 8;
}
.mushroom_top>i:nth-child(5) {
top: 15%;
left: 60%;
width: 90px;
height: 90px;
z-index: 8;
}
我把代码放到码上掘金上了,大家快来看看吧 最后祝大家如花似叶,岁岁年年,共占春风。