滚动公告

前端时间有个做也卖弄滚动公告的需求,开始偷懒百度了下,发现大多数人都是用 marquee 标签来实现,的确,用这个标签,简单,快捷,不用操心,直接在marquee标签里边塞你要滚动的内容就可以了,

但是在测浏览器兼容性的时候,就发现了一个小小的瑕疵,

1、在滚动的时候,速度是没有办法控制成一样的。

2、marquee实现的滚动条是在每次滚动完了之后在再循环,无法做到首部和尾部滚动链接,中间没有空位

所以完了之后,想用js 来重写一次公告,大体实现了下,做起来还是不难的。

用marquee表签来写可以用其属性来控制:主要属性有一下:

  • direction:表示滚动方向, 值可以是left,right,up,down,默认为left
  • behavior表示滚动的方式,值可以是scroll(连续滚动)slide(滑动一次)alternate(往返滚动)
  • loop表示循环的次数,值是正整数,默认为无限循环
  • scrollamount表示运动速度,值是正整数,默认为6
  • scrolldelay表示停顿时间,值是正整数,默认为0,单位似乎是毫秒
  • align表示元素的垂直对齐方式,值可以是top,middle,bottom,默认为middle
  • bgcolor表示运动区域的背景色,值是16进制的RGB颜色,默认为白色
  • height、width表示运动区域的高度和宽度,值是正整数(单位是像素)或百分数,默认width=100% height为标签内元素的高度
  • hspace、vspace表示元素到区域边界的水平距离和垂直距离,值是正整数,单位是像素。
  • onmouseover=this.stop() onmouseout=this.start()表示当鼠标以上区域的时候滚动停止,当鼠标移开的时候又继续滚动。

一个简单的滚动条测试:

<div style="width:500px">
        <marquee>
            <span>测试1</span>
            <span>测试2</span>
            <span>测试3</span>
            <span>测试4</span>
            <span>测试5</span>
        </marquee>
    </div>

再给一个原生js写的例子:

<div id="container">
        <div class="tipsContainer" >
            <div id="tipscontainer1" class="fl">
                <div class="tips ellipsis">测试1</div>
                <div class="tips ellipsis">测试2</div>
                <div class="tips ellipsis">测试3</div>
                <div class="tips ellipsis">测试4</div>
                <div class="tips ellipsis">测试5</div>
            </div>
            <div id="tipscontainer2" class="fl">

            </div>
        </div>
    </div>
<style type="text/css">
    #container{
        width:500px;
        height:50px;
        background: #ccc;
        overflow-x: scroll;
        overflow-y: hidden;
    }
    .tipsContainer{
        width:1000px;
        height: 50px;
        float:left;
    }
    .tips{
        width:100px;
        float:left;
        background: #eee;
        height:50px;
        line-height: 50px;
    }
    .ellipsis{
        white-space:nowrap;/*强制文本在一行内显示*/
        text-overflow:ellipsis; /*溢出省略号,支持ie、safari(webkit)*/
        -o-text-overflow:ellipsis; /*溢出省略号,支持opera*/
        overflow:hidden;/*溢出隐藏*/
        -moz-binding:url(‘ellipsis.xml#ellipsis‘);
    }
    .fl{
        float:left;
    }

</style>

js部分代码:

 1  <script type="text/javascript">
 2         window.onload=function(){
 3             document.getElementById("tipscontainer2").innerHTML=document.getElementById("tipscontainer1").innerHTML;
 4             start=setInterval(moveLeft,10);
 5             var container=document.getElementById("container");
 6             container.onmouseover=function(){
 7                 clearInterval(start);
 8             }
 9             container.onmouseout=function(){
10                 start=setInterval(moveLeft,10);
11             }
12         }
13         function moveLeft(){
14             var scrollLeft=document.getElementById(‘container‘).scrollLeft++;
15             if(scrollLeft==document.getElementById("container").offsetWidth){
16                 document.getElementById(‘container‘).scrollLeft=0;
17             }
18         }
19
20     </script>

主要思路就是:

在一个大的div#container里 加一个小的div#tipscontainer1,复制div#tipscontainer1的内容到div#tipscontainer2中,

让div#container的width固定,也就是滚动区域是固定宽度的,让其中的内容overflow:hidden,这样就可以隐藏滚动区域的内容,

另外在一个小的div里放一个大的div在里面,就会有溢出,我们将溢出内容设置成hidden,这样在container中就会出现滚动条,我们通过js控制滚动条让其滚动,这样就可以实现一行公告内容的滚动了。

左右滚动我们设置scrollLeft属性

上线滚动我们设置scrolltop属性

然后用setInteval来定时运行,就可以动态滚动公告内容啦~

 

时间: 2024-08-13 23:51:04

滚动公告的相关文章

利用10行js代码实现上下滚动公告效果

解决方案 1. HTML 先建一个div层作为公告显示区,里面包裹一个公告列表(ul); <div class="notice"> <ul> <li>第1条公告第1条公告第1条公告第1条公告第1条公告第1条公告</li> <li>第2条公告第2条公告第2条公告第2条公告第2条公告第2条公告</li> <li>第3条公告第3条公告第3条公告第3条公告第3条公告第3条公告</li> <li

网站滚动公告信息的实现方式

一.可以直接使用marquee标签来实现. 1.align设定标签内容的对齐方式 absbottom:绝对底部对齐(与g.p等字母的最下端对齐) absmiddle:绝对中央对齐 baseline:底线对齐 bottom:底部对齐(默认) left:左对齐 middle:中间对齐 right:右对齐 texttop:顶线对齐 top:顶部对齐2.direction设定活动字幕的滚动方向,默认为left up:向上 down:向下 left:向左 right:向右3.behavior设定滚动的方式

jquery滚动公告demo

实现公告栏目循环的滚动效果,直接放代码: <!doctype html> <!--jq110--> <html> </body> </html> <head> <meta charset="utf-8"> <title>tianzi code</title> <script type="text/javascript" src="jquery-

一个标签实现滚动

标签  marqueen  无需js 达到滚动效果 <!-- 滚动公告 -->   <marquee direction="up" behavior="scroll" scrollamount="1" scrolldelay="0" loop="-1" hspace="10" vspace="10">   我是公告....我是公告....我是公

微信送礼物投票系统的详细解答

就目前来说,市场上的第三方微信投票系统种类很多,功能不一鱼龙混杂,功能很多的情况下有一些细微的区别,对于用户来说选择有一定的难度,下面我就来简单介绍一下微信投票活动大家经常关注的16个问题,对此进行详细的解答:只要能同时包括这个些功能的系统,通常都能够很好的满足活动举办方的要求,活动良好的用户体验! Q1.该投票系统可以设置每个微信用户投票次数吗? A3:可以的,可以设置一次活动每个微信用户的投票数,可设置每个微信用户每天的投票数!并且取消关注自动减掉此用户投票的所有记录,做到了自动减票的功能.

网页首页制作总结(div+css+javascript)

一.对网页整体布局,分几个版块 如下图所示: 确定布局之后,规划好网页,准备素材,按照标准文档流的顺序,从上到下,从左到右写入代码. 以上图为例,分为两部分,红色的主体部分和页脚.主体部分分割为头部.左边和右边三部分.对于每一个div和其css样式,写明注释,标明开始和结束!可参照论文标题的分级,1→1.1→1.1.1. div为块状元素,占据一行,若不进行浮动,脱离标准文档流,左边部分和右边部分不可能并排:既然有浮动,就必须清除浮动来关闭"开关",否则会影响后面内容的排版.清除浮动有

一些关于jquery ui 的 跟插件开发

/* * @author wangshiping461 * @date 2015-10-13 * [滚动公告类型插件] * @param:Object * noticeGroup:[{ * notice_content:"http://www.baidu.com", * notice_name:"测试1", * message:"公告测试一", * type:"2", 1为滚动,2为直接弹出 * openType:"

Dreamweaver架设网站终极教程

转自:http://www.cnblogs.com/loveme513/archive/2006/04/03/365969.html 一.定义站点 1. 在任意一个根目录下创建好一个文件夹(我们这里假设为E盘),如取名为MyWeb.***备注:网站中所用的文件都要用英文名.2.打开Dreamweaver,选择“站点—新建站点”,打开对话框.在站点名称中输入网站的名称(可用中文),在本地根文件夹中选择刚才创建的文件夹(E:web).然后确定即可.***备注:再次打开Dreamweaver,会自动找

jQuery实现无缝滚动条

很多时候只看别人的代码时很难看懂.有很多原因,有时候可能是没有耐心,这时候看一下实现的原理就很快明白代码的内容,所以要加些注释,让自己让别人都能看明白:有的时候就是因为知识有限就是不懂,哪怕代码很简单,这就需要多学习了 <!DOCTYPE html> <html> <head> <title>滚动公告</title> <meta charset="utf-8"/> <style type="text