如何通过悬停从一个选项卡到另一个选项卡来实现流畅的打字机效果转换
How to make a smooth type writer effect transition via hovering from one tab to another?
假设发生的情况是,当您将鼠标悬停在选项卡上时,内容显示在主内容区域中,子div来自保存内容的同级div。最初,details-div样式是隐藏内容,但悬停时会显示。
现在,我所解释的是它应该发生的,然而悬停效果是虚幻和不稳定的。如何实现从一个选项卡悬停到另一个选项卡的无缝转换?我更喜欢VanillaJS解决方案,但如果需要的话,我会选择Jquery。
为了方便你,我在密码下面提供了一把小提琴。
这是HTML
<div id="container">
<div id="leftTabs">
<div class="tabs">tab 1</div>
<div class="tabs">tab 2</div>
<div class="tabs">tab 3</div>
</div>
<div id="mainContent">
<h2>H2 Heading</h2>
<div>
<div id="re1" class="details" style="display: none;">This is the RE1 Div <strong>content</strong>
<p>Paragraph of content RE1</p>
<ul>
<li>item1</li>
<li>item2</li>
<li>item3</li>
</ul>
<p>Another Paragraph</p>
</div>
<!-- more details etc -->
<div id="re6" class="details" style="display: none;">This is the RE6 Div <strong>content</strong>
<p>Paragraph of content RE6</p>
<ul>
<li>item1</li>
<li>item2</li>
<li>item3</li>
</ul>
<p>Another Paragraph</p>
</div>
</div>
</div>
<div id="rightTabs">
<div class="tabs">tab 4</div>
<div class="tabs">tab 5</div>
<div class="tabs">tab 6</div>
</div>
</div>
JavaScript
var print =document.getElementById("mainContent").getElementsByTagName("div")[0];
var typeEffectCalled = false;
function simpleTypeEffect(sentence, stopBool) {
var index = 0;
var timer = setInterval(function () {
var myChar = sentence.charAt(index);
if (myChar === '<') {
index = sentence.indexOf('>', index);
}
document.getElementById("mainContent").getElementsByTagName("div")[0].innerHTML = sentence.substr(0, index);
index++;
if (sentence.length === index) {
clearInterval(timer);
stopBool(false);
}
}, 50);
}
function displayInfo(){
var tabs = document.getElementsByClassName("tabs");
var details = document.getElementsByClassName("details");
function generateContent(content, func){
return function(){
print.innerHTML = simpleTypeEffect(content, func);
}
}
for(var i = 0; i<tabs.length; i++){
if(typeEffectCalled === false){
tabs[i].addEventListener("mouseover", generateContent(
details[i].innerHTML, function(x){typeEffectCalled = x}
), false);
}
typeEffectCalled = true;
}
}
displayInfo();
Fiddle-->http://jsfiddle.net/9djfa2L2/3/
您看到的故障是因为每次对simpleTypeEffect
的调用都会安排每50毫秒执行一个函数,只有当所有文本内容都已刷新时,该函数才会自行清除。
要修复它,你只需要在开始新的效果之前检查是否已经有效果,如果发现效果就停止:
var currentEffect;
function simpleTypeEffect(sentence) {
var index = 0;
if (currentEffect)
clearTimeout(currentEffect);
currentEffect = setInterval(function(){ /* omitted*/}, 50);
}
相关文章:
- 设置选项对象关键点:值对以实现带第二个y轴的动态打印
- 如何在Ionic Framework中实现选项卡页面之间的转换
- 如何在 JavaScript 中实现用于设置和获取选项的非 CQS API
- 在节点中实现依赖选项列表.js + express
- 无法在煎茶选项卡面板中的选项卡上实现操作
- 如何使用增量 + 选项(或可见性)在 JavaScript 上实现可见性
- 具有不同语言选项的数据对象.Javascript实现
- 使用UI选项卡插件正确实现JQuery谷歌地图插件
- 为什么这个“范围”实现会在chrome中崩溃选项卡
- 如何实现浏览器选项卡的复制
- 如何在HTML选择中实现重命名选项
- 如何获取使用循环中的ng选项实现的Select框的值
- 如何通过悬停从一个选项卡到另一个选项卡来实现流畅的打字机效果转换
- 如何在单个html页面中实现多个选项卡视图的自动对焦属性功能
- 默认选择选项为空;实现
- 需要javascript动态级联选择选项的简洁实现
- 在模态窗口中实现可滚动选项卡
- PHP选项卡实现
- 如何实现一个方法来更新jquery插件中的选项
- 在rails中实现引导选项卡