持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第30天,点击查看活动详情
所有CSSBattle专题文章收录于专栏:CSSBattle专栏
1. Battle #7 - Backface #39 - Sunset
- 看到这一题的第一印象就是他的条纹形状图案了,第一反应就是
box-shadow,但是仔细一看就会发现他的两边是一个圆弧 - 因此需要在其外部包裹一个容器,并且设置
border-radius使其为圆形 - 然而再仔细观察便又会发现,上下还有小圆的两个部分,因此如果利用
border-radius实现大圆,就必须设置其上下位置的背景色为透明,才能保证不遮挡小圆的部分 - 确实利用
linear-gradient方法能够顺便将透明部分以及中间的条纹部分一同实现,但是代码量之大可想而知 - 因此这里又要用到我们还不是很熟悉的
clip-path属性了,将外部的div容器的长宽设置成条纹部分的长宽,自然就不会遮挡小圆部分 - 然后左右两边的圆弧通过
clip-path实现,利用其中的circle方法 - 同时这里的条纹我并不是利用背景色实现的,而是通过设置容器的子元素div,因为其间隙都是相同的,所以可以利用我们的
flex布局,再讲justify-content设置为space-evenly让间隙部分均匀分布即可
代码如下:
<div class="a">
<div></div>
<div></div>
<div></div>
</div>
<style>
body{
background:radial-gradient(circle,#998235 100px,0,#1A4341);
}
.a{
display:flex;
margin:80px 67px;
width: 250;
height: 140;
background: #1A4341;
flex-direction:column;
justify-content:space-evenly;
clip-path:circle(125px);
}
.a div{
width:250;
height:20;
background:#F3AC3C
}
2. Battle #7 - Backface #40 - Letter-B
- 第一眼看到这一题的小伙伴可能会被吓到:这一会直一会弯的图形怎么实现啊?
- Relax!这里就是对大家拆分元素技巧的考验了
- 首先我们可以看到图中的四分之三圆环以及一个小矩形,这个矩形很好实现,但是这个四分之三圆环呢?好像目前无法一蹴而就,那么就可以考虑一下利用遮挡来实现了,通过对一整个圆环左上角的遮挡来实现四分之三圆环的绘制
- 至于怎么遮挡呢,我们能否在绘制左边小矩形的同时实现对圆环的遮挡呢,当然可以!可以通过小矩形的有边框来实现!!
代码如下:
<div></div>
<style>
body{
background:radial-gradient(circle,#6592CF 50px,0,#243D83 100px,0,#6592CF)
}
div {
width: 50;
height: 100;
background: #243D83;
margin:50px 92px;
border-right:50px solid #6592CF
}
3. Battle #7 - Backface #41 - Fox Head
- 这一题属实被整破防了(当然一大原因是因为明天要期末考试了),非常多的细节需要考虑,最主要的就是上下链各个圆弧了,因为除了圆弧外各自还有一小段直线(最后我也没有完美实现,但是看他100%过了就不想管了)
- 这一题原本是用
radial-gradient实现的,但是最后一直都卡在99.99%,就换了一种思路 - 采用的是
box-shadow,这题中的所有圆形都可以通过一个圆形的box-shadow来实现,所以一开始想的还是很方便的(没想到最后发现自己还是太年轻了)
不多说了上代码吧,这个代码个人觉得非常不满意,写的非常冗杂,都是经过修修补补的代码,希望考完试再来仔细研究一下吧
<div></div>
<style>
body{
background:#293462;
margin:115px 150px
}
div{
width:100;
height:100;
background:#FE5F55;
}
div::after{
content:'';
position:absolute;
width:80;
height:80;
border-radius:50%;
background:#293462;
left:120;
top:180;
box-shadow: 20px -65px 0 -25px #293462,
60px -65px 0 -25px #293462,
80px 0 #293462,
0 -100px #FE5F55,
80px -100px #FE5F55
}
div::before{
content:'';
position:absolute;
width:100;
height:100;
background:#293462;
z-index:1;
right:50;
top:60;
box-shadow: -200px 0 #293462,
-10px 120px #293462,
-190px 120px #293462
}