JS溶解形式的文字切换特效

yizhihongxing

为了实现JS溶解形式的文字切换特效,我们可以使用以下步骤:

第一步:创建HTML结构

首先我们需要在HTML代码中创建一些必需的结构,包括一个包裹元素、一个用于显示文本内容的元素和若干个用于存放动画效果的元素(可以是span、div或其他包裹元素)。

<div class="wrap">
  <h1 id="text">这是一段文字</h1>
  <div id="animation">
    <span>这</span>
    <span>是</span>
    <span>一</span>
    <span>段</span>
    <span>文</span>
    <span>字</span>
  </div>
</div>

第二步:定义CSS样式

使用CSS定义动画效果,这里选择了淡入淡出和溶解两种动画效果,具体实现如下:

#animation span {
  position: absolute;
  opacity: 0;
}

#animation .fadeIn {
  opacity: 1;
  transition: opacity 1s ease-in-out;
}

#animation .fadeOut {
  opacity: 0;
  transition: opacity 1s ease-in-out;
}

#animation .dissolve {
  opacity: 0;
  transition: opacity 1.5s ease-in-out;
  animation: dissolve 1.5s ease-in-out forwards;
}

@keyframes dissolve {
  0% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

第三步:编写JS代码

最后再编写JS代码来实现动画效果,在其中定义一个数组来存储需要切换显示的文字内容,然后使用计时器对应的setTimeout函数在不同的时间段内切换不同的文字内容,并给它们添加对应的动画效果:

const text = document.getElementById('text');
const animation = document.getElementById('animation');
const words = ['这段文字将会', '在不同的时间段', '逐渐显示出来', '效果真是太棒了'];

let count = 0;

function changeWord() {
  const currentWord = words[count];
  const characters = currentWord.split('');

  animation.innerHTML = '';

  for (let i = 0; i < characters.length; i++) {
    const span = document.createElement('span');
    span.innerHTML = characters[i];
    animation.appendChild(span);
  }

  const spans = animation.childNodes;

  for (let i = 0; i < spans.length; i++) {
    const span = spans[i];

    setTimeout(function () {
      span.classList.add('fadeIn');
      span.classList.remove('fadeOut');
    }, i * 100);
  }

  setTimeout(function () {
    for (let i = 0; i < spans.length; i++) {
      const span = spans[i];

      setTimeout(function () {
        span.classList.add('fadeOut');
        span.classList.remove('fadeIn');
      }, i * 100);
    }
  }, currentWord.length * 100);

  count++;

  if (count === words.length) {
    count = 0;
  }

  setTimeout(changeWord, currentWord.length * 100 + 1000);
}

changeWord();

这样就完成了JS溶解形式的文字切换特效的实现。以下是两个示例效果:

示例1

<div class="wrap">
  <h1 id="text">这是一段文字</h1>
  <div id="animation">
    <span>这</span>
    <span>是</span>
    <span>一</span>
    <span>段</span>
    <span>文</span>
    <span>字</span>
  </div>
</div>

<style>
#animation span {
  position: absolute;
  opacity: 0;
}

#animation .fadeIn {
  opacity: 1;
  transition: opacity 1s ease-in-out;
}

#animation .fadeOut {
  opacity: 0;
  transition: opacity 1s ease-in-out;
}

#animation .dissolve {
  opacity: 0;
  transition: opacity 1.5s ease-in-out;
  animation: dissolve 1.5s ease-in-out forwards;
}

@keyframes dissolve {
  0% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}
</style>

<script>
const text = document.getElementById('text');
const animation = document.getElementById('animation');
const words = ['这段文字将会', '在不同的时间段', '逐渐显示出来', '效果真是太棒了'];

let count = 0;

function changeWord() {
  const currentWord = words[count];
  const characters = currentWord.split('');

  animation.innerHTML = '';

  for (let i = 0; i < characters.length; i++) {
    const span = document.createElement('span');
    span.innerHTML = characters[i];
    animation.appendChild(span);
  }

  const spans = animation.childNodes;

  for (let i = 0; i < spans.length; i++) {
    const span = spans[i];

    setTimeout(function () {
      span.classList.add('fadeIn');
      span.classList.remove('fadeOut');
    }, i * 100);
  }

  setTimeout(function () {
    for (let i = 0; i < spans.length; i++) {
      const span = spans[i];

      setTimeout(function () {
        span.classList.add('fadeOut');
        span.classList.remove('fadeIn');
      }, i * 100);
    }
  }, currentWord.length * 100);

  count++;

  if (count === words.length) {
    count = 0;
  }

  setTimeout(changeWord, currentWord.length * 100 + 1000);
}

changeWord();
</script>

示例2

<div class="wrap">
  <h1 id="text">这是一段文字</h1>
  <div id="animation">
    <span>喜</span>
    <span>逢</span>
    <span>欢</span>
    <span>乐</span>
    <span>多</span>
    <span>多</span>
  </div>
</div>

<style>
#animation span {
  position: absolute;
  opacity: 0;
}

#animation .fadeIn {
  opacity: 1;
  transition: opacity 1s ease-in-out;
}

#animation .fadeOut {
  opacity: 0;
  transition: opacity 1s ease-in-out;
}

#animation .dissolve {
  opacity: 0;
  transition: opacity 1.5s ease-in-out;
  animation: dissolve 1.5s ease-in-out forwards;
}

@keyframes dissolve {
  0% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}
</style>

<script>
const text = document.getElementById('text');
const animation = document.getElementById('animation');
const words = ['好运常伴', '迎来幸福', '快乐好时光', '共度美好'];

let count = 0;

function changeWord() {
  const currentWord = words[count];
  const characters = currentWord.split('');

  animation.innerHTML = '';

  for (let i = 0; i < characters.length; i++) {
    const span = document.createElement('span');
    span.innerHTML = characters[i];
    animation.appendChild(span);
  }

  const spans = animation.childNodes;

  for (let i = 0; i < spans.length; i++) {
    const span = spans[i];

    setTimeout(function () {
      span.classList.add('fadeIn');
      span.classList.remove('fadeOut');
    }, i * 100);
  }

  setTimeout(function () {
    for (let i = 0; i < spans.length; i++) {
      const span = spans[i];

      setTimeout(function () {
        span.classList.add('fadeOut');
        span.classList.remove('fadeIn');
      }, i * 100);
    }
  }, currentWord.length * 100);

  count++;

  if (count === words.length) {
    count = 0;
  }

  setTimeout(changeWord, currentWord.length * 100 + 1000);
}

changeWord();
</script>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS溶解形式的文字切换特效 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 最大限度的分离table的样式与结构

    实现最大限度的分离table的样式与结构可以有以下几个步骤: 使用CSS选择器对表格进行样式控制 为实现样式与结构的分离,应尽量将表格的样式与HTML文档分开,可在CSS文件中对表格的样式进行控制,而不要使用内联样式或为表格添加style属性。可使用CSS选择器对表格进行样式控制,如下所示: /* 对表格的标题行、表头单元格、表格单元格和表格边框进行样式控制…

    css 2023年6月9日
    00
  • 纯CSS实现漂亮的下拉导航效果代码

    下面是“纯CSS实现漂亮的下拉导航效果代码”的完整攻略。 一、准备工作 在开始实现下拉导航的效果前,我们需要先编写基本的HTML和CSS代码。 1. HTML代码 在HTML中,我们需要先定义一个含有下拉菜单的导航菜单。这个导航菜单至少要包含一个触发下拉菜单的链接和一个下拉菜单的列表。 以下是一个简单的例子: <nav> <ul> &…

    css 2023年6月10日
    00
  • 基于Arcgis for javascript实现百度地图ABCD marker的效果

    接下来我会为您详细讲解基于ArcGIS for JavaScript实现百度地图ABCD Marker的效果的攻略,并提供两个示例说明。 1. 确定需求 首先需要明确我们的需求。本文中我们的目标是在ArcGIS for JavaScript中实现和百度地图类似的ABCD Marker效果。所谓ABCD Marker,是指可以根据指定的数值和颜色,显示不同的M…

    css 2023年6月10日
    00
  • 编写跨浏览器兼容的 CSS 代码

    编写跨浏览器兼容的 CSS 代码可以帮助我们在不同的浏览器中呈现出一致的样式效果,同时避免一些不必要的错误和问题。下面是我提供的编写跨浏览器兼容的 CSS 代码的完整攻略: 1. 确定目标浏览器 在编写跨浏览器兼容的 CSS 的时候,首先需要确定目标浏览器。为了让样式在大多数浏览器中都呈现出一致的效果,建议我们优先考虑主流浏览器,比如 Chrome、Fire…

    css 2023年6月9日
    00
  • margin-top塌陷问题的现象与解决的具体方法

    关于“margin-top塌陷问题”的详细讲解和解决方法如下: 什么是margin-top塌陷问题? 在网页设计中,我们常常使用margin来控制元素之间的间距。但是在某些情况下,上一个元素的margin-top值却会被下一个元素的margin-top值所代替,这样就会造成上一个元素的margin-top值消失,这个现象被称为margin-top塌陷问题。 …

    css 2023年6月10日
    00
  • css a:hover下的span样式无效的解决方法

    当使用 CSS 样式表中的 a:hover 做链接的鼠标悬停效果时,可能会出现 span 样式无效的情况。以下是解决方法的完整攻略: 问题描述 在 CSS 样式表中定义 a:hover 时,为了更好地控制链接的样式,可能需要在链接内添加 span 标签。但是,当鼠标悬停在链接上时,span 样式并没有起作用,这是一个比较常见的问题。 解决方法 方法一:使用 …

    css 2023年6月10日
    00
  • CSS实现三栏布局的四种方法示例

    CSS实现三栏布局是Web开发中常见的布局方式之一。以下是四种实现三栏布局的方法示例,包括两个示例说明: 1. 浮动布局 浮动布局是一种常见的实现三栏布局的方法。以下是一个简单的例: <div class="container"> <div class="left">Left Column&lt…

    css 2023年5月18日
    00
  • Vue.js 2.0 和 React、Augular等其他前端框架大比拼

    Vue.js 2.0 和 React、Angular等其他前端框架大比拼 前端框架是前端开发人员最为重要的工具之一,其中Vue.js 2.0、React和Angular是目前较为流行的三种框架。本文将分别从以下几个方面对这三种框架进行比较和分析。 性能 从性能方面来看,Vue.js 2.0 可以说是三个框架中最快的,因为Vue.js的Virtual DOM(…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部