按钮切换添加动画效果

添加按钮切换时过渡动画以及鼠标按下的一个动画效果,让系统不在单调,直接展示代码

以下代码纯属个人记录笔记,更多动画效果参考这个链接:动画效果链接

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <div id="Btn0" onclick="btnClick(0)" class="pitchBtn">按钮1</div>
  <div id="Btn1" onclick="btnClick(1)" class="noPitch">按钮2</div>
</body>
<script>
  btnClick(0);
  function btnClick(id) {
    console.log(id)
    var list = [
      { 'Btn': 'Btn0' },
      { 'Btn': 'Btn1' },
    ]

    for (var i in list) {
      if (i == id) {
        document.getElementById(list[i].Btn).style.background = "#FD9800";
      }
      else {
        document.getElementById(list[i].Btn).style.background = "#021943";
      }
    }
  }

</script>
<style>
  /* 按钮选中样式 */
  .pitchBtn {
    width: 124px;
    height: 34px;
    background: #fd9800;
    border: 1px solid #877751;
    border-radius: 17px;
    text-align: center;
    color: #FFF;
    line-height: 34px;
    box-shadow: 1px 1px 8px 0px rgba(9, 30, 68, 0.43);
    transition: all .4s ease;
  }

  /* 按钮未选择样式 */
  .noPitch {
    width: 124px;
    height: 34px;
    background: #021943;
    text-align: center;
    color: #FFF;
    border: 1px solid #877751;
    border-radius: 17px;
    line-height: 34px;
    margin-top: 7px;
    box-shadow: 1px 1px 8px 0px rgba(9, 30, 68, 0.43);
    transition: all .4s ease;
  }

  /* 按下动画 */
  .pitchBtn:active {
    transform: translateY(5px);
    transition: 200ms;
  }

  .noPitch:active {
    transform: translateY(5px);
    transition: 200ms;
  }
</style>

</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以利用JAVAFX的ToggleButton和StackPane来实现切换两种动画效果的功能。 首先,需要创建两种不同的动画效果。这里以平移和旋转为例: ```java // 创建平移动画 TranslateTransition translate = new TranslateTransition(Duration.seconds(1)); translate.setByX(100); // 创建旋转动画 RotateTransition rotate = new RotateTransition(Duration.seconds(1)); rotate.setByAngle(360); ``` 然后,创建一个StackPane来承载动画效果,同时创建一个ToggleButton: ```java StackPane root = new StackPane(); ToggleButton toggleButton = new ToggleButton("切换动画"); toggleButton.setSelected(true); ``` 接下来,将两种动画效果分别添加到StackPane中: ```java root.getChildren().addAll(translateNode, rotateNode); ``` 最后,通过ToggleButton的selectedProperty()方法来监听切换按钮的状态,根据不同的状态来切换不同的动画效果: ```java toggleButton.selectedProperty().addListener((observable, oldValue, newValue) -> { if (newValue) { root.getChildren().setAll(translateNode, rotateNode); } else { root.getChildren().setAll(rotateNode, translateNode); } }); ``` 完整的代码示例: ```java import javafx.animation.RotateTransition; import javafx.animation.TranslateTransition; import javafx.application.Application; import javafx.scene.Node; import javafx.scene.Scene; import javafx.scene.control.ToggleButton; import javafx.scene.layout.StackPane; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; import javafx.util.Duration; public class AnimationToggle extends Application { @Override public void start(Stage primaryStage) throws Exception { // 创建平移动画 TranslateTransition translate = new TranslateTransition(Duration.seconds(1)); translate.setByX(100); // 创建旋转动画 RotateTransition rotate = new RotateTransition(Duration.seconds(1)); rotate.setByAngle(360); // 创建两个矩形节点 Rectangle translateNode = new Rectangle(50, 50, 50, 50); translateNode.setStyle("-fx-fill: red;"); Rectangle rotateNode = new Rectangle(150, 50, 50, 50); rotateNode.setStyle("-fx-fill: blue;"); // 创建根节点和切换按钮 StackPane root = new StackPane(); ToggleButton toggleButton = new ToggleButton("切换动画"); toggleButton.setSelected(true); // 将节点添加到根节点中 root.getChildren().addAll(translateNode, rotateNode); // 监听切换按钮的状态,根据状态切换动画效果 toggleButton.selectedProperty().addListener((observable, oldValue, newValue) -> { if (newValue) { root.getChildren().setAll(translateNode, rotateNode); } else { root.getChildren().setAll(rotateNode, translateNode); } }); // 创建场景并显示 Scene scene = new Scene(new StackPane(root, toggleButton), 300, 100); primaryStage.setScene(scene); primaryStage.show(); // 开始动画 translate.setNode(translateNode); rotate.setNode(rotateNode); translate.setAutoReverse(true); translate.setCycleCount(TranslateTransition.INDEFINITE); rotate.setAutoReverse(true); rotate.setCycleCount(RotateTransition.INDEFINITE); translate.play(); rotate.play(); } public static void main(String[] args) { launch(args); } } ``` 这样,当点击切换按钮时,就可以切换不同的动画效果了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顾北...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值