“常温”前端网站框架(五)-- 网站声明【附源码】

avatar
作者
筋斗云
阅读量:0

开篇(请大家看完):此网站写给挚爱,后续页面还会慢慢更新,大家敬请期待~ ~ ~

此前端框架,主要侧重于前端页面的视觉效果和交互体验。通过运用各种前端技术和创意,精心打造了一系列引人入胜的页面特效,会为大家带来全新的浏览体验。

同时,我非常支持和鼓励大家对这个框架进行二次创作或修改。您可以根据自己的需求和喜好,对框架进行个性化的定制和扩展,以打造出更符合自己品味的页面效果。

但请注意,如果您打算将这个框架转发给其他人或用于其他场合,请务必注明原创来源。让我们一起维护一个良好的创作环境。

最后,轻舟会继续更新和完善这个前端页面特效框架,为大家带来更多有趣、实用的功能和效果。感谢您的支持和关注!

页面效果:整体色调背景采用柔和渐变的方式呈现,与主页面的“毒药水式”色彩搭配形成了强烈的对比;周边花瓣缓缓飘落到水面之上形成涟漪。整体给人一种温馨、浪漫的感觉,网页声明背景板犹如映衬在水中,给人一种飘渺之感,上面的四种按钮可以进行网页声明页面的切换
在这里插入图片描述
在这里插入图片描述

一:网站声明.html

<!DOCTYPE html> <html lang="en" > <head>  <meta NAME="Generator" CONTENT="EditPlus"> <meta NAME="Author" CONTENT=""> <meta NAME="Keywords" CONTENT=""> <meta NAME="Description" CONTENT="">   <meta charset="UTF-8">   <title>网站声明</title> <link rel="stylesheet" href="CSS/声明.css"> <script type="text/javascript" src="JS/jquery-3.7.1.min.js"></script>  </head> <body> <div class="folder">   <div class="tabs">     <button class="tab active" onclick="openTab(event, 'tab-1')">       <div><span>网站架构</span></div>     </button>     <button class="tab" onclick="openTab(event, 'tab-2')">       <div><span>页面分配</span></div>     </button>     <button class="tab" onclick="openTab(event, 'tab-3')">       <div><span>注意事项</span></div>     </button>     <button class="tab" onclick="openTab(event, 'tab-4')">       <div><span>联系我们</span></div>     </button>   </div>   <div class="content">     <div class="content__inner" id="tab-1">       <div class="page">         <p>“常温”个人网站采用:         <p><span style="margin-left: 2em;">HTML5:用于构建网站的基本结构。</span></p>         <p><span style="margin-left: 2em;">CSS3:用于设置网站的样式和布局,包括响应式设计,确保网站在不同设备上都能良好显示。</span></p>         <p><span style="margin-left: 2em;">JavaScript:增强网站的交互性和动态效果,增强用户体验,如图片轮播、按钮点击效果等。</span></p>         <p><span style="margin-left: 2em;">echarts.js:用于图表类型的绘制(如:折线图、柱状图、饼状图、散点图、K线图、热力图等)</span></p>  </p>        </div>     </div>     <div class="content__inner" id="tab-2">       <div class="page">         <p>本网站主要侧重于前端页面的视觉效果和交互体验。通过运用各种前端技术和创意,精心打造了一系列引人入胜的页面特效,会为大家带来全新的浏览体验。</p>         <p>页面整体偏重于毒药水式色彩搭配,页面绚丽多彩,截止目前为止已开发的页面有:</p>         <p><span style="margin-left: 2em;">(1)主要功能有:记事留言,日历,录音,视频播放,音乐播放,可视化图表等</span></p>         <p><span style="margin-left: 2em;">(2)包含的游戏有:堆木头,压扁小鸟,进击的玉兔,拼图等游戏</span></p>         <p></p>       </div>     </div>     <div class="content__inner" id="tab-3">       <div class="page">         <p>欢迎访问“常温”个人网站!本网站发布的所有文章、图片、音频、视频等内容,除特别注明外,均为温轻舟原创或已获得授权使用。未经本人明确许可,任何组织或个人不得擅自转载、复制、修改、分发或以其他形式使用本网站内容,违者将依法追究其法律责任。</p> <!--        <p>本网站可能通过表单提交、Cookies等方式收集用户的个人信息,仅用于改善用户体验、提供个性化服务或响应用户请求。我承诺不将用户信息用于任何非法目的,也不会将信息出售给第三方。</p>-->         <p>由于网络环境的复杂性和不确定性,我无法保证绝对的信息安全,请用户自行承担因网络安全问题可能带来的风险。</p> <!--        <p>我将采取合理的技术和管理措施,保护用户信息的安全,防止信息泄露、毁损或丢失。然而,由于网络环境的复杂性和不确定性,我无法保证绝对的信息安全,请用户自行承担因网络安全问题可能带来的风险。</p>-->         <p>本网站提供的所有信息、观点和建议仅供参考,不构成任何专业建议或决策依据。用户在使用本网站内容时,应自行判断其适用性和准确性,并承担因使用本网站内容而产生的任何后果。</p>       </div>     </div>     <div class="content__inner" id="tab-4">       <div class="page">         <p>如果您对本网站的内容、隐私政策或其他方面有任何疑问或建议,欢迎通过以下方式联系我:         <p><span style="margin-left: 2em;">社交媒体:请在社交媒体主页留言/私信我:如CSDN、微信公众号、阿里云等</span></p>         <br> 感谢您对“常温”个人网站的支持与关注!</p>         <p></p>       </div>     </div>   </div> </div> <script src="JS/script.js"></script>  <div id="jsi-cherry-container" class="container"></div>     <script>         var RENDERER = {             INIT_CHERRY_BLOSSOM_COUNT: 30,             MAX_ADDING_INTERVAL: 10,              init: function () {                 this.setParameters();                 this.reconstructMethods();                 this.createCherries();                 this.render();             },             setParameters: function () {                 this.$container = $('#jsi-cherry-container');                 this.width = this.$container.width();                 this.height = this.$container.height();                 this.context = $('<canvas />').attr({ width: this.width, height: this.height }).appendTo(this.$container).get(0).getContext('2d');                 this.cherries = [];                 this.maxAddingInterval = Math.round(this.MAX_ADDING_INTERVAL * 1000 / this.width);                 this.addingInterval = this.maxAddingInterval;             },             reconstructMethods: function () {                 this.render = this.render.bind(this);             },             createCherries: function () {                 for (var i = 0, length = Math.round(this.INIT_CHERRY_BLOSSOM_COUNT * this.width / 1000); i < length; i++) {                     this.cherries.push(new CHERRY_BLOSSOM(this, true));                 }             },             render: function () {                 requestAnimationFrame(this.render);                 this.context.clearRect(0, 0, this.width, this.height);                  this.cherries.sort(function (cherry1, cherry2) {                     return cherry1.z - cherry2.z;                 });                 for (var i = this.cherries.length - 1; i >= 0; i--) {                     if (!this.cherries[i].render(this.context)) {                         this.cherries.splice(i, 1);                     }                 }                 if (--this.addingInterval == 0) {                     this.addingInterval = this.maxAddingInterval;                     this.cherries.push(new CHERRY_BLOSSOM(this, false));                 }             }         };         var CHERRY_BLOSSOM = function (renderer, isRandom) {             this.renderer = renderer;             this.init(isRandom);         };         CHERRY_BLOSSOM.prototype = {             FOCUS_POSITION: 300,             FAR_LIMIT: 600,             MAX_RIPPLE_COUNT: 100,             RIPPLE_RADIUS: 100,             SURFACE_RATE: 0.5,             SINK_OFFSET: 20,              init: function (isRandom) {                 this.x = this.getRandomValue(-this.renderer.width, this.renderer.width);                 this.y = isRandom ? this.getRandomValue(0, this.renderer.height) : this.renderer.height * 1.5;                 this.z = this.getRandomValue(0, this.FAR_LIMIT);                 this.vx = this.getRandomValue(-2, 2);                 this.vy = -2;                 this.theta = this.getRandomValue(0, Math.PI * 2);                 this.phi = this.getRandomValue(0, Math.PI * 2);                 this.psi = 0;                 this.dpsi = this.getRandomValue(Math.PI / 600, Math.PI / 300);                 this.opacity = 0;                 this.endTheta = false;                 this.endPhi = false;                 this.rippleCount = 0;                  var axis = this.getAxis(),                     theta = this.theta + Math.ceil(-(this.y + this.renderer.height * this.SURFACE_RATE) / this.vy) * Math.PI / 500;                 theta %= Math.PI * 2;                  this.offsetY = 40 * ((theta <= Math.PI / 2 || theta >= Math.PI * 3 / 2) ? -1 : 1);                 this.thresholdY = this.renderer.height / 2 + this.renderer.height * this.SURFACE_RATE * axis.rate;                 this.entityColor = this.renderer.context.createRadialGradient(0, 40, 0, 0, 40, 80);                 this.entityColor.addColorStop(0, 'hsl(330, 70%, ' + 50 * (0.3 + axis.rate) + '%)');                 this.entityColor.addColorStop(0.05, 'hsl(330, 40%,' + 55 * (0.3 + axis.rate) + '%)');                 this.entityColor.addColorStop(1, 'hsl(330, 20%, ' + 70 * (0.3 + axis.rate) + '%)');                 this.shadowColor = this.renderer.context.createRadialGradient(0, 40, 0, 0, 40, 80);                 this.shadowColor.addColorStop(0, 'hsl(330, 40%, ' + 30 * (0.3 + axis.rate) + '%)');                 this.shadowColor.addColorStop(0.05, 'hsl(330, 40%,' + 30 * (0.3 + axis.rate) + '%)');                 this.shadowColor.addColorStop(1, 'hsl(330, 20%, ' + 40 * (0.3 + axis.rate) + '%)');             },             getRandomValue: function (min, max) {                 return min + (max - min) * Math.random();             },             getAxis: function () {                 var rate = this.FOCUS_POSITION / (this.z + this.FOCUS_POSITION),                     x = this.renderer.width / 2 + this.x * rate,                     y = this.renderer.height / 2 - this.y * rate;                 return { rate: rate, x: x, y: y };             },             renderCherry: function (context, axis) {                 context.beginPath();                 context.moveTo(0, 40);                 context.bezierCurveTo(-60, 20, -10, -60, 0, -20);                 context.bezierCurveTo(10, -60, 60, 20, 0, 40);                 context.fill();                  for (var i = -4; i < 4; i++) {                     context.beginPath();                     context.moveTo(0, 40);                     context.quadraticCurveTo(i * 12, 10, i * 4, -24 + Math.abs(i) * 2);                     context.stroke();                 }             },             render: function (context) {                 var axis = this.getAxis();                  if (axis.y == this.thresholdY && this.rippleCount < this.MAX_RIPPLE_COUNT) {                     context.save();                     context.lineWidth = 2;                     context.strokeStyle = 'hsla(0, 0%, 100%, ' + (this.MAX_RIPPLE_COUNT - this.rippleCount) / this.MAX_RIPPLE_COUNT + ')';                     context.translate(axis.x + this.offsetY * axis.rate * (this.theta <= Math.PI ? -1 : 1), axis.y);                     context.scale(1, 0.3);                     context.beginPath();                     context.arc(0, 0, this.rippleCount / this.MAX_RIPPLE_COUNT * this.RIPPLE_RADIUS * axis.rate, 0, Math.PI * 2, false);                     context.stroke();                     context.restore();                     this.rippleCount++;                 }                 if (axis.y < this.thresholdY || (!this.endTheta || !this.endPhi)) {                     if (this.y <= 0) {                         this.opacity = Math.min(this.opacity + 0.01, 1);                     }                     context.save();                     context.globalAlpha = this.opacity;                     context.fillStyle = this.shadowColor;                     context.strokeStyle = 'hsl(330, 30%,' + 40 * (0.3 + axis.rate) + '%)';                     context.translate(axis.x, Math.max(axis.y, this.thresholdY + this.thresholdY - axis.y));                     context.rotate(Math.PI - this.theta);                     context.scale(axis.rate * -Math.sin(this.phi), axis.rate);                     context.translate(0, this.offsetY);                     this.renderCherry(context, axis);                     context.restore();                 }                 context.save();                 context.fillStyle = this.entityColor;                 context.strokeStyle = 'hsl(330, 40%,' + 70 * (0.3 + axis.rate) + '%)';                 context.translate(axis.x, axis.y + Math.abs(this.SINK_OFFSET * Math.sin(this.psi) * axis.rate));                 context.rotate(this.theta);                 context.scale(axis.rate * Math.sin(this.phi), axis.rate);                 context.translate(0, this.offsetY);                 this.renderCherry(context, axis);                 context.restore();                  if (this.y <= -this.renderer.height / 4) {                     if (!this.endTheta) {                         for (var theta = Math.PI / 2, end = Math.PI * 3 / 2; theta <= end; theta += Math.PI) {                             if (this.theta < theta && this.theta + Math.PI / 200 > theta) {                                 this.theta = theta;                                 this.endTheta = true;                                 break;                             }                         }                     }                     if (!this.endPhi) {                         for (var phi = Math.PI / 8, end = Math.PI * 7 / 8; phi <= end; phi += Math.PI * 3 / 4) {                             if (this.phi < phi && this.phi + Math.PI / 200 > phi) {                                 this.phi = Math.PI / 8;                                 this.endPhi = true;                                 break;                             }                         }                     }                 }                 if (!this.endTheta) {                     if (axis.y == this.thresholdY) {                         this.theta += Math.PI / 200 * ((this.theta < Math.PI / 2 || (this.theta >= Math.PI && this.theta < Math.PI * 3 / 2)) ? 1 : -1);                     } else {                         this.theta += Math.PI / 500;                     }                     this.theta %= Math.PI * 2;                 }                 if (this.endPhi) {                     if (this.rippleCount == this.MAX_RIPPLE_COUNT) {                         this.psi += this.dpsi;                         this.psi %= Math.PI * 2;                     }                 } else {                     this.phi += Math.PI / ((axis.y == this.thresholdY) ? 200 : 500);                     this.phi %= Math.PI;                 }                 if (this.y <= -this.renderer.height * this.SURFACE_RATE) {                     this.x += 2;                     this.y = -this.renderer.height * this.SURFACE_RATE;                 } else {                     this.x += this.vx;                     this.y += this.vy;                 }                 return this.z > -this.FOCUS_POSITION && this.z < this.FAR_LIMIT && this.x < this.renderer.width * 1.5;             }         };         $(function () {             RENDERER.init();         });     </script> </body> </html> 

二:声明.css

html,     body {         width: 100%;         height: 100%;         margin: 0;         padding: 0;         overflow: hidden;     }  * {   box-sizing: border-box; }  :root {   --background: rgba(137, 246, 14, 0.19); } .container {     width: 100%;     height: 100%;     margin: 0;     position: absolute;     padding: 0;     background-image: linear-gradient(to right, rgba(154, 89, 168, 0.67), rgba(30, 145, 199, 0.67), rgba(0, 255, 153, 0.67)); } body {   display: flex;   grid: 2rem auto/repeat(2, 50%);   grid-column-gap: 2rem;   justify-content: center;   width: 100%;   height: 100%;   margin: 0;   padding: 0;   overflow: hidden; } p {   margin-bottom: 1rem; }  .tab {   z-index: 1;   text-transform: uppercase;   line-height: 0.8;   display: inline-block;   margin-left: -35px;   filter: drop-shadow(0px -3px 2px rgba(0, 0, 0, 0.05));   border: none;   border-radius: 6px 6px 0 0;   position: relative;   margin-right: 4rem;   background: var(--background);   white-space: nowrap;   cursor: pointer;   background: var(--background); } .tab:focus {   outline: none; } .tab:focus span {   border-bottom: 2px solid;   border-radius: 0; } .tab:first-of-type {   margin-left: 30px; } .tab div {   background: var(--background);   padding: 6px 0;   position: relative;   z-index: 10; } .tab span {   display: inline-block;   border: 2px solid transparent;   padding: 6px 15px 6px;   border-radius: 5px;   z-index: 5;   position: relative;   font-size: 140%;   background-image: linear-gradient(to right, rgba(154, 89, 168, 0.67), rgba(255, 30, 0, 0.67), rgba(0, 255, 153, 0.67));   min-width: 6rem; } .tab:before, .tab:after {   content: "";   height: 100%;   position: absolute;   background: var(--background);   border-radius: 8px 8px 0 0;   width: 30px;   top: 0; } .tab:before {   right: -16px;   transform: skew(25deg);   border-radius: 0 8px 0 0; } .tab:after {   transform: skew(-25deg);   left: -16px;   border-radius: 8px 0 0 0; } .tab.active {   z-index: 50;   position: relative; } .tab.active span {   background-image: linear-gradient(to right, rgba(40, 210, 176, 0.4), rgba(61, 206, 232, 0.35), rgba(40, 126, 231, 0.33));   box-shadow: 0 2px 3px rgba(40, 157, 186, 0.64);   border-radius: 5px;   color: #d139e2; }  .content {   border-radius: 10px;   position: relative;   width: 100%; } .content #tab-1 {   display: block; } .content:before {   content: "";   width: 100%;   height: 100%;   position: absolute;   z-index: -1;   top: 0;   left: 0;   border-radius: inherit; } .content__inner {   font-family: "Yomogi", sans-serif;   display: none;   background: var(--background);   border-radius: inherit;   padding: 1rem;   filter: drop-shadow(0px -2px 2px rgba(0, 0, 0, 0.1));   z-index: 5; }  .folder {   margin: 1rem auto;   max-width: 50rem;   width: 100%;   scrollbar-height: none;   -ms-overflow-style: none; } .folder ::-webkit-scrollbar {   background: transparent;   display: none; }  .page {   padding: 1.5rem;   border-radius: 2px;   min-height: 20rem;   line-height: 160%;   background-color: rgb(249, 249, 249);   filter: drop-shadow(0px 1px 3px rgba(0, 0, 0, 0.15));   background-image: linear-gradient(#e4e4e4 1px, transparent 1px);   background-size: 8% 8%, 2px 2px; }  .tabs {   padding: 2rem 0 0 0;   width: 100%;   margin: 0 0.5rem;   overflow-x: auto;   width: calc(100% - 1rem);   white-space: nowrap; } @media (min-width: 50rem) {   .tabs {     margin: 0 2rem;     width: calc(100% - 4rem);   } } 

三:script.js

function openTab(evt, tab) { 	var i, tabcontent, tablinks; 	tabcontent = document.getElementsByClassName("content__inner"); 	for (i = 0; i < tabcontent.length; i++) { 		tabcontent[i].style.display = "none"; 	} 	tablinks = document.getElementsByClassName("tab"); 	for (i = 0; i < tablinks.length; i++) { 		tablinks[i].className = tablinks[i].className.replace(" active", ""); 	} 	document.getElementById(tab).style.display = "block"; 	evt.currentTarget.className += " active"; } if (window.innerWidth > 800) { 	const scrollContainer = document.querySelector(".tabs");  	scrollContainer.addEventListener("wheel", (evt) => { 		evt.preventDefault(); 		scrollContainer.scrollLeft += evt.deltaY; 	}); } 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!