如何将不同的css文件提供给不同的ajax页面?

时间:2012-02-28 18:43:45

标签: css jquery jquery-mobile

在jQuery Mobile中,创建一个包含所有页面的文件。如果用户选择页面,则ajax只会加载与该页面相关的元素。

我理解这一点,但不确定如果你想要一些例外,你会如何为这些页面提供CSS?

我有两种样式,一种用于菜单页面(深色主题),然后是浅色主题用于任何其他页面。

什么是最适合每种风格的方式?

澄清一下,由于jQuery Mobile确实错综复杂的“swatch”主题,因此为每个页面设置例外是不切实际的,只为每个页面提供不同的CSS文件会更有意义。

3 个答案:

答案 0 :(得分:1)

你可以征服这个解决方案:https://stackoverflow.com/a/7349521/737023 - 这不是你想要的,但是让我们说你的主题1是使用swatch a,b,c,d,e - 创建你的第二个主题并使用样本f,g,h,i,j(可能需要连接两个CSS并进行一些替换?) - 然后使用此解决方案将所有的a交换为f,b转换为g等等...当然这只会支持我猜5组5个色板?

只是不要使用AJAX加载,data-ajax =“false”如果您的网站的单独部分需要新主题,请确保所有链接都不使用AJAX并且只需在头部包含新的CSS

如果你真的想要花哨,你需要更多的主题,据我所知,我认为没有漂亮的解决方案,如果你在你的div中包含你的CSS [data-role =“page”]标签这将被AJAX加载拉入并初始化工作。

如果您正在谈论在每个页面上为a,b,c ......等值设置不同的themeroller样本,我认为如果没有真正丑陋的话,这是不可能的。 jQM只加载<head>一次,后续页面通过AJAX加载。

即使您在这些页面中包含CSS,您也无法摆脱原始的CSS类。那么你需要提取出你需要的样式,将它添加到每个页面的唯一类中,并使用!important标志来覆盖jQM的样式。

jQM还使用data-theme =“x”来进行DOM操作,包装内容等等,你需要做很多工作来检查所有元素,看看你需要覆盖哪些类/样式。但我怀疑它是可能的 - 你甚至可能需要通过JS处理一些事情,e.g. find a <ul data-role="listview" class="myCustomClass"> and add your custom classes to dynamically generated DOM

答案 1 :(得分:1)

只需在每个页面中添加所需的CSS标记即可。例如,您可以更改特定页面的主题或仅更改某些特定的CSS规则:

主题覆盖 -

<div data-role="page" data-theme="e"> ... </div>

每个页面都可以有不同的data-theme属性(每个小部件也可以拥有自己的data-theme属性。)

CSS覆盖 -

/*this adds 50px of padding to the `data-role="content"` element in the `#my-page-id` pseudo-page*/
#my-page-id .ui-content {
    padding : 50px;
}

您可以定位具有此类ID属性的任何单个页面(您也可以使用方括号选择其他属性:[data-myAttribute="myValue"] { ... })。

我建议只添加一些覆盖菜单页面样式的CSS规则。

答案 2 :(得分:1)

我最近处理了很多CSS主题。这是我正在使用的方法。基本主题a,b,c,d,我大部分都是单独留下的 - 除了C&amp;我把剩下的都剥掉了。 (您可以将这些覆盖并用自己的外观覆盖黑暗主题)或者只创建一个F主题并使用它。

我目前在我们的应用程序中使用了最多S的主题。它运作良好,易于管理。这与你提到的a-bove非常相似。我在需要时调用了我需要的主题,它似乎运行得很好。

当我需要使用新的基础时,我将复制我现有的A,B,C中的一个,并根据需要更改和扩展css。这解决了使用类似主题名称的页面可能遇到的重叠问题。我会采用这种方法,所以我不重叠,并且很难调试主题。

我正在传递的所有信息都带有大约3个月的日常工作经验,使用JQM主题&amp; CSS。

值得关注的事项:

  • 在firefox或Chrome上使用Firebug - 它可以节省您数小时的头痛。
  • 使用类重叠 - 避免使用它们 - JQm渲染的层次和深度都很多,你可能需要花费几天的时间来处理bug。
  • 尝试覆盖基本主题需要!在某些属性中很重要
  • 认真考虑一下你是否真的需要一个新的主题,或者只是构建一小组类,并使用你的主题作为布局,结构的基础(例如你可能只想改变1种颜色)
  • 在新生成的动态页面上,我只会在您需要时加载您需要的主题,或者在加载另一个页面后预先获取它。这将有助于将加载时间保持在最低限度
  • 请务必压缩主题和自定义主题
  • 我分成以下内容(structure.css,themes.css,custom.css(这包含我的自定义主题以及我的覆盖,(additional.css - 理想情况下,只应在需要时才加载
  • 确定您是否需要全新的主题,或者只是将内嵌样式放在页面文档中。您从主题添加的任何额外代码只是额外的代码和额外的加载时间,因此请注意添加主题可以通过相当多的代码行增加您的css大小。