前几天我看到了一个名为 HTML5 Terminal 的小演示。它有一些功能,但似乎只是为了好玩。也就是说,我喜欢它的美学!模糊的等宽字体,带有可见的显示器线条和发光的绿色背景 - 太棒了!

让我们一步一步地重新创建它。
一个 径向渐变 非常适合发光的绿色背景
body {
background-color: black;
background-image: radial-gradient(
rgba(0, 150, 0, 0.75), black 120%
);
height: 100vh;
}

我习惯于使用 <pre><code>
来显示空格格式的文本(例如代码),但你可以说终端文本并不总是代码,所以我喜欢在这里使用 <pre><output>
。
不妨使用一个不错的等宽字体
body {
...
color: white;
font: 1.3rem Inconsolata, monospace;
}

演示中的文本看起来有点模糊。我们可以使用一个轻微的滤镜,例如 filter: blur(0.6px);
,但这种方式的模糊要么太模糊,要么不够模糊。我们试试用 text-shadow
代替
body {
...
text-shadow: 0 0 5px #C8C8C8;
}

现在开始处理那些显示器线条!理想情况下,它们应该位于文本之上,所以让我们使用一个绝对定位在整个区域上的 ::after
伪元素,并使用一个重复的 线性渐变 来创建线条(因为尽量避免使用图像总是好的)
body::after {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background: repeating-linear-gradient(
0deg,
rgba(black, 0.15),
rgba(black, 0.15) 1px,
transparent 1px,
transparent 2px
);
}
你可以在这里看到这些微弱的黑色线条出现在白色上

然后覆盖我们最初的绿色爆发背景以完成外观

添加一个有趣的选中样式并移除模糊以在选中时提高清晰度,这是一个不错的技巧
::selection {
background: #0080FF;
text-shadow: none;
}

完整演示
查看 CodePen 上 Chris Coyier 的 终端输出。
糟糕……在 Firefox 中不起作用。
糟糕?
这里工作正常。
在我的 Linux 机器上看起来也很好。
在 Firefox 中文本选择似乎不起作用。此外,body::after 中的以下行似乎缺少一个逗号(“rgba(black, 0.15) 1px,”)。
除此之外,这很棒!感谢您抽出时间制作本教程!
这将非常适合作为 Hyper 主题 :)
这正是我在想的事情!
另外,在
::after
伪元素上添加pointer-events: none;
以允许 Firefox(以及我尚未测试的其他浏览器)进行基于光标的选择。哈哈哈!你没有说那个神奇的词!
我个人,永远在进行中的网站使用了这种类型的 UI。用于 CRT “扫描线” 的线性渐变方法是一个不错的技巧。如果我哪天有时间再次处理我的网站,我可能会尝试一下,而不是使用 SVG。
这是一个很棒的演练。谢谢!
酷!如果主要使用它,有一个类似的原生应用程序适用于 Mac 和 iOS => http://www.secretgeometry.com/apps/cathode/
我的天哪,这正是我要找的东西……(所以我们可以制作这种东西:http://asterion.online/inspiration/linearAdventure/)
它在我的 Firefox 中大部分工作正常,但我无法选择文本。注释掉“显示器线条”可以使文本可选择,所以我想 Firefox 无法“透过”它们进行选择。
您应该在显示器线条的声明块中写入“pointer-events: none;”。
我想指针事件是在某个时候添加的,因为今天我可以在演示中使用 Firefox 进行选择。
太棒了,我一直在寻找这个,而且它很完美。
但是,如果我把这个终端放在一个 div 中,而不是整个 body 中,那些显示器线条就会出现问题,因为它们会溢出 div。是的,overflow:hidden 不起作用。