【发布时间】:2021-07-15 18:14:42
【问题描述】:
一旦该元素进入视口,我正在尝试在横幅文本上创建打字机效果。我几乎让它工作了,但我仍然有一些我自己似乎无法解决的问题:
- 打打字机效果时,最后一个字符不显示(我在网上找到了这段代码)
- 当我检测到元素是否在视口中时,我的打字机动画一直在闪烁
我正在使用 ACF 来获取内容。 我也尝试将代码重写为jquery,但这似乎也不起作用。
HTML/PHP
echo '<div class="contentBlock featured bg-black">';
echo '<div class="textWrapper">';
echo '<h2 id="original" style="display:none;">'. get_sub_field('grote_titel') .'</h2>';
echo '<h2 id="typewriter"></h2>';
echo '</div>';
echo '</div>';
jquery/js
$.fn.isInViewport = function() {
var elementTop = $(this).offset().top;
var elementBottom = elementTop + $(this).outerHeight();
var viewportTop = $(window).scrollTop();
var viewportBottom = viewportTop + $(window).height();
return elementBottom > viewportTop && elementTop < viewportBottom;
};
$(window).on('resize scroll', function() {
$('.contentBlock.featured').each(function() {
if ( $(this).isInViewport()) {
var str = document.getElementById('original').innerText,
i = 0,
isTag,
text;
(function type() {
text = str.slice(0, ++i);
if (text === str) return;
document.getElementById('typewriter').innerHTML = text;
var char = text.slice(-1);
if( char === '<' ) isTag = true;
if( char === '>' ) isTag = false;
if (isTag) return type();
setTimeout(type, 80);
}());
}
});
});
【问题讨论】:
-
最后一个字符没有显示 - 开始之前在字符串中添加另一个字符?
标签: html jquery wordpress advanced-custom-fields