CSS怎么实现镜像效果?

news2024/9/21 0:39:30

实现镜像效果(包含动画)

镜像效果图

需求分析

  1. 创建一个可以接收任意内容的 Vue 组件,并在其下方显示该内容的镜像。
  2. 镜像效果应包括垂直翻转和渐变透明效果,以模拟真实的倒影。
  3. 支持动画效果,使内容和镜像同步运动。
  4. 组件应具有高可复用性,可以插入任意内容并生成相应的倒影。

实现思路

  1. 创建一个名为 ReflectionComponent 的 Vue 组件,使用插槽接收父组件传递的内容。
  2. 使用 CSS transform: scaleY(-1) 属性实现垂直镜像效果。
  3. 通过 mask-image-webkit-mask-image 属性实现渐变透明效果,使倒影更逼真。
  4. 使用 CSS 动画同步内容和镜像的运动效果。

ReflectionComponent.vue

首先创建一个 ReflectionComponent.vue 文件,作为反射组件。

<template>
  <div class="reflection-container">
    <div class="content">
      <slot></slot> <!-- 插槽用于接收父组件传递的内容 -->
    </div>
    <div class="reflection">
      <slot></slot> <!-- 插槽内容的镜像 -->
    </div>
  </div>
</template>

<script>
export default {
  name: "ReflectionComponent"
};
</script>

<style scoped>
.reflection-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  position: relative;
}
.content {
  position: relative;
}
.reflection {
  position: absolute;
  top: calc(100% + 10px); /* 将倒影定位在内容下方 */
  width: 100%;
  transform: scaleY(-1); /* 垂直镜像 */
  opacity: 0.5;
  mask-image: linear-gradient(to top, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%);
  -webkit-mask-image: linear-gradient(to top, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%);
}
</style>

App.vue

然后,在 App.vue 文件中使用 ReflectionComponent 组件。

<template>
  <div id="app">
    <reflection-component>
      <div class="moon"></div> <!-- 传递给反射组件的内容 -->
    </reflection-component>
  </div>
</template>

<script>
import ReflectionComponent from "./components/ReflectionComponent.vue"; // 导入反射组件

export default {
  name: "App",
  components: {
    ReflectionComponent
  }
};
</script>

<style>
body {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  margin: 0;
  background-color: #282c34;
}
.moon {
  width: 150px;
  height: 150px;
  background-color: #ffdd00;
  border-radius: 50%;
  position: relative;
}
.moon::before {
  content: '';
  position: absolute;
  top: -20px;
  left: 30%;
  width: 150px;
  height: 150px;
  background-color: #282c34;
  border-radius: 50%;
  transform: rotate(180deg);
}
@keyframes jump {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-20px);
  }
}
.moon {
  animation: jump 2s infinite;
}
</style>

main.js

最后,确保在 main.js 中正确引入 Vue 和 App.vue

import Vue from "vue";
import App from "./App.vue";

Vue.config.productionTip = false;

new Vue({
  render: h => h(App),
}).$mount("#app");

项目结构

确保项目结构类似如下:

your-project/
├── public/
│   └── index.html
├── src/
│   ├── components/
│   │   └── ReflectionComponent.vue
│   ├── App.vue
│   ├── main.js
├── package.json
└── vue.config.js

效果预览

使用上述代码结构和内容,你可以在浏览器中预览到如下效果:

  • 黄色的圆形月亮随着动画上下跳动。
  • 月亮下方显示出其倒影,并随着月亮同步跳动。
  • 倒影具有渐变透明效果,越靠近原始内容越清晰,越远离越模糊。

通过这种方式,你可以实现一个高可复用性的 Vue 组件,能够接收任意内容并生成相应的倒影效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1943832.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis从入门到超神-(四)Redis实现分布式锁原理

引言 什么是分布式锁&#xff1f; 分布式锁是分布式系统中用于控制多个进程或线程对共享资源的访问的一种机制。在分布式系统中&#xff0c;由于存在多个服务实例或节点&#xff0c;它们可能会同时尝试访问或修改同一份数据或资源。如果没有适当的同步机制&#xff0c;就可能导…

装机基础知识,不被坑,纯小白级别

装机基础知识&#xff0c;不被坑&#xff0c;纯小白级别 CPU主要是英特尔和AMD1&#xff0c;AMDyes2 &#xff0c;英特尔老大哥牙膏厂3&#xff0c;CPU参数 显卡主要是NVidia和AMD1&#xff0c;gtx系列2&#xff0c;rtx系列3&#xff0c;AMD的rx系列显卡4&#xff0c;显卡参数问…

PLC通过IGT-SER系列智能网关快速实现WebService接口调用案例

IGT-SER系列智能网关支持PLC设备数据对接到各种系统平台&#xff0c;包括SQL数据库&#xff0c;以及MQTT、HTTP协议的数据服务端&#xff1b;通过其边缘计算功能和脚本生成的工具软件&#xff0c;非常方便快速实现PLC、智能仪表与WebService服务端通信。 本文是通过智能网关读取…

SpringSecurity如何正确的设置白名单

在SpringSecurity中,往往需要对部分接口白名单访问,而大部分在使用Security中就有一个误区,那就是免鉴权访问和白名单的区别。 大部分的Security文章包括官方文档给出免鉴权访问都是使用.permitAll()去对相应路径进行免鉴权访问,但实际上这仅仅只表示该资源不需要相应的权限访问…

交易积累-BIAS

BIAS&#xff08;乖离率&#xff09;是股票交易中常用的一种技术分析指标&#xff0c;用于衡量股票当前价格与其某一移动平均线之间的偏离程度。它的计算简单&#xff0c;易于理解和应用&#xff0c;因此在投资者和交易者中相当流行。 计算公式&#xff1a; BIAS的计算公式是&…

高效部署Modbus转MQTT网关:Modbus RTU、Modbus TCP转MQTT

钡铼Modbus转MQTT网关&#xff0c;简而言之&#xff0c;就是通过将Modbus协议&#xff08;包括Modbus RTU和Modbus TCP&#xff09;的数据转换为MQTT协议的数据格式&#xff0c;从而实现设备数据的上传和云端控制指令的下发。这一转换过程使得设备能够与基于MQTT协议的云平台进…

Linux_实现UDP网络通信

目录 1、实现服务器的逻辑 1.1 socket 1.2 bind 1.3 recvfrom 1.4 sendto 1.5 服务器代码 2、实现客户端的逻辑 2.1 客户端代码 3、实现通信 结语 前言&#xff1a; 在Linux下&#xff0c;实现传输层协议为UDP的套接字进行网络通信&#xff0c;网络层协议为IPv4&am…

Spring Boot集成Spire.doc实现对word的操作

1.什么是spire.doc? Spire.Doc for Java 是一款专业的 Java Word 组件&#xff0c;开发人员使用它可以轻松地将 Word 文档创建、读取、编辑、转换和打印等功能集成到自己的 Java 应用程序中。作为一款完全独立的组件&#xff0c;Spire.Doc for Java 的运行环境无需安装 Micro…

JMeter:BeanShell到JSR223迁移中的注意事项

前言 在之前的文章JMeter&#xff1a;BeanShell向JSR223迁移过程遭遇的java标准库不可用问题-如何切换JDK版本中引用了一段使用BeanShell对入参进行加密的脚本&#xff0c;迁移到JSR223&#xff0c;虽然更换JDK后编译通过&#xff0c;看似也可以执行了&#xff0c;但是其实那段…

AI绘画入门实践 | Midjourney:画面权重控制

在 Midjourney 中&#xff0c;使用两个连续的英文冒号::来进行分割与权重控制。 作为分隔符使用 在提示词中添加双冒号::表示让 MJ 将部分提示词单独考虑 2d illustration, french fries, hot dog --v 6 2d illustration, french fries, hot:: dog --v 6 作为权重控制使用 在双…

google 浏览器插件开发简单学习案例:TodoList;打包成crx离线包

参考&#xff1a; google插件支持&#xff1a; https://blog.csdn.net/weixin_42357472/article/details/140412993 这里是把前面做的TodoList做成google插件&#xff0c;具体网页可以参考下面链接 TodoList网页&#xff1a; https://blog.csdn.net/weixin_42357472/article/de…

docker基础镜像

一、配置 docker 本地源 [docker-ce-stable] nameDocker CE Stable baseurlhttp://10.35.186.181/docker-ce-stable/ enabled1 gpgcheck0 配置阿里云Docker Yum源 yum install -y yum-utils device-mapper-persistent-data lvm2 git yum-config-manager --add-repo http://mirr…

简单修改,让UE4/5着色器编译速度变快

简单修改&#xff0c;让UE4/5着色器编译速度变快 目录 简单修改&#xff0c;让UE4/5着色器编译速度变快 一、问题描述 二、解决方法 &#xff08;一&#xff09;硬件升级 &#xff08;二&#xff09;调整相关设置和提升优先级 1.调整相关设置 &#xff08;1&#xff09…

【Android】碎片的初识

之前我们学习的是一个活动作为一个页面&#xff0c;有了平板之后&#xff0c;页面如果像手机一样设计就会浪费很多的空间&#xff0c;会有很多的空白区域&#xff0c;为了使屏幕充分利用&#xff0c;引入了碎片这样一个概念。 碎片&#xff08;Fragment&#xff09;&#xff1…

pikachu之sql lnjet 字符型注入

先测试一下闭合 注释符号&#xff1a;-- 注释符号可以忽略其后的内容&#xff0c;使得后续的原始查询内容不会影响我们注入的SQL代码。 条件测试&#xff1a;通过and 11和and 12分别测试真假条件&#xff0c;可以判断输入是否成功闭合&#xff0c;并且可以检测注入是否成功。 …

构造+位运算,CF 1901C - Add, Divide and Floor

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1901C - Add, Divide and Floor 二、解题报告 1、思路分析 我们假设将原数组排序&#xff0c;那么每次操作不会改变数组单调性 当 最大值 调整等于 最小值时 所有数都相等&#xff0c;因为单调性不变&…

VS2022下安装和配置OpenCV环境参数+QT开发环境搭建(1)

1.工具准备 VS2022,OpenCV4.5.5版本&#xff0c;QT5.12.12 VisualStudio最新版直接官网下载&#xff0c;根据需要进行下载&#xff0c;我下载的免费社区版本。日常开发完全够用。 qt官网下载5.12版本。 OpenCVReleases - OpenCV 选择Windows版本下载并解压到本地磁盘&#xff0…

操作系统——笔记(1)

操作系统是管理计算机硬件资源&#xff0c;控制其他程序运行并为用户提供交互操作界面的系统软件的集合&#xff0c;控制和管理着整个计算机系统的硬件和软件资源&#xff0c;是最基本的系统软件。 常见的操作系统&#xff1a;ios、windows、Linux。 计算机系统的结构层次&am…

【SpringCloud】微服务远程调用OpenFeign

工作原理流程图 上代码 common中添加依赖&#xff1a; <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency><groupId>org.spri…

Android APP 音视频(01)MediaCodec解码H264码流

说明&#xff1a; 此MediaCodec解码H264实操主要针对Android12.0系统。通过读取sd卡上的H264码流Me获取视频数据&#xff0c;将数据通过mediacodec解码输出到surfaceview上。 1 H264码流和MediaCodec解码简介 1.1 H264码流简介 H.264&#xff0c;也被称为MPEG-4 AVC&#xff…