当青训营遇上码上掘金
效果
主题1:我的名片
名片是向人介绍自我的重要工具,作为一名程序员用代码做自我介绍是一件非常酷炫的事情。请大家围绕“我的名片”这个主题进行代码创作。
灵感源自贴吧。最近找到了美琴的学生证【御坂美琴吧】_百度贴吧 (baidu.com)
介绍
“你指尖跃动的电光,是我此生不灭的信仰,唯我超电磁炮永世长存!”
名片通过纯HTML+CSS实现,当鼠标移入名片范围,名片会自动放大并显示阴影效果,名片内元素适配名片大小的变化。名片内提供一个可交互的呱太图标,鼠标移入图标时,该图标会自动旋转为竖直状态,鼠标移出图标,图标倾斜30°。
实现过程:
名片主体
名片主体是H5的main元素,采用flex布局,并设置伪类,当鼠标移入时元素整体扩大,并在元素底部显示阴影效果,触发伪类事件的延迟时间是200ms。名片主体分3个部分,上面的是学校和学号信息,中间的是学生证标识,下面的是个人信息,均为flex布局的子元素,flex布局采用垂直排列方式。
整体结构:
<main class="container">
<div class="school-tab">头部信息部分...</div>
<div class="card-label">学生证标识...</div>
<div class="main-info">个人信息部分...</div>
</main>
主体部分的样式:
.container {
box-sizing: border-box;
width: 608px;
height: 361px;
background-color: #f1f1f1;
overflow: auto;
transition: 200ms;
display: flex;
flex-direction: column;
justify-content: center;
}
.container:hover {
width: 640px;
height: 380px;
box-shadow: 10px 10px 10px #707070;
}
学校和学号
学校和学号信息是名片主体的flex子元素,它们自身也是flex布局的元素,设置水平和垂直方向居中对齐,调整了校徽和左边框的边距,并设置校名和学号的字体。
学校和学号部分的结构:
<div class="school-tab">
<div class="school-banner">
<img class="school-logo" alt="logo" src="https://i.imgtg.com/2023/01/25/SvYdI.png">
<span class="school-name">常盘台中学</span>
</div>
<div class="uid"><span>No.</span> <span>000000003</span></div>
</div>
布局:
.school-logo {
width: 3em;
}
.school-name {
padding-left: 10px;
font-family: serif;
font-weight: bold;
font-size: 25px;
text-align: center;
}
.uid {
flex: 1;
text-align: right;
font-size: 30px;
padding-right: 10px;
}
.uid span {
font-family: "Monotype Corsiva", fantasy;
}
.school-tab {
flex: 1;
padding: 10px;
display: flex;
align-items: center;
}
.school-banner {
flex: 1;
display: flex;
align-items: center;
}
学生证标识
只是一行简单的文本,调整了对齐方式、字体和文本大小。
结构:
<div class="card-label">··········· 学 生 证 ···········</div>
布局:
.card-label {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
font-size: 20px;
font-family: monospace;
}
个人信息部分
个人信息部分在水平方向分为3个部分,左边是证件照,中间是个人基本信息,右边是呱太图标。水平方向也是由flex布局实现,调整了证件照和呱太的边框,调整了个人信息的字体、字号和行距。
结构:
<div class="main-info">
<div class="stu-info">
<img class="profile" src="https://i.imgtg.com/2023/01/25/SvsUG.webp" alt="profile">
<ul class="base-info">
<li>姓名:御坂美琴</li>
<li>性别:女</li>
<li>年级:二年级</li>
<li>级别:超能力者</li>
<li>能力:超电磁炮</li>
</ul>
<img class="guatai" src="https://i.imgtg.com/2023/01/25/SvVy1.png" alt="GuaTai">
</div>
</div>
布局:
.main-info {
flex: 4;
display: flex;
align-items: center;
}
.profile {
margin-left: 30px;
margin-right: 30px;
border: dotted 2px #56b252;
width: 10em;
}
.base-info {
flex: 2;
line-height: 1.5em;
font-size: 20px;
font-family: '华文行楷', serif;
}
.stu-info {
display: flex;
}
.guatai {
border-radius: 10px;
width: 6em;
height: 10em;
margin-left: 40px;
box-shadow:10px 10px 10px #707070;
transform: rotate(30deg);
transition: 100ms;
}
.guatai:hover{
transform: none;
}
整体效果如下:
总结
感谢「第五届字节跳动青训营」活动提供给我这一次练手的机会,这还是我第一次真正用纯HTML+CSS从头构建一个页面,之前套用第三方库,套用一些模板,并不能很好的了解HTML和CSS的特性,甚至有些属性的意义都不甚了解。通过这次实践,我进一步熟悉了CSS的用法,虽然效果并不惊艳,甚至有点丑陋,但希望以后继续学习研究,不断进步。
最后:“就算是我,也可以战斗,就算是我,也可以成为你的力量!” ——御坂美琴(镰池和马,《魔法禁书目录16》
参考链接
CSS阴影_css 阴影_Joker_ZzzZ_的博客-CSDN博客