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实现一个自适应的正方形的方法示例

    实现一个自适应的正方形可以使用CSS来实现,有以下几种方法: 1. 使用 padding 可以通过给容器设置一个相等的高度和宽度以及一个匹配的 padding来实现一个自适应的正方形。具体实现方式如下: .square { position: relative; width: 50%; /* 宽度设置为50% */ padding-top: 50%; /* …

    css 2023年6月10日
    00
  • ASP.NET MVC 使用Bootstrap的方法

    接下来我将详细讲解“ASP.NET MVC 使用Bootstrap的方法”的完整攻略。 什么是Bootstrap Bootstrap是 Twitter 推出的一个开源前端框架,它提供了一系列的CSS、JavaScript 和 HTML 组件,用于快速开发响应式,移动设备优先的Web应用程序。 如何在ASP.NET MVC中使用Bootstrap 使用 ASP…

    css 2023年6月11日
    00
  • IE6/7在滚动区域内的标签使用position会飘出这个滚动区域不随滚动条滚动

    问题描述 在IE6/7浏览器中,当在滚动区域内使用css属性 position: absolute 或 position: fixed 的元素时,该元素会出现跑出滚动区域的情况,具体表现为该元素不会随着滚动条的滚动而滚动,而是固定在页面顶部或左侧。 解决方案 在IE6/7浏览器中,使用 zoom:1 和 position: relative 的结合解决该问题…

    css 2023年6月10日
    00
  • vue监听页面中的某个div的滚动事件并判断滚动的位置

    讲解如下: 1. 使用Vue自带指令进行绑定滚动事件 Vue自带的指令v-on可以用来绑定DOM事件,包括滚动事件。下面是一个使用v-on绑定滚动事件的示例代码: <template> <div ref="scrollWrapper" v-on:scroll="scrollHandler"> &…

    css 2023年6月10日
    00
  • Python全栈之学习CSS(2)

    Python全栈之学习CSS(2) 本攻略旨在帮助Python全栈开发者快速掌握CSS的相关知识,从而以更好的方式设计和美化网页界面。本攻略为进阶篇,前置知识请参考“Python全栈之学习CSS(1)”。本攻略涵盖以下主题: CSS布局 CSS盒模型 文本属性 背景属性 边框属性 定位属性 Flexbox布局 Grid布局 1. CSS布局 在网站设计中,布…

    css 2023年6月11日
    00
  • Bootstrap BootstrapDialog使用详解

    Bootstrap BootstrapDialog 使用详解 Bootstrap BootstrapDialog 是一个基于 Bootstrap 样式的对话框插件,它可以帮助用户快速地创建现代化的对话框。本文将详细讲解 BootstrapDialog 的使用。 安装 BootstrapDialog BootstrapDialog 的安装非常简单,只需要在 H…

    css 2023年6月9日
    00
  • 条件CSS的高级用法

    条件CSS的高级用法 条件 CSS 是一种在 CSS 中使用条件语句的技术,可以根据不同的条件应用不同的样式。以下是一些常见的条件 CSS 用法。 方法一:使用 @supports 使用 @supports 是一种常见的条件 CSS 技术,可以根据浏览器是否支持某个 CSS 属性来应用不同的样式。以下是一个示例: /* 默认样式 */ .box { back…

    css 2023年5月18日
    00
  • div结合css布局bbs首页(div+css布局入门)

    下面就是“div结合css布局bbs首页(div+css布局入门)”的完整攻略: 常用的布局方式 在进行类似bbs首页的布局时,常用的有以下几种方式: 表格布局(table) DIV+CSS布局 Flexbox布局 Grid布局 其中表格布局比较简单,这里我主要介绍DIV+CSS布局的实现。 DIV+CSS布局的特点 DIV+CSS布局的特点是使用 HTML…

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