【问题标题】:jqGrid font settings overwritten by jQueryUI tab settingsjqGrid 字体设置被 jQueryUI 选项卡设置覆盖
【发布时间】:2012-06-07 16:10:45
【问题描述】:

我遇到了与this one 类似的问题。我正在使用 jQueryUI 选项卡来控制页面上的内容,并且在某些选项卡上我使用 jqGrid 来显示信息。 jqGrid 的字体设置被选项卡定义的较大字体覆盖。该示例中的解决方案是将选项卡定义为ui-jqgrid 类。但是除了选项卡下的网格之外,他们什么都没有,因此该解决方案有效。如何仅覆盖网格的字体设置并允许 jqGrid 使用自己的字体设置,但保留选项卡下其他所有内容的设置?

你可以在这里看到它覆盖了我的 jqGrid 字体大小。我也尝试使用百分比,但它也忽略了这一点。

更新 - CSS 计算样式:

【问题讨论】:

    标签: jquery css jquery-ui jqgrid


    【解决方案1】:

    有很多方法可以解决这个问题。如何确认所描述的here 工作方式,但它使其他文本具有您不想要的11px 字体。

    字体的问题在于 CSS 设置(见here

    .ui-widget .ui-widget { font-size: 1em; }
    

    因为 Tab 和 jqGrid 都有 "ui-widget" 类,所以设置会覆盖 jqGrid.css 中的字体设置(参见 here):

    .ui-jqgrid {position: relative; font-size:11px;}
    

    结果你得到了the demo上的图片:

    jQuery UI 使用em 样式。例如,您可以在页面的 CSS 中包含以下内容

    html, body { font-size: 75% }
    

    (请参阅here)。在这种情况下,您将得到以下结果(请参阅the demo):

    顺便说一下 jqGrid 的文档间接建议(参见 HTML 页面示例here)。我了解您可能不希望更改页面上其他字体的大小。

    如果你可以使用例子

    .ui-jqgrid { font-size: 11px !important; }
    

    或者以下

    .ui-jqgrid .ui-jqgrid-view { font-size: 11px; }
    .ui-jqgrid .ui-jqgrid-pager { font-size: 11px; }
    .ui-jqgrid .loading { font-size: 11px; }
    

    您可以在the next demo 上看到该方法的结果:

    如果我理解你是正确的,这就是你想要的结果。

    更新:如果您使用 Chrome 的开发者工具,您可以看到与在 IE 开发者工具中相同的信息来定位覆盖 jqGrid 的font-size 的 CSS 样式。例如在my first demo 你会看到

    因此,如果在您的应用程序中我的上述建议不起作用,您应该检查应用于任何网格单元格的有效 CSS 样式并找出哪个 CSS 设置覆盖了 jqGrid 的 CSS。

    更新 2:从您通过电子邮件发送给我的链接中,我可以看出问题存在,因为您忘记在 <html> 之前包含任何 <!DOCTYPE html ...> 声明。因此,Web 浏览器将您的页面解释为在 HTML 3.2 发布之前(1997 年之前)编写的非常老式的 HTML。它就是这样命名的Quirks mode

    要解决问题,您应该在<html> 之前添加类似的行

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    

    或者只是

    <!DOCTYPE html>
    

    (HTML5 标准)。此外,我强烈建议您在一些 HTML valirador 中验证您的 HTML 页面,例如 http://validator.w3.org/。您当前的代码是 HTML 和 XHTML 之间的混合,这不好。

    更新 2:我另外发布了the feature request,我建议在document.documentMode &lt;= 5 的情况下停止创建jqGrid,所以在使用Quirks mode 的情况下(没有&lt;!DOCTYPE html ...&gt;)。

    更新 3:根据问题/答案,我向 trirand 发布了两条建议:thisthis。这两个建议都被接受并且现在是 jqGrid 的一部分(参见herehere)。所以下个版本的用户应该不会有上述问题。

    【讨论】:

    • 这正是我想要的。但是当我尝试.ui-jqgrid {position: relative; font-size:11px !important;} 时,它只是改变了标题的字体大小。表中的数据以及导航栏保持很大。我尝试了您的替代建议,但似乎也不起作用。
    • @Dave:原因可能只是您使用了一个CSS。只需按 F12 打开 IE 开发人员工具。选择“HTML”选项卡。按刷新 (F5) 加载页面数据。按 Ctrl-B 或使用查找菜单,然后选择网格的任何单元格。在右侧滚动样式并找到 font-size 仍然处于活动状态的 CSS 样式。这是在您的情况下造成问题的CSS。在我的演示中,它将是 .ui-widget .ui-widget { font-size: 1em; },就像我在回答中描述的那样。
    • 我明白了。我似乎无法弄清楚如何仅为 jqGrid 覆盖该值,但为整个 jqGrid 覆盖。您关于使用 !important 的答案在您的第三个示例中非常完美,这就是我正在寻找的。但是当我这样做时,它只会使用正确的字体大小格式化表格的标题。
    • 为了澄清,我想知道如何修改 jqGrid 以始终覆盖其他字体大小设置,无论它们来自何处。
    • @Dave: !important 是设置。你试过.ui-jqgrid { font-size: 11px !important; }吗?当然,如果您有另一个 CSS 样式也将被应用并且具有!important,那么您仍然需要分析问题。在我看来,您应该以任何方式分析问题。它不是那么复杂,我一步一步地描述了你需要做什么。因为它非常简单,您可以将重现问题的 URL 发送给我,或者通过电子邮件将重现问题的项目发送给我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    相关资源
    最近更新 更多