`
maosuhan
  • 浏览: 111701 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

无初始空白的跑马灯效果

CSS 
阅读更多

 

本来想用 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实现简单跑马灯效果

    在Unity游戏引擎中,跑马灯效果是一种常见的UI动态效果,通常用于滚动显示文本或图像。这个效果在很多游戏和应用中都能见到,比如显示排行榜、公告或者新闻更新。本教程将详细介绍如何使用C#脚本来实现这一效果,并...

    Delphi实现透明跑马灯效果

    在Delphi中实现透明跑马灯效果涉及到图形用户界面(GUI)编程,特别是与控件、事件处理和自定义绘图相关的技术。跑马灯效果通常是指文本或图像在界面上按照某种方式循环滚动,而透明则涉及到控件的背景处理和颜色...

    Swift.跑马灯效果UIView

    Swift中的跑马灯效果通常指的是文字或图片在视图中循环滚动的现象,这种效果常见于广告栏或通知提示。在iOS开发中,我们可以自定义一个UIView子类来实现这一功能。这里,我们关注的文件是`MarqueeView.swift`,它...

    js实现上下滚动跑马灯效果

    在前端开发中,跑马灯效果是一种常见的动态展示方式,常用于新闻滚动、广告轮播等场景。在HTML5时代,`&lt;marquee&gt;`标签曾是实现这种效果的简便手段,但由于它缺乏语义化、性能不佳且不支持现代Web标准,逐渐被淘汰。...

    跑马灯效果JQUERY

    JQuery脚本则负责监听页面加载事件,然后执行跑马灯的初始化和动画效果。 `images`文件夹可能包含了跑马灯中需要用到的图片资源,如轮播的背景图或者图标。在实现跑马灯效果时,如果内容包含图片,我们需要确保图片...

    自定义View实现炫酷跑马灯效果

    跑马灯效果是一种常见的UI动画,常用于展示滚动文本或图片,给用户带来动态视觉体验。在Android开发中,可以通过自定义View来实现这一效果。本文将深入探讨如何利用自定义View来创建炫酷的跑马灯效果,并讨论图片...

    各种跑马灯效果(水平、垂直)

    - 水平跑马灯:文本从一侧滑出,到达另一侧后消失,然后从初始位置重新出现,形成连续的滚动效果。 - 垂直跑马灯:与水平类似,但文本沿垂直方向滚动。 - 双向跑马灯:文本同时在两个方向上滚动,增强视觉冲击力...

    JavaScript实现跑马灯效果

    在网页设计中,跑马灯(Carousel)效果是一种常见的动态展示元素,常用于轮播图片或文本,给用户带来生动的视觉体验。本文将深入探讨如何使用JavaScript来实现跑马灯效果。 首先,我们需要理解跑马灯的基本原理。...

    listview实现跑马灯效果

    跑马灯效果使得内容能够自动从一端滚动到另一端,然后无缝衔接回初始位置,给人一种连续循环的感觉,常用于新闻标题、广告轮播等场景。 首先,我们来理解ListView的基本概念。ListView是Android中的一个视图组件,...

    简单图片跑马灯效果

    在网页设计中,跑马灯效果是一种常见的动态展示方式,常用于新闻滚动、广告轮播等场景。本教程将深入讲解如何使用jQuery库来实现一个简单的图片跑马灯效果。 一、jQuery简介 jQuery是一个轻量级的JavaScript库,它...

    自定义View实现跑马灯效果

    本教程将聚焦于如何自定义一个View来实现跑马灯效果。跑马灯,也称为滚动文字或走马灯,常见于新闻标题的展示,文字会沿着一个方向连续滚动,给人一种动态视觉体验。 首先,我们需要创建一个新的Java类继承自`View`...

    自适应跑马灯效果

    跑马灯效果是一种常见的网页动态展示技术,常用于新闻滚动、公告显示等场景。这个“自适应跑马灯效果”是利用HTML和JavaScript实现的一种能够根据屏幕尺寸自适应的跑马灯解决方案。在这个名为"Web-Ticker-master"的...

    textview(跑马灯效果)文字长短不限循环播放

    而“不用获取焦点”则表明即使在不被选中或不是用户交互焦点的情况下,跑马灯效果仍然可以正常工作,这对于后台通知或无用户交互的界面特别有用。 总的来说,创建一个自定义的`CustomTextViewRun`类,重写`onDraw`...

    微信小程序实现跑马灯效果完整代码(附效果图).zip

    在微信小程序中实现跑马灯效果,是一种常见的动态展示文本信息的方式,通常用于滚动显示公告、广告等。跑马灯效果使得文字或图片能够在有限的空间内循环滚动,从而吸引用户的注意力。本文将深入探讨如何使用微信小...

    Android 自定义ViewGroup实现整个Item布局竖直跑马灯效果

    本文将深入探讨如何利用自定义ViewGroup来实现一个独特的“竖直跑马灯”效果,这种效果常见于各种信息展示或广告轮播场景,使得内容能沿着垂直方向循环滚动。首先,我们来理解一下跑马灯的基本原理。 跑马灯效果,...

    网页跑马灯效果将后缀改为Html即可

    根据给定的信息,本文将详细解释网页跑马灯效果实现的相关知识,并对代码进行解析。 ### 一、什么是跑马灯效果? 跑马灯效果是一种常见的网页特效,它通过不断滚动文字或图片来吸引用户的注意力。在早期网页设计中...

    28335跑马灯_28335跑马灯_28335_跑马灯DSP_f28335跑马灯_TMS320F28335_

    跑马灯是一种常见的电子显示效果,常用于LED灯带或显示屏上,呈现出连续滚动的视觉效果。在本项目中,我们将关注的是使用TMS320F28335 DSP(数字信号处理器)来实现跑马灯功能。TMS320F28335是德州仪器(TI)生产的...

    跑马灯效果

    4. **初始化**:在页面加载完成后,调用初始化函数,启动跑马灯效果。这可以通过`window.onload`事件或者现代浏览器的`DOMContentLoaded`事件来实现。 5. **优化**:为了提高性能和用户体验,可以考虑使用...

    DrawingVisual绘制跑马灯效果的简单实例

    在本文中,我们将深入探讨如何使用`DrawingVisual`在WPF(Windows Presentation Foundation)应用程序中实现跑马灯(Carousel)效果。跑马灯效果通常用于展示一系列内容,如图片或文字,它们会在指定的区域内循环...

    delphi 上下滚动效果(跑马灯)

    在Delphi编程环境中,"上下滚动效果(跑马灯)"是一种常见的动态显示信息的技术,它通常用于文本或图像的连续滚动展示,就像我们常见的LED显示屏那样。跑马灯效果能够在一个固定的空间内循环显示大量的信息,增加了...

Global site tag (gtag.js) - Google Analytics