JS实现标题动态居中

  • 文档创建者:axing
  • 编辑次数:10次
  • 最近更新:Kevin-s 于 2019-11-26
  • 1. 概述

    1.1 问题描述

    场景描述:在某些制作宽报表时,报表的宽度远超过了页面的宽度,这时就出现了横向的滚动条,如果我们设置报表标题为居中样式,很有可能看不到标题。

    这种情形下,我们希望报表的标题始终显示在屏幕的中间。

    如下所示:

    222

    1.2 实现思路

    在每次拖动滚动条时,获取滚动的距离,并结合页面上其他元素的宽度,重新定位标题的位置。

    2. 示例

    2.1 数据集

    新建模板-新建数据查询-添加 ds1 数据集-添加 SQL 语句如下为:SELECT * FROM S人员花名册 limit 20

    image.png

    2.2 模板设置

    将数据字段拖动到单元格中,并将第一行合并单元格,添加标题(用标签括起来):<span id="title_text">人员花名册</span> ,样式设置为居左,选择 HTML 方式显示内容。如下所示:

    image.png

    注:为了在 JS 获取标题的宽度,给标题添加 id 标志。

    2.3 添加事件

    选择模板>模板 Web 属性,在对应的预览方式下添加“加载结束事件”,如下图:

    image.png


    var a,b,c,d;
    function retitle(){
    a=$('.content-container').width();        //文档宽度
    b=$('.content-container').scrollLeft();   //横向滚动宽度
    c=$("#title_text").width();               //标题文字宽度
    d=$(".x-table").width();                  //表格宽度
    if(a>d){ //无滚动条时
         $("[id^=A1-]").css("text-align","center");
    }else{//有滚动条时
    $("[id^=A1-]").css("padding-left",(a/2+b-c/2));
    }
    }
    retitle();  //初始化居中
    $('.content-container').scroll(function(){  //拖动滚动条触发事件
    retitle();        
    })

    2.4 预览效果

    保存模板,选择填报预览,效果如下图所示:

    222

    注:经过测试,手机端和 H5 不支持该效果。

    3. 模板下载

    模板效果在线查看请点击:JS 实现标题动态居中.cpt

    已完成的模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填报预览JS实例\01-JS实现标题动态居中.cpt

    点击下载模板:01-JS实现标题动态居中.cpt


    附件列表


    主题: 二次开发
    • 有帮助
    • 没帮助
    • 只是浏览