原文:http://fxexperience.com/2011/12/styling-fx-buttons-with-css/
A number of people have asked me recently can I create this look or that look using CSS in JavaFX. Or they have said that you could never do that! So I thought I would do a little experiment and try recreating a bunch of common button styles purely using CSS. So without further ado, here is the result:
All of these are mostly created with multiple background fill layers each with a gradient. Then there is a little font tweaking and some subtle effects. So for example all you need to make a JavaFX button look like a Windows 7 button is:
#windows7-default{
-fx-background-color:
#3c7fb1,
linear-gradient(#fafdfe,#e8f5fc),
linear-gradient(#eaf6fd0%,#d9f0fc49%,#bee6fd50%,#a7d9f5100%);
-fx-background-insets:0,1,2;
-fx-background-radius:3,2,1;
-fx-padding:330330;
-fx-text-fill:black;
-fx-font-size:14px;
}
I have not included styles for the pressed, over and focused states of all the buttons but they can all be easily added in a similar way. I have included a over and pressed state for the “Record Sales” button as a example.
You can download the complete Netbeans project with all the code here.
ButtonStyles.zip
Here is the CSS code of all the button styles you see above:
#green{
-fx-background-color:
linear-gradient(#f0ff35,#a9ff00),
radial-gradient(center50%-40%, radius200%,#b8ee3645%,#80c80050%);
-fx-background-radius:6,5;
-fx-background-insets:0,1;
-fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.4) ,5,0.0,0,1);
-fx-text-fill:#395306;
}
#round-red{
-fx-background-color: linear-gradient(#ff5400,#be1d00);
-fx-background-radius:30;
-fx-background-insets:0;
-fx-text-fill:white;
}
#bevel-grey {
-fx-background-color:
linear-gradient(#f2f2f2,#d6d6d6),
linear-gradient(#fcfcfc0%,#d9d9d920%,#d6d6d6100%),
linear-gradient(#dddddd0%,#f6f6f650%);
-fx-background-radius:8,7,6;
-fx-background-insets:0,1,2;
-fx-text-fill:black;
-fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) ,5,0.0,0,1);
}
#glass-grey {
-fx-background-color:
#c3c4c4,
linear-gradient(#d6d6d650%,white100%),
radial-gradient(center50%-40%, radius200%,#e6e6e645%, rgba(230,230,230,0)50%);
-fx-background-radius:30;
-fx-background-insets:0,1,1;
-fx-text-fill:black;
-fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) ,3,0.0,0,1);
}
#shiny-orange {
-fx-background-color:
linear-gradient(#ffd65b,#e68400),
linear-gradient(#ffef84,#f2ba44),
linear-gradient(#ffea6a,#efaa22),
linear-gradient(#ffe6570%,#f8c20250%,#eea10b100%),
linear-gradient(from0%0%to15%50%, rgba(255,255,255,0.9), rgba(255,255,255,0));
-fx-background-radius:30;
-fx-background-insets:0,1,2,3,0;
-fx-text-fill:#654b00;
-fx-font-weight:bold;
-fx-font-size:14px;
-fx-padding:10201020;
}
#dark-blue{
-fx-background-color:
#090a0c,
linear-gradient(#38424b0%,#1f242920%,#191d22100%),
linear-gradient(#20262b,#191d22),
radial-gradient(center50%0%, radius100%, rgba(114,131,148,0.9), rgba(255,255,255,0));
-fx-background-radius:5,4,3,5;
-fx-background-insets:0,1,2,0;
-fx-text-fill:white;
-fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) ,5,0.0,0,1);
-fx-font-family:"Arial";
-fx-text-fill: linear-gradient(white,#d0d0d0);
-fx-font-size:12px;
-fx-padding:10201020;
}
#dark-blueText {
-fx-effect: dropshadow( one-pass-box , rgba(0,0,0,0.9) ,1,0.0,0,1);
}
#record-sales {
-fx-padding:8151515;
-fx-background-insets:0,0050,0060,0070;
-fx-background-radius:8;
-fx-background-color:
linear-gradient(from0%93%to0%100%,#a343130%,#903b12100%),
#9d4024,
#d86e3a,
radial-gradient(center50%50%, radius100%,#d86e3a,#c54e2c);
-fx-effect: dropshadow( gaussian , rgba(0,0,0,0.75) ,4,0,0,1);
-fx-font-weight:bold;
-fx-font-size:1.1em;
}
#record-sales:hover {
-fx-background-color:
linear-gradient(from0%93%to0%100%,#a343130%,#903b12100%),
#9d4024,
#d86e3a,
radial-gradient(center50%50%, radius100%,#ea7f4b,#c54e2c);
}
#record-sales:pressed {
-fx-padding:10151315;
-fx-background-insets:2000,2030,2040,2050;
}
#record-sales Text {
-fx-fill:white;
-fx-effect: dropshadow( gaussian ,#a30000,0,0,0,2);
}
#rich-blue{
-fx-background-color:
#000000,
linear-gradient(#7ebcea,#2f4b8f),
linear-gradient(#426ab7,#263e75),
linear-gradient(#395cab,#223768);
-fx-background-insets:0,1,2,3;
-fx-background-radius:3,2,2,2;
-fx-padding:12301230;
-fx-text-fill:white;
-fx-font-size:12px;
}
#rich-blueText {
-fx-effect: dropshadow( one-pass-box , rgba(0,0,0,0.8) ,0,0.0,0,1);
}
#big-yellow {
-fx-background-color:
#ecebe9,
rgba(0,0,0,0.05),
linear-gradient(#dcca8a,#c7a740),
linear-gradient(#f9f2d60%,#f4e5bc20%,#e6c75d80%,#e2c045100%),
linear-gradient(#f6ebbe,#e6c34d);
-fx-background-insets:0,9989,9,10,11;
-fx-background-radius:50;
-fx-padding:15301530;
-fx-font-family:"Helvetica";
-fx-font-size:18px;
-fx-text-fill:#311c09;
-fx-effect: innershadow( three-pass-box , rgba(0,0,0,0.1) ,2,0.0,0,1);
}
#big-yellow Text {
-fx-effect: dropshadow( one-pass-box , rgba(255,255,255,0.5) ,0,0.0,0,1);
}
#iphone-toolbar {
-fx-background-color: linear-gradient(#98a8bd0%,#8195af25%,#6d86a4100%);
}
#iphone {
-fx-background-color:
#a6b5c9,
linear-gradient(#3038420%,#3e557720%,#375074100%),
linear-gradient(#768aa50%,#849cbb5%,#5877a250%,#486a9a51%,#4a6c9b100%);
-fx-background-insets:00-10,0,1;
-fx-background-radius:5,5,4;
-fx-padding:730730;
-fx-text-fill:#242d35;
-fx-font-family:"Helvetica";
-fx-font-size:12px;
-fx-text-fill:white;
}
#iphone Text {
-fx-effect: dropshadow( one-pass-box , rgba(0,0,0,0.8) ,0,0.0,0,-1);
}
#ipad-dark-grey {
-fx-background-color:
linear-gradient(#6868680%,#23272325%,#37383775%,#757575100%),
linear-gradient(#020b02,#3a3a3a),
linear-gradient(#9d9e9d0%,#6b6a6b20%,#34353480%,#242424100%),
linear-gradient(#8a8a8a0%,#6b6a6b20%,#34353480%,#262626100%),
linear-gradient(#7777770%,#60606050%,#50525051%,#2a2b2a100%);
-fx-background-insets:0,1,4,5,6;
-fx-background-radius:9,8,5,4,3;
-fx-padding:15301530;
-fx-font-family:"Helvetica";
-fx-font-size:18px;
-fx-font-weight:bold;
-fx-text-fill:white;
-fx-effect: dropshadow( three-pass-box , rgba(255,255,255,0.2) ,1,0.0,0,1);
}
#ipad-dark-grey Text {
-fx-effect: dropshadow( one-pass-box ,black,0,0.0,0,-1);
}
#ipad-grey {
-fx-background-color:
linear-gradient(#6868680%,#23272325%,#37383775%,#757575100%),
linear-gradient(#020b02,#3a3a3a),
linear-gradient(#b9b9b90%,#c2c2c220%,#afafaf80%,#c8c8c8100%),
linear-gradient(#f5f5f50%,#dbdbdb50%,#cacaca51%,#d7d7d7100%);
-fx-background-insets:0,1,4,5;
-fx-background-radius:9,8,5,4;
-fx-padding:15301530;
-fx-font-family:"Helvetica";
-fx-font-size:18px;
-fx-font-weight:bold;
-fx-text-fill:#333333;
-fx-effect: dropshadow( three-pass-box , rgba(255,255,255,0.2) ,1,0.0,0,1);
}
#ipad-grey Text {
-fx-effect: dropshadow( one-pass-box ,white,0,0.0,0,1);
}
#lion-default{
-fx-background-color:
rgba(0,0,0,0.08),
linear-gradient(#5a61af,#51536d),
linear-gradient(#e4fbff0%,#cee6fb10%,#a5d3fb50%,#88c6fb51%,#d5faff100%);
-fx-background-insets:00-10,0,1;
-fx-background-radius:5,5,4;
-fx-padding:330330;
-fx-text-fill:#242d35;
-fx-font-size:14px;
}
#lion {
-fx-background-color:
rgba(0,0,0,0.08),
linear-gradient(#9a9a9a,#909090),
linear-gradient(white0%,#f3f3f350%,#ececec51%,#f2f2f2100%);
-fx-background-insets:00-10,0,1;
-fx-background-radius:5,5,4;
-fx-padding:330330;
-fx-text-fill:#242d35;
-fx-font-size:14px;
}
#windows7-default{
-fx-background-color:
#3c7fb1,
linear-gradient(#fafdfe,#e8f5fc),
linear-gradient(#eaf6fd0%,#d9f0fc49%,#bee6fd50%,#a7d9f5100%);
-fx-background-insets:0,1,2;
-fx-background-radius:3,2,1;
-fx-padding:330330;
-fx-text-fill:black;
-fx-font-size:14px;
}
#windows7{
-fx-background-color:
#707070,
linear-gradient(#fcfcfc,#f3f3f3),
linear-gradient(#f2f2f20%,#ebebeb49%,#dddddd50%,#cfcfcf100%);
-fx-background-insets:0,1,2;
-fx-background-radius:3,2,1;
-fx-padding:330330;
-fx-text-fill:black;
-fx-font-size:14px;
}