夏天,人人都希望有一顶漂亮的帽子吧?来,我送给你。
帽子结构很简单,分为帽檐、帽冠、饰带、饰带上面有花朵
<div class="cap">
<!-- 帽冠 -->
<div class="top">
<!-- 饰带 -->
<div class="lace">
<!-- 花朵 -->
<div class="flower">
<!-- 花瓣 -->
<div class="petal"></div>
<div class="petal"></div>
<div class="petal"></div>
<div class="petal"></div>
<div class="petal"></div>
</div>
</div>
</div>
<!-- 帽檐 -->
<div class="bottom"></div>
</div>
.cap {
position: relative;
}
.top{
position: absolute;
width: 120px;
height: 116px;
background: var(--capColor);
border-radius: 100%;
transform: rotateX(13deg) rotateY(15deg) rotateZ(14deg);
top: -32px;
left: 60px;
z-index: 2;
}
.bottom{
position: absolute;
width: 210px;
height: 110px;
background: var(--capColor);
border-radius: 100%;
transform: rotateX(36deg) rotateY(15deg);
z-index: 1;
}
利用transform: rotate
,使其沿着 X/Y/Z 轴进行 3D 旋转,从而形成帽子的大致形状。
.lace{
position: absolute;
bottom: 27px;
left: -24px;
width: 170px;
height: 120px;
border: 14px solid var(--laceColor);
border-radius: 50%;
}
利用border
、border-radius
加父元素的overflow: hidden
,隐藏掉超出部分,形成"饰带"
.petal{
position: absolute;
background: var(--laceColor);
border-radius: 100%;
border: 1px solid var(--capColor);
width: 20px;
height: 20px;
z-index: 9;
}
.petal:first-child{
position: absolute;
top: -10px;
}
.petal:nth-child(2){
position: absolute;
top: -3px;
left: 10px;
}
.petal:nth-child(3){
position: absolute;
top: 8px;
left: 10px;
}
.petal:nth-child(4){
position: absolute;
top: 10px;
left: -5px;
}
.petal:last-child{
position: absolute;
top: 0px;
left: -10px;
}
这个没有技术可言,利用绝对定位,布局好每个花瓣的位置就可以了。
正如你所见,上面用到的方法。变量名前面要加两根连词线(--),即可声明CSS变量。
body {
--foo: #7F583F;
--bar: #F7EFD2;
}
你可能会问,为什么选择两根连词线(--)表示变量?因为$foo被 Sass 用掉了,@foo被 Less 用掉了。为了不产生冲突,官方的 CSS 变量就改用两根连词线了。
var()
函数用于读取变量,如下:
a {
color: var(--foo);
text-decoration-color: var(--bar);
}
同一个 CSS 变量,可以在多个选择器内声明。读取的时候,优先级最高的声明生效。这与 CSS 的"层叠"(cascade)规则是一致的。
上面代码中,三个选择器都声明了--color
变量。不同元素读取这个变量的时候,会采用优先级最高的规则,因此三段文字的颜色是不一样的。
这就是说,变量的作用域就是它所在的选择器的有效范围。
这样大家会用CSS变量后,咱们就可以给帽子换颜色了。
接下来就看你的审美了,随意配色,各凭所好咯。
本次课程就到此结束啦,关注我,学习更多前端知识,但不止于前端哦!
小伙伴们,有问题可以评论区留言哦,欢迎大家点评。
谢谢大家一直以来的支持。