前言
当青训营遇上码上掘金,我用代码实现一下《我的名片》,看下自己的html、css基础扎不扎实,还可以获得青豆,何乐而不为
想要实现的效果
大概实现的效果:
- 名片居中半透明;
- 背景比较好看
- 有一些动画
- 布局比较简洁,有头像,有文字
- 有轻快的音乐
开始代码的编写
先从好看的背景出发,搜集资料
背景和名片居中半透明
最终选择了火焰山色的背景,接着就需要对进行
html布局的设计了
名片居中半透明
<div class="card">
<div class="header-item">
<img class="avator" src="http://n.sinaimg.cn/translate/w600h450/20171203/7c6q-fypikwt4532172.jpg" />
<div class="text">
<div class="username">明渡</div>
<div class="jobs">前端开发工程师</div>
</div>
</div>
</div>
* {
margin: 0;
padding: 0;
font-family: 'Poppins',sans-serif;
}
body {
position: relative;
height:100vh;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
background-image: url(https://img0.baidu.com/it/u=1485531008,2170816570&fm=253&fmt=auto&app=120&f=JPEG?w=1422&h=800);
background-position: center;
background-size: cover;
}
.card {
width: 500px;
height: 300px;
background-color: rgba(255,255,255,0.2);
border-radius: 20px;
backdrop-filter: blur(6px);
box-shadow: 0 25px 25px rgba(0,0,0,0.4);
border-top: 1px solid rgba(255,255,255,0.6);
position: relative;
overflow: hidden;
transition: transform 0.3s ease-out;
}
布局和样式
接下就是里面的布局和样式
.card .header-item {
height: 240px;
display: flex;
justify-content: center;
align-items: center;
}
.card .header-item .avator {
width: 100px;
height: 100px;
border-radius: 50%;
border: 8px solid rgba(255,255,255,0.2);
margin-right: 60px;
}
.card .header-item .text {
display: flex;
flex-direction: column;
line-height: 2;
}
.card .header-item .text .username {
font-size: 24px;
font-weight: bold;
transition: transform 0.5s;
}
构建头像、文字、名片盒子的动画
接着我们需要添加一些动画,更具有活力:
- 鼠标移上去头像,让头像旋转
- 鼠标移上去文字上跳
- 鼠标移上去名片变大
.card:hover {
transform: scale(1.1);
}
.card .header-item .avator:hover {
animation: mymove 18s infinite;
}
.card:hover .username {
transform: translateY(-10px);
}
@keyframes mymove {
0% {
transform: rotate(0deg);
}
50% {
transform: rotate(360deg);
}
100% {
transform: rotate(760deg);
}
}
使用
animation和transform来进行展示动画效果
布局元素太少了,有点空,还需添加联系方式和添加一些设计感;
- 联系方式的表现形式是图标展示
- 设计感是通过添加常见矩形圆形,让画面更有层次
<ul class="content-item">
<li>
<a href=#">
<img src="https://api.iconify.design/ic:baseline-facebook.svg?color=%23888888">
</img>
</a>
</li>
<li>
<a href=#">
<img src="https://api.iconify.design/mdi:twitter.svg?color=%23888888">
</img>
</a>
</li>
<li>
<a href=#">
<img src="https://api.iconify.design/mdi:instagram.svg?color=%23888888">
</img>
</a>
</li>
<li>
<a href=#">
<img src="https://api.iconify.design/mdi:github.svg?color=%23888888">
</img>
</a>
</li>
<li>
<a href=#">
<img src="https://api.iconify.design/material-symbols:youtube-activity.svg?color=%23888888">
</img>
</a>
</li>
</ul>
<div class="footer-item"></div>
.content-item{
position: absolute;
top: 180px;
left: 270px;
list-style: none;
display: flex;
justify-content: center;
}
.content-item li {
margin: 0px 10px;
}
.content-item li a img {
width: 20px;
height: 20px;
}
.card .footer-item {
position: absolute;
bottom: 0;
height: 50px;
width: 100%;
background: rgba(255, 128, 0,0.8);
}
构建图标和矩形的动画
接下来我想添加一些动画效果
- 鼠标移上去下面的圆矩形显示,本身是隐藏的状态
- 这些图标也是本身状态是隐藏,鼠标移上去就显示 2.1 并且图标是一个个逐渐显示
.content-item{
position: absolute;
top: 180px;
left: 270px;
list-style: none;
display: flex;
justify-content: center;
}
.content-item li a {
opacity: 0;
transform: translateY(200px);
transition: transform 0.3s ease-out,opacity 0.3s ease-out ;
}
.content-item li {
margin: 0px 10px;
}
.content-item li a img {
width: 20px;
height: 20px;
}
.content-item li a:hover img{
width: 30px;
height: 30px;
filter: brightness(0);
}
.card .footer-item {
position: absolute;
bottom: 1;
height: 50px;
width: 100%;
background: rgba(255, 128, 0,0.8);
opacity: 0;
transform: translateY(200px);
transition: transform 0.3s ease-out,opacity 0.3s ease-out ;
}
.card:hover .footer-item {
opacity: 1;
transform: translateY(0);
}
.card:hover .content-item li a {
opacity: 1;
transform: translateY(0);
}
.card:hover .content-item li:nth-child(2) a {
transition-delay: 0.1s;
}
.card:hover .content-item li:nth-child(3) a {
transition-delay: 0.2s;
}
.card:hover .content-item li:nth-child(4) a {
transition-delay: 0.3s;
}
.card:hover .content-item li:nth-child(5) a {
transition-delay: 0.4s;
}
通过
opcity的0和1去实现隐藏和显示,通过transition-delay让过渡动画更加丝滑
添加音频
最后加上音频audio和轻松的音乐就好了
<audio controls autoplay >
<source src="https://sr-sycdn.kuwo.cn/21248b78e9bb1ca4f1883b08c831369b/63e70bb7/resource/n2/66/11/3146191703.mp3">
</audio>
audio {
position: absolute;
bottom: 0;
left: 0;
margin: 10px auto;
}
全部代码请看此链接: code.juejin.cn/pen/7198419…
总结
本章就是对html的布局和css的动画和样式的练习,实现一个小demo,非常感谢大家看到这里!!!