JavaFX CSS能否同时使用innershadow与dropshadow阴影效果?
JavaFX按钮同时实现内阴影和外阴影的正确写法
内阴影(innershadow)和外阴影(dropshadow)并不互斥,你遇到的问题是写法错误导致的:
两种错误写法的问题
- 第二种写法重复声明
-fx-effect属性,CSS中重复的属性会直接覆盖之前的声明,所以只会显示最后一个阴影效果,这是CSS的基础规则。 - 第一种写法用逗号分隔多个效果,但JavaFX的CSS中效果是从左到右依次叠加应用:第一个效果先作用在元素上,第二个效果会作用在第一个效果的输出结果上。你先加内阴影再加外阴影时,外阴影会覆盖内阴影的视觉表现,导致内阴影看不到。
正确写法
调整效果顺序,先加外阴影,再加内阴影,这样外阴影作用在元素外部,内阴影作用在元素本身内容上,两者就能同时显示:
-fx-effect: dropshadow(three-pass-box, rgb(0,0,0), 5, 0, 0, 5), innershadow(three-pass-box, rgb(220,220,220), 2, 0, 0, 1);
另外可以适当调整内阴影的参数(比如颜色、模糊半径)让效果更明显,避免因为参数太淡导致看不到内阴影。
内容的提问来源于stack exchange,提问作者Pyxel
相关产品推荐
相关产品推荐

