feat: 新增搜索标签页面及相关功能
refactor: 优化搜索页面样式和交互逻辑 style: 调整热门标签和热门搜索组件样式 fix: 修复登录状态判断逻辑 chore: 更新图片资源和SVG图标 docs: 更新README文档 test: 添加搜索功能测试用例 build: 更新依赖包版本 ci: 配置自动化测试和部署流程 perf: 优化页面加载性能和响应速度
This commit is contained in:
95
js/scrolltext.js
Normal file
95
js/scrolltext.js
Normal file
@@ -0,0 +1,95 @@
|
||||
function ScrollText(content, btnPrevious, btnNext, autoStart) {
|
||||
this.Delay = 10;
|
||||
this.LineHeight = 20;
|
||||
this.Amount = 1; //注意:LineHeight一定要能整除Amount.
|
||||
this.Direction = "up";
|
||||
this.Timeout = 1500;
|
||||
this.ScrollContent = this.$(content);
|
||||
this.ScrollContent.innerHTML += this.ScrollContent.innerHTML;
|
||||
//this.ScrollContent.scrollTop = 0;
|
||||
if (btnNext) {
|
||||
this.NextButton = this.$(btnNext);
|
||||
this.NextButton.onclick = this.GetFunction(this, "Next");
|
||||
this.NextButton.onmouseover = this.GetFunction(this, "Stop");
|
||||
this.NextButton.onmouseout = this.GetFunction(this, "Start");
|
||||
}
|
||||
if (btnPrevious) {
|
||||
this.PreviousButton = this.$(btnPrevious);
|
||||
this.PreviousButton.onclick = this.GetFunction(this, "Previous");
|
||||
this.PreviousButton.onmouseover = this.GetFunction(this, "Stop");
|
||||
this.PreviousButton.onmouseout = this.GetFunction(this, "Start");
|
||||
}
|
||||
this.ScrollContent.onmouseover = this.GetFunction(this, "Stop");
|
||||
this.ScrollContent.onmouseout = this.GetFunction(this, "Start");
|
||||
if (autoStart) {
|
||||
this.Start();
|
||||
}
|
||||
}
|
||||
|
||||
ScrollText.prototype.$ = function (element) {
|
||||
return document.getElementById(element);
|
||||
}
|
||||
|
||||
ScrollText.prototype.Previous = function () {
|
||||
clearTimeout(this.AutoScrollTimer);
|
||||
clearTimeout(this.ScrollTimer);
|
||||
this.Scroll("up");
|
||||
}
|
||||
|
||||
ScrollText.prototype.Next = function () {
|
||||
clearTimeout(this.AutoScrollTimer);
|
||||
clearTimeout(this.ScrollTimer);
|
||||
this.Scroll("down");
|
||||
}
|
||||
|
||||
ScrollText.prototype.Start = function () {
|
||||
clearTimeout(this.AutoScrollTimer);
|
||||
this.AutoScrollTimer = setTimeout(this.GetFunction(this, "AutoScroll"), this.Timeout);
|
||||
}
|
||||
|
||||
ScrollText.prototype.Stop = function () {
|
||||
clearTimeout(this.ScrollTimer);
|
||||
clearTimeout(this.AutoScrollTimer);
|
||||
}
|
||||
|
||||
ScrollText.prototype.AutoScroll = function () {
|
||||
if (this.Direction == "up") {
|
||||
if (parseInt(this.ScrollContent.scrollTop) >= parseInt(this.ScrollContent.scrollHeight) / 2) {
|
||||
this.ScrollContent.scrollTop = 0;
|
||||
}
|
||||
this.ScrollContent.scrollTop += this.Amount;
|
||||
} else {
|
||||
if (parseInt(this.ScrollContent.scrollTop) <= 0) {
|
||||
this.ScrollContent.scrollTop = parseInt(this.ScrollContent.scrollHeight) / 2;
|
||||
}
|
||||
this.ScrollContent.scrollTop -= this.Amount;
|
||||
}
|
||||
if (parseInt(this.ScrollContent.scrollTop) % this.LineHeight != 0) {
|
||||
this.ScrollTimer = setTimeout(this.GetFunction(this, "AutoScroll"), this.Delay);
|
||||
} else {
|
||||
this.AutoScrollTimer = setTimeout(this.GetFunction(this, "AutoScroll"), this.Timeout);
|
||||
}
|
||||
}
|
||||
|
||||
ScrollText.prototype.Scroll = function (direction) {
|
||||
if (direction == "up") {
|
||||
if (this.ScrollContent.scrollTop == 0) {
|
||||
this.ScrollContent.scrollTop = parseInt(this.ScrollContent.scrollHeight) / 2;
|
||||
}
|
||||
this.ScrollContent.scrollTop -= this.Amount;
|
||||
} else {
|
||||
this.ScrollContent.scrollTop += this.Amount;
|
||||
}
|
||||
if (parseInt(this.ScrollContent.scrollTop) >= parseInt(this.ScrollContent.scrollHeight) / 2) {
|
||||
this.ScrollContent.scrollTop = 0;
|
||||
}
|
||||
if (parseInt(this.ScrollContent.scrollTop) % this.LineHeight != 0) {
|
||||
this.ScrollTimer = setTimeout(this.GetFunction(this, "Scroll", direction), this.Delay);
|
||||
}
|
||||
}
|
||||
|
||||
ScrollText.prototype.GetFunction = function (variable, method, param) {
|
||||
return function () {
|
||||
variable[method](param);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user