Jquery UI 菜单栏在 Cupertino 主题中显示白色文本

Posted

技术标签:

【中文标题】Jquery UI 菜单栏在 Cupertino 主题中显示白色文本【英文标题】:JqueryUI menubar shows white text in cupertino theme 【发布时间】:2013-11-09 13:46:05 【问题描述】:

我开始使用 Jquery UI。我特别喜欢 Cupertino 主题,我需要构建一个水平菜单。

我面临的第一个问题是菜单栏似乎不是 JqueryUI 的一部分(已删除或正在开发中?)所以我不得不将它添加到 jquery-ui.js 之上。

 <link rel="stylesheet" href="jquery-ui-1.10.3.custom\css\cupertino\jquery-ui-1.10.3.custom.min.css" />
  <link rel="stylesheet" href="css\jquery.ui.menubar.css" />

  <script src="jquery-ui-1.10.3.custom\js\jquery-1.9.1.js"></script>
  <script src="jquery-ui-1.10.3.custom\js\jquery-ui-1.10.3.custom.min.js"></script>
  <script src="\js\jquery.ui.menubar.js"></script>

似乎它与 JqueryUI 的其余部分不是 100% 兼容,因为子菜单在非常浅的背景上有白色文本。

问题:我是否需要手动修改li 元素的样式(除了我没有成功),还是在使用 JqueryUI+menubar 时出现概念上的错误? Live example

【问题讨论】:

【参考方案1】:

在 jquery.ui.menubar.js 中更改以下代码。无需进行任何 CSS 更改。

// line 386, from
.closest(this.options.items).removeClass("ui-state-active");
// to
.closest(this.options.items).removeClass("ui-widget-header");

// line 408, from
menuItem.addClass( "ui-state-active" );
// to
menuItem.addClass("ui-widget-header");
this.menuItems.children().addClass("ui-widget-header");

我用以下主题对此进行了测试:

    库比蒂诺 轻弹 青蛙 流畅度 开始 晴天 时髦的钱包

它适用于所有人。我使用 IE10(并在兼容模式下)和 Chrome 30.0.1599.101 对其进行了测试。

【讨论】:

【参考方案2】:

我找到了解决方案。白色来自jquery-ui-1.10.3.custom.css(cupertino 主题)的以下行 862 到 867

.ui-state-active a,
.ui-state-active a:link,
.ui-state-active a:visited 
    color: #ffffff;
    text-decoration: none;

现在,在menu() 中,.ui-state-active 被分配给顶部菜单的li 内的a 元素,而在menubar() 中,活动状态被分配给直接 li 元素导致 every a 元素具有白色文本。 (在 Cupertino 中,这使文本可读!!)

所以,为了解决这个问题,我们可以更改jquery.ui.menubar.js 中添加和删除上述类的两行:

// line 408, from
menuItem.addClass( "ui-state-active" );
// to
menuItem.children(":first").addClass( "ui-state-active" );

// line 386, from
.closest( this.options.items ).removeClass( "ui-state-active" );
// to
.closest( this.options.items ).children(":first").removeClass( "ui-state-active" );

我尝试在 google drive 中更新加载 js 的小提琴,但 jsfiddle 没有加载它。

【讨论】:

以上是关于Jquery UI 菜单栏在 Cupertino 主题中显示白色文本的主要内容,如果未能解决你的问题,请参考以下文章

Flutter-Cupertino风格UI-CupertinoTab

侧边栏在 Ipad 中没有显示

JQuery浮动菜单栏,滚动位置和延迟

Flutter 是不是会在 iOS 中自动显示 Cupertino UI,在 Android 中使用单一代码库显示 Material?

无法让 jQuery-ui 选择菜单呈现

Jquery ui 菜单问题