网站首页轮番图的后台管理

   

     如下图,很多CMS的首页都会有实时更新的轮番图的需求:

               

    最近在做一个CMS的过程中,就遇到了这样的需求。

    之前曾经做过一个校园网站的项目(自己做着玩玩),但前台的轮番图是写死在页面上的,即:      

<span style="font-family:SimSun;font-size:18px;"><div>
<span style="white-space:pre">	</span><ul>
<span style="white-space:pre">		</span><li><a href="#">
                    <img src="images/Index/show/01.jpg" alt="学校正门" /></a></li>
                <li><a href="#">
                    <img src="images/Index/show/02.jpg" alt="学校操场" /></a></li>
                <li><a href="#">
                    <img src="images/Index/show/03.jpg" alt="建工学院古建筑模型展" /></a></li>
                <li><a href="#">
                    <img src="images/Index/show/04.jpg" alt="舞蹈学院毕业生" /></a></li>           
<span style="white-space:pre">	</span></ul>
</div></span>

    但是在实际项目中肯定是要做活的,即能够在后台管理,动态修改首页显示图片与链接地址。

        

    这里仅和大家分享思路。

        

    比如需求是这样的:首页轮番显示的图片都是新闻中的图片,点击图片跳转到相应的新闻内容页面,所以后台可以设置每个新闻是否在首页显示图片,如果显示的话,则选择这条新闻在首页所显示的图片(每条新闻中可能有多张图片),选择后,更新数据库;当然还可以取消在首页显示。

    数据库中,新闻表主要字段为:                 

NewsIdNewsTitleNewsContentIsShowImageUrlIsEnabled


    NewsContent为新闻内容,是经过富文本编辑器编辑后,以html形式存储的(其中会包含新闻中的图片路径),IsShow表示是否在首页显示(“是”或“否”),ImageUrl表示如果在首页显示的话,所显示图片的路径。

        

    先说取消新闻在首页显示:

    取消在首页显示很简单,直接更新数据库字段IsShow为 “否”,因为首页加载时,只会查询IsShow字段为 “是” 的新闻。

    再说设置某条新闻在首页显示:

    如果要设置某条新闻的图片在首页显示,则需要先查出来此新闻内容中都包含哪些图片(只需要获取它们的路径就行),用正则在新闻内容中获取这些图片路径的的核心代码如下(C#实现方式):

        

<span style="white-space:pre">	</span>#region InterceptImagesUrl-从HTML格式的新闻内容中获取图片路径-胡玉洋
        /// <summary>
        /// 从HTML格式的新闻内容中获取图片路径
        /// </summary>
        /// <param name="content">新闻内容</param>
        /// <returns>List<String>类型</returns>
        List<String> InterceptImagesUrl(string content)
        {
            Regex r;
            Match m;
            int i = 0;
            List<String> imageUrlList = new List<string>();
            string imageUrl = "";
            r = new Regex("src\\s*=\\s*(?:\"(?<1>[^\"]*)\"|(?<1>\\S+))", RegexOptions.IgnoreCase | RegexOptions.Compiled);
            for (m = r.Match(content); m.Success; m = m.NextMatch())
            {
                imageUrl = m.Groups[1].Value;
                i++;
                imageUrlList.Add(imageUrl);
            }
            return imageUrlList;
        }
 <span style="white-space:pre">	</span>#endregion

         

    此函数最终会根据新闻内容截取出所有新闻中的图片地址集合,然后只需要将这些图片显示出来,选择一张,更新到数据库中ImageUrl字段并更新IsShow为 “是” 即可。

    最后,设置显示与取消显示都能是实现了,在首页显示当然也就好办了。

    查询数据库中在首页显示(IsShow字段为 “是” )的新闻,在首页显示时,在.net环境下如果用的.aspx方式,可以用C#语法遍历显示,也可以用repeater等;如果用的MVC,可以用razor语法进行遍历显示。在jsp环境下,可以用java语法遍历,也可以用jstl标签等方式。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 37
    评论
制作轮番可以通过 HTML 和 CSS 实现。下面是一个简单的例子: 首先,我们需要一个包含轮番的 HTML 结构,如下所示: ```html <div class="slideshow"> <img src="image1.jpg" alt="Image 1"> <img src="image2.jpg" alt="Image 2"> <img src="image3.jpg" alt="Image 3"> </div> ``` 接下来,我们可以使用 CSS 来设置轮番的样式: ```css .slideshow { position: relative; width: 100%; height: 500px; overflow: hidden; } .slideshow img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; transition: opacity 1s ease-in-out; } .slideshow img:first-child { opacity: 1; } .slideshow img.active { opacity: 1; } ``` 在上面的 CSS 中,我们将轮番容器设置为相对定位,并使用 overflow: hidden 隐藏超出容器的像。我们还将轮番像设置为绝对定位,以便我们可以在容器内放置它们,并使用 opacity 属性将它们设置为不可见。 接下来,我们使用 CSS 过渡将轮番像的不透明度从 0 到 1 进行动画处理。我们使用:first-child 选择器来确保第一张像可见,并使用 .active 类来设置当前活动像的不透明度。 最后,我们可以使用 JavaScript 来切换轮番: ```javascript var images = document.querySelectorAll('.slideshow img'); var current = 0; function nextImage() { images[current].className = ''; current = (current + 1) % images.length; images[current].className = 'active'; } setInterval(nextImage, 5000); ``` 在上面的 JavaScript 中,我们使用 querySelectorAll() 方法来获取所有轮番像,并使用一个计数器变量来跟踪当前像的索引。我们定义一个 nextImage() 函数来将当前像的类名设置为空,并将当前索引值递增。我们还将下一个像的类名设置为“active”,使其变得可见。 最后,我们使用 setInterval() 方法来定期调用 nextImage() 函数,以便像可以轮番显示。在这个例子中,我们将轮番更改为每 5 秒钟切换一次。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值