zoukankan      html  css  js  c++  java
  • jQuery 实现列表自动滚动循环滚动显示新闻通知

    需求

    页面中一个小区域循环滚动展示通知(公告、新闻、活动、图片等),并且鼠标hover时停止滚动并提示,鼠标离开后,继续滚动。

    效果图

    https://www.iguopin.com/index.php?m=&c=index&a=index

    代码实现

    html

            <div id="news">
                <ul class="notices_box">
                    <li class="notice">
                        <a href="www.iguopin.com" target="_blank" title="1">1</a>
                    </li>
                    <li class="notice">
                        <a href="www.iguopin.com" target="_blank" title="2">2</a>
                    </li>
                    <li class="notice">
                        <a href="www.iguopin.com" target="_blank" title="3">3</a>
                    </li>
                </ul>
            </div>
    

    css

                #news {
                    height: 340px;
                    overflow: hidden;
                }
    
                .notices_box {
                    margin-left: 20px;
    
                    .notice {
                        margin-bottom: 8px;
                        list-style: disc;
                        font-size: 16px;
                        color: #e6a5ab;
    
                        a {
                            color: #000;
                            text-overflow: -o-ellipsis-lastline;
                            overflow: hidden;
                            text-overflow: ellipsis;
                            display: -webkit-box;
                            line-height: 1.2;
                            -webkit-line-clamp: 2;
                            line-clamp: 2;
                            -webkit-box-orient: vertical;
                            
                            &:hover {
                                color: #c90808;
                            }
                        }
                    }
                }
    

    JS

            $(function () {
                // 公告滚动
                var $this = $("#news");
                var scrollTimer;
                $this.hover(function () {
                    clearInterval(scrollTimer);
                }, function () {
                    scrollTimer = setInterval(function () {
                        scrollNews($this);
                    }, 2000);
                }).trigger("mouseleave");
            });
            // 公告滚动
            function scrollNews(obj) {
                var $self = obj.find("ul");
                var lineHeight = $self.find("li:first").height();
                $self.animate({
                    "marginTop": -lineHeight + 'px'
                }, 600, function () {
                    $self.css({
                        marginTop: 0
                    }).find("li:first").appendTo($self);
                })
            }
    

    总结

    主要是对hover、setInterval、clearInterval、animate这些方法以及marginTop属性(marginLeft、top、left等等)的理解和运用,需要注意的是,如果不加.trigger("mouseleave"),在网页初始化的时候列表不会滚动,还有appendTo能直接移动元素,就这些了。

  • 相关阅读:
    「POJ 2699」The Maximum Number of Strong Kings
    「HNOI 2013」切糕
    「PKUSC 2018」真实排名
    「国家集训队 2009」最大收益
    「TJOI2015」线性代数
    「BZOJ 3280」小R的烦恼
    「SDOI 2017」新生舞会
    「六省联考 2017」寿司餐厅
    「TJOI 2013」循环格
    「TJOI 2013」攻击装置
  • 原文地址:https://www.cnblogs.com/shellon/p/13365990.html
Copyright © 2011-2022 走看看