How to apply multiple jQuery UI themes
Asked Answered
I

3

17

Does anyone have any techniques/tips/tricks to help me organize and implement multiple jQuery UI themes in one application?

I have resulted to using !important as it seems to be the surest way to force style overrides - but this method is not very desirable.

Iand answered 22/11, 2010 at 21:36 Comment(4)
Do you mean, switch style sheets completely or use bits and pieces at the same time from different sheets?Sarraceniaceous
I'm not quite sure what you want to do. Ideally you only need one theme, at least that's the idea behind it.Anglophobe
@ dpmguise: I mean mix them aka bits n pieces.Iand
@ daff: I understand the idea and benefit to the entire CSS framework. But I need more flexibility. I'd like to be able to change, for example, the color of a button... ideally in a spin-off theme like ui-button-2 or something... i dunno.Iand
P
31

Yes, but it depends on what you mean.

Let's say you want element A to be styled with Theme X, and element B with Theme Y. jQuery Theme Roller has this feature built in. When you go to download a theme (here), click Advanced Theme Settings on the right. Here, you can set the "CSS Scope". This will let you apply the jQuery UI classes (i.e. ui-corners-all, etc.) from a specific theme. Here is the description they give for this option:

This field allows you to specify a CSS scope to limit your theme to a particular portion of a page. This is helpful when using multiple themes on a page. If you don't provide a CSS scope, your theme will apply to all UI elements on a page.

In most situations, you won't need to specify a CSS scope. Please Note: If you provide a CSS scope, you will not get an example page included in your download.

You can also change the Theme Folder Name:

This field allows you to specify a name for the theme folder in your download. This is helpful if you plan to use multiple themes on a page. It defaults to "theme".

If, however, you want to create a brand new theme, borrowing bits and pieces from several themes, you have two options: edit the CSS and image files yourself (not recommended), or use the Theme Roller tool to create your own.

How to Use:

CSS Scope is just a CSS selector. Let's say that theme X should apply only to all elements with class aClass. In this case, your CSS Scope would be .aClass. So, if you want to add rounded corners from theme X to an element (assuming your CSS Scope has been set to .aClass), your HTML would like something like this:

<div class='ui-rounded-corners aClass'>
    Content    
</div>
Pages answered 22/11, 2010 at 21:44 Comment(2)
could you provide an example of how to use the scope? that explanation is good, but I'm more of a monkey see monkey do kinda guy.Iand
thank you for this wonderful answer. been trying to figure this one out for a while!!Iand
S
10

you will have some issues if you apply this technique to ui widgets that overlay and are appended to the body - dialog, datepicker, autocomplete....

in the case of autocomplete, you can do the following to get a parent element with the scoped class - adding the scopped class to the UL of the autocomplete itself is not enough.

jQuery('.autocomplete').autocomplete({
    source: function(request, response){
        {....}
    },
    create: function(event, ui) {
        jQuery('.ui-autocomplete').wrap('<span class="xxSCOPPEDCLASSxx"></span>');
    }
});
Sophrosyne answered 25/3, 2011 at 20:40 Comment(0)
N
5

searched for hours, and finally found the way to do it from the FilamentGroup, complete with tutorial and working examples.

Nodule answered 5/2, 2011 at 16:39 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.