在这里,我们将给大家分享关于Amazing!!CSS也能实现极光?的知识,让您更了解css光效的本质,同时也会涉及到如何更有效地(Amazing!)通过vfox在Windows上安装管理多个Erlan
在这里,我们将给大家分享关于Amazing!!CSS 也能实现极光?的知识,让您更了解css光效的本质,同时也会涉及到如何更有效地(Amazing!) 通过 vfox 在 Windows 上安装管理多个 Erlang/OTP 和 Elixir 的版本、) 预期 css(css-rparentexpected)" 用于@media 查询中的第 4 级 css 语法、47 Amazing CSS3 Animation Demos、5 Amazing AI Projects, Open Source !的内容。
本文目录一览:- Amazing!!CSS 也能实现极光?(css光效)
- (Amazing!) 通过 vfox 在 Windows 上安装管理多个 Erlang/OTP 和 Elixir 的版本
- ) 预期 css(css-rparentexpected)" 用于@media 查询中的第 4 级 css 语法
- 47 Amazing CSS3 Animation Demos
- 5 Amazing AI Projects, Open Source !
Amazing!!CSS 也能实现极光?(css光效)
在上次写完这篇文章 -- 巧用渐变实现高级感拉满的背景光动画 之后,文章下面的评论有同学留言,使用 CSS 可以实现极光吗?
像是这样:
emmm,这有点难为人了。不过,最近我也尝试着去试了下,虽然不可能模拟出那么真实的效果,但是使用 CSS 还是可以作出类似的一些特效的,今天我们就一起来尝试下。
观察了一些极光的图片之后,我发现了极光动画中一些比较重要的元素:
- 基于深色背景的明亮渐变色彩
- 类似于水波流动的动画效果
明亮渐变色彩我们可以尽量使用 渐变 模拟。而水波流动的动画效果,在 SVG 滤镜中 feturbulence 就是专门干这个的,这个滤镜的使用在我过去的多篇文章中也有反复的提及过。
而除了渐变、SVG 的 <feturbulence>
滤镜之外,我们可能还会用到混合模式(mix-blend-mode
)、CSS 滤镜等提升效果。
OK,有了大概的思路后,剩下的就是不断的尝试。
Step 1. 绘制深色背景
首先,我们可能需要一个深色的背景,用于表示我们的夜空。同时点缀一些星星,星星可以使用 box-shadow
模拟,这样,一副夜空背景我们可以在 1 个 div 内完成:
<div>
</div>
@function randomNum($max, $min: 0, $u: 1) {
@return ($min + random($max)) * $u;
}
@function shadowSet($n, $size) {
$shadow : 0 0 0 0 #fff;
@for $i from 0 through $n {
$x: randomNum(350);
$y: randomNum(500);
$scale: randomNum($size) / 10;
$shadow: $shadow, #{$x}px #{$y}px 0 #{$scale}px rgba(255, 255, 255, .8);
}
@return $shadow;
}
.g-wrap {
position: relative;
width: 350px;
height: 500px;
background: #0b1a3a;
overflow: hidden;
&::before {
content: "";
position: absolute;
width: 1px;
height: 1px;
border-radius: 50%;
box-shadow: shadowSet(100, 6);
}
这一步比较简单,借助了 SASS 之后,我们能够得到这样一幅夜空背景图:
Step 2. 使用渐变画出极光的轮廓
接下来,就是利用渐变,画出极光的一个轮廓效果。
其实就是一个径向渐变:
<div>
<div></div>
</div>
.g-aurora {
width: 400px;
height: 300px;
background: radial-gradient(
circle at 100% 100%,
transparent 45%,
#bd63c1 55%,
#53e5a6 65%,
transparent 85%
);
}
Step 3. 旋转拉伸
目前看来,是有一点点轮廓了。下一步,我们把得到的这个渐变效果通过旋转拉伸变换一下。
.g-aurora {
...
transform: rotate(45deg) scaleX(1.4);
}
我们大概就能得到这样一个效果:
Step 4. 神奇的混合模式变换!
到这里,其实雏形已经出来了。但是颜色看着不太像,为了和深色的背景融合在一起,这里我们运用上混合模式 mix-blend-mode
。
.g-aurora {
...
transform: rotate(45deg) scaleX(1.4);
mix-blend-mode: color-dodge;
}
神奇的事情发生了,看看效果:
整体的颜色看上去更加像极光的颜色。
Step 5. 叠加 SVG feturbulence 滤镜
接下来,我们要产生水纹波动的效果,需要借助 SVG 的 <feturbulence>
滤镜,对这个滤镜还不太了解的,可以看看我的这几篇文章:
- 有意思!强大的 SVG 滤镜
- 震惊!巧用 SVG 滤镜还能制作表情包?
- 实现一个会动的鸿蒙 LOGO
回归正题。我们添加一个 SVG 的 <feturbulence>
滤镜,利用 CSS filter
进行引用
<div>
<div></div>
</div>
<svg id=''blob'' version=''1.1'' xmlns=''http://www.w3.org/2000/svg''>
<defs>
<filter id=''wave''>
<feturbulence basefrequency=''0.003 0.003 id=''turbulence'' numoctaves=''3'' result=''noise'' seed=''10'' />
<fedisplacementmap id=''displacement'' in2=''noise'' in=''SourceGraphic'' scale=''96'' />
</filter>
</defs>
</svg>
.g-aurora {
...
transform: rotate(45deg) scaleX(1.4);
mix-blend-mode: color-dodge;
filter: url(#wave);
}
我们即可得到这样一种效果:
Wow,是不是已经很有那种感觉了。通过 feturbulence 的特性,我们近乎模拟出了极光的效果!
Step 6. 让极光动起来
最后一步,我们就需要让我们的极光动起来。由于 SVG 动画本身不支持类似 animation-fill-mode: alternate
这种特性。我们还是需要写一点 JavaScript 代码,控制动画的整体循环。
大概的代码是这样:
var filter = document.querySelector("#turbulence");
var frames = 0;
var rad = Math.PI / 180;
function freqAnimation() {
bfx = 0.005;
bfy = 0.005;
frames += .5
bfx += 0.0025 * Math.cos(frames * rad);
bfy += 0.0025 * Math.sin(frames * rad);
bf = bfx.toString() + '' '' + bfy.toString();
filter.setAttributeNS(null, ''baseFrequency'', bf);
window.requestAnimationFrame(freqAnimation);
}
window.requestAnimationFrame(freqAnimation);
至此,我们就得到了一幅完整的,会动的极光动画:
一些技巧及其他事项
- 渐变元素的周围会存在明显的边界毛刺效果,可以使用黑色内阴影
box-shadow: inset ...
去除; - 实际行文过程中的各个属性的实际参数看似简单,过程中其实经过了不断的调试才得到;
- 混合模式及 SVG 的 feturbulence 滤镜比较难掌握,需要不断的练习,不断的调试;本文极光的颜色选取没有经过太多反复调试,愿意花时间,可以调试出效果更好的颜色。
最终的效果,不太完美,但也算一副不错的 CSS + SVG 作品。完整的代码,你可以看这里:
CodePen Demo -- Aurora
最后
好了,本文到此结束,希望本文对你有所帮助 :)
想 Get 到最有意思的 CSS 资讯,千万不要错过我的公众号 -- iCSS前端趣闻
更多精彩 CSS 技术文章汇总在我的 Github -- iCSS ,持续更新,欢迎点个 star 订阅收藏。
如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。
(Amazing!) 通过 vfox 在 Windows 上安装管理多个 Erlang/OTP 和 Elixir 的版本
大概一个多月前, 我写了篇关于如何使用跨平台版本管理工具 vfox 在 Linux 系统下安装管理多个 Erlang/OTP 版本的文章 -> 通过 vfox 安装管理多版本 Erlang 和 Elixir. 文章使用的示范操作系统是 Ubuntu 20.04 Linux 操作系统.
最近 vfox-erlang 和 vfox-elixir 插件的最新版本已经支持了在 Windows 平台下安装管理多个 Erlang/OTP 和 Elixir 的版本. 且已经通过了 End to End 测试 -> Testing.
本篇文章将会以 Windows 10 操作系统为例, 教你如何在 Windows 平台安装和管理多个 Erlang/OTP 和 Elixir 版本.
> Get-ComputerInfo
WindowsBuildLabEx : 22621.1.amd64fre.ni_release.220506-1250
WindowsCurrentVersion : 6.3
WindowsInstallationType : Client
WindowsProductName : Windows 10 Pro
......
1、安装 vfox
vfox (version-fox) 是最近比较热门的一个跨平台通用版本管理工具, 使用 Go 语言进行编写, 插件机制使用了 Lua 去实现扩展性. 目前 vfox 已经支持管理大多数主流编程语言的版本, 生态还算强大. 在这里你可以看到目前 vfox 所支持管理的编程语言版本和工具 -> vfox-Available Plugins.
请确安装 0.5.3 及以上版本的 vfox, 否则 vfox-erlang 和 vfox-elixir 将无法正常工作. 在这里我们通过 winget 安装 vfox:
> winget install vfox
.......
❯ vfox -version
vfox version 0.5.3
为了能让 vfox 找到已经安装的 Elixir 和 Erlang 版本, 需要将 vfox 默认挂载到 powershell 中:
打开 PowerShell 配置文件:
New-Item -Type File -Path $PROFILE # 无需在意 `文件已存在` 错误
# 如果它提示未能找到路径, 那么你需要强制创建 profile. 添加 "-Force" 选项.
# New-Item -Type File -Path $PROFILE –Force
Invoke-Item $PROFILE # 打开 profile
将下面一行添加到你的 $PROFILE 文件末尾并保存:
Invoke-Expression "$(vfox activate pwsh)"
如果powershell提示: 在此系统上禁止运行脚本
, 那么请你以管理员身份重新运行powershell输入如下命令
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
# 之后输入Y, 按回车
y
你也可以参考官方文档安装 vfox -> https://vfox.lhan.me/guides/quick-start.html. 安装好 vfox 之后, 我们再安装下版本管理插件:
# 添加 vfox-erlang 插件
vfox add erlang
# 添加 vfox-elixir 插件
vfox add elixir
安装完成后就可以使用这两个 vfox 插件 vfox-erlang 和 vfox-elixir 在 Windows 平台去安装管理多个 Erlang 和 Elixir 的版本了.
2、通过 vfox-erlang 插件安装 Erlang/OTP
因为 Elixir 依赖于 Erlang/OTP, 所以在安装 Elixir 之前, 我们需要先安装下 Erlang/OTP. 如果你已经通过其他方式安装了 Erlang/OTP, 请确保后续通过 vfox-elixir 安装的 Elixir 版本与它是兼容的, 可以查看 Elixir 官方文档说明去确认这一点 between-elixir-and-erlang-otp.
# 通过 vfox search 找到你想要安装的版本
❯ vfox search erlang
Please select a version of erlang [type to search]:
-> v25.0.4
v24.3.4.16
v24.1.3
v24.0
v24.3
v24.3.2
v25.2
v27.0-rc2
v24.3.4.1
Press ↑/↓ to select and press ←/→ to page, and press Enter to confirm
# 当然你也可以指定安装一个版本, 比如
vfox install erlang@26.2.2
理论上, 你可以安装任何一个出现在 https://github.com/erlang/otp/releases 中包含 exe 文件的发行版本. 当你看到如下信息, 就表明安装完成了.
compile info.......
...
Install erlang@26.2.2 success!
Please use vfox use erlang@26.2.2 to use it.
我们使用 vfox 切换下到刚才安装好的 Erlang/OTP 版本来验证下安装是否成功:
❯ vfox use -g erlang@26.2.2
Now using erlang@26.2.2.
❯ erl
Erlang/OTP 26 [erts-14.2.2] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [jit:ns]
Eshell V14.2.2 (press Ctrl+G to abort, type help(). for help)
1>
如果能正确唤醒 REPL (Read-Eval-Print Loop) 交互式命令行, 那么安装就好啦~. 接下来开始安装 Elixir 吧~
3、 通过 vfox-elixir 插件安装 Elixir
在开始安装指定的 Elixir 版本之前, 请确保当前安装的 shell 能找到已经安装好 Erlang/OTP 版本相关工具链
# 切换 Erlang/OTP 版本
vfox use -g erlang@26.2.2
# 安装一个与 Erlang/OTP 版本兼容的 Elixir 版本
> vfox search elixir
Please select a version of elixir to install [type to search]:
-> v1.16.2-elixir-otp-26
v1.16.2-elixir-otp-25
v1.16.2-elixir-otp-24
v1.16.1-elixir-otp-26
v1.16.1-elixir-otp-25
v1.16.1-elixir-otp-24
v1.16.0-rc.1-elixir-otp-26
v1.16.0-rc.1-elixir-otp-25
v1.16.0-rc.1-elixir-otp-24
v1.16.0-rc.0-elixir-otp-26
v1.16.0-rc.0-elixir-otp-25
v1.16.0-rc.0-elixir-otp-24
v1.16.0-elixir-otp-26
v1.16.0-elixir-otp-25
v1.16.0-elixir-otp-24
v1.15.7-elixir-otp-26
v1.15.7-elixir-otp-25
v1.15.7-elixir-otp-24
v1.15.6-elixir-otp-26
v1.15.6-elixir-otp-25
Press ↑/↓ to select and press ←/→ to page, and press Enter to confirm
# 比如
vfox install elixir@v1.16.1-elixir-otp-26
.....
.....
Install elixir@1.16.1-elixir-otp-26 success!
Please use vfox use elixir@1.16.1-elixir-otp-26 to use it.
当你看到形如 Install elixir@1.16.1-elixir-otp-26 success! Please use vfox use elixir@1.16.1-elixir-otp-26 to use it.
相关信息, 就代表安装已经完成了, 接下来验证下可用性:
❯ vfox use -g elixir@1.16.1-elixir-otp-26
Now using elixir@1.15.2.
> iex.bat
Erlang/OTP 26 [erts-14.2.5] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [jit:ns] Interactive Elixir (1.16.1) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)>
Elixir 的 REPL (Read-Eval-Print Loop) 交互式命令行能正常打开的话, 那么安装时成功且可用的.
最后
vfox 的两个安装管理 Erlang/OTP 和 Elixir 版本的插件同时也支持在 Uinx-like (Linux & Darwin MacOS) 系统下管理多个版本. 你可以查看这个文档去了解更多信息: https://github.com/version-fox/vfox-elixir. 全平台操作系统支持~
Happy & funny!
本文由博客一文多发平台 OpenWrite 发布!
) 预期 css(css-rparentexpected)" 用于@media 查询中的第 4 级 css 语法
Visual Studio Code does not support 4 级范围语法呢。此外,MDN 表示目前只有 Firefox 支持该语法。如果您需要跨浏览器支持,您现在需要坚持使用原始的 max-width
语法:
@media (max-width: 768px) {
h1 {
font-size: 3em;
color: mediumvioletred;
}
nav a {
display: flex;
flex-direction: column;
align-items: center;
color: mediumaquamarine;
}
}
否则,你所拥有的是正确的。
47 Amazing CSS3 Animation Demos
Here is a compilation of 47 jaw-dropping CSS3 animation demos. They demonstrate the possibilities of the CSS3 transform and transition property. Some are very useful and can be used as Javascript alternatives. Most of them are simply to look cool. In order to veiw these effects, you need a webkit browser such as Safari and Chrome (sorry to the Internet Explorer users). Enjoy!
CSS3 Clock With jQuery
Analogue Clock
3D Cube That Rotates Using Arrow Keys
Multiple 3D Cubes (Slide In/Out)
CSS3 Accordion
Auto-Scrolling Parallax
Isocube
Image Gallery
Matrix
7 Javascript-effect Alternatives Using CSS3
Image Hover Effects
Turning Coke Can (Control With Scrollbar)
3D Meninas
Polaroid Gallery
Space
Note: this one is graphic intense and takes a while to load, but the result is crazy!
Mac Dock
Drop-In Modals
Sliding Vinyl
Zooming Polaroids
Animated Rocket
Poster Circle
Morphing Cubes
Falling Leaves
Animated Polaroid Gallery
Spotlight Cast Shadow
Colorful Clock
Lightbox Gallery (Draggable)
Elastic Thumbnail Menu
Coverflow
Snowflakes
jQuery DJ Hero
Dynamic Stacking Cards
Another Image Gallery
Snow Stack (Control With Arrow Keys)
Animated Pricing Column
Slick jQuery Menu
CSS3
CSS Tabs Without Javascript
Tab Menus Without Javascript
SVG Fisheye Menu
Dynamic Presentation Without Flash
Rotating Gallery
Dropdown Menu
Another Fisheye
Frame-by-Frame Animation (Hover to Play)
Another Accordion
AT-AT Walker (No Flash or Javascript)
转自:http://webdesignerwall.com/trends/47-amazing-css3-animation-demos
原文链接: http://blog.csdn.net/vanessa219/article/details/6562657
5 Amazing AI Projects, Open Source !
过去一周,AI 大模型的快速演进仍然在继续上演。今天继续介绍 GitHub 上的一些实用的大模型开源项目。
1. ChatGLM-6B:Open Source ChatGPT Alternative ChatGLM-6B 是一个基于 GLM 架构的开源对话语言模型,支持中英双语,有 62 亿参数。结合模型量化技术,可以在消费级显卡上本地部署,效果堪比 ChatGPT。2023 年 3 月开源,3 周时间已经积累超过 100 万次下载,目前全球接近 300 万次下载量。
2. CodeGeeX:Open Source Github Copilot Alternative CodeGeeX 是一个基于 AI 大模型的代码生成神器,拥有 130 亿参数,支持 23 种编程语言。CodeGeeX 可以根据自然语言或代码片段生成完整的代码,“Ask CodeGeeX” 功能可以在 IDE 中通过对话的方式直接操作代码,开发者普遍认为是 Github Copilot 的平替产品。CodeGeeX 是开源免费的,支持 VS Code 和 IDEAs 平台,目前全球安装使用的用户量超过 100,000+。
3. Meta open source AI generative music model 这是 Meta 在 GitHub 上开源的名为 Audiocraft 的 Python 库,可以直接用人工智能生成音乐。其中主要使用了一个名为 MusicGen 的音乐生成模型。MusicGen 是一个基于单阶自回归 Transformer 的预训练模型,使用 32kHz EnCodec tokenizer,并以 50Hz 采样的方式生成了 4 个 codebooks。
与现有的方法(如 MusicLM)不同,MusicGen 不需要自监督语义学习,而是一次性生成了所有 4 个 codebooks。在文本生成和文生图之后,看看用文本生成音乐的效果如何。
4. Diffusers 发布重要更新
Diffusers v0.17.0 正式发布,改进了 LoRA、Kandinsky 2.1、Torch 编译加速等功能。Diffusers 是一个在 GitHub 上的 Diffusion Model 预训练模型常用库,广受欢迎,可用于生成图像、音频,甚至是分子的 3D 结构。
无论是寻找简单的推理解决方案还是训练自己的 Diffusion Models,Diffusers 作为一个模块化工具包提供支持。 库的设计更注重易用性和可定制性,主要提供以下三个核心组件:
- 先进的 Diffusion pipeline,只需几行代码即可进行推理;
- 可互换的 noise schedulers,用于不同的 Diffusion 速度和输出质量;
- 预训练模型可用作构建模块,并与 schedulers 结合使用,创建自己的端到端 Diffusion Systems。
这个项目是由 Hugging Face 免费开源的,可以使用它来快速训练 ControlNet,进一步提高 AI 绘画的效果和质量。
5. Everything is identifiable
Meta 之前在 GitHub 上开源了一个名为 Segment Anything Model 的图像分割模型,可以自动实现图像分割。然而,该模型在图像定位方面表现良好,但在图像识别方面的表现却一般。
为此,复旦大学与 OPPO 的研究人员以及 International School of Digital Economy, 共同在 GitHub 上开源了一个基础图像标注模型:Recognize Anything Model (RAM)。采用了一种新的图像标注范式,可以识别各种常见类别。而且用来训练的数据,是通过大规模的图像自动生成文本来进行标注,取代了手动标注。
经过基准评估,RAM 的标记能力表现优秀,效果明显优于 CLIP 和 BLIP。有用户认为 RAM 甚至超过了完全监督的方法,与 Google API 相当。同时,项目中还包含一个名为 Tag2Text 的工具,可以批量直接为图像中的指定对象生成标签。如果与 Meta 的开源 SAM 模型结合使用,我们可以批量删除图像中的指定对象,进一步提高图像处理效率。
本文由博客一文多发平台 OpenWrite 发布!
我们今天的关于Amazing!!CSS 也能实现极光?和css光效的分享就到这里,谢谢您的阅读,如果想了解更多关于(Amazing!) 通过 vfox 在 Windows 上安装管理多个 Erlang/OTP 和 Elixir 的版本、) 预期 css(css-rparentexpected)" 用于@media 查询中的第 4 级 css 语法、47 Amazing CSS3 Animation Demos、5 Amazing AI Projects, Open Source !的相关信息,可以在本站进行搜索。
本文标签: