仅用 CSS 实现赛博朋克 2077 风格视觉效果

height: 100%;

width: 100%;

top: 0;

left: 0;

position: absolute;

}

.glitch .glitch__item:nth-child(1) {

background-color: var(–blend-color-1);

background-blend-mode: var(–blend-mode-1);

animation-duration: var(–time-anim);

animation-delay: var(–delay-anim);

animation-timing-function: linear;

animation-iteration-count: infinite;

animation-name: glitch-anim-1;

}

@keyframes glitch-anim-1 {

0% {

opacity: 1;

transform: translate3d(var(–gap-horizontal), 0, 0);

clip-path: polygon(0 2%, 100% 2%, 100% 5%, 0 5%);

}

2% { clip-path: polygon(0 15%, 100% 15%, 100% 15%, 0 15%); }

4% { clip-path: polygon(0 10%, 100% 10%, 100% 20%, 0 20%); }

6% { clip-path: polygon(0 1%, 100% 1%, 100% 2%, 0 2%); }

8% { clip-path: polygon(0 33%, 100% 33%, 100% 33%, 0 33%); }

10% { clip-path: polygon(0 44%, 100% 44%, 100% 44%, 0 44%); }

12% { clip-path: polygon(0 50%, 100% 50%, 100% 20%, 0 20%); }

14% { clip-path: polygon(0 70%, 100% 70%, 100% 70%, 0 70%); }

16% { clip-path: polygon(0 80%, 100% 80%, 100% 80%, 0 80%); }

18% { clip-path: polygon(0 50%, 100% 50%, 100% 55%, 0 55%); }

20% { clip-path: polygon(0 70%, 100% 70%, 100% 80%, 0 80%); }

21.9% {

opacity: 1;

transform: translate3d(var(–gap-horizontal), 0, 0);

}

22%, 100% {

opacity: 0;

transform: translate3d(0, 0, 0);

clip-path: polygon(0 0, 0 0, 0 0, 0 0);

}

}

霓虹元素

在赛博朋克场景中,如电影《银翼杀手》《机壳特工队》、游戏《看门狗》《赛博朋克2077》中无论是在废弃的建筑物 ????、还是繁华的歌舞町 ⛩️ ,都存在大量的霓虹 neon 元素。我们同样可以使用大量霓虹元素来装饰页面,比如页面标题、按钮、表单边框等都可以使用霓虹效果,下面是霓虹文字实现的简要示例:

.neon 和 .flux 两个元素是两个文本载体,将被应用不同的霓虹效果样式和动画。

CYBER
PUNK

文字的霓虹效果主要通过 text-shadow 属性实现,闪烁效果也是通过添加与文字颜色相近的 text-shadow 动画来实现,其中 .neon 元素被应用了 ease-in-out 运动曲线, .flux 元素被应用了 linear 运动曲线,可以看出两者之间的差别吗。????

.neon {

text-shadow: 0 0 3vw #F4BD0A;

animation: neon 2s ease-in-out infinite;

}

.flux {

text-shadow: 0 0 3vw #179E05;

animation: flux 2s linear infinite;

}

@keyframes neon {

0%, 100% {

text-shadow: 0 0 1vw #FA1C16, 0 0 3vw #FA1C16, 0 0 10vw #FA1C16, 0 0 10vw #FA1C16, 0 0 .4vw #FED128, .5vw .5vw .1vw #806914;

color: #FFFC00;

}

50% {

text-shadow: 0 0 .5vw #800E0B, 0 0 1.5vw #800E0B, 0 0 5vw #800E0B, 0 0 5vw #800E0B, 0 0 .2vw #800E0B, .5vw .5vw .1vw #40340A;

color: #806914;

}

}

@keyframes flux {

0%, 100% {

text-shadow: 0 0 1vw #10ff4c, 0 0 3vw #1041FF, 0 0 10vw #1041FF, 0 0 10vw #1041FF, 0 0 .4vw #8BFDFE, .5vw .5vw .1vw #147280;

color: #03C03C;

}

50% {

text-shadow: 0 0 .5vw #024218, 0 0 1.5vw #024713, 0 0 5vw #023812, 0 0 5vw #012707, 0 0 .2vw #022201, .5vw .5vw .1vw #011a06;

color: #179E05;

}

}

为了使文字看起来更有霓虹效果,以上示例使用了 neon 字体:s3-us-west-2.amazonaws.com/s.cdpn.io/7…[1]

不规则文本框

赛博朋克2077中可以看到很多文本展示框都是这种不规则图形的,是不是很酷呢,这部分内容将介绍如何实现 2077 风格的文本框。

上面 3 个文本框分别由3 个 p 标签构成,.inverse 类表示反色背景,.dotted 将实现点状背景。

经典的赛博朋克角色是边缘且性格疏远的独行者。他们生活在社会群体的边缘,一个弥漫反乌托邦氛围的未来:日常生活受到急剧改变的科技影响,普及的计算机化信息笼罩全球,以及侵入性的人体改造。

经典的赛博朋克角色是边缘且性格疏远的独行者。他们生活在社会群体的边缘,一个弥漫反乌托邦氛围的未来:日常生活受到急剧改变的科技影响,普及的计算机化信息笼罩全球,以及侵入性的人体改造。

经典的赛博朋克角色是边缘且性格疏远的独行者。他们生活在社会群体的边缘,一个弥漫反乌托邦氛围的未来:日常生活受到急剧改变的科技影响,普及的计算机化信息笼罩全球,以及侵入性的人体改造。

文本框不规则的形状主要由 clip-path: polygon 实现,通过以下几个坐标的裁切,就可以实现 2077 风格的多边形了。

clip-path: polygon(

0px 25px,

26px 0px,

calc(60% - 25px) 0px,

60% 25px,

100% 25px,

100% calc(100% - 10px),

calc(100% - 15px) calc(100% - 10px),

calc(80% - 10px) calc(100% - 10px),

calc(80% - 15px) 100%,

80px calc(100% - 0px),

65px calc(100% - 15px),

0% calc(100% - 15px)

);

完整代码:

:root {

–yellow-color: #f9f002;

–border-color: #8ae66e;

}

.cyberpunk {

padding: 5px;

position: relative;

font-size: 1.2rem;

color: var(–yellow-color);

border: 30px solid var(–yellow-color);

border-right: 5px solid var(–yellow-color);

border-left: 5px solid var(–yellow-color);

border-bottom: 24px solid var(–yellow-color);

background-color: #000;

clip-path: polygon(0px 25px, 26px 0px, calc(60% - 25px) 0px, 60% 25px, 100% 25px, 100% calc(100% - 10px), calc(100% - 15px) calc(100% - 10px), calc(80% - 10px) calc(100% - 10px), calc(80% - 15px) 100%, 80px calc(100% - 0px), 65px calc(100% - 15px), 0% calc(100% - 15px));

}

.cyberpunk.inverse {

border: none;

padding: 40px 15px 30px;

color: #000;

background-color: var(–yellow-color);

border-right: 2px solid var(–border-color);

}

.dotted, .dotted:before, .dotted:after {

background: var(–yellow-color);

background-image: radial-gradient(#00000021 1px, transparent 0);

background-size: 5px 5px;

background-position: -13px -3px;

}

/* 文本框右侧小编号样式 */

.cyberpunk:before {

content: “P-14”;

display: block;

position: absolute;

bottom: -12px;

right: 25px;

padding: 2px 2px 0px 2px;

font-size: 0.6rem;

line-height: 0.6rem;

color: #000;

background-color: var(–yellow-color);

border-left: 2px solid var(–border-color);

}

.cyberpunk.inverse:before {

content: “T-71”;

right: 90px;

bottom: 9px;

}

.cyberpunk.inverse:before, .cyberpunk:before {

background-color: #000;

color: var(–yellow-color);

}

炫酷的表单元素

2077 的表单也很有特色,输入框元素 input 和 textarea 同样可以使用 clip-path: polygon 实现不规则形状,单选框和多选框则可以利用伪元素:before:after 进行装饰。



完整实现如下:

input[type=“text”].cyberpunk, textarea.cyberpunk {

width: calc(100% - 30px);

border: 30px solid #000;

border-left: 5px solid #000;

border-right: 5px solid #000;

border-bottom: 15px solid #000;

clip-path: polygon(0px 25px, 26px 0px, calc(60% - 25px) 0px, 60% 25px, 100% 25px, 100% calc(100% - 10px), calc(100% - 15px) calc(100% - 10px), calc(80% - 10px) calc(100% - 10px), calc(80% - 15px) calc(100% - 0px), 10px calc(100% - 0px), 0% calc(100% - 10px));

padding: 12px;

}

input[type=“radio”].cyberpunk {

border-radius: 15%;

z-index: 100;

height: 14px;

width: 20px;

appearance: none;

outline: none;

background-color: #000;

cursor: pointer;

position: relative;

margin: 0px;

display: inline-block;

}

input[type=“radio”].cyberpunk:after {

content: “”;

display: block;

width: 8px;

height: 6px;

background-color: var(–yellow-color);

position: absolute;

top: 2px;

left: 2px;

transition: background 0.3s, left 0.3s;

}

input[type=“radio”].cyberpunk:checked:after {

background-color: var(–border-color);

left: 10px;

}

input[type=“checkbox”].cyberpunk {

border-radius: 15%;

z-index: 100;

height: 20px;

width: 20px;

appearance: none;

outline: none;

background-color: #000;

cursor: pointer;

position: relative;

margin: 0px;

margin-bottom: -3px;

display: inline-block;

}

input[type=“checkbox”].cyberpunk:before {

content: “”;

display: block;

width: 8px;

height: 8px;

border: 2px solid var(–yellow-color);

border-top: 2px solid transparent;

border-radius: 50%;

position: absolute;

top: 5px;

left: 4px;

}

input[type=“checkbox”].cyberpunk:after {

content: “”;

display: block;

width: 2px;

height: 7px;

background-color: var(–yellow-color);

position: absolute;

top: 3px;

left: 9px;

}

input[type=“checkbox”].cyberpunk:checked:before {

border-color: var(–border-color);

border-top-color: transparent;

}

input[type=“checkbox”].cyberpunk:checked:after {

background-color: var(–border-color);

}

标题和文本

赛博朋克风格网页在文本展示中,常常用到如下图所示的 输入光标闪烁 样式及屏幕 故障风格 的样式,我们可以统一为 h1 - h5 标题,hr 等元素增加下划线装饰和故障动画效果,下面来看看如何实现这样的文字效果的。

H1 title

H1 title glitched

h1.cyberpunk {

position: relative;

}

h1.cyberpunk:before {

content: “”;

display: block;

position: absolute;

bottom: 0px;

left: 2px;

width: 100%;

height: 10px;

background-color: #000;

clip-path: polygon(0px 0px, 85px 0px, 90px 5px, 100% 5px, 100% 6px, 85px 6px, 80px 10px, 0px 10px);

}

h1.cyberpunk.glitched {

animation-name: glitched;

animation-duration: calc(.9s * 1.4);

animation-iteration-count: infinite;

animation-timing-function: linear;

}

@keyframes glitched {

0% { left: -4px; transform: skew(-20deg); }

11% { left: 2px; transform: skew(0deg); }

50% { transform: skew(0deg); }

51% { transform: skew(10deg); }

60% { transform: skew(0deg); }

100% { transform: skew(0deg); }

}

h1.cyberpunk.glitched:before {

animation-name: beforeglitched;

animation-duration: calc(.9s * 2);

animation-iteration-count: infinite;

animation-timing-function: linear;

}

@keyframes beforeglitched {

0% {

left: -4px;

transform: skew(-20deg);

clip-path: polygon(0px 0px, 85px 0px, 90px 5px, 100% 5px, 100% 6px, 85px 6px, 80px 10px, 0px 10px);

}

11% {

left: 2px;

transform: skew(0deg);

clip-path: polygon(0px 0px, 85px 0px, 90px 5px, 100% 5px, 100% 6px, 85px 6px, 80px 10px, 0px 10px);

}

50% {

transform: skew(0deg);

clip-path: polygon(0px 0px, 85px 0px, 90px 5px, 100% 5px, 100% 6px, 85px 6px, 80px 10px, 0px 10px);

}

51% {

transform: skew(0deg);

clip-path: polygon(0px 0px, 85px 0px, 90px 5px, 100% 5px, 40% 5px, calc(40% - 30px) 0px, calc(40% + 30px) 0px, calc(45% - 15px) 5px, 100% 5px, 100% 6px, calc(45% - 14px) 6px, calc(40% + 29px) 1px, calc(40% - 29px) 1px, calc(40% + 1px) 6px, 85px 6px, 80px 10px, 0px 10px);

}

60% {

transform: skew(0deg);

clip-path: polygon(0px 0px, 85px 0px, 90px 5px, 100% 5px, 100% 6px, 85px 6px, 80px 10px, 0px 10px);

}

100% {

transform: skew(0deg);

clip-path: polygon(0px 0px, 85px 0px, 90px 5px, 100% 5px, 100% 6px, 85px 6px, 80px 10px, 0px 10px);

}

}

金属质感

在 赛博朋克2077 的网页里,为了突显科技感,很多页面元素都具有金属质感,如模态弹窗的背景、文本展示块的边框等。这部分内容看看如何实现简单的金属材质背景。

基础面试题

主要内容包括:HTML,CSS,JavaScript,浏览器,性能优化等等

px, 90px 5px, 100% 5px, 40% 5px, calc(40% - 30px) 0px, calc(40% + 30px) 0px, calc(45% - 15px) 5px, 100% 5px, 100% 6px, calc(45% - 14px) 6px, calc(40% + 29px) 1px, calc(40% - 29px) 1px, calc(40% + 1px) 6px, 85px 6px, 80px 10px, 0px 10px);

}

60% {

transform: skew(0deg);

clip-path: polygon(0px 0px, 85px 0px, 90px 5px, 100% 5px, 100% 6px, 85px 6px, 80px 10px, 0px 10px);

}

100% {

transform: skew(0deg);

clip-path: polygon(0px 0px, 85px 0px, 90px 5px, 100% 5px, 100% 6px, 85px 6px, 80px 10px, 0px 10px);

}

}

金属质感

在 赛博朋克2077 的网页里,为了突显科技感,很多页面元素都具有金属质感,如模态弹窗的背景、文本展示块的边框等。这部分内容看看如何实现简单的金属材质背景。

基础面试题

主要内容包括:HTML,CSS,JavaScript,浏览器,性能优化等等

  • 19
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果你想将图片转换成二维码并上传到OSS服务器,你可以使用以下步骤: 1. 安装必要的依赖库。你需要安装 `pyqrcode` 和 `boto3` 库来生成二维码和连接到OSS服务器。你可以使用以下命令安装这些库: ``` pip install pyqrcode boto3 ``` 2. 生成二维码。你可以使用 `pyqrcode` 库来生成二维码。例如,你可以使用以下代码生成一个包含文本 `hello world` 的二维码: ```python import pyqrcode qr = pyqrcode.create('hello world') ``` 3. 将二维码保存到文件中。你可以使用 `save` 方法将二维码保存到文件中。例如,你可以使用以下代码将二维码保存为 `qrcode.png` 文件: ```python qr.png('qrcode.png', scale=8) ``` 4. 连接到OSS服务器。你可以使用 `boto3` 库来连接到OSS服务器。首先,你需要在OSS控制台中获取你的访问密钥和密钥ID。然后,你可以使用以下代码连接到OSS服务器: ```python import boto3 # Replace with your access key and secret key ACCESS_KEY = 'your access key' SECRET_KEY = 'your secret key' # Connect to the OSS server oss = boto3.client( 's3', aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY, ) ``` 5. 上传文件。你可以使用 `upload_file` 方法将 ### 回答2: 要实现将图片转成二维码并上传到OSS服务器,可以通过以下步骤完成。 首先,我们需要选择一个合适的开发工具来实现图片转二维码功能。常用的工具有Python的qrcode库,Java的zxing(Zebra Crossing)库等。 接下来,我们需要下载并安装选定的开发工具,并在项目中导入相关的库和依赖项。 然后,我们需要编写代码来实现图片转二维码的功能。代码中需要将图片加载进内存,并使用二维码库将其转换成二维码。转换完成后,可以将二维码保存为图片文件,或者直接将其存储在内存中。 接下来,我们需要连接到OSS服务器,并在其中创建一个存储图片的目录。需要使用连接OSS服务器的相关信息,例如访问URL、Access Key等。 然后,我们需要将生成的二维码上传至OSS服务器。可以使用选定的开发工具提供的上传功能,将二维码文件上传至指定目录。 最后,我们可以在OSS服务器上验证上传是否成功,通过访问相应的URL来获取二维码图片。 综上所述,要实现图片转成二维码并上传到OSS服务器,需要选择合适的开发工具,编写代码来实现图片转二维码功能,连接OSS服务器并上传二维码文件。只要按照以上步骤进行操作,就可以将图片转成二维码并存储到OSS服务器上。 ### 回答3: 要将图片转成二维码并上传到OSS服务器,需要以下步骤: 首先,需要安装一个二维码生成库。可以选择使用Python的qrcode库来生成二维码。可以使用pip命令安装: ``` pip install qrcode ``` 然后,导入qrcode库,并使用库的make函数生成二维码。将要转换的图片作为输入参数传递给make函数,生成二维码对象。 ```python import qrcode image_path = 'image.jpg' qr = qrcode.make(image_path) ``` 接下来,需要将生成的二维码保存为图片文件。可以使用二维码对象的save函数保存为图片。 ```python qr.save('qrcode.png') ``` 生成的二维码图片可以进行进一步操作,如调整大小、添加logo等。然后,将生成的二维码图片上传到阿里云OSS服务器,可以使用阿里云的Python SDK。 首先,需要安装阿里云的Python SDK。可以使用pip命令安装。 ``` pip install aliyun-python-sdk-core-v3 ``` 然后,导入阿里云的Python SDK,并进行相关的配置。 ```python from aliyunsdkcore import client access_key_id = 'your_access_key_id' access_secret = 'your_access_secret' endpoint = 'your_oss_endpoint' bucket = 'your_bucket_name' clt = client.AcsClient(access_key_id, access_secret, endpoint) ``` 接下来,使用OSS的BucketManager对象上传二维码图片。 ```python from aliyunsdkcore.request import CommonRequest request = CommonRequest() request.set_accept_format('json') request.set_domain(endpoint) request.set_method('PUT') request.set_protocol_type('https') request.set_bucket_name(bucket) request.set_key('qrcode.png') # 设置上传后的文件名 request.set_input_file('qrcode.png') # 设置要上传的文件路径 response = clt.do_action(request) ``` 以上就是将图片转成二维码并上传到OSS服务器的步骤。注意替换代码中的相应配置信息,确保代码正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值