本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!
背景
文章开始之前先简单了解下什么是 赛博朋克
,以及什么是 赛博朋克2077
。
- 赛博朋克(Cyberpunk)是“控制论、神经机械学”与“朋克”的结合词,背景大都建立于“低端生活与高等科技的结合”,拥有先进的科学技术,再以一定程度崩坏的社会结构做对比;拥有五花八门的视觉冲击效果,如街头的霓虹灯、街排标志性广告以及高楼建筑等,通常搭配色彩是以黑、紫、绿、蓝、红为主。其中菲利普·狄克所著作的《仿生人会梦到电子羊吗?》最受注目,小说亦被改编成电影《银翼杀手》。总的来讲,赛博朋克的风格主线,就是反应出科技高度发展的人类文明,与脆弱渺小的人类个体之间的强烈反差,同时外界与内在,钢铁与肉体,过去与未来,现实与虚幻等矛盾在其中交织。
《赛博朋克2077》
是一款动作角色类游戏,于 2020年12月10日
登陆各大游戏平台。故事发生在夜之城,权力更迭和身体改造是这里不变的主题。玩家将扮演一名野心勃勃的雇佣兵:V
,追寻一种独一无二的植入体——获得永生的关键。它以自由的探索性,较高的操控度以及惊艳的视觉特效收获了一大批玩家。我非常喜欢 2077
官网的设计风格,因此本篇文章主要以 2077
官网为例,通过几个例子,依次实现赛博朋克风格元素效果。
实现
高对比度
首先我们来看一下 2077
中文官网首页,页面主要以醒目的 明黄色
为主色调,并小面积使用它的对比色 淡蓝色
、玫红色
的色块作为点缀,文本和线条边框使用 纯黑色
。这一步实现非常简单,我们在实现赛博朋克风格的页面时,可以使用上面提到的 黑、紫、绿、蓝、红
为主色调,再以它们的对比色作为按钮、文本提示框,可以实现强烈的视觉冲击。
故障风格按钮
故障效果是一种显示设备崩坏效果,在 2077
官网中应用很多,我们先来实现 button
在 hover
时产生故障效果。
1 | html复制代码<button>立即加入</button> |
故障效果主要通过 clip-path: inset
和动画实现。利用 button
的伪元素 ::after
,给它定义多个分片 --slice
变量,并通过动画切换切片的位置,来实现晃动效果。其中clip-path
属性使用裁剪方式创建元素的可显示区域。区域内的部分显示,区域外的隐藏。 inset()
方法用于定义一个矩形,可以传入 5
个参数,分别对应 top
,right
,bottom
,left
的裁剪位置及 round
和 radius
(可选,圆角),它的基本语法如下:
1 | css复制代码inset( <length-percentage>{1,4} [ round <border-radius> ]? ) |
完整实现:
1 | css复制代码button, button::after { |
故障风格图片
故障效果同样可以应用在文本、图片、视频等媒体展示上,营造满满的科技氛围。这部分内容来看看如何实现故障风格的图片展示效果。
.glitch
是为图片展示容器主体,它的子元素 glitch__item
用来表示故障条,与上例中 ::after
伪元素作用类似。
1 | html复制代码<div class="glitch"> |
故障风格图片和故障风格按钮实现思路基本类似,不过这次用到了 clip-path: polygon
实现,polygon
用于裁切多边形的方法,它的每对值表示裁切元素的坐标。 background-blend-mode
属性定义了背景层的混合模式。由于文章篇幅有限,以下代码只展示了一个故障条的动画,完整例子可查看文章末尾对应链接 🔗
:
1 | css复制代码:root { |
霓虹元素
在赛博朋克场景中,如电影《银翼杀手》《机壳特工队》、游戏《看门狗》《赛博朋克2077》中无论是在废弃的建筑物 🏠
、还是繁华的歌舞町 ⛩️
,都存在大量的霓虹 neon
元素。我们同样可以使用大量霓虹元素来装饰页面,比如页面标题、按钮、表单边框等都可以使用霓虹效果,下面是霓虹文字实现的简要示例:
.neon
和 .flux
两个元素是两个文本载体,将被应用不同的霓虹效果样式和动画。
1 | html复制代码<div class="neon">CYBER</div> |
文字的霓虹效果主要通过 text-shadow
属性实现,闪烁效果也是通过添加与文字颜色相近的 text-shadow
动画来实现,其中 .neon
元素被应用了 ease-in-out
运动曲线, .flux
元素被应用了 linear
运动曲线,可以看出两者之间的差别吗。😂
1 | css复制代码.neon { |
为了使文字看起来更有霓虹效果,以上示例使用了
neon
字体:s3-us-west-2.amazonaws.com/s.cdpn.io/7…
不规则文本框
赛博朋克2077中可以看到很多文本展示框都是这种不规则图形的,是不是很酷呢,这部分内容将介绍如何实现 2077
风格的文本框。
上面 3
个文本框分别由3
个 p
标签构成,.inverse
类表示反色背景,.dotted
将实现点状背景。
1 | html复制代码<p class="cyberpunk">经典的赛博朋克角色是边缘且性格疏远的独行者。他们生活在社会群体的边缘,一个弥漫反乌托邦氛围的未来:日常生活受到急剧改变的科技影响,普及的计算机化信息笼罩全球,以及侵入性的人体改造。</p> |
文本框不规则的形状主要由 clip-path: polygon
实现,通过以下几个坐标的裁切,就可以实现 2077
风格的多边形了。
1 | css复制代码clip-path: polygon( |
完整代码:
1 | css复制代码:root { |
炫酷的表单元素
2077
的表单也很有特色,输入框元素 input
和 textarea
同样可以使用 clip-path: polygon
实现不规则形状,单选框和多选框则可以利用伪元素:before
、:after
进行装饰。
1 | html复制代码<input class="cyberpunk" type="text" placeholder="input 输入框" /> |
完整实现如下:
1 | css复制代码input[type="text"].cyberpunk, textarea.cyberpunk { |
标题和文本
赛博朋克风格网页在文本展示中,常常用到如下图所示的 输入光标闪烁
样式及屏幕 故障风格
的样式,我们可以统一为 h1
- h5
标题,hr
等元素增加下划线装饰和故障动画效果,下面来看看如何实现这样的文字效果的。
1 | html复制代码<h1 class="cyberpunk">H1 title</h1> |
1 | css复制代码h1.cyberpunk { |
金属质感
在 赛博朋克2077
的网页里,为了突显科技感,很多页面元素都具有金属质感,如模态弹窗的背景、文本展示块的边框等。这部分内容看看如何实现简单的金属材质背景。
4个 button
元素,将被分别添加 金、银、铜、钛
的金属背景色效果。
1 | html复制代码<button class="gold">gold 金</button> |
实现金属光泽效果,主要以下几个个css
属性:
box-shadow
:增加阴影,突出立体质感。background: radial-gradient
:径向渐变,添加底部阴影。background: linear-gradient
:线性渐变,主色调背景。background: conic-gradient
:圆锥渐变,最终反光金属效果。
依次添加以上三种渐变如下图所示:
示例完整实现代码:
1 | css复制代码button { |
结合
3
种渐变,还能创造出更多复杂好看的金属材质效果,完整代码可预览文章尾部的对应链接🔗
。
其他
除了上述几个方面,还有哪些赛博朋克风格的元素是值得我们学习的呢?通过以下几点,也可以提升网页的科技艺术感和用户体验,你有没有更好的想法呢?😊
- 使用扁平、像素化字体;
- 科技感满满的页面加载动画、滚动动画、滚动条;
- 中/日/英混杂的文案突出未来世界的文化融合;
- 根据鼠标移动增加透视效果,可以看我另一篇文章
《如何在CSS中映射的鼠标位置,并实现通过鼠标移动控制页面元素效果》
。 - …
阅读更多
- 故障图片效果示例完整版 codepen.io/dragonir/fu…
- 复杂的金属效果 codepen.io/dragonir/fu…
- 标题文本 codepen.io/dragonir/fu…
- 赛博朋克404页面 codepen.io/ltrademark/…
本文转载自: 掘金