成果展示:
代码解析:
HTML代码展示部分:
<body bgcolor="black">
<div class="comtainer">
<div class="bg">
<span></span>
<span></span>
<span></span>
</div>
<div class="glass">
<div class="texts">登录</div>
<input type="text" placeholder="账号">
<input type="password" placeholder="密码">
<button>→</button>
</div>
</div>
其中:
<body bgcolor="black">这一行代表的是设置了 body 元素的背景色为黑色。<div class="container">标签用于定义 HTML 文档中的一个容器。这里定义了一个 class 为 "container" 的 div 容器,用于包含后续的内容。- 下述类中中包含了三个span元素。用于对文本进行样式化。容器中包含了一个 class 为 "glass" 的 div 容器。它的作用可能是创建一个透明的容器,类似玻璃的效果。
<div class="bg">
<span></span>
<span></span>
<span></span>
</div>
下面依次包含了以下内容:
- 一个 class 为 "texts" 的 div 容器,显示文本 "登录"。
- 一个输入框,类型为文本(type="text"),并设置了一个占位文本 "账号"。
- 一个密码输入框,类型为密码(type="password"),并设置了一个占位文本 "密码"。
- 一个按钮,显示一个箭头 "→"。
<div class="glass">
<div class="texts">登录</div>
<input type="text" placeholder="账号">
<input type="password" placeholder="密码">
<button>→</button> </div>
这个 HTML 代码片段创建了一个黑色背景的页面,包含了一个登录表单。登录表单由一个透明的容器包裹,具有背景效果。表单包含了账号输入框、密码输入框和登录按钮。
CSS展示部分:
container 类选择器定义了一个宽度为 800px,高度为 800px 的容器。依据 margin: 0 auto 具体实现居中对齐。position:relative设置了容器的定位方式为相对定位,代码如下:
.container{
width:800px;
height:800px;
margin:0 auto;
position:relative;
}
- 首先glass 类选择器定义了一个宽度为 360px,高度为 480px 的容器。
- 然后通过 position:absolute; 将其设置为绝对定位,
- 接下来的 top 和 left 属性用于确定其位置。
- border-radius:20px; 设置圆角边框半径为 20px。color:#eee; 设置文本颜色为浅灰色。
- backdrop-filter:blur(10px); 使用模糊滤镜对背景进行模糊处理。
- box-shadow 属性添加了两个阴影效果,内部的阴影插入容器,并且外部阴影提供了某种深度和立体感。
- 最后,通过 animation 属性应用了一种动画效果。
代码如下:
.glass{
position:absolute;
width:360px;
height:480px;
top:160px;
left:220px;
border-radius:20px;
color:#eee;
background:rgba(255,255,255,0.05);
backdrop-filter:blur(10px);
box-shadow:insert 1px 1px 6px rgba(255,255,255,0.3),2px 2px 15px rgba(0,0,0,0.5);
animation:am3 ease-out 1s 0.2s backwards;
}
glass:hover 伪类选择器表示当鼠标悬停在 glass 容器上时触发的样式。这段代码改变了 box-shadow 的值,使其显示不同的效果,并且修改了背景的模糊度。
代码如下:
glass:hover{
box-shadow:inset 1px 1px 3px rgba(255,255,255,0.9),4px,4px,25px,rgba(0,0,0,0.9);
backdrop-filter:blur(7px);
}
button:hover 伪类选择器表示当鼠标悬停在按钮上时触发的样式。这段代码修改了按钮的宽度、边框半径和左边距以改变其样式。同时,通过 box-shadow 添加了两个阴影效果,为按钮提供了一种浮起和立体的感觉,代码如下:
button:hover{
width:160px;
border-radius:70px;
margin-left:105px;
box-shadow:0px 0px 10px #999,insert 0px 0px 5px #333;
}
bg 类选择器定义了一个宽度为 800px,高度为 800px 的容器。通过 position:absolute; 将其设置为绝对定位。通过 top 和 left 属性将其定位在父容器的左上角。animation 属性应用了一种动画效果。
代码如下:
.bg{
position:absolute;
width:800px;
height:800px;
top:0;
left:0;
animation:am2 ease-out 1s;
}
input 标签选择器定义了文本输入框的样式。
- background:transparent; 使得背景透明。
- outline:none; 移除了文本框的边框。
- width:80%;设置宽度为容器的 80%。
- height:45px; 设置高度为 45 像素。
- color:#eee; 设置文本颜色为浅灰色。
- font-size:18px; 设置字体大小为 18 像素。
- margin-left:34px; 和 margin-top:40px; 分别设置左边距和上边距。
代码如下:
input{
background:transparent;
outline:none;
border:none;
border-button:1px solid #666;
width:80%;
height:45px;
color:#eee;
font-size:18px;
margin-left:34px;
margin-top:40px;
}
texts 类选择器定义了一段文本的样式。
- display:inline-block; 将文本显示为内联块元素,可以水平排列。
- font-size:26px; 设置字体大小为 26 像素。
- margin-left:34px; 和 margin-top:50px; 设置左边距和上边距.
代码如下:
.texts{
display:inline-block;
font-size:26px;
margin-left:34px;
margin-top:50px;
}
button 标签选择器定义了按钮的样式。
- border:none; 移除了按钮的边框。
- width:70px; 和 height:70px; 分别设置宽度和高度为 70 像素,使按钮呈现为一个圆形。
- border-radius:50%; 设置圆角半径为 50%,使按钮更加圆润。
- color:#eee; 设置文本颜色为浅灰色。
- font-weight:bold; 设置粗体字体。
- font-size:28px; 设置字体大小为 28 像素。
- margin-left:145px; 和 margin-top:71px; 设置左边距和上边距。
- cursor:pointer; 设置鼠标悬停时显示为手型光标。
- background:rgba(255,255,255,0.1); 设置背景颜色为白色,并应用了透明度。
- box-shadow:0px 2px 10px #eee; 添加了一个具有水平和垂直偏移以及模糊效果的阴影。
代码展示如下:
button{
border:none;
width:70px;
height:70px;
border-radius:50%;
color:#eee;
font-weight:bold;
font-size:28px;
margin-left:145px;
margin-top:71px;
cursor:pointer;
background:rgba(255,255,255,0.1);
box-shadow:0px 2px 10px #eee;
}
span 标签选择器定义了一个用于装饰的圆形元素的样式。
- background:blue; 设置背景颜色为蓝色。
- position:absolute; 将其设置为绝对定位。
- top:117px; 和 left:143px; 设置元素距离父容器的上边缘和左边缘的距离。
- width:120px; 和 height:120px; 设置宽度和高度为 120 像素,使其呈现为一个正圆。
- border-radius:50%; 设置圆角半径为 50%,使得元素呈现为圆形。
- box-shadow:1px 1px 50px #eee; 添加了一个具有水平和垂直偏移以及模糊效果的阴影。
代码如下:
span{
background:blue;
position:absolute;
top:117px;
left:143px;
width:120px;
height:120px;
border-radius:50%;
box-shadow:1px 1px 50px #eee;
}
span:nth-child选择器用于选择父容器中的第一个 span 元素并设置其样式。在这里,我将三个元素的位置、尺寸和背景颜色进行了修改,使其呈现为紫色,橙色,青色的圆形。
代码如下:
span:nth-child(1){
top:117px;
left:143px;
width:120px;
height:120px;
background:purple;
}
span:nth-child(2){
top:518px;
left:434px;
width:200px;
height:200px;
background:orange;
}
span:nth-child(3){
top:196px;
left:483px;
width:60px;
height:60px;
background:cyan;
}
这些选择器分别为每个 span 元素应用了动画效果。使用了不同的动画名称和时间参数,使得它们在不同的速度和方向上进行往返运动。
span:nth-child(1){
animation:am1 ease-in-out 3s infinite alternate;
}
span:nth-child(2){
animation:am1 ease-in-out 4s infinite alternate-reverse;
}
span:nth-child(3){
animation:am1 ease-in-out 2.5s 0.5s infinite alternate;
}
这段代码使用了@keyframes规则来定义一个名为"am1"的动画。它描述了两个关键帧之间的动画行为,分别表示为0%和100%。这个动画通过translateY属性逐渐改变元素沿着y轴(垂直方向)的位置。在这个例子中,元素从初始位置开始(translateY(0)),向上移动30个像素(translateY(-30px))从而展示出动画效果。
代码如下:
@keyframes am1{
0%{transform:translateY(0);}
100%{transform:translateY(-30px);}
}
类似地,这段代码定义了一个名为"am2"的动画,它操作了元素的缩放和旋转。在动画开始时(0%),元素的缩放设置为0(宽度和高度都为0)使用scale(0,0),并且它以顺时针方向旋转60度(rotateZ(60deg))。随着动画的进行到100%,元素逐渐恢复到正常大小1(宽度和高度),使用scale(1,1),并且旋转被重置为0度,使用rotateZ(0)。
@keyframes am2{
0%{transform:scale(0,0) rotateZ(60deg);}
100%{transform:scale(1,1) rotateZ(0);}
}
最后一个动画"am3"结合了沿y轴的移动和不透明度的变化。从0%开始,元素向上移动8个像素(translateY(8px))并且其不透明度被设置为0(opacity:0)。随着动画进行到100%,元素沿y轴回到原来的位置(translateY(0)),并且其不透明度增加到完全可见(opacity:1)。
@keyframes am3{
0%{transform:translateY(8px);opacity:0}
100%{transform:translateY(0);opacity:1}
}
实操心得:
HTML5和CSS3是现代web开发中常用的技术,它们提供了丰富的功能和效果,使得网站的设计和用户体验更加出色。在本次实操中,我通过应用@keyframe、backdrop-filter:blur()和animation技术,实现了一个登录界面。以下是我的心得体会以及个人感想:
- 首先,在实操过程中,我通过视频充分利用了@keyframe规则来创建动画效果。通过定义关键帧,我可以控制元素在不同时间点的状态,从而实现平滑的动画过渡效果。这对于创建视觉吸引力强烈的登录界面非常有用。通过设置元素的初始状态和结束状态,并使用动画属性指定动画名称、持续时间和缓动函数,我能够让元素在页面上动态地运动、旋转或者改变大小。
- 其次,backdrop-filter:blur()是一个非常有用的CSS属性,它可以让元素的背景模糊化。在登录界面中,我可以利用这个属性来创建一个模糊背景效果,使整个界面看起来更加高端和时尚。通过将该属性应用于登录框的容器元素,我可以让背景图片或颜色在登录框周围产生模糊效果,从而突出登录框本身,提升用户对登录操作的注意力。
- 最后,animation技术为我提供了更加灵活和细致的控制元素动画的能力。通过定义关键帧动画和使用animation属性,我可以为元素添加多个动画效果,并设置它们的持续时间、缓动函数、重复播放等属性。在登录界面中,我可以利用animation技术为按钮添加闪烁的效果,吸引用户的目光,增加交互性和动感。
总的来说,通过使用HTML5和CSS3技术,我成功地模仿了一个令人印象深刻的登录界面,并且加入了@keyframe、backdrop-filter:blur()和animation等特性,使界面具有更好的视觉效果和用户体验。我发现这些技术的运用不仅能够让界面更加生动和吸引人,还可以提升用户的操作体验和网站的整体品质。 在实操过程中,我也面临了一些挑战。首先,需要深入理解每个技术的特点和用法,以便正确应用到登录界面中。其次,调试和优化动画效果是一个迭代的过程,需要不断尝试和调整参数,以达到最佳效果。此外,在使用backdrop-filter:blur()属性时,需要注意浏览器的兼容性和性能问题,确保在各种设备和浏览器中都能良好运行。 通过这次实操,我对HTML5和CSS3的运用有了更深入的了解,也提升了我的前端开发能力。我将继续学习和探索新的技术,不断提升自己的技能,以创造更好的用户体验和网站设计。加油!
PS:本次实操借鉴的b站up主哆啦niko