DIV+CSS+JS不间断横向滚动实现代码

DIV+CSS+JS不间断横向滚动实现代码的攻略分为以下几个步骤:

HTML布局

首先需要使用div标签创建一个包含所有滚动内容的容器,并设置样式overflow: hidden;,让容器内容不可见。

<div class="scroll-container">
  <div class="scroll-content">
    <!-- 滚动内容 -->
  </div>
</div>

其中,.scroll-container容器使用overflow: hidden;样式隐藏滚动内容的溢出部分,.scroll-content则是包含实际的滚动内容的容器。

CSS样式

现在,需要在.scroll-content容器中设置一些CSS样式,以使其能够横向滚动。首先需要将所有滚动内容依次排列在一行上,同时设置宽度为所有内容的宽度之和。然后再使用display: inline-block;样式将容器内容变成一行,即使内容超出容器宽度,也不会自动折行。最后,使用animation样式实现滚动效果。

.scroll-content {
  white-space: nowrap; /* 横向不自动换行 */
  width: 8000px; /* 所有内容宽度之和 */
  display: inline-block; /* 变成一行 */
  animation: scroll 60s linear infinite; /* 滚动效果 */
}

@keyframes scroll {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-8000px); } /* 容器宽度 */
}

其中,animation样式用于设置动画效果,scroll则是动画名称,在@keyframes语句中进行定义。keyframes中设置了动画启始和结束时的CSS属性值,使用transform: translateX()实现横向移动效果。

JS实现

最后,需要使用JS获取.scroll-content容器的宽度,并将其赋值给width属性,实现在任何情况下都能自适应滚动内容容器的宽度。

window.onload = function() {
  var contentWidth = document.querySelector('.scroll-content').offsetWidth;
  document.styleSheets[0].addRule('.scroll-content', 'width: ' + contentWidth + 'px');
}

在JS代码中,使用了querySelector方法来获取容器宽度,添加了offsetWidth属性,可以获取元素实际渲染的宽度,而不仅仅是CSS宽度。然后将宽度值生成一个动态CSS规则,实现了滚动容器自适应宽度。

示例说明

下面,提供两个示例说明:

示例一

实现一个基本的横向滚动效果,滚动内容为一组较长的文本。

<div class="scroll-container">
  <div class="scroll-content">
    <p class="scroll-item">这是一段很长很长的文本,需要使用滚动展示,不然内容会超出容器范围</p>
    <p class="scroll-item">这是一段很长很长的文本,需要使用滚动展示,不然内容会超出容器范围</p>
    <p class="scroll-item">这是一段很长很长的文本,需要使用滚动展示,不然内容会超出容器范围</p>
  </div>
</div>
.scroll-content {
  white-space: nowrap; /* 横向不自动换行 */
  width: 8000px; /* 所有内容宽度之和 */
  display: inline-block; /* 变成一行 */
  animation: scroll 60s linear infinite; /* 滚动效果 */
}

@keyframes scroll {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-8000px); } /* 容器宽度 */
}
window.onload = function() {
  var contentWidth = document.querySelector('.scroll-content').offsetWidth;
  document.styleSheets[0].addRule('.scroll-content', 'width: ' + contentWidth + 'px');
}

示例二

实现一个无限滚动的图片轮播效果,所有图片的宽度一致。

<div class="scroll-container">
  <div class="scroll-content">
    <img src="img1.jpg" alt="图片一" class="scroll-item"> 
    <img src="img2.jpg" alt="图片二" class="scroll-item"> 
    <img src="img3.jpg" alt="图片三" class="scroll-item"> 
    <img src="img4.jpg" alt="图片四" class="scroll-item"> 
    <img src="img5.jpg" alt="图片五" class="scroll-item"> 
  </div>
</div>
.scroll-content {
  white-space: nowrap; /* 横向不自动换行 */
  width: 5000px; /* 所有内容宽度之和 */
  display: inline-block; /* 变成一行 */
  animation: scroll 10s linear infinite; /* 滚动效果 */
}

.slide { /* 图片宽度和容器宽度一致 */
  width: 400px;
  height: 300px;
}

@keyframes scroll {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-2000px); }
}
window.onload = function() {
  var contentWidth = document.querySelector('.scroll-content').offsetWidth;
  var itemWidth = document.querySelector('.scroll-content > img').offsetWidth;
  var numItems = contentWidth / itemWidth;

  // 将所有图片复制一份,用来实现无缝滚动效果
  for (var i = 0; i < numItems; i++) {
    var itemClone = document.querySelector('.scroll-content > img').cloneNode(true);
    document.querySelector('.scroll-content').appendChild(itemClone);
  }
  // 调整总宽度
  document.styleSheets[0].addRule('.scroll-content', 'width: ' + (contentWidth * 2) + 'px');
}

在这个示例中,需要使用JS实现图片无限滚动的效果。因此,首先需要通过JS代码复制所有的图片,将其拼接在原有图片后面,生成一份完整的图片列表。然后,使用JS代码计算所需宽度并调整容器宽度,以实现无限滚动效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:DIV+CSS+JS不间断横向滚动实现代码 - Python技术站

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

相关文章

  • CSS中position定位的个熟悉示例介绍

    下面我来详细讲解一下”CSS中position定位的个熟悉示例介绍”的攻略。 一、position定位 在CSS中,position用于指定元素的定位方式,包括static、relative、absolute和fixed等。 static(默认值):元素的位置不受top、bottom、left、right等属性的影响,按照页面正常流布局。 relative:…

    css 2023年6月9日
    00
  • jQuery boxy弹出层插件中文演示及使用讲解

    jQuery boxy弹出层插件中文演示及使用讲解 概述 jQuery boxy是一款弹出层插件,可以用来实现页面中弹出窗口的效果,例如登录框、提示框等。它非常轻量级且易于使用,支持自定义样式,功能丰富,能够满足大多数网页的需求。 安装 可以从官方网站(http://onehackoranother.com/projects/jquery/boxy/)下载j…

    css 2023年6月9日
    00
  • jquery设置css样式的多种方法(总结)

    当我们需要在网页中设置样式时,可以使用jQuery来方便地进行操作。在jQuery中,有多种方法可以设置CSS样式。以下是这些方法的总结: .css() .css() 方法可以设置或返回一个或多个元素的一个或多个样式属性。使用该方法时,需要指定CSS属性名和值,以对象的形式传递: $(selector).css(property, value) 例如,我们可…

    css 2023年6月9日
    00
  • 将页脚固定在页面底部的CSS实战

    将页脚固定在页面底部是一个非常常见的需求,这需要使用CSS来实现。本文将介绍一些基本的CSS技巧和实践,让你能够更好地理解如何实现固定页脚效果。 CSS基础概念 在开始实现之前,我们需要了解一些CSS基础概念,这将有助于我们更好地理解如何构建CSS布局。 position属性: 定位属性,可以设置元素的定位方式。常用值有absolute、relative、f…

    css 2023年6月10日
    00
  • JavaFX实现UI美观效果代码实例

    针对“JavaFX实现UI美观效果代码实例”的完整攻略,我准备了以下内容: 1. 环境准备 在开始使用JavaFX实现UI美观效果之前,需要先安装好JavaFX开发环境,确保电脑上已经安装了JavaFX SDK和Java SDK,并且已经配置好了JavaFX和Java的环境变量。如果还没有安装和配置,可以参考JavaFX官方文档中的[安装和配置](https…

    css 2023年6月10日
    00
  • 使用flex布局轻松实现页面布局的示例代码

    使用flex布局可以轻松实现页面布局,以下是使用flex布局的完整攻略: 1. 定义容器 在CSS中,需要定义一个容器来使用flex布局,可以通过给容器设置display:flex属性来启用flex布局。例如下面的代码: .container { display: flex; } 2. 设置容器的flex属性 在CSS中,还需要为容器设置一些flex属性来指…

    css 2023年6月11日
    00
  • Bootstrap每天必学之折叠

    Bootstrap每天必学之折叠 折叠是 Bootstrap 中非常实用的一个组件,它能够让页面上的内容通过二次点击等交互方式展开或隐藏。本篇就来详细讲解 Bootstrap 折叠组件的使用方法。 折叠组件的基本用法 HTML 结构 折叠组件的基础结构需要三个元素,分别是触发折叠的按钮,折叠的内容和容器元素。这里的按钮可以是一个普通按钮或者是一个链接。 以下…

    css 2023年6月10日
    00
  • CSS的一些圆角图形实例分享

    那我详细讲解一下“CSS的一些圆角图形实例分享”的完整攻略。 讲解CSS圆角图形的攻略 圆形 如果想要创建一个圆形,可以使用border-radius属性并将其设置为50%。示例代码如下: .circle { width: 100px; height: 100px; border-radius: 50%; background-color: red; } 正…

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