本来想用
marquee来做一个跑马灯的效果。但是一想到
marquee
开始的时候总会有一段空白,就想到网上下一个一上来就填满整个容器的
js
跑马灯效果。我从网上直接下了一段
html
代码,嵌进了我的代码里,但是总是没有效果。我胡乱地改了
css
和
style
但是始终图片动也不动,我也不知道哪里出了问题。我搞了好久好久,于是狠下心来,开始看代码,打算自己把原理搞懂,把效果修复了。弄了一会儿,我就把效果恢复了。于是我把代码贴出来。原来的代码是用的表格布局的,现在我统一改成
div
布局。想说一句,把原理搞懂才是王道。
<div id="wall_images">
<div id="wall_images_wrap">
<div id="wall_images1">
<img src="<{$xoops_url}>/images/marquee/1.jpg"/><img src="<{$xoops_url}>/images/marquee/2.jpg"/><img src="<{$xoops_url}>/images/marquee/3.jpg"/><img src="<{$xoops_url}>/images/marquee/4.jpg"/><img src="<{$xoops_url}>/images/marquee/5.jpg"/><img src="<{$xoops_url}>/images/marquee/6.jpg"/><img src="<{$xoops_url}>/images/marquee/7.jpg"/>
</div>
<div id="wall_images2">
</div>
</div>
</div>
对应的css为
<style>
#wall_images {
overflow: hidden;
height: 150px;
width: 670px;
}
#wall_images img {
margin: 0 5px 0 5px;
height: 150px;
}
#wall_images1, #wall_images2 {
display: inline-block;
}
#wall_images_wrap {
width: 4000px;
}
</style>
$(function(){
var speed = 30
var wall_images2=document.getElementById("wall_images2");
var wall_images=document.getElementById("wall_images");
var wall_images1=document.getElementById("wall_images1");
wall_images2.innerHTML = wall_images1.innerHTML
wall_images1.scrollLeft = wall_images.scrollWidth
function Marquee() {
if (wall_images.scrollLeft <= 0)
wall_images.scrollLeft += wall_images2.offsetWidth
else {
wall_images.scrollLeft--
}
}
var MyMar = setInterval(Marquee, speed)
wall_images.onmouseover = function() {
clearInterval(MyMar)
}
wall_images.onmouseout = function() {
MyMar = setInterval(Marquee, speed)
}
})
这个走马灯的原理很好懂,只要你把#wall_images的overflow变成scroll就可以明白。就是利用两张图并排滚动交替实现的。这里#wall_images_wrap 的width: 4000px;很关键。只有这样,才能够有足够的宽度来容纳相同的两拍图片在同一行。#wall_images为一个相框,先固定width和height将超出其容器范围内的图片都hide掉。下一层的#wall_images_wrap因为宽度太大,肯定是撑开容器的,这也是我们期望的。这里的4000px是我们硬编码的,当然也可以用js根据img的数量和大小来动态定义。
这里还要说,img默认的是inline布局,这里把#wall_images1和#wall_images2设成inline-block。这里把它们看做内联元素之后,那么div就不会一下子占满100%的width。而是作为内联元素一样老老实实的该多大就多大。所以这里#wall_images1和#wall_images2都很长,并且等长,不会占满100%的width。
而这里如果把inline-block改成inline也是可以工作的。如果你改成inline,就不能利用盒模型来修饰div了。这里我们没有牵扯到盒模型。所以两个长长的div也可以并排滚动。
或者也可以这样,让#wall_images1和#wall_images的float:left,其他不变。还是block的div。我本来以为div还是会占满100%的width,但是发现没有。Div竟然老老实实的该是多长就是多长。也许这就是float的特性,把块级元素默认占100%的特性消除掉了。这里也可以由有效果的。
这里还要说明一点,只要#wall_images_wrap的width比两个div理论上的两倍多就可以了,多多少无所谓,你用scroll试一下就知道了。
分享到:
相关推荐
在Unity游戏引擎中,跑马灯效果是一种常见的UI动态效果,通常用于滚动显示文本或图像。这个效果在很多游戏和应用中都能见到,比如显示排行榜、公告或者新闻更新。本教程将详细介绍如何使用C#脚本来实现这一效果,并...
**jQuery跑马灯效果**是一种常见的网页动态展示技术,它通过自动循环滚动或切换内容,如图片、文字或链接,来吸引用户注意力并提供信息。在网页设计中,这种效果通常用于广告展示、新闻滚动或者产品展示等场景。在本...
jQuery无缝滚动跑马灯效果是一种常见的网页动态展示技术,它利用JavaScript库jQuery的高效特性,为网站添加一种吸引用户注意力的视觉效果。这种效果通常应用于新闻更新、广告展示或者产品介绍等区域,使得信息能够以...
在Delphi中实现透明跑马灯效果涉及到图形用户界面(GUI)编程,特别是与控件、事件处理和自定义绘图相关的技术。跑马灯效果通常是指文本或图像在界面上按照某种方式循环滚动,而透明则涉及到控件的背景处理和颜色...
这里,我们通过`setSelected(true)`方法,使`TextView`在初始化时就拥有焦点,从而启动跑马灯效果。 另外,需要注意的是,跑马灯效果可能不会立即生效,因为系统需要等待一定时间(默认1.5秒)来判断文本是否超过了...
跑马灯效果是一种常见的网页动态展示方式,常用于新闻标题滚动、广告轮播等场景。在JavaScript中实现跑马灯,主要涉及到定时器、数组、DOM操作和CSS样式控制等技术。下面我们将深入探讨如何使用JavaScript来实现这种...
在Android开发中,"跑马灯效果的图片变换"是一种常见的动画效果,它通常用于创建引人注目的视觉展示,比如广告轮播、通知提示或者界面装饰等。这种效果通过连续切换图片,使得图片看起来像在移动,形成一种动态流动...
在前端开发中,跑马灯效果是一种常见的动态展示方式,常用于新闻滚动、广告轮播等场景。在HTML5时代,`<marquee>`标签曾是实现这种效果的简便手段,但由于它缺乏语义化、性能不佳且不支持现代Web标准,逐渐被淘汰。...
JQuery脚本则负责监听页面加载事件,然后执行跑马灯的初始化和动画效果。 `images`文件夹可能包含了跑马灯中需要用到的图片资源,如轮播的背景图或者图标。在实现跑马灯效果时,如果内容包含图片,我们需要确保图片...
跑马灯效果是一种常见的UI动画,常用于展示滚动文本或图片,给用户带来动态视觉体验。在Android开发中,可以通过自定义View来实现这一效果。本文将深入探讨如何利用自定义View来创建炫酷的跑马灯效果,并讨论图片...
在微信小程序中实现跑马灯效果,是一种常见的动态展示文本信息的方式,通常用于滚动显示公告、广告等。跑马灯效果使得文字或图片能够在有限的空间内循环滚动,从而吸引用户的注意力。本文将深入探讨如何使用微信小...
标题中的“DSP跑马灯奇数”可能指的是一个特定的设计,它可能强调了在跑马灯效果中奇数位置的LED灯的特殊处理或模式。 跑马灯效果通常涉及到一串LED灯按照一定的顺序依次点亮或熄灭,创造出一种光点移动的视觉效果...
本文将深入探讨如何利用自定义ViewGroup来实现一个独特的“竖直跑马灯”效果,这种效果常见于各种信息展示或广告轮播场景,使得内容能沿着垂直方向循环滚动。首先,我们来理解一下跑马灯的基本原理。 跑马灯效果,...
在网页设计领域,跑马灯效果是一种常见的动态展示方式,常被用于突出显示重要信息、广告或滚动新闻等,为静态页面增添动感与活力。本文将深入探讨如何利用HTML和CSS实现跑马灯无缝滚动,并通过具体的代码示例进行...
在Android开发中,实现垂直轮播(跑马灯效果)是一种常见的需求,尤其适用于新闻标题、广告展示等场景。这种效果通常是指内容在垂直方向上不断滚动,形成一种连续不间断的展示方式。以下是对该主题的详细解释: 一...
4. **初始化**:在页面加载完成后,调用初始化函数,启动跑马灯效果。这可以通过`window.onload`事件或者现代浏览器的`DOMContentLoaded`事件来实现。 5. **优化**:为了提高性能和用户体验,可以考虑使用...
代码使用了`window.onload`事件,确保在页面加载完毕后执行跑马灯效果的初始化。在初始化阶段,我们检查了文本内容的宽度是否已经超出了包裹器的宽度,如果超出则开始滚动,否则不执行滚动。 核心的滚动逻辑是通过`...
跑马灯,也被称为流水灯,是电子工程和嵌入式系统中常见的一种显示效果,通常用于指示或装饰目的。跑马灯效果可以通过各种编程技术和硬件实现,下面将详细介绍跑马灯的几种实现方式,以及涉及到的相关技术。 一、...
**jQuery跑马灯效果详解与插件封装** 在网页设计中,跑马灯(Marquee)效果是一种常见的滚动展示信息的方式,它可以让文字或图片在有限的空间内循环滚动,增加视觉吸引力。jQuery作为一款强大的JavaScript库,提供...
在这个实验中,我们将重点讨论如何通过编程实现GPIO口的配置,以控制LED灯的顺序闪烁,从而形成跑马灯的效果。 首先,我们需要了解GPIO口。GPIO(General-Purpose Input/Output)是微控制器上用于输入和输出的一组...