div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox

要实现类似marquee的无缝滚动效果,可以使用div、CSS和JavaScript结合的方式。具体实现步骤如下:

HTML结构

先创建一个包含滚动内容的div,再在div内部创建两个包裹滚动内容的div,其中一个用于显示内容,一个用于隐藏内容,两个div的宽度相等,高度与滚动内容相同。如下所示:

<div class="scroll-wrap">
  <div class="scroll-show">
    <!-- 显示的滚动内容 -->
  </div>
  <div class="scroll-hide">
    <!-- 隐藏的滚动内容 -->
  </div>
</div>

CSS样式

  1. 将包裹滚动内容的div设置为相对定位,overflow属性设置为hidden,以隐藏超出内容。

  2. scroll-showscroll-hide两个div设置为绝对定位。其中,scroll-showleft值为0,scroll-hideleft值等于scroll-show的宽度。topbottom属性都设置为0,使得两个div与包裹滚动内容的div高度一致。

  3. scroll-showscroll-hide两个div添加相同的样式,如下所示:

.scroll-show,
.scroll-hide {
  position: absolute;
  top: 0;
  bottom: 0;
  white-space: nowrap; /* 防止文字换行 */
}

同时,为两个div设置相同的宽度,使得滚动内容能够完全填充两个div

  1. scroll-wrap设置width属性,使得其能够容纳两个div的宽度之和。

JavaScript实现

JavaScript的实现方式有多种,以下以定时器的方式实现。具体步骤如下:

  1. 获取scroll-showscroll-hide两个div

  2. 设置一个全局变量offset,表示滚动的位移量,初始值为0。

  3. 创建一个定时器,每个一定时间(如20ms)将offset值减少。同时,将scroll-showscroll-hide根据offset值左移,实现滚动效果。

  4. scroll-hide完全被滚动到显示区域中时,将scroll-showscroll-hide交换位置,再将offset值重置为0,重新开始滚动。

以下是一段示例代码,实现了向左滚动的效果:

<div class="scroll-wrap">
  <div class="scroll-show">
    <span>第一条滚动内容</span>
    <span>第二条滚动内容</span>
    <span>第三条滚动内容</span>
  </div>
  <div class="scroll-hide">
    <span>第四条滚动内容</span>
    <span>第五条滚动内容</span>
    <span>第六条滚动内容</span>
  </div>
</div>
.scroll-wrap {
  width: 500px;
  position: relative;
  overflow: hidden;
}
.scroll-show,
.scroll-hide {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  white-space: nowrap;
  width: 100%;
}
.scroll-show {
  left: 0;
}
.scroll-hide {
  left: 100%;
}
var scrollShow = document.querySelector('.scroll-show');
var scrollHide = document.querySelector('.scroll-hide');
var offset = 0;

setInterval(function() {
  offset--;
  scrollShow.style.left = offset + 'px';
  scrollHide.style.left = (offset + scrollShow.offsetWidth) + 'px';
  if (offset <= -scrollShow.offsetWidth) {
    offset = 0;
    scrollShow.style.left = '0';
    scrollHide.style.left = '100%';
    var tmp = scrollShow;
    scrollShow = scrollHide;
    scrollHide = tmp;
  }
}, 20);

另外,为了兼容Firefox浏览器,需要为scroll-showscroll-hide两个div添加一个display: inline-block样式,如下所示:

.scroll-show,
.scroll-hide {
  display: inline-block;
}

以上是实现“div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox”的完整攻略,另外还可以使用transform属性实现滚动效果,具体可以参考一些插件库的实现方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox - Python技术站

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

相关文章

  • 关于table的width:100%和margin导致溢出

    关于table的width:100%和margin导致溢出的问题通常是因为没有正确理解table默认的box-sizing属性造成的,下面是完整攻略。 了解table的默认box-sizing属性 table 是一个特殊的 HTML 标签,它默认的 box-sizing 属性是 border-box,而非一般的 content-box,这意味着 table …

    css 2023年6月10日
    00
  • jQuery实现的背景颜色渐变动画效果示例

    下面我将详细讲解“jQuery实现的背景颜色渐变动画效果示例”的完整攻略。 简介 jQuery是一个流行的JavaScript库,它提供了许多方便的功能和方法,可以帮助我们更加轻松地操作页面元素。其中包括对背景颜色渐变的支持。我们可以使用jQuery实现非常漂亮的背景颜色渐变动画效果,给用户一种非常视觉冲击的感受。 示例1 下面是一个简单的示例,展示如何使用…

    css 2023年6月11日
    00
  • HTML+CSS实现单选框、复选框美观的样式

    HTML 和 CSS 可以实现单选框、复选框等表单元素的美观样式。下面是实现这个目标的完整攻略: 1. HTML 结构 首先,我们需要在 HTML 中添加表单元素。对于单选框,我们可以使用 input 标签,并设置 type 属性为 radio,同时为每个单选框添加一个 name 属性和不同的 value 属性,以便在提交表单时正确地解析选项。 <la…

    css 2023年6月9日
    00
  • 简介CSS中的各种选择符

    CSS中的选择器是一种用来选择需要添加样式的HTML元素的方法。根据选择器的不同,可以选择不同类型的HTML元素,更准确地描述选择器中的元素,使样式更精细化。本文将详细讲解CSS中的各种选择符。 1. 层级选择器 层级选择器用于选择一个元素的后代元素。这些元素可以是直接后代,也可以是间接的后代。 代码示例: .container li { margin-le…

    css 2023年6月9日
    00
  • CSS 实现高度自适应铺满整屏的实现

    实现高度自适应铺满整屏的效果,在网页设计中非常常见,可以通过CSS样式来完成。具体步骤如下: 1、设置html和body的高度为100% 在CSS中设置html和body的高度为100%,这样可以保证整个网页的高度占据整个屏幕。 html, body { height: 100%; } 2、设置目标元素高度 将目标元素设置为高度100%是无效的,因为在默认情…

    css 2023年6月10日
    00
  • bootstrapValidator表单验证插件学习

    BootstrapValidator表单验证插件学习 什么是BootstrapValidator? BootstrapValidator是一个基于Bootstrap的表单验证插件,它可以用于客户端表单验证,使用简单但功能强大,并且支持多种验证方式。 开始使用BootstrapValidator 引入步骤 先引入jQuery和Bootstrap框架文件 在jQ…

    css 2023年6月10日
    00
  • javascript实现弹幕墙效果

    实现弹幕墙效果的步骤可以归纳为以下几点: 步骤一:准备工作 在HTML页面中添加一个<canvas>元素作为弹幕容器。可设置position: absolute和z-index属性,使其覆盖在其他内容之上。还需要在HTML页面中引入一个用于生成弹幕对象的JS文件。 <canvas id="Danmu" width=&qu…

    css 2023年6月10日
    00
  • 在浏览器中解析”赋予margin属性”的checkbox空白边距(IE6和FF)

    在浏览器中解析“赋予margin属性”的checkbox空白边距,实际上是指针对 HTML 表单元素 checkbox 加入 margin 属性时,会出现空白边距的问题。具体攻略如下: 1. 问题分析 首先需要分析问题所在。在 PC 端的 IE6 和 FF 浏览器中,如果为 HTML 表单元素 checkbox 设置了 margin 属性,会出现空白边距。这…

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