Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to style menu button and menu items

I tried to change styles in menu button. I could change menu button style but not its menu item. No matter what i try menu item inside menu-button remains unchanged.

.menu-button {
 -fx-background-color:black;
}

.menu-button .label {
 -fx-background-color:black; }

Output looks like this

Now how can i change color that is left out??

like image 900
Vinod CG Avatar asked Sep 06 '12 11:09

Vinod CG


People also ask

How do I style a menu in WordPress?

Head over to Appearance » Menus page in your WordPress admin and click on the Screen Options button. Once you have checked that box, you will see that an additional field is added when you go to edit each individual menu item. Now you can use this CSS class in your stylesheet to add your custom CSS.

What is a button menu?

A menu button is a menu item that displays a word or phrase that the user can click to initiate an operation. You can specify the label for the button in the Menu Editor using the Property Inspector.

How do I highlight menu items in WordPress?

Step 1 – From the WordPress dashboard navigate to Appearance > Menus. Step 2 – Click on Screen Options and tick the CSS Classes checkbox. Step 3 – Click on the menu item that needs to be highlighted. Step 4 – Add CSS class to the menu item and save the changes in the menu.


2 Answers

MenuButton uses Menu internally and has a similar API. In such way that MenuButton contains MenuItems list just like Menu. So I think you need to try to play with .menu, .menu-button and .menu-item CSS selectors in caspian.css. More specifically with .menu-item.

EDIT: It seems you need to change the .context-menu too, because the popped up menu of the menuButton is ContextMenu.

.menu-item .label {
    -fx-text-fill: white;
}

.menu-item:focused {
     -fx-background-color: darkgray;
}

.menu-item:focused .label {
    -fx-text-fill: blue;
}

.context-menu {
    -fx-skin: "com.sun.javafx.scene.control.skin.ContextMenuSkin";
    -fx-background-color: black;
    -fx-background-insets: 0, 1, 2;
    -fx-background-radius: 0 6 6 6, 0 5 5 5, 0 4 4 4;
/*    -fx-padding: 0.666667em 0.083333em 0.666667em 0.083333em;  8 1 8 1 */
    -fx-padding: 0.333333em 0.083333em 0.666667em 0.083333em; /* 4 1 8 1 */
}
like image 180
Uluk Biy Avatar answered Sep 18 '22 16:09

Uluk Biy


This has also been asked here and here, so I decided to write a CSS template for styling menu bars.

Using this CSS template is a very easy way to style a MenuBar, its top-level MenuButton entries, and each MenuButton's MenuItem children, i.e, "the whole menu bar".

The only thing that has to be done is to adjust four variables according to one's needs:

  • -fx-my-menu-color: The menu bar's default background color (i.e., when item is not hovered / selected)
  • -fx-my-menu-color-highlighted: An item's background color if it is hovered / selected.
  • -fx-my-menu-font-color: The menu bar's default font color (i.e., when item is not hovered / selected)
  • -fx-my-menu-font-color-highlighted: An item's font color if it is hovered / selected.

The complete CSS file is commented to explain each defined rule:

/* VARIABLE DEFINITIONS: Only these 4 variables have to be adjusted, the rest is copy-paste */
* {
    -fx-my-menu-color: #263238;                  /* Change according to your needs */
    -fx-my-menu-color-highlighted: #455a64;      /* Change according to your needs */
    -fx-my-menu-font-color: #FFFFFF;             /* Change according to your needs */
    -fx-my-menu-font-color-highlighted: #FFFFFF; /* Change according to your needs */
}

/* MENU BAR + Top-level MENU BUTTONS */
/*** The menu bar itself ***/    
.menu-bar {
    -fx-background-color: -fx-my-menu-color;
}

/*** Top-level menu itself (not selected / hovered) ***/
.menu-bar > .container > .menu-button {
    -fx-background-color: -fx-my-menu-color;
}

/*** Top-level menu's label (not selected / hovered) ***/
.menu-bar > .container > .menu-button > .label {
    -fx-text-fill: -fx-my-menu-font-color;
}

/*** Top-level menu's label (disabled) ***/
.menu-bar > .container > .menu-button > .label:disabled {
    -fx-opacity: 1.0;
}

/*** Top-level menu itself (selected / hovered) ***/
.menu-bar > .container > .menu-button:hover,
.menu-bar > .container > .menu-button:focused,
.menu-bar > .container > .menu-button:showing {
    -fx-background-color: -fx-my-menu-color-highlighted;
}

/*** Top-level menu's label (selected / hovered) ***/
.menu-bar > .container > .menu-button:hover > .label,
.menu-bar > .container > .menu-button:focused > .label,
.menu-bar > .container > .menu-button:showing > .label {
    -fx-text-fill: -fx-my-menu-font-color-highlighted;
}

/* MENU ITEM (children of a MENU BUTTON) */
/*** The item itself (not hovered / focused) ***/    
.menu-item {
    -fx-background-color: -fx-my-menu-color; 
}

/*** The item's label (not hovered / focused) ***/   
.menu-item .label {
    -fx-text-fill: -fx-my-menu-font-color;
}

/*** The item's label (disabled) ***/   
.menu-item .label:disabled {
    -fx-opacity: 1.0;
}    

/*** The item itself (hovered / focused) ***/    
.menu-item:focused, .menu-item:hovered {
    -fx-background-color: -fx-my-menu-color-highlighted; 
}

/*** The item's label (hovered / focused) ***/  
.menu-item:focused .label, .menu-item:hovered .label {
    -fx-text-fill: -fx-my-menu-font-color-highlighted;
}

/* CONTEXT MENU */
/*** The context menu that contains a menu's menu items ***/  
.context-menu {
    -fx-background-color: -fx-my-menu-color; 
}
like image 29
Markus Weninger Avatar answered Sep 17 '22 16:09

Markus Weninger