JS实现标题动态居中

  • 文档创建者:axing
  • 编辑次数:11次
  • 最近更新:Leo.Tsai 于 2020-06-02
  • 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

    JavaScript 代码如下:

    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

    注:不支持移动端。

    3. 模板下载

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

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

    附件列表


    主题: 二次开发
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!