滚动的公告栏

作者博客:漂小泊的博客
作者主站:小泊随記
原文地址:文章地址

因为心无所恃,所以才随遇而安​​。​

标签源码

小泊的介绍页里,引入了一个"标签图",大家可以使用手机或者计算机的截屏功能,随机的将当前屏幕截下,最终标签图中显示的内容,就是你给小泊贴的"标签"啦。

其实呢,实现的原理很简单。

首先小泊先展示一下,小泊截到的标签():

image

源码(这里加入了鼠标悬停的效果):

-js原生实现
-demo

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>label</title>
    <style>
        /*清除系统默认样式*/
        * {
            margin: 0;
            padding: 0;
        }
        /*清除列表的默认样式*/
        ul {
            list-style: none;
        }

        #wrap {
            width: 100px;
            border: 1px solid #ababab;
            margin: 50px auto;
            /*设置元素居中*/
            text-align: center;
        }

        #title {
            height: 25px;
            overflow: hidden;
            border-bottom: 1px solid #f05e6f;
            color: red;
        }

        #content {
            height: 18px;
            width: 70px;
            margin-left: 15px;
            overflow: hidden;
            font-weight: bold;
        }
        /*设置li元素高度,以撑开ul容器,使其大于外部容器*/
        #wrap ul li {
            height: 20px;
        }


    </style>
</head>
<body>
<div  id="wrap">
    <h4 id="title">选标签</h4>
    <div  id="content">
        <ul id="box1">
            <li>中央空调</li>
            <li>知心朋友</li>
            <li>有为青年</li>
            <li>啰里啰嗦</li>
            <li>技术宅</li>
            <li>IT民工</li>
            <li>文艺青年</li>
            <li>潜力股</li>
            <li>月光族</li>
            <li>自由主义</li>
            <li>90后</li>
            <li>水瓶座</li>
            <li>起床困难</li>
            <li>工作狂</li>
            <li>浪漫温柔</li>
            <li>谦虚</li>
            <li>矫情</li>
            <li>暖男</li>
            <li>领导者</li>
            <li>单身狗</li>
            <li>阳光向上</li>
            <li>沉稳</li>
            <li>老男人</li>
        </ul>
        <ul id="box2"></ul>
    </div>
</div>
</body>
<script type="text/javascript">

    var content = document.getElementById('content');
    var box1 = document.getElementById('box1');
    var box2 = document.getElementById('box2');
    //数值越大,滚动越缓慢
    var speed = 1;
    content.scrollTop = 0;
    //box2获取box1内容
    box2.innerHTML = box1.innerHTML;

    function scrollUp(){
        if(content.scrollTop >= box1.scrollHeight) {
            content.scrollTop = 0;
        }else{
            content.scrollTop ++;
        }
    }
    //创建定时器,实现滚动效果
    var textScroll = setInterval("scrollUp()",speed);
    //当鼠标移上消除定时器
    content.onmouseover = function(){
        clearInterval(textScroll);
    };
    //当鼠标离开打开定时器
    content.onmouseout = function(){
        textScroll = setInterval("scrollUp()",speed);
    };
</script>

</html>

词条:
scrollTop
scrollHeight

Ps:
有专业工具的朋友,可以将以上代码直接复制进html文件中,运行即可。
如果没有专业工具的朋友,可以将以上代码直接复制进文本.txt文件中,然后将.txt改为.html双击打开即可。

这样的话,我们就实现了"文字循环滚动"的效果。

其实很多小的功能,通过CSS样式和布局,就会有一些令人意想不到的效果发生。在这里呢,小泊也建议朋友们,在日常的学习或者工作中,可以通过小的点去辐射大的面,尤其是在技术的学习过程中尤为重要。在前端中,往往看上去很多炫酷、很复杂的效果都是由很多小的简单的部分组合而成,可能在某些情况下通过插件或者框架来实现会更简单,但不可否认的是,插件或者框架也是集合了基础的功能组合而成,本质是没有改变的。

就像小泊之前维护服务器和软件也是如此。

那么接下来,我们一起来丰富一下这个"滚动窗口",实现我们日常生活中在网页中常见的"滚动的公告栏"效果。

滚动的公告栏

-js原生实现
-demo

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>label</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul {
            list-style: none;
        }
        a {
            color: #333;
            font-size: 12px;
            text-decoration: none;
        }
        a:hover {
            color: #ff0000;
        }
        #warp {
            width: 399px;
            border: 2px solid red;
            border-radius: 10px;
            box-shadow: 10px 10px 5px yellow;
            margin: 50px auto;
        }

        #title {
            height: 62px;
            overflow: hidden;
            font-size: 26px;
            line-height: 62px;
            /*border-bottom: 2px solid red;*/
            color: red;
            text-align: center;
        }
        #title a {
            position: absolute;
            color: #fff;
            font-size: 12px;
            line-height: 24px;
        }
        #content {
            height: 144px;
            width: 335px;
            margin-left: 25px;
            /*margin-top: 5px;*/
            overflow: hidden;
        }
        #warp ul li {
            height: 24px;
        }
        #warp ul li a {
            float: left;
            text-indent: 15px;
        }
        #warp ul li span {
            float: right;
            color: #999;
        }

    </style>
</head>
<body>
<div  id="warp">
    <h3 id="title">公告栏</h3>
    <div  id="content">
        <ul id="list1">
            <li><a href="#">1.你吃了吗?吃什么了?</a><span>2018-01-18</span></li>
            <li><a href="#">2.你睡了吗?怎么还不睡啊?</a><span>2018-01-18</span></li>
            <li><a href="#">3.你瞅啥呢?不要老瞅我!</a><span>2018-01-18</span></li>
            <li><a href="#">4.天亮了,你怎么还没睡啊!</a><span>2018-01-18</span></li>
            <li><a href="#">5.听说今天不上课,你起那么早干啥啊!</a><span>2018-01-18</span></li>
            <li><a href="#">6.你又出去玩了啊,我也想出去玩!</a><span>2018-01-18</span></li>
            <li><a href="#">7.天冷了,多穿点衣服呀,别冻着了!</a><span>2018-01-18</span></li>
            <li><a href="#">8.你听得啥歌?我也想听哎~</a><span>2018-01-18</span></li>
            <li><a href="#" style="font-weight: bold;color:red">9.我是最后一条了,可是我还会回来的</a><span>2018-01-18</span></li>
        </ul>
        <ul id="list2"></ul>
    </div>
</div>
</body>
<script type="text/javascript">

    var content = document.getElementById('content');
    var list1 = document.getElementById('list1');
    var list2 = document.getElementById('list2');
    var speed = 50;
    content.scrollTop = 0;
    list2.innerHTML = list1.innerHTML;
    function scrollUp(){
        if(content.scrollTop >= list1.scrollHeight) {
            content.scrollTop = 0;
        }else{
            content.scrollTop ++;
        }
    }
    var textScroll = setInterval("scrollUp()",speed);
    content.onmouseover = function(){
        clearInterval(textScroll);
    }
    content.onmouseout = function(){
        textScroll = setInterval("scrollUp()",speed);
    }
</script>

</html>

词条:
box-shadow
text-indent

Ps:
打开方式如上。

这样我们就实现了"滚动公告栏"的功能。

联系小泊

email:643209899@qq.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容