mirror of
https://github.com/seigler/fhqwhgads
synced 2025-07-26 22:46:08 +00:00
added node and grunt stuff, improved cursor and selection handling
This commit is contained in:
parent
e226475f42
commit
edae59d5e7
23 changed files with 487 additions and 114 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,3 +1,4 @@
|
||||||
# https://git-scm.com/docs/gitignore
|
# https://git-scm.com/docs/gitignore
|
||||||
# https://help.github.com/articles/ignoring-files
|
# https://help.github.com/articles/ignoring-files
|
||||||
# Example .gitignore files: https://github.com/github/gitignore
|
# Example .gitignore files: https://github.com/github/gitignore
|
||||||
|
/node_modules/
|
||||||
|
|
129
Gruntfile.js
Normal file
129
Gruntfile.js
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
module.exports = function (grunt) {
|
||||||
|
|
||||||
|
// Project configuration.
|
||||||
|
grunt.initConfig({
|
||||||
|
pkg: grunt.file.readJSON('package.json'),
|
||||||
|
|
||||||
|
copy: {
|
||||||
|
build: {
|
||||||
|
cwd: 'src',
|
||||||
|
src: [
|
||||||
|
'**',
|
||||||
|
'!**/*.less',
|
||||||
|
'!**/*.css',
|
||||||
|
'!**/*.js',
|
||||||
|
'!**/*.xcf'
|
||||||
|
],
|
||||||
|
dest: 'build',
|
||||||
|
expand: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
clean: {
|
||||||
|
build: {
|
||||||
|
src: [ 'build' ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
cleanempty: {
|
||||||
|
build: {
|
||||||
|
options: {
|
||||||
|
files: false,
|
||||||
|
folders: true
|
||||||
|
},
|
||||||
|
src: [ 'build/**/*' ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
uglify: {
|
||||||
|
build: {
|
||||||
|
options: {
|
||||||
|
compress: false,
|
||||||
|
beautify: true,
|
||||||
|
mangle: false
|
||||||
|
},
|
||||||
|
files: {
|
||||||
|
'build/application.js': [ 'src/**/*.js', '!src/assets/javascript/index.js', 'src/assets/javascript/index.js' ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
less: {
|
||||||
|
build: {
|
||||||
|
options: {
|
||||||
|
relativeUrls: true
|
||||||
|
},
|
||||||
|
files: {
|
||||||
|
'build/compiled-styles.css': 'src/site.less'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
autoprefixer: {
|
||||||
|
build: {
|
||||||
|
expand: true,
|
||||||
|
src: [ 'build/**/*.css' ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
watch: {
|
||||||
|
options: {
|
||||||
|
livereload: true
|
||||||
|
},
|
||||||
|
stylesheets: {
|
||||||
|
files: ['src/**/*.less', 'src/**/*.css'],
|
||||||
|
tasks: [ 'stylesheets' ]
|
||||||
|
},
|
||||||
|
scripts: {
|
||||||
|
files: 'src/**/*.js',
|
||||||
|
tasks: [ 'scripts' ]
|
||||||
|
},
|
||||||
|
copy: {
|
||||||
|
files: [ 'src/**', '!src/**/*.less', '!src/**/*.css', '!src/**/*.js' ],
|
||||||
|
tasks: [ 'copy', 'cleanempty' ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
php: {
|
||||||
|
watch: {
|
||||||
|
options: {
|
||||||
|
hostname: '0.0.0.0',
|
||||||
|
port: 1337,
|
||||||
|
base: 'build'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Load plugins
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-copy');
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-clean');
|
||||||
|
grunt.loadNpmTasks('grunt-cleanempty');
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-uglify');
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-less');
|
||||||
|
grunt.loadNpmTasks('grunt-autoprefixer');
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-watch');
|
||||||
|
grunt.loadNpmTasks('grunt-php');
|
||||||
|
|
||||||
|
// Default task(s).
|
||||||
|
grunt.registerTask(
|
||||||
|
'default',
|
||||||
|
'Default is to build everything, then watch for changes',
|
||||||
|
['build', 'php:watch', 'watch']
|
||||||
|
);
|
||||||
|
grunt.registerTask(
|
||||||
|
'stylesheets',
|
||||||
|
'Compiles the stylesheets.',
|
||||||
|
[ 'less', 'autoprefixer' ]
|
||||||
|
);
|
||||||
|
grunt.registerTask(
|
||||||
|
'scripts',
|
||||||
|
'Compiles the scripts.',
|
||||||
|
[ 'uglify' ]
|
||||||
|
);
|
||||||
|
grunt.registerTask(
|
||||||
|
'build',
|
||||||
|
'Compiles all of the assets and copies the files to the build directory.',
|
||||||
|
[ 'clean', 'copy', 'stylesheets', 'scripts', 'cleanempty' ]
|
||||||
|
);
|
||||||
|
};
|
|
@ -1,10 +0,0 @@
|
||||||
@font-face {
|
|
||||||
font-family: 'computerfontregular';
|
|
||||||
src: url('computerfont-webfont.eot');
|
|
||||||
src: url('computerfont-webfont.eot?#iefix') format('embedded-opentype'),
|
|
||||||
url('computerfont-webfont.woff2') format('woff2'),
|
|
||||||
url('computerfont-webfont.woff') format('woff'),
|
|
||||||
url('computerfont-webfont.ttf') format('truetype');
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
15
build/application.js
Normal file
15
build/application.js
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
(function() {
|
||||||
|
function syncTyping() {
|
||||||
|
var beforeSelection, selection, afterSelection;
|
||||||
|
beforeSelection = this.value.slice(0, this.selectionStart);
|
||||||
|
selection = this.value.slice(this.selectionStart, this.selectionEnd);
|
||||||
|
afterSelection = this.value.slice(this.selectionEnd);
|
||||||
|
document.getElementById("typing").innerHTML = beforeSelection + (this.selectionStart == this.selectionEnd ? "<span id='cursor'></span>" : "") + "<span id='selection'>" + selection + "</span>" + afterSelection;
|
||||||
|
}
|
||||||
|
var commandline = document.getElementById("command");
|
||||||
|
commandline.value = "";
|
||||||
|
commandline.focus();
|
||||||
|
commandline.onkeydown = syncTyping;
|
||||||
|
commandline.onkeyup = syncTyping;
|
||||||
|
commandline.onselect = syncTyping;
|
||||||
|
})();
|
17
build/assets/images/scanline.svg
Normal file
17
build/assets/images/scanline.svg
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
<svg id="svg2" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="200" width="2000" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<metadata id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
|
||||||
|
<dc:title/>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g id="layer1" transform="translate(0,-852.36218)">
|
||||||
|
<rect id="rect2985" style="fill:#000000;" height="210" width="2000" y="847.36" x="0"/>
|
||||||
|
<path id="path2987" style="stroke-linejoin:miter;stroke:#003f00;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-width:5;fill:none;" d="M1995.1,857.28,4.9182,1047.4"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 892 B |
128
build/compiled-styles.css
Normal file
128
build/compiled-styles.css
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
*,
|
||||||
|
*:after,
|
||||||
|
*:before {
|
||||||
|
box-sizing: inherit;
|
||||||
|
}
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
height: 100%;
|
||||||
|
line-height: 1;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
label,
|
||||||
|
label:before,
|
||||||
|
label:after {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
label {
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
padding: 1em;
|
||||||
|
font-family: computerfontregular, monospace;
|
||||||
|
color: #009900;
|
||||||
|
font-size: 4vw;
|
||||||
|
overflow: hidden;
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
label:before {
|
||||||
|
content: "";
|
||||||
|
z-index: -1;
|
||||||
|
top: -8vw;
|
||||||
|
bottom: -8vw;
|
||||||
|
-webkit-animation: scroll 10s linear infinite;
|
||||||
|
animation: scroll 10s linear infinite;
|
||||||
|
background: url('/assets/images/scanline.svg');
|
||||||
|
background-size: 115vw 15vw;
|
||||||
|
background-repeat: repeat-y;
|
||||||
|
background-position: 50% 0%;
|
||||||
|
}
|
||||||
|
#commandLine {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
#command {
|
||||||
|
position: absolute;
|
||||||
|
margin-top: 1.25em;
|
||||||
|
z-index: -2;
|
||||||
|
}
|
||||||
|
#cursor {
|
||||||
|
position: absolute;
|
||||||
|
display: inline-block;
|
||||||
|
border-left: 0.1em solid;
|
||||||
|
margin-bottom: -0.2em;
|
||||||
|
height: 1em;
|
||||||
|
-webkit-animation: blink 1s linear infinite;
|
||||||
|
animation: blink 1s linear infinite;
|
||||||
|
}
|
||||||
|
#selection {
|
||||||
|
color: black;
|
||||||
|
background-color: #009900;
|
||||||
|
}
|
||||||
|
@-webkit-keyframes blink {
|
||||||
|
0% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
40% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
90% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes blink {
|
||||||
|
0% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
40% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
90% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@-webkit-keyframes scroll {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: translate3d(0, -7.5vw, 0);
|
||||||
|
transform: translate3d(0, -7.5vw, 0);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: translate3d(0, 7.5vw, 0);
|
||||||
|
transform: translate3d(0, 7.5vw, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes scroll {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: translate3d(0, -7.5vw, 0);
|
||||||
|
transform: translate3d(0, -7.5vw, 0);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: translate3d(0, 7.5vw, 0);
|
||||||
|
transform: translate3d(0, 7.5vw, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: 'computerfontregular';
|
||||||
|
src: url('/assets/fonts/computerfont-webfont.eot');
|
||||||
|
src: url('/assets/fonts/computerfont-webfont.eot?#iefix') format('embedded-opentype'),
|
||||||
|
url('/assets/fonts/computerfont-webfont.woff2') format('woff2'),
|
||||||
|
url('/assets/fonts/computerfont-webfont.woff') format('woff'),
|
||||||
|
url('/assets/fonts/computerfont-webfont.ttf') format('truetype');
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
20
build/index.php
Normal file
20
build/index.php
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-US">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
|
||||||
|
<title>FHQWHGADS</title>
|
||||||
|
<style><?php include('compiled-styles.css'); ?></style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form id="processor">
|
||||||
|
<label>
|
||||||
|
<div id="scrollback">
|
||||||
|
i love u<br>-fhqwhgadshgnsdhjsdbkhsdabkfabkveybvf<br><br>
|
||||||
|
</div>
|
||||||
|
<div id="commandLine">a><input id="command" type="text" value="" /><span id="typing"></span></div>
|
||||||
|
</label>
|
||||||
|
</form>
|
||||||
|
<script type="application/javascript"><?php include('application.js'); ?></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
103
index.html
103
index.html
|
@ -1,103 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en-US">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
|
|
||||||
<title>FHQWHGADS</title>
|
|
||||||
<link type="text/css" rel="stylesheet" href="assets/fonts/font.css"/>
|
|
||||||
<style>
|
|
||||||
html, body {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
height: 100%;
|
|
||||||
line-height: 1;
|
|
||||||
}
|
|
||||||
label, label:before, label:after {
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
}
|
|
||||||
label {
|
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
|
||||||
padding: 1em;
|
|
||||||
font-family: computerfontregular, monospace;
|
|
||||||
color: #090;
|
|
||||||
font-size: 4vw;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
label:before {
|
|
||||||
content: "";
|
|
||||||
z-index: -1;
|
|
||||||
top: -8vw;
|
|
||||||
bottom: -8vw;
|
|
||||||
animation: scroll 10s linear infinite;
|
|
||||||
background: linear-gradient(to bottom right, black 0%, black 49%, #030 49.5%, #030 50.5%, black 51%, black 100%) black;
|
|
||||||
background-size: 115vw 15vw;
|
|
||||||
background-repeat: repeat-y;
|
|
||||||
background-position: 50% 0%;
|
|
||||||
}
|
|
||||||
label:after {
|
|
||||||
content: "";
|
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background-image: radial-gradient(20vw circle at 5vw 5vw, rgba(255,255,255,0.25) 5%, transparent);
|
|
||||||
}
|
|
||||||
#command {
|
|
||||||
position: absolute;
|
|
||||||
margin-top: 1.25em;
|
|
||||||
z-index: -2;
|
|
||||||
}
|
|
||||||
#commandLine:after {
|
|
||||||
content: "";
|
|
||||||
display: inline-block;
|
|
||||||
border-left: 0.5em solid;
|
|
||||||
margin-bottom: -0.2em;
|
|
||||||
height: 1em;
|
|
||||||
animation: blink 1s linear infinite;
|
|
||||||
}
|
|
||||||
@keyframes blink {
|
|
||||||
0% {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
10% {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
50% {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
60% {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes scroll {
|
|
||||||
0% {
|
|
||||||
transform: translate3d(0,-7.5vw,0);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
transform: translate3d(0,7.5vw,0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<form id="processor">
|
|
||||||
<label>
|
|
||||||
<div id="scrollback">
|
|
||||||
i love u<br>-fhqwhgadshgnsdhjsdbkhsdabkfabkveybvf<br><br>
|
|
||||||
</div>
|
|
||||||
<div id="commandLine">a><input id="command" type="text" value="" oninput="syncTyping(this)" /><span id="typing"></span></div>
|
|
||||||
</label>
|
|
||||||
</form>
|
|
||||||
<script>
|
|
||||||
function syncTyping(field) {
|
|
||||||
document.getElementById("typing").innerHTML = field.value;
|
|
||||||
}
|
|
||||||
document.getElementById("command").value = "";
|
|
||||||
document.getElementById("command").focus();
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
23
package.json
Normal file
23
package.json
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"name": "fhqwhgads.bit",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"private": true,
|
||||||
|
"description": "novelty site",
|
||||||
|
"main": "src/scripts/index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"author": "Joshua Seigler",
|
||||||
|
"license": "CC BY 4.0",
|
||||||
|
"devDependencies": {
|
||||||
|
"grunt": "~0.4.5",
|
||||||
|
"grunt-contrib-copy": "~0.7.0",
|
||||||
|
"grunt-contrib-clean": "~0.6.0",
|
||||||
|
"grunt-contrib-less": "~0.12.0",
|
||||||
|
"grunt-autoprefixer": "~2.0.0",
|
||||||
|
"grunt-contrib-watch": "~0.6.1",
|
||||||
|
"grunt-contrib-uglify": "~0.6.0",
|
||||||
|
"grunt-cleanempty": "~1.0.1",
|
||||||
|
"grunt-php": "~1.1.1"
|
||||||
|
}
|
||||||
|
}
|
89
src/assets/css/style.less
Normal file
89
src/assets/css/style.less
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
@consoleColor: #090;
|
||||||
|
|
||||||
|
*, *:after, *:before {
|
||||||
|
box-sizing: inherit;
|
||||||
|
}
|
||||||
|
html, body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
height: 100%;
|
||||||
|
line-height: 1;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
label, label:before, label:after {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
label {
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
padding: 1em;
|
||||||
|
font-family: computerfontregular, monospace;
|
||||||
|
color: @consoleColor;
|
||||||
|
font-size: 4vw;
|
||||||
|
overflow: hidden;
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
label:before {
|
||||||
|
content: "";
|
||||||
|
z-index: -1;
|
||||||
|
top: -8vw;
|
||||||
|
bottom: -8vw;
|
||||||
|
animation: scroll 10s linear infinite;
|
||||||
|
background: url('/assets/images/scanline.svg');
|
||||||
|
background-size: 115vw 15vw;
|
||||||
|
background-repeat: repeat-y;
|
||||||
|
background-position: 50% 0%;
|
||||||
|
}
|
||||||
|
//label:after {
|
||||||
|
// content: "";
|
||||||
|
// top: 0;
|
||||||
|
// bottom: 0;
|
||||||
|
// background-image: radial-gradient(20vw circle at 5vw 5vw, rgba(255,255,255,0.25) 5%, transparent);
|
||||||
|
//}
|
||||||
|
#commandLine {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
#command {
|
||||||
|
position: absolute;
|
||||||
|
margin-top: 1.25em;
|
||||||
|
z-index: -2;
|
||||||
|
}
|
||||||
|
#cursor {
|
||||||
|
position: absolute;
|
||||||
|
display: inline-block;
|
||||||
|
border-left: 0.1em solid;
|
||||||
|
margin-bottom: -0.2em;
|
||||||
|
height: 1em;
|
||||||
|
animation: blink 1s linear infinite;
|
||||||
|
}
|
||||||
|
#selection {
|
||||||
|
color: black;
|
||||||
|
background-color: @consoleColor;
|
||||||
|
}
|
||||||
|
@keyframes blink {
|
||||||
|
0% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
40% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
90% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes scroll {
|
||||||
|
0% {
|
||||||
|
transform: translate3d(0,-7.5vw,0);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: translate3d(0,7.5vw,0);
|
||||||
|
}
|
||||||
|
}
|
BIN
src/assets/fonts/computerfont-webfont.eot
Normal file
BIN
src/assets/fonts/computerfont-webfont.eot
Normal file
Binary file not shown.
BIN
src/assets/fonts/computerfont-webfont.ttf
Normal file
BIN
src/assets/fonts/computerfont-webfont.ttf
Normal file
Binary file not shown.
BIN
src/assets/fonts/computerfont-webfont.woff
Normal file
BIN
src/assets/fonts/computerfont-webfont.woff
Normal file
Binary file not shown.
BIN
src/assets/fonts/computerfont-webfont.woff2
Normal file
BIN
src/assets/fonts/computerfont-webfont.woff2
Normal file
Binary file not shown.
10
src/assets/fonts/font.css
Normal file
10
src/assets/fonts/font.css
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
@font-face {
|
||||||
|
font-family: 'computerfontregular';
|
||||||
|
src: url('/assets/fonts/computerfont-webfont.eot');
|
||||||
|
src: url('/assets/fonts/computerfont-webfont.eot?#iefix') format('embedded-opentype'),
|
||||||
|
url('/assets/fonts/computerfont-webfont.woff2') format('woff2'),
|
||||||
|
url('/assets/fonts/computerfont-webfont.woff') format('woff'),
|
||||||
|
url('/assets/fonts/computerfont-webfont.ttf') format('truetype');
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
17
src/assets/images/scanline.svg
Normal file
17
src/assets/images/scanline.svg
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
<svg id="svg2" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="200" width="2000" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<metadata id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
|
||||||
|
<dc:title/>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g id="layer1" transform="translate(0,-852.36218)">
|
||||||
|
<rect id="rect2985" style="fill:#000000;" height="210" width="2000" y="847.36" x="0"/>
|
||||||
|
<path id="path2987" style="stroke-linejoin:miter;stroke:#003f00;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-width:5;fill:none;" d="M1995.1,857.28,4.9182,1047.4"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 892 B |
20
src/index.php
Normal file
20
src/index.php
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-US">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
|
||||||
|
<title>FHQWHGADS</title>
|
||||||
|
<style><?php include('compiled-styles.css'); ?></style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form id="processor">
|
||||||
|
<label>
|
||||||
|
<div id="scrollback">
|
||||||
|
i love u<br>-fhqwhgadshgnsdhjsdbkhsdabkfabkveybvf<br><br>
|
||||||
|
</div>
|
||||||
|
<div id="commandLine">a><input id="command" type="text" value="" /><span id="typing"></span></div>
|
||||||
|
</label>
|
||||||
|
</form>
|
||||||
|
<script type="application/javascript"><?php include('application.js'); ?></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
15
src/scripts/index.js
Normal file
15
src/scripts/index.js
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
(function(){
|
||||||
|
function syncTyping() {
|
||||||
|
var beforeSelection, selection, afterSelection;
|
||||||
|
beforeSelection = this.value.slice(0, this.selectionStart);
|
||||||
|
selection = this.value.slice(this.selectionStart, this.selectionEnd)
|
||||||
|
afterSelection = this.value.slice(this.selectionEnd)
|
||||||
|
document.getElementById("typing").innerHTML = beforeSelection + (this.selectionStart == this.selectionEnd ? "<span id='cursor'></span>" : "") + "<span id='selection'>" + selection + "</span>" + afterSelection;
|
||||||
|
}
|
||||||
|
var commandline = document.getElementById("command");
|
||||||
|
commandline.value = "";
|
||||||
|
commandline.focus();
|
||||||
|
commandline.onkeydown = syncTyping;
|
||||||
|
commandline.onkeyup = syncTyping;
|
||||||
|
commandline.onselect = syncTyping;
|
||||||
|
}());
|
2
src/site.less
Normal file
2
src/site.less
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
@import 'assets/css/style.less';
|
||||||
|
@import (inline) 'assets/fonts/font.css';
|
Loading…
Add table
Add a link
Reference in a new issue