css 点击显示并移动元素,再次点击移回元素并消失

点击前

点击一次 先显示出来,并移动到左侧

再次点击,再移动回来,并消失

整体代码如下:

js 复制代码
<template>
  <div id="myElement" class="box" @click="click_me">
    点击我
  </div>
  <div class="sub" :class="{'move-left': moveLeft, 'move-right': moveRight, 'hidden': isHidden}">
  </div>
</template>

<script setup>
import { ref } from "vue";

const moveLeft = ref(false);
const moveRight = ref(false);
const isHidden = ref(true); // 初始状态为隐藏

const click_me = () => {
  if (isHidden.value && !moveLeft.value && !moveRight.value) {
    // 第一次点击:显示并向左移动
    isHidden.value = false;
    setTimeout(() => {
      moveLeft.value = true;
    }, 50);
  } else if (moveLeft.value && !moveRight.value) {
    // 第二次点击:向右移动回来
    moveLeft.value = false;
    moveRight.value = true;

    // 等待移动完成后消失
    setTimeout(() => {
      isHidden.value = true;
      moveRight.value = false;
    }, 500);
  }
};
</script>

<style scoped>
.box {
  position: fixed;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 100px;
  height: 100px;
  overflow: hidden;
  text-align: center;
  background-color: pink;
  cursor: pointer;
}

.sub {
  position: fixed;
  top: 100px;
  left: calc(50% - 100px); /* 初始居中位置 */
  width: 200px;
  height: 200px;
  background-color: skyblue;
  transition: left 0.5s ease, opacity 0.3s ease, visibility 0.3s ease;
}

.move-left {
  left: calc(50% - 400px); /* 向左移动300px:从 50%-100px 到 50%-400px */
}

.move-right {
  left: calc(50% - 100px); /* 向右移动回初始居中位置 */
}

.hidden {
  opacity: 0;
  visibility: hidden;
}
</style>
相关推荐
Agent世界1 小时前
用 CDP 做发布自动化:四道机器闸门与产物验收
前端·javascript
FungLeo1 小时前
成为全栈·Vue 管理后台篇·编辑器图片上传:从文件选择到文章附件关联
前端·vue.js·编辑器·markdown·文件上传·formdata·附件管理
总要学点什么1 小时前
第104篇:三维特效-流动墙体效果——让贴图沿墙流动,它却只肯走一条对角线
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
某哈压力大1 小时前
SSH 突然 Connection reset?不是密钥坏了,是 OpenSSL 把 sshd 干趴了
前端·node.js·命令行
程序员大阳1 小时前
副队长ES6+教程(3)--解构赋值
前端·javascript·es6·赋值·解构
神膘护体小月半2 小时前
css - 元素背景图由 hover 触发,初次加载时闪动的解决办法
前端·javascript·css
程序员大阳2 小时前
副队长ES6+教程(2)--let 与 const
前端·javascript·es6·const·let·var
deli0072 小时前
写满 200GB 后 SSD 为什么掉到 95MB/s?SLC 缓存模型实测
前端
曦樂~3 小时前
【Web Development】03JavaScript 基础和事件
开发语言·前端·javascript
deli0073 小时前
HTTPS 的锁是怎么挂上的?TLS 1.3 握手 6 步实测
前端