JS实现弹幕小案例

 更新时间:2022年08月25日 09:38:27   作者:欧欧呀  
这篇文章主要为大家详细介绍了JS实现弹幕小案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了JS实现弹幕小案例的具体代码,供大家参考,具体内容如下

效果图:

步骤分析:

1、收集用户输入内容,根据内容创建一个标签--span,追加到某个容器中

2、为元素设置位置

  • left:右侧--大容器外面
  • top:上半区

3、通过样式设置来实现元素的动画,也可以通过定时器的方式实现动画

4、细节

  • 文本颜色随机
  • span动画结束之后应该进行自动的清除

html代码: 

<div class="boxDom" id="boxDom">
      <div class="idDom" id="idDom">
        <div class="content">
          <p class="title">吐槽:</p>
          <input type="text" class="text" id="text" />
          <button type="button" class="btn" id="btn">发射</button>
        </div>
      </div>
</div>

css代码:

<style type="text/css">
      html,
      body {
        margin: 0px;
        padding: 0px;
        width: 100%;
        height: 100%;
        font-family: '微软雅黑';
        font-size: 62.5%;
      }
 
      .boxDom {
        width: 100%;
        height: 100%;
        position: relative;
        overflow: hidden;
      }
 
      .idDom {
        width: 100%;
        height: 100px;
        background: #666;
        position: fixed;
        bottom: 0px;
      }
 
      .content {
        display: inline-block;
        width: 430px;
        height: 40px;
        position: absolute;
        left: 0px;
        right: 0px;
        top: 0px;
        bottom: 0px;
        margin: auto;
      }
 
      .title {
        display: inline;
        font-size: 4em;
        vertical-align: bottom;
        color: #fff;
      }
 
      .text {
        border: none;
        width: 300px;
        height: 30px;
        border-radius: 5px;
        font-size: 2.4em;
      }
 
      .btn {
        width: 60px;
        height: 30px;
        background: #f90000;
        border: none;
        color: #fff;
        font-size: 2.4em;
      }
 
      span {
        /* width: 300px; */
        height: 40px;
        position: absolute;
        overflow: hidden;
        color: #000;
        font-size: 4em;
        line-height: 1.5em;
        cursor: pointer;
        white-space: nowrap;
      }
</style>

JS代码:

// 获取元素
let btn = document.querySelector('#btn')
let text = document.querySelector('#text')
let boxDom = document.querySelector('#boxDom')
 
// 为按钮绑定事件
btn.addEventListener('click', function() {
    // 获取用户输入内容
    // 表单元素input的值的获取是使用value
    let content = text.value
    // trim:去除左右空格
    if (content.trim().length == 0) {
        alert('请输入一个内容再发弹幕')
        return
    }
    // 创建一个元素
    // createElement:创建元素
    let span = document.createElement('span')
    span.innerText = content
 
    // 为元素设置样式
    // clientWidth:获取元素的实际宽度
    // 设置left值为元素右侧外
    span.style.left = boxDom.clientWidth + 'px'
    // 设置top为上半区随机位置
    span.style.top =
        parseInt((Math.random() * boxDom.clientHeight) / 2) + 'px'
    // span.style.color = setColor()
    //设置字体的随机颜色
    span.style.color = `rgb(${Math.random() * 255},${Math.random() *
        255},${Math.random() * 255})`
 
    // 让元素动起来 -- 配合过渡样式
    // setTimeout(() => {
    //   span.style.left = -span.clientWidth + 'px'
    // }, 200)
    // 距停止位置的距离
    let dis = boxDom.clientWidth
    // setInterval(需要执行的函数,时间间隔)
    let tid = setInterval(function() {
        dis -= 1
        span.style.left = dis + 'px'
        // 移动到目标位置,清除定时器
        if (dis < -span.clientWidth) {
            clearInterval(tid)
            // 将当前的span移除
            span.remove()
        }
    }, 4)
 
    // 添加到指定容器中
    // insertBefore:将指定的元素插入到参照元素的前面:父容器.insertBefore(子元素,参照元素)
    // appendChild:将元素追加到所有子元素的最后: 父容器.appendChild(子元素)
    // insertBefore:一定传入两个参数
    boxDom.insertBefore(span, boxDom.children[0])
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • js arguments,jcallee caller用法总结

    js arguments,jcallee caller用法总结

    这篇文章主要介绍了js中arguments, jcallee caller用法。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11
  • JavaScript设计模式之单例模式简单实例教程

    JavaScript设计模式之单例模式简单实例教程

    这篇文章主要介绍了JavaScript设计模式之单例模式,结合简单实例形式分析了单例模式的概念、功能及javascript定义与使用单例模式相关操作技巧,需要的朋友可以参考下
    2018-07-07
  • js实现类似于add(1)(2)(3)调用方式的方法

    js实现类似于add(1)(2)(3)调用方式的方法

    这篇文章主要介绍了js实现类似于add(1)(2)(3)调用方式的方法,需要的朋友可以参考下
    2015-03-03
  • JavaScript使用replace函数替换字符串的方法

    JavaScript使用replace函数替换字符串的方法

    这篇文章主要介绍了JavaScript使用replace函数替换字符串的方法,涉及javascript中replace函数的使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • 三种方式获取XMLHttpRequest对象

    三种方式获取XMLHttpRequest对象

    这篇文章主要介绍了获取XMLHttpRequest对象的三种方式,需要的朋友可以参考下
    2014-04-04
  • Postman如何实现参数化执行及断言处理

    Postman如何实现参数化执行及断言处理

    这篇文章主要介绍了Postman如何实现参数化执行及断言处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • 如何用js实现鼠标向上滚动时浮动导航

    如何用js实现鼠标向上滚动时浮动导航

    今天给大家介绍一下使用JavaScript判断鼠标滑轮是不是向上滚动,当向上滚动的时候,导航条浮动在顶部位置。示例代码如下。
    2016-07-07
  • bootstrap table支持高度百分比的实例代码

    bootstrap table支持高度百分比的实例代码

    这篇文章给大家介绍了bootstrap table支持高度百分比的实例代码,通过更改BootstrapTable.prototype.resetView 方法,以支持高度百分比定义,适应不同高度屏幕,感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-02-02
  • TypeScript如何开启严格空值检查

    TypeScript如何开启严格空值检查

    这篇文章主要介绍了TypeScript如何开启严格空值检查,文章围绕TypeScript的相关资料展开详情内容,需要的小伙伴可以参考一下
    2022-03-03
  • JavaScript数组的使用详解

    JavaScript数组的使用详解

    这篇文章主要介绍了JavaScript数组的使用方法,数组(Array)是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07

最新评论