css实现图片叠加的几种思路(记录笔记)

2023-11-17

背景:实现点击事件,触发原图的img透明度降低,成为透明背景,并且加一个不透明的原图。可以用于加水印,一个div覆盖几个样式

使用的是vue,vue-cli搭建项目,几种思路:

1、切换背景样式。设置一个key,当div元素触发点击事件(<div @click="functionName"></div>)时,key的值从false变成true,修改底图的透明度background-color:rgba(颜色,颜色,颜色,透明度),或者修改background-color:transparent;

底图作为背景,设置透明,在div再加一个img就行。但是我项目未使用成功,整个div都是透明的,仅供参考。

vue切换不同样式的两种方法(大致示意):

<div @click="functionName" :class="{'原来透明的样式名':(key==false),'透明的样式':(key==true)}">
    <img :src="pictureSource"/>//顶层图片
</div>

<script>
export default {
  data() {
    return {
      key: false,
    };
  },
  methods: {
    functionName: function () {
      this.key = true;
    },
  },
};
</script>

<div @click="functionName" v-if="key==true" :style="styleName">
<img :src="pictureSource"/> //顶层图片
</div>

<script>
//对应vue绑定的样式
export default{
    data(){
        return {
            styleName:{
                backgroundImage: "url(" + require("@/assets/imgs/code.png") + ")", //vue绑定的样式在data中不能有带'-'的属性名
                backgroundRepeat: "no-repeat",
                // backgroundPosition: "center",
                backgroundSize: "100%",
                backgroundColor: "rgba(255, 255, 255, 0.5)", //属性值都要是字符串而不是数字或者上下文未定义的变量
        }
    }
}
</script>

可以参考:(background-color属性可以实现背景图片透明,文字或者上方图片不透明。)http://caibaojian.com/w3c/css/pr_background-color.html

(rgba和rgb区别)https://blog.csdn.net/chen1057376155/article/details/52034385

2、切换显示的img。设置一个key,当img元素被点击(<img @click="functionName"/>),定义的key默认为false,data(){return{key:false}}。当key从false变成true,切换这个div里面显示的img元素。(成功使用

<div @click="clickFunction" class="parentClass">
    <div>
        //可以用v-bind绑定图片资源,也可以用css样式的方法导入图片资源
        <img v-if="key==false" :src="pictureSource"/>
        <img v-if="key==true" :src="pictureSource" style="opacity:0.3"/>
    </div>
    <div class="topPicture">
        <img v-if="key==true" :src="topPicture">
    </div>
<div>

<style>
    .parentClass{
        position:relative;
        width:100%;
        height:172px;
        z-index:1;
    }
    .topPicture{
        position:absolute;    //顶图仅图案部分是非透明的,是和底图一样的大小,否则要调位置
        width:100%
        height:172px;
        top:0;
        left:0;
        bottom:0;
        right:0;
        z-index:2;
    }
/*如果要调图片大小在框内,不变形,记得给样式类定好宽高*/

</style>

3、使用div层叠,设置两个div,一个position:relative;一个position:absolute; 就可以实现在div里面显示绝对定位,而不跑出div的层叠div,对于没有固定整个界面的width和height的情况适用。

如果界面的宽高都固定了像素值,可以不用在外层套div,直接写位置。

层叠原理:两个div的z-index层级不同,所以可将设为透明的图片放在下面,顶层的图片透明度正常。注意,同一个div里面有多个元素,该div设置透明度,则所有的div子元素都是同样透明度。

.parentClass{
    position:relative;
    z-index:-1;
}
.childClass{
    position:absolute;
    top:0;
    left:0;
    right:0;
    bottom:0;
    z-index:1;    //如果有别的高优先级的,影响覆盖效果,记得把这个设置高一点
}

4、img叠加样式,如果你的背景图片可以设置透明,那么可以考虑在一个img里面写<img v-bind:class="className" v-bind:style="styleName" />,他们分别对应透明底图和正常图的样式。略。

5、div直接覆盖:原来正常的底图,被有透明度的底图+正常透明度新图/水印图覆盖。但是附近元素或者父容器的width和height要写死,这样可以将绝对布局的目标div覆盖过去到具体位置。略略。

6、用js降低色彩。叠加可以结合上述方法。透明度或者灰度,如果是彩图,直接降低就行了。可以参考https://www.cnblogs.com/j--d/p/j--d-javascript1.html

7、用js合并两个图片。可以参考https://www.cnblogs.com/cangqinglang/p/9483125.html

新手上路,自己花了好多小时摸索的。写法有很多种,希望可以抛砖引玉✌。

成果图(已打码):

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

css实现图片叠加的几种思路(记录笔记) 的相关文章

随机推荐

  • Python 一篇入门

    目录 Python 的简介与特点 Python支持多种编程风格 解释运行 跨平台 可扩展强 可嵌入 丰富的库 Python版本选择 Python开发环境搭建 认识Python解释器 快速入门 变量和赋值 动态类型 变量命名规则 认识 数字
  • Android DataStore 使用详解

    转载请标明出处 http blog csdn net zhaoyanjun6 article details 127358235 本文出自 赵彦军的博客 文章目录 概述 使用 DataStore 本地数据 查看DataStore 文件 Ke
  • Eclipse中JUnit的安装及初始使用

    JUnit的下载 安装 1 下载 http www junit org JUnit软件包 版本很多 可以自行选择 2 在eclipse中添加junit jar包 打开eclipse gt 菜单栏点击project gt properties
  • ubuntu pip intall出现“设备上没有空间”的解决办法

    原因 空间问题呗 东西太多了 tmp盘不够大 pip install的时候文件包会预先下载到tmp盘 步骤1 在home目录下新建一个tmp文件夹 用来取代系统根目录的tmp文件夹 步骤2 设置环境变量TMPDIR export TMPDI
  • [LeetCode-02]-Add Two Numbers-性能极好

    文章目录 题目相关 Solution 1 错误的解法 2 正确解法 3 几个用例 后记 每周完成一个ARTS Algorithm Review Tip Share ARTS Algorithm 每周至少做一个 leetcode 的算法题 R
  • 强化学习打卡班第四五章

    强化学习打卡班第四五章 第四章 Policy Gradient梯度策略 例子 贝叶斯公式补充 奖励函数 reward function 最大化方法 梯度上升 PPO算法 从 On policy 到 Off policy 第四章 Policy
  • Linux 使用wget 命令下载JDK的方法

    Oracle官网上下载jdk 需要点击accept licence的才能下载 使用下面的命令 直接可以下载 wget no check certificate no cookies header Cookie oraclelicense a
  • DeBlurGANv2图像去模糊 训练自己的数据集

    之前在有位博主的DeblurGANv2教程的页面下留了言 很多小伙伴来私信我 config yaml怎么调参数 predict py和train py需要怎么修改 之前只跑了predict 有些问题也没办法解答 最近自己跑了一下train
  • MTU 和 MSS 区别

    MTU Maximum Transmit Unit 最大传输单元 即物理接口 数据链路层 提供给其上层 通常是IP层 最大一次传输数据的大小 以普遍使用的以太网接口为例 缺省MTU 1500 Byte 这是以太网接口对IP层的约束 如果IP
  • HPE Microserver GEN10升级BIOS

    到手的机子BIOS版本还是ZA10A290 非常有必要升级 便从HPE官网下载了最新的版本 ZA10A360 选择UEFI Shell方式更新 官网下载地址 https support hpe com hpesc public km pro
  • Cutter - Web视频剪辑工具原理浅析

    大厂技术 坚持周更 精选好文 最近一直在开发 web视频剪辑工具 cutter 这个工具可以方便老师们编辑拍摄好的视频 这是一个挺有意思的项目 预计分多章和大家分享介绍 本期主要介绍下其大体流程 方便大家对其原理有一个简单认知 Cutter
  • Docker安全设置

    Docker安全 Linux内核的命名空间机制提供的容器隔离安全 Linux控制组机制对容器资源的控制能力安全 Linux内核的能力机制所带来的操作权限安全 Docker程序 特别是服务端 本身的抗攻击性 其他安全增强机制对容器安全性的影响
  • elementui不生效

    1 element依赖vue 引入element js之前要引入vue js 2 element无法脱离Vue使用 html中必须new Vue el app 挂载上去
  • C语言函数大全--f开头的函数(下)

    f开头的函数 下 21 floor floorf floorl 21 1 函数说明 21 2 演示示例 21 3 运行结果 22 flushall 22 1 函数说明 22 2 演示示例 22 3 运行结果 23 fma fmaf fmal
  • php发送请求写请求头,PHP发送请求头和接收打印请求头

    一 发送请求头 发送地址 url http 127 0 0 1 2 php 请求头内容 headers array Authorization basic suibianzhi basic 使用curl发送 ch curl init url
  • 计算机缺失VCRUNTIME140.dll怎么办,那个修复方法可以解决

    计算机提示缺失VCRUNTIME140 dll怎么办 无法启动运行软件程序 如photoshop pr ae等等都是无法启动 打开电脑就报错 由于找不到VCRUNTIME140 dll 无法继续执行此代码 让我们先来了解一下VCRUNTIM
  • Gitee初练 --- 问题合集(一)

    Gitee 一 Windows找不到gpedit msc请确定文件名是否正确的提示 二 windows 10 凭据无法保存 三 解决 git pull push 每次都要输入用户名密码的问题 一 Windows找不到gpedit msc请确
  • C++ 读写二进制文件

    描述 C 来读取二进制文件 二进制文件的格式可以多种多样 比如dat index等 还可以是自行定义的格式 C 来写二进制文件 一 读二进制文件 结构体定义及头文件 include
  • 38 匹配字符串——findall()方法

    文章目录 语法 案例 语法 findall 方法用于在整个字符串中搜索所有符合正则表达式的字符串 并以列表的形式返回 如果匹配成功 则返回包含匹配结构的列表 否则返回空列表 findall 方法的语法格式如下 re findall patt
  • css实现图片叠加的几种思路(记录笔记)

    背景 实现点击事件 触发原图的img透明度降低 成为透明背景 并且加一个不透明的原图 可以用于加水印 一个div覆盖几个样式 使用的是vue vue cli搭建项目 几种思路 1 切换背景样式 设置一个key 当div元素触发点击事件 di