kpkuang navigator

by quakerv

HTML

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=11" id="mixia_vpid">
    <title>看片狂人 - 防迷路</title>
    <meta name="keywords" content="看片狂人,防迷路,地址发布">
    <meta name="description" content="看片狂人防迷路地址发布页">
    <link rel="icon" href="./favicon.ico">
    <link rel="shortcut icon" href="./favicon.ico">
    <link rel="stylesheet" type="text/css" href="./css/style.css">
<!-- Matomo -->
<script>
  var _paq = window._paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="//stats.flixfiend.top/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '1']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Matomo Code -->

</head>
<body>
    <div class="content">
        <div class="title">看片狂人-防迷路</div>
        <hr class="hr">
        <div class="container">
		<span id="hitokoto">正在获取中...</span>
    </div>
		<script src="https://v1.hitokoto.cn/?encode=js&select=%23hitokoto" defer></script>
        <hr class="hr">
        <nav class="cover-navigation cover-navigation--primary">
            <ul class="navigation">
			    <li class="navigation__item"><a href="https://codepen.io/KungfuF-Loma/full/GgNKJOM" target="_blank" title="传送门1">传送门1</a></li>
				<li class="navigation__item"><a href="https://jsfiddle.net/quakerv/q8c2e4fk/" target="_blank" title="传送门2">传送门2</a></li>
				<li class="navigation__item"><a href="https://jsrun.net/zTrKp/" target="_blank" title="传送门3">传送门3</a></li>	
				
				<li class="navigation__item"><a...

CSS

html, body {
	margin: 0;
	overflow: hidden;
	width: 100%;
	height: 100%;
	background: black;
	background: linear-gradient(to bottom, #000000 0%, #5788fe 100%);
	font-family:'Questrial','Noto Serif SC' ;
}

.filter {
	width: 100%;
	height: 100%;
	position: absolute;
	top: 0;
	left: 0;
	background: #fe5757;
	animation: colorChange 30s ease-in-out infinite;
	animation-fill-mode: both;
	mix-blend-mode: overlay;
}

@keyframes colorChange {
	0%, 100% {
		opacity: 0;
	}
	50% {
		opacity: .9;
	}
}

.landscape {
	position: absolute;
	bottom: 0px;
	left: 0;
	width: 100%;
	height: 100%;	
	background-image: url('');
	background-size: 1000px 250px;
	background-repeat: repeat-x;
	background-position: center bottom;
}
.content{
	-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
-khtml-user-select: none;
user-select: none;
	text-align: center;
	color: #fff;
    position: absolute;
    #left: 50%;
    top: 10%;
	#transform: translate(-50%,-50%);
	z-index:9999;
	width: 100%;
}
.content .title{
	margin: 15px 0;
    font-size: 2.5em;
    letter-spacing: 4px;
    color: #FFF;
}
.content .hr{
	width: 50%;
	margin: 20px auto;
	border: none;
	border-top: 1px solid rgba(255, 255, 255, 1);
	height: 1px;
}
.content .discription{
    font-size: 20px;
    margin: 20px;
}
.cover-navigation {
	margin: 30px;
}

nav {
    display: inline-block;
    position: relative;
}
.navigation {
    display: inline-block;
    position: relative;
    margin: 0;
    list-style-type: none;
}
@media (min-width: 900px) {
	.navigation {
		width: 50%;
	}
}
.navigation__item {
    display: inline-block;
    line-height: 1em;
    padding: 1em 0;
}
.navigation__item a {
    position: relative;
    color: #FFF;
    opacity: .8;
	transition: all .3s;
	padding: 10px 20px;
    border: 1px solid #fff;
    border-radius: 20px;
    font-size: .9em;
    font-weight: bold;
    letter-spacing:...

JavaScript

function Star(id, x, y) {
    this.id = id;
    this.x = x;
    this.y = y;
    this.r = Math.floor(Math.random() * 2) + 1;
    var alpha = (Math.floor(Math.random() * 10) + 1) / 10 / 2;
    this.color = "rgba(255,255,255," + alpha + ")";
}

Star.prototype.draw = function() {
    ctx.fillStyle = this.color;
    ctx.shadowBlur = this.r * 2;
    ctx.beginPath();
    ctx.arc(this.x, this.y, this.r, 0, 2 * Math.PI, false);
    ctx.closePath();
    ctx.fill();
}

Star.prototype.move = function() {
    this.y -= .15;
    if (this.y <= -10) this.y = HEIGHT + 10;
    this.draw();
}

Star.prototype.die = function() {
    stars[this.id] = null;
    delete stars[this.id];
}

function Dot(id, x, y, r) {
    this.id = id;
    this.x = x;
    this.y = y;
    this.r = Math.floor(Math.random() * 5) + 1;
    this.maxLinks = 2;
    this.speed = .5;
    this.a = .5;
    this.aReduction = .005;
    this.color = "rgba(255,255,255," + this.a + ")";
    this.linkColor = "rgba(255,255,255," + this.a / 4 + ")";

    this.dir = Math.floor(Math.random() * 140) + 200;
}

Dot.prototype.draw = function() {
    ctx.fillStyle = this.color;
    ctx.shadowBlur = this.r * 2;
    ctx.beginPath();
    ctx.arc(this.x, this.y, this.r, 0, 2 * Math.PI, false);
    ctx.closePath();
    ctx.fill();
}

Dot.prototype.link = function() {
    if (this.id == 0) return;
    var previousDot1 = getPreviousDot(this.id, 1);
    var previousDot2 = getPreviousDot(this.id, 2);
    var previousDot3 = getPreviousDot(this.id, 3);
    if (!previousDot1) return;
    ctx.strokeStyle = this.linkColor;
    ctx.moveTo(previousDot1.x, previousDot1.y);
    ctx.beginPath();
    ctx.lineTo(this.x, this.y);
    if (previousDot2 != false) ctx.lineTo(previousDot2.x, previousDot2.y);
    if (previousDot3 != false) ctx.lineTo(previousDot3.x, previousDot3.y);
    ctx.stroke();
    ctx.closePath();
}

function getPreviousDot(id, stepback) {
    if (id == 0 || id -...