2025-1-18

This commit is contained in:
zhhe committed 2025-01-18 20:31:34 +08:00
1 parent ecf7dd1fd9
commit d3d9e71531
2 files changed
+306

No files matched your search

+2
View File
@@ -0,0 +1,2 @@
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Typewriter",[],t):"object"==typeof exports?exports.Typewriter=t():e.Typewriter=t()}("undefined"!=typeof self?self:this,(()=>(()=>{var e={75:function(e){(function(){var t,n,r,o,a,i;"undefined"!=typeof performance&&null!==performance&&performance.now?e.exports=function(){return performance.now()}:"undefined"!=typeof process&&null!==process&&process.hrtime?(e.exports=function(){return(t()-a)/1e6},n=process.hrtime,o=(t=function(){var e;return 1e9*(e=n())[0]+e[1]})(),i=1e9*process.uptime(),a=o-i):Date.now?(e.exports=function(){return Date.now()-r},r=Date.now()):(e.exports=function(){return(new Date).getTime()-r},r=(new Date).getTime())}).call(this)},4087:(e,t,n)=>{for(var r=n(75),o="undefined"==typeof window?n.g:window,a=["moz","webkit"],i="AnimationFrame",s=o["request"+i],u=o["cancel"+i]||o["cancelRequest"+i],l=0;!s&&l<a.length;l++)s=o[a[l]+"Request"+i],u=o[a[l]+"Cancel"+i]||o[a[l]+"CancelRequest"+i];if(!s||!u){var c=0,p=0,d=[];s=function(e){if(0===d.length){var t=r(),n=Math.max(0,16.666666666666668-(t-c));c=n+t,setTimeout((function(){var e=d.slice(0);d.length=0;for(var t=0;t<e.length;t++)if(!e[t].cancelled)try{e[t].callback(c)}catch(e){setTimeout((function(){throw e}),0)}}),Math.round(n))}return d.push({handle:++p,callback:e,cancelled:!1}),p},u=function(e){for(var t=0;t<d.length;t++)d[t].handle===e&&(d[t].cancelled=!0)}}e.exports=function(e){return s.call(o,e)},e.exports.cancel=function(){u.apply(o,arguments)},e.exports.polyfill=function(e){e||(e=o),e.requestAnimationFrame=s,e.cancelAnimationFrame=u}}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var a=t[r]={exports:{}};return e[r].call(a.exports,a,a.exports,n),a.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var r={};return(()=>{"use strict";n.d(r,{default:()=>C});var e=n(4087),t=n.n(e);const o=function(e){return new RegExp(/<[a-z][\s\S]*>/i).test(e)},a=function(e,t){return Math.floor(Math.random()*(t-e+1))+e};var i="TYPE_CHARACTER",s="REMOVE_CHARACTER",u="REMOVE_ALL",l="REMOVE_LAST_VISIBLE_NODE",c="PAUSE_FOR",p="CALL_FUNCTION",d="ADD_HTML_TAG_ELEMENT",f="CHANGE_DELETE_SPEED",v="CHANGE_DELAY",h="CHANGE_CURSOR",m="PASTE_STRING",y="HTML_TAG";function g(e){return g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},g(e)}function E(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function w(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?E(Object(n),!0).forEach((function(t){A(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):E(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function b(e){return function(e){if(Array.isArray(e))return T(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return T(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?T(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function T(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function S(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,N(r.key),r)}}function A(e,t,n){return(t=N(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function N(e){var t=function(e,t){if("object"!==g(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==g(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===g(t)?t:String(t)}const C=function(){function n(r,g){var E=this;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),A(this,"state",{cursorAnimation:null,lastFrameTime:null,pauseUntil:null,eventQueue:Line truncated
//# sourceMappingURL=core.js.map
+304
View File
@@ -0,0 +1,304 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Spircape</title>
<link rel="icon" type="image/png" href="https://zh.yuazhi.cn/66a390533ee9c.png">
<style>
@font-face {
font-family: 'CustomFont';
/* src: url('https://zh.yuazhi.cn/st/MiSans-Medium.woff2') format('woff2'); */
font-weight: normal;
font-style: normal;
}
html,
body {
height: 100%;
margin: 0;
overflow: hidden;
font-family: 'CustomFont', Arial, sans-serif;
background-color: #f4f4f4;
color: #000;
}
.dark-mode {
background-color: #222;
color: #fff;
}
.hero-section {
min-height: 100vh;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
position: fixed; /* Changed from relative to fixed */
top: 50%; /* Centering vertically */
left: 50%; /* Centering horizontally */
transform: translate(-50%, -50%); /* Adjusting for the center */
text-align: center;
box-sizing: border-box;
}
h1 {
font-size: 5em;
margin: 0;
white-space: nowrap;
}
.scroll-down {
position: fixed;
top: 20px;
left: 20px;
font-size: 1.5em;
color: #000;
cursor: pointer;
display: flex;
flex-direction: column;
align-items: center;
transition: transform 0.2s ease;
}
@keyframes float {
0% {
transform: translateY(0);
}
50% {
transform: translateY(10px);
}
100% {
transform: translateY(0);
}
}
.scroll-down.feedback {
animation: feedback 0.4s ease-out;
}
@keyframes feedback {
0% {
transform: scale(1);
}
50% {
transform: scale(0.9);
}
100% {
transform: scale(1);
}
}
.marquee {
width: 100%;
overflow: hidden;
white-space: nowrap;
box-sizing: border-box;
background-color: #ffd500;
/* 背景颜色和字体颜色 */
color: #fff;
padding: 10px 0;
position: fixed;
/* 固定在页面顶部 */
top: 0;
left: 0;
z-index: 1000;
/* 确保在其他内容上方 */
}
.marquee-content {
display: inline-block;
white-space: nowrap;
padding-left: 100%;
animation: marquee 90s linear infinite;
font-size: 1.2em;
font-weight: bold;
/* 使字体加粗 */
/* 为了确保浏览器兼容性,添加前缀 */
-webkit-animation: marquee 90s linear infinite;
-moz-animation: marquee 90s linear infinite;
-o-animation: marquee 90s linear infinite;
-ms-animation: marquee 90s linear infinite;
}
@keyframes marquee {
from {
transform: translateX(0);
}
to {
transform: translateX(-100%);
}
}
footer {
background-color: #ffd500;
color: #fff;
padding: 13px;
text-align: center;
position: relative;
overflow: hidden;
}
footer a {
color: #000000;
text-decoration: none;
margin: 0 10px;
transition: transform 0.3s ease;
}
footer a:hover {
transform: translateX(5px);
}
.contact-info {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #e0e0e0;
padding: 20px;
box-sizing: border-box;
text-align: center;
color: #000;
}
.contact-info p {
margin: 10px 0;
font-size: 1.2em;
}
@media (max-width: 600px) {
h1 {
font-size: 3em;
}
}
.highlight {
color: #00B0F0;
}
.website {
color: #9369c2;
}
.website a {
color: #9369c2;
text-decoration: none;
}
.website a:hover {
color: #2ecc71;
}
.email {
color: #2ecc71;
}
.rsn {
color: #1d29d0;
}
.qq {
color: #e31215;
}
.nihao {
color: #2ecc71;
}
.non-clickable {
cursor: default;
}
.contact-label {
color: #000;
}
a {
text-decoration: none;
color: #007bff;
transition: color 0.6s ease;
}
a:hover {
color: #fcfcfc;
}
.slash {
color: #000;
}
.namek {
color: #ff9700;
}
</style>
<style>
/* ... (previous CSS styles) ... */
/* Add this footer style */
footer {
color: #000000;
padding: 13px;
text-align: center;
position: absolute;
bottom: 0;
width: 100%;
/* Make the background transparent */
background-color: transparent;
/* New styles for centering the text within the footer */
display: flex;
justify-content: center;
align-items: center;
margin-top: -150px;
}
</style>
<div class="hero-section">
<h1 id="typewriter"></h1>
</div>
<script src="core.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function () {
var darkModeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
var isDarkMode = darkModeMediaQuery.matches;
if (isDarkMode) {
document.body.classList.add('dark-mode');
}
var typewriter = new Typewriter('#typewriter', {
loop: true,
delay: 150,
});
typewriter
.typeString('<span class="nihao">你好呀~</span>')
.pauseFor(1000)
.deleteAll()
.typeString('<span class="highlight">Spircape<br>灵境</span>')
.pauseFor(1000)
.deleteAll()
.typeString('<span class="rsn">虚中有实</span>')
.pauseFor(1000)
.deleteAll()
.typeString('<span class="namek">实中有虚</span>')
.pauseFor(1000)
.deleteAll()
.typeString('✨请多多关照~')
.pauseFor(1000)
.deleteAll()
.start();
});
</script>
</body>
</html>