您的位置: 首页 >日志>前端技术>详细内容

前端技术

首页弹窗打开内容页

来源:本站原创 发布时间:2023-03-20 11:03:02 浏览次数: 【字体:

在项目中遇到需要在首页弹出内容页效果需求,通过改标签形式比较麻烦(content字段也被限制),看产品是集成了layer.js,使用弹层来实现。

首先把需要弹出板块用到的标签,做一个调整,把<a href="#"> 的链接转存成data-href或者直接删除href="#"值,然后加载onclick="layOpen()",把原先的href="#"值加到括号里面,如下图:

1

基础布局页里面已经有layer.js,在首页只需要引入layer.js方法(以及基础参数配置):


<script>
    function layOpen(contentUrl)
        {
           layer.open({
             type: 2,  //选择类型2,弹出iframe层
             title: "弹出",  //弹出标题可自定义,也可取消
             shadeClose: true,  // 是否点击遮罩关闭
             closeBtn: 1,  //右上关闭按钮类型
             shade: 0.5, //遮罩层的透明度
             area: ['1240px', '90%'],  //弹出层的大小
             maxmin:true,  //是否显示全屏按钮
             content: contentUrl,  //传入值
            });
        }
</script>

这一步后,就可以点击标签标题链接,弹出完整内容页,但是会包含头尾和其它不需要部分内容。

下一步,通过传参,判断是首页还是频道进入的内容页,给修改成弹出的标签上加上参数值,例如:

4

这样首页点击弹出的iframe地址就是文章地址加?showheader=0这个路径。在内容页模板上,把header、footer等板块,用css默认隐藏,并增加正则传参。

<style>
    #footer,#header,.path { display:none;}
</style>
<script>
        var url = location.href;
        function queryURLParams(url) {
            let pattern = /(\w+)=(\w+)/ig;
            let parames = {};
            url.replace(pattern, ($, $1, $2) => {
                parames[$1] = $2;
            })
            return parames;
        }
        var flag = queryURLParams(url)["showheader"];
        if(flag && flag == 0){
            $("#header,.path,.userControl,.others,.commentForm,#footer").hide();
        }
        else {
            $("#header,.path,.userControl,.others,.commentForm,#footer").show();
        }
    </script>

内容地址没有带?showheader=0的情况下,正常显示头尾,首页效果如下,只显示对应的内容区块:

3




×

用户登录