如何将自定义 css 工具提示添加到 extjs 列标题?

Posted

技术标签:

【中文标题】如何将自定义 css 工具提示添加到 extjs 列标题?【英文标题】:How add custom css tooltip to extjs column header? 【发布时间】:2012-02-23 17:02:07 【问题描述】:

我是 extjs 的新手。我正在尝试添加工具提示,最好是基于列标题的 css。 如何使用 css 将自定义工具提示添加到 extjs 列标题? extjs 默认方式似乎不起作用。

我尝试对标题使用自定义 css 工具提示,但它不起作用.. 在 extjs 中是否有可能在标题上自定义工具提示?

谢谢

var listView = Ext.create('Ext.grid.Panel', 
      store: mystore,
      multiSelect: true,
      splitHandleWidth: 10,
      columnLines: true,
       viewConfig: 
        emptyText: 'No images to display'
      ,

      renderTo: containerEl,

      columns: [
        text: '<a href="#" class="ttip" title="'+m.i18n.getString('notif.class')+'">'+e.i18n.getString('notif.class')+'<span class="classic">'+e.i18n.getString('notif.class')+'</span></a>',
        flex: 10,
        dataIndex: 'CName',
        tooltip: 'C Name Some name test',

        renderer: function (value, metaData, record) 
                    return Ext.String.format('<a href="#" class="tooltip2" >0<span>0</span></a>', value);
                
      , 
        text: getString('notif.instance'),
        flex: 30,
        dataIndex: 'IDisplayName',
        renderer: function (value, metaData, record) 


   return Ext.String.format('<a href="#" class="tooltip2" >0<span>0</span></a>', value);
                
      ]
    );

CSS

     .ttip 
            border-bottom: 0px dotted #000000; color: #000000; outline: none;
    /*        cursor: help; */
             text-decoration: none;
            position: relative;
        
        .ttip span 
            margin-left: -999em;
            position: absolute;text-decoration: none;
        
        .ttip:hover,.ttip:active, .ttip:link,.ttip:visitedtext-decoration: none; color:#000;
        .ttip:hover span 
            border-radius: 5px 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; 
            box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 5px 5px rgba(0, 0, 0, 0.1); -moz-box-shadow: 5px 5px rgba(0, 0, 0, 0.1);
            font-family: Calibri, Tahoma, Geneva, sans-serif;
            position: absolute; left: 1em; top: 2em; z-index: 9999999;
            margin-left: 0; width: 250px; 
        
        .ttip:hover img 
            border: 0; margin: -10px 0 0 -55px;
            float: left; position: absolute;
        
        .ttip:hover em 
            font-family: Candara, Tahoma, Geneva, sans-serif; font-size: 1.2em; font-weight: bold;
            display: block; padding: 0.2em 0 0.6em 0;
        
        .classic  padding: 0.8em 1em; 
        .custom  padding: 0.5em 0.8em 0.8em 2em; 
        * html a:hover  background: transparent; 
        .classic background: #FFFFAA; border: 1px solid #FFAD33; 
        .critical  background: #FFCCAA; border: 1px solid #FF3334;    
        .help  background: #9FDAEE; border: 1px solid #2BB0D7;    
        .info  background: #9FDAEE; border: 1px solid #2BB0D7;    
        .warning  background: #FFFFAA; border: 1px solid #FFAD33; 

​

【问题讨论】:

下面的答案有帮助吗? 【参考方案1】:

所以,我注意到您为您的商店提供了代码,但您问的是关于网格的问题,它是一个不同的组件。确保您了解网格和商店之间的关系。您还应该使用模型定义而不是在商店中配置字段 - 这是旧的做事方式。

话虽如此,我确实为您的问题想出了一个有趣的解决方案:如何在列标题中添加工具提示。

列定义采用“文本”属性,该属性被转换为列标题。文档声明允许使用 HTML 标签,这意味着您可以通过这种方式设置工具提示:

text: '<span data-qtip="hello">First Name</span>'

data-qtip 提供工具提示的文本。 请注意,工具提示必须通过以下方式启用: Ext.QuickTips.init(); 在您的应用中。

要尝试其他事情,请使用文档实时预览功能快速测试不同的配置并查看它们的实际效果。 http://docs.sencha.com/ext-js/4-0/#!/api/Ext.grid.column.Column

更新:工具提示属性现在(从 4.1x 开始)可用于列配置。使用它。

【讨论】:

@DimitryB - 谢谢。我更新了我的代码,并包含了custome css ..是否有可能使自定义css工具提示工作?我需要改变什么才能让它工作.. 哦,我明白你在说什么。您不想将 ExtJS 工具提示用于弹出窗口 - 您想使用自己的。我猜你所拥有的应该可以工作,只需要确保你的 CSS 选择器是正确的。 css 在 extjs 外部时似乎很拖拉。但在 extjs 内部时似乎不拖 okr 例如,您在 extjs 外部使用 css 尝试此代码它会工作.. 但不能在 extjs 内部 '+e.i18n.getString('notif.class')+''+e.i18n.getString('notif.class')+'.. 知道为什么自定义 css 在 extjs 中没有 twokr 或者可以在 extjs 中制作精美的工具提示吗? @DmitryB 谢谢!这绝对有帮助,但请注意,使用此解决方案用户必须将鼠标直接悬停在文本上(即,在文本旁边但仍在列标题单元格中还不够好)。使用 DIV 而不是 SPAN 为我解决了这个问题。 太好了,是的,您可以提供任何您想要的 HTML,只是要小心排序、拖动等工件,这些工件会将 css 类添加到标题中。【参考方案2】:

在你的列的定义中你只需要设置工具提示参数,像这样:

var cm =  new Ext.grid.ColumnModel([
  
    xtype: 'column',
    header: '<img src="../images/lupa.png">',
    align: 'center',
    dataIndex: 'consultar',
    width: 50,
    sortable: true,
    menuDisabled: true,
    tooltip: 'Permisos para consultar, si lo desactiva el usuario no verá el modulo'
  
 ]);

希望对你有帮助

【讨论】:

是否有其他使用 CSS 添加的方法?这似乎不起作用 ExtJS4 的列上没有工具提示配置 您应该始终指定您正在谈论的 ExtJS 版本 @dbrin 是的,有:link。如果它不起作用,请确保初始化 QuickTips 管理器。 当时不可用:请参阅 Ext 4.07 的来源docs.sencha.com/extjs/4.0.7/source/…

以上是关于如何将自定义 css 工具提示添加到 extjs 列标题?的主要内容,如果未能解决你的问题,请参考以下文章

将自定义组件添加到 EXTJS 图表

使用 R 和 ggplot2 语法将自定义工具提示添加到 plotly

如何将自定义按钮添加到调用 JavaScript 函数的工具栏?

将工具提示添加到 extjs 网格以显示有关该行的完整信息

如何在 extjs3.4 中更改工具提示背景

如何将自定义 WCF 协议通道添加到现有绑定