refactor: 优化搜索页面样式和交互逻辑 style: 调整热门标签和热门搜索组件样式 fix: 修复登录状态判断逻辑 chore: 更新图片资源和SVG图标 docs: 更新README文档 test: 添加搜索功能测试用例 build: 更新依赖包版本 ci: 配置自动化测试和部署流程 perf: 优化页面加载性能和响应速度
95 lines
3.4 KiB
JavaScript
95 lines
3.4 KiB
JavaScript
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);
|
|
}
|
|
} |