效果展示
![](https://img.haomeiwen.com/i10561036/748cb2f96c5a7b38.png)
CSS 知识点
- inset 属性运用
整体实现页面布局
<!-- 只是展示一个卡片,剩余的卡片只要修改对应图标和颜色即可 -->
<div class="card" style="--clr: #249eff">
<div class="box">
<div class="icon">
<div class="icon_box"></div>
</div>
<div class="content"></div>
</div>
</div>
.container .card {
position: relative;
width: 300px;
height: 460px;
background: var(--clr);
border-radius: 20px;
border-top-left-radius: 70px;
overflow: hidden;
}
![](https://img.haomeiwen.com/i10561036/c5b2f2979c81255f.png)
实现卡片头部整体部分
/* 定位在背景上,并且使用inset属性设置四周间距,从而形成边框 */
.container .card .box {
position: absolute;
inset: 10px;
background: #282828;
border-radius: 10px;
}
/* 设置图标容器样式 */
.container .card .box .icon {
position: absolute;
width: 140px;
height: 140px;
background: var(--clr);
border-bottom-right-radius: 50%;
}
实现卡片图标部分左下角的弯曲部分
实现思路就是在icon
的容器中添加一个伪元素,伪元素使用box-shadow
属性进行弯曲部分的实现,如下图橙色框框出的部分,我们只要设置对应的颜色就可以,形成图标部分左下角的弯曲部分。
![](https://img.haomeiwen.com/i10561036/6adfbe9af9a88e48.png)
.container .card .box .icon::before {
content: "";
position: absolute;
bottom: -30px;
left: 0;
width: 30px;
height: 30px;
background: transparent;
border-top-left-radius: 30px;
box-shadow: -5px -5px 0 5px var(--clr);
}
实现卡片图标部分右上角的弯曲部分
实现思路跟左下角部分实现思路一样。
.container .card .box .icon::after {
content: "";
position: absolute;
top: 0px;
right: -30px;
width: 30px;
height: 30px;
background: transparent;
border-top-left-radius: 30px;
box-shadow: -5px -5px 0 5px var(--clr);
}
实现图标容器样式
.container .card .box .icon .icon_box {
position: absolute;
inset: 10px;
background: #282828;
border-radius: 50%;
border-top-right-radius: 10px;
border-bottom-left-radius: 10px;
}
![](https://img.haomeiwen.com/i10561036/2139a8a5acbf4292.png)
实现图标样式
<div class="icon_box">
<i class="fa-solid fa-code"></i>
</div>
.container .card .box .icon .icon_box {
position: absolute;
inset: 10px;
background: #282828;
border-radius: 50%;
border-top-right-radius: 10px;
border-bottom-left-radius: 10px;
display: flex;
justify-content: center;
align-items: center;
font-weight: 600;
}
.container .card .box .icon .icon_box i {
font-size: 2.5em;
color: #fff;
}
实现内容样式
.container .card .box .content {
position: absolute;
top: 150px;
padding: 20px;
text-align: center;
}
.container .card .box .content h2 {
color: #fff;
font-size: 1.35em;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.12em;
}
.container .card .box .content p {
color: #fff;
font-size: 0.95em;
opacity: 0.75;
margin: 0 0 10px;
}
.container .card .box .content a {
background: var(--clr);
display: inline-block;
padding: 10px 25px;
text-decoration: none;
color: #333;
text-transform: uppercase;
font-weight: 600;
border-radius: 30px;
transition: 0.5s;
}
.container .card .box .content a:hover {
letter-spacing: 0.2em;
}
![](https://img.haomeiwen.com/i10561036/64e036b5f8f55a08.png)
网友评论