Finto terminale in HTML+CSS
Stavo guardando la documentazione di jrnl quando mi sono chiesto “Ma quale sarà un modo pigro di fare un finto terminale in HTML e CSS?”.
Partiamo dal risultato. Dopo un mezzo pomeriggio di smanettaggio sono arrivato a questo:
L’HTML è veramente semplice ed essenziale:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<html>
<head>
<link rel="stylesheet" href="shterminal.css" />
</head>
<body>
<div class="shterm">
<div id="winbuttons">
<span>○</span>
<span>○</span>
<span>◉</span>
</div>
<div class="shcode">
<pre class="caret"><code>echo "Hello World"</code></pre>
<pre><code>Hello World</code></pre>
<pre class="caret"><code>echo "tacocat spelled backwards is tacocat"</code></pre>
<pre><code>tacocat spelled backwards is tacocat</code></pre>
</div>
</div>
</body>
</html>
La parte divertente è nel CSS. Allo scopo di evitare di fare troppi div, per definire la decorazione della finestra ho usato lo pseudo elemento ::before
.
Prendo la definizione da una fonte autorevolissima, l’MDN:
In CSS, ::before creates a pseudo-element that is the first child of the selected element. It is often used to add cosmetic content to an element with the content property. It is inline by default. (::before - MDN)
Uno pseudo elemento è una keyword che ci consente di definire lo stile di una specifica parte di un particolare elemento.
Ecco come ho definito lo stile della decorazione della finta finestra di terminale:
Spesso si usa ::before
in tandem con la direttiva content
. Ad esempio qui simulo il prompt così:
A questo link il gist completo.
A pigrizia non saprei, ma a semplicità direi che ci siamo, dai.