Ich habe neulich eine kleine Demo namens HTML5 Terminal gesehen. Sie hat einige Funktionen, aber es scheint, als ob sie nur so zum Spaß ist. Trotzdem habe ich die Ästhetik geliebt! Unscharfer Monospace-Schriftzug mit sichtbaren Monitorlinien und einem leuchtend grünen Hintergrund – gut gemacht!

Lassen Sie uns das Stück für Stück nachbilden.
Ein Radialgradient ist perfekt für den leuchtend grünen Hintergrund
body {
background-color: black;
background-image: radial-gradient(
rgba(0, 150, 0, 0.75), black 120%
);
height: 100vh;
}

Ich bin es gewohnt, <pre><code> zu verwenden, um mit Leerzeichen formatierte Texte (wie Code) anzuzeigen, aber man könnte sagen, dass Terminaltexte nicht immer Code sind, daher gefällt mir hier die Verwendung von <pre><output>.
Nehmen wir eine schöne Monospace-Schriftart
body {
...
color: white;
font: 1.3rem Inconsolata, monospace;
}

Der Text in der Demo erscheint etwas unscharf. Wir könnten einen leichten Filter wie filter: blur(0.6px); verwenden, aber das Verzerren auf diese Weise ist entweder zu unscharf oder nicht unscharf genug. Versuchen wir stattdessen, text-shadow zu verwenden
body {
...
text-shadow: 0 0 5px #C8C8C8;
}

Nun zu den Monitorlinien! Idealerweise sollten sie über dem Text liegen. Verwenden wir also ein ::after Pseudo-Element, das absolut über dem gesamten Bereich positioniert ist, und verwenden wir einen sich wiederholenden Lineargradienten für die Linien (weil es immer schön ist, Bilder zu vermeiden, wenn wir können)
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
);
}
Hier sehen Sie diese schwachen schwarzen Linien auf weiß

Und dann über unserem ursprünglichen grünen Burst-Hintergrund, um den Look zu vervollständigen

Es ist eine nette Geste, einen lustigen Auswahlstil hinzuzufügen und die Unschärfe zur besseren Lesbarkeit bei der Auswahl zu entfernen
::selection {
background: #0080FF;
text-shadow: none;
}

Komplette Demo
Sieh dir den Pen Terminal Output von Chris Coyier (@chriscoyier) auf CodePen an.
Autsch… funktioniert nicht in Firefox.
Autsch?
Funktioniert hier einwandfrei.
Sieht auch von hier aus gut aus, sogar auf meiner Linux-Box.
Die Textauswahl scheint in Firefox nicht zu funktionieren. Außerdem fehlt der folgenden Zeile in body::after ein Komma („ rgba(black, 0.15) 1px,“).
Abgesehen davon war das großartig! Vielen Dank, dass Sie sich die Zeit für dieses Tutorial genommen haben!
Das würde toll als Hyper-Thema funktionieren :)
Genau das habe ich mir gedacht!
Fügen Sie außerdem
pointer-events: none;zum::afterPseudo-Element hinzu, um die zeigerbasierte Auswahl in Firefox (und möglicherweise anderen Browsern, die ich noch nicht getestet habe) zu ermöglichen.Ha ha ha! Du hast das magische Wort nicht gesagt!
Meine persönliche, ständig in Arbeit befindliche Website verwendet diese Art von UI. Der Lineargradient-Ansatz für die CRT-„Scanlinien“ ist eine nette Geste. Wenn ich jemals wieder an meiner Seite arbeiten sollte, werde ich das vielleicht ausprobieren, anstatt ein SVG zu verwenden.
Das war ein großartiger Leitfaden. Danke!
Cool! Es gibt etwas Ähnliches als native App für Mac und iOS, wenn Sie dies hauptsächlich verwenden möchten => http://www.secretgeometry.com/apps/cathode/
Oh mein Gott, das ist genau das, wonach ich gesucht habe… (damit wir solche Sachen machen können: http://asterion.online/inspiration/linearAdventure/)
Es funktioniert bei mir in Firefox meistens, aber ich kann den Text nicht auswählen. Wenn ich die „Monitorlinien“ auskommentiere, wird der Text auswählbar, daher kann Firefox anscheinend nicht durch sie hindurchsehen, um ihn auszuwählen.
Sie sollten „pointer-events: none;“ in den Deklarationsblock der Monitorlinien schreiben.
Ich schätze, die Pointer-Events wurden irgendwann hinzugefügt, denn *heute* kann ich in Firefox in der Demo auswählen.
Großartig, ich habe danach gesucht und es ist perfekt.
Aber wenn ich dieses Terminal in ein Div stelle, anstatt in den gesamten Körper, sind diese Monitorlinien ein Problem, weil sie das Div überlaufen. Und ja, overflow:hidden hat nicht funktioniert.