如何更改 CSS 背景图片的不透明度

介绍

opacity 是一个 CSS 属性,允许你改变元素的不透明度。默认情况下,所有元素的值为 1。通过将这个值更接近 0,元素将会变得越来越透明。

一个常见的用例是将图像作为背景的一部分。调整不透明度可以提高文本的可读性或实现所需的外观。然而,目前没有办法只针对元素的 background-image 使用 opacity 而不影响子元素。

在本文中,我们将介绍两种方法来解决具有不透明度的背景图像的限制。

先决条件

如果你想要跟随本文,你需要:

  • 熟悉 opacity
  • 熟悉 position: relativeposition: absolute
  • 熟悉堆叠上下文和 z-index
  • 熟悉 :before:after 伪元素。

方法一 —— 使用单独的图像元素和定位

第一种方法依赖于两个元素。一个是提供了 position: relative 参考点的 “wrap”。第二个是一个出现在内容后面的 img 元素,使用 position: absolute 和堆叠上下文。

以下是这种方法的标记示例:

<div class="demo-wrap"><imgclass="demo-bg"src="https://assets.digitalocean.com/labs/images/community_bg.png"alt=""><div class="demo-content"><h1>Hello World!</h1></div>
</div>

以下是相应的样式:

.demo-wrap {overflow: hidden;position: relative;
}.demo-bg {opacity: 0.6;position: absolute;left: 0;top: 0;width: 100%;height: auto;
}.demo-content {position: relative;
}

这个标记和样式将产生一个文本位于图像上方的结果。

父级 demo-wrap <div> 建立了一个绝对定位的包含块。demo-bg <img> 被设置为 position: absolute,并分配了轻微的 opacitydemo-content <div> 被设置为 position: relative,由于标记的排列方式,它具有比 demo-bg 更高的堆叠上下文。也可以使用 z-index 更精细地控制堆叠上下文。

这种方法有一些局限性。它假设你的图像足够大,以适应任何元素的大小。你可能需要强制施加大小限制,以防止图像出现被截断或不覆盖元素的整个高度。如果你想要控制 “背景位置” 并且没有干净的 “背景重复” 替代方案,它还需要额外的调整。

方法二 —— 使用 CSS 伪元素

第二种方法依赖于伪元素。:before:after 伪元素适用于大多数元素。通常,你会提供一个 content 值,并使用它在开头或结尾附加额外的文本。然而,也可以提供一个空字符串,然后你可以利用伪元素进行设计。

以下是这种方法的标记示例:

<div class="demo-wrap"><div class="demo-content"><h1>Hello World!</h1></div>
</div>

以下是相应的样式:

.demo-wrap {position: relative;
}.demo-wrap:before {content: ' ';display: block;position: absolute;left: 0;top: 0;width: 100%;height: 100%;opacity: 0.6;background-image: url('https://assets.digitalocean.com/labs/images/community_bg.png');background-repeat: no-repeat;background-position: 50% 0;background-size: cover;
}.demo-content {position: relative;
}

这个标记和样式将产生一个文本位于图像上方的结果。

父级 demo-wrap <div> 建立了一个绝对定位的包含块。伪元素 :before 被设置为 position: absolute,分配了轻微的 opacity,并使用 background-size: cover 来占据所有可用空间。

这种方法的优点是支持其他 background 属性,如 background-positionbackground-repeatbackground-size。这种方法的缺点是使用了一个伪元素,可能会与另一个设计效果发生冲突,比如清除浮动解决方案。

结论

在本文中,您了解了两种解决具有不透明度的背景图片的限制的方法。

如果您想了解更多关于 CSS 的知识,请查看我们的 CSS 专题页面,了解相关练习和编程项目。

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

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

相关文章

【实战解析】YOLOv9全流程训练至优化终极指南

【实战解析】YOLOv9全流程训练至优化终极指南 0.引言1.环境准备2.数据预处理&#xff08;1&#xff09;数据准备&#xff08;2&#xff09;按比例划分数据集&#xff08;3&#xff09;xml转txt脚本&#xff08;4&#xff09;配置文件 3.模型训练&#xff08;1&#xff09;单GPU…

打开游戏缺少dll文件怎么办,dll文件一键修复方法

在我们日常操作电脑&#xff0c;经常会遇到各种各样的问题。比如想玩一会游戏的时候&#xff0c;电脑屏幕上却赫然弹出一则令人颇为扫兴的提示&#xff1a;“打开游戏缺少dll文件”。这个问题可能会让我们感到困惑和沮丧&#xff0c;但是幸运的是&#xff0c;有很多方法可以帮助…

iOS cocoapods pod FrozenError and RuntimeError

0x00 报错日志 /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.12.0/lib/cocoapods/user_interface/error_report.rb:34:in force_encoding: cant modify frozen String (FrozenError)from /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.12.0/lib/cocoapods/user_interface/error_r…

电压继电器SRMUVS-220VAC-2H2D 导轨安装 JOSEF约瑟

系列型号&#xff1a; SRMUVS-58VAC-2H欠电压监视继电器&#xff1b;SRMUVS-100VAC-2H欠电压监视继电器&#xff1b; SRMUVS-110VAC-2H欠电压监视继电器&#xff1b;SRMUVS-220VAC-2H欠电压监视继电器&#xff1b; SRMUVS-58VAC-2H2D欠电压监视继电器&#xff1b;SRMUVS-100…

数据仓库与数据挖掘(第三版)陈文伟思维导图1-5章作业

第一章 概述 8.基于数据仓库的决策支持系统与传统决策支持系统有哪些区别&#xff1f; 决策支持系统经历了4个阶段。 1.基本决策支持系统 是在运筹学单模型辅助决策的基础上发展起来的&#xff0c;以模型库系统为核心&#xff0c;以多模型和数据库的组合形成方案辅助决策。 它…

EasyExcel写数据

本地文件写数据 package com.qiangesoft.easyexcel.write;import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.metadata.data.*; import com.alibaba.excel.util.FileUt…

【51媒体网】企业商业宣传用媒体官方直播的优势有哪些

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 企业宣传使用媒体官方直播的优势可能体现在以下几个方面&#xff1a; 提升品牌知名度&#xff1a;通过官方媒体的直播平台&#xff0c;企业可以向更广泛的受众展示自己的品牌和产品&…

Shell 输入输出:从 Read 到管道的奇妙旅程

在计算机世界中&#xff0c;Shell 是一种强大的工具&#xff0c;它允许我们与操作系统进行交互。Shell 提供了一种简单而强大的方式来处理输入和输出&#xff0c;使得我们可以在命令行中执行各种任务。本文将带你领略 Shell 输入输出的奇妙之旅&#xff0c;从 Read 到管道的探索…

如何监控容器或K8s中的OpenSearch

概述 当前 OpenSearch 使用的越来越多, 但是 OpenSearch 生态还不尽完善. 针对如下情况: 监控容器化或运行在 K8s 中的 OpenSearch 我查了下, 官方还没有提供完备的方案. 这里如何监控 K8s 中的 OpenSearch, 包括安装 exporter 插件、采集、展示全环节。 OpenSearch 简介…

Linux:sprintf、snprintf、vsprintf、asprintf、vasprintf比较

这些函数都在stdio.h里&#xff0c;不过不同系统不同库&#xff0c;有些函数不一定提供。 1. sprintf 函数原型&#xff1a; int sprintf (char *str, const char *format, ...); extern int sprintf (char *__restrict __s, const char *__restrict __format, ...); 功能是将…

2017NOIP普及组真题 4. 跳房子

线上OJ&#xff1a; 一本通&#xff1a;http://ybt.ssoier.cn:8088/problem_show.php?pid1417\ 核心思想 首先、本题中提到 “ 至少 要花多少金币改造机器人&#xff0c;能获得 至少 k分 ”。看到这样的话语&#xff0c;基本可以考虑要使用 二分答案。 那么&#xff0c;本题中…

SQL注入攻击和防御

声明&#xff1a;本文仅限于技术讨论与分享&#xff0c;严禁用于非法途径。若读者因此作出任何危害网络安全行为后果自负&#xff0c;与本号及原作者无关。 # 概述 SQL注入是一种网络安全攻击&#xff0c;它利用了Web应用程序对用户输入的验证不足&#xff0c;从而在后台数据…

用vue3写一个AI聊天室

效果图如下&#xff1a; 1、页面布局&#xff1a; <template><div class"body" style"background-color: rgb(244, 245, 248); height: 730px"><div class"container"><div class"right"><div class"…

如何用electron(vue)搜索电脑本地wifi

对于搜索本地 WiFi 网络&#xff0c;可以使用 Electron 结合 Node.js 来编写一个简单的应用程序。 以下是一个基本的示例&#xff0c;它使用 Node.js 的 wifi 模块来搜索并列出附近的 WiFi 网络&#xff1a; 首先&#xff0c;确保你已经安装了 Node.js 和 Electron。 然后&am…

数据结构——线性表(链式存储结构)

语言&#xff1a;C语言软件&#xff1a;Visual Studio 2022笔记书籍&#xff1a;数据结构——用C语言描述如有错误&#xff0c;感谢指正。若有侵权请联系博主 一、线性表的逻辑结构 线性表是n个类型相同的数据元素的有限序列&#xff0c;对n>0&#xff0c;除第一元素无直接…

利用python构建Dockerfile 文件

使用 Python 脚本来创建 Dockerfile 可以带来多方面的好处&#xff0c;尤其是当你需要自动化构建过程、管理复杂的构建步骤或者需要根据不同的环境条件生成不同的 Docker 镜像时。以下是使用 Python 创建 Dockerfile 的一些主要优点&#xff1a; 自动化和可重复性&#xff1a; …

蓝桥杯刷题 二分-[2145]求阶乘(C++)

问题描述 满足 N! 的末尾恰好有 K 个 0 的最小的 N 是多少? 如果这样的 N 不存在输出 −1。 输入格式 一个整数 K。 输出格式 一个整数代表答案。 样例输入 2 样例输出 10 评测用例规模与约定 对于 30% 的数据&#xff0c;1 ≤ K ≤ 10的6次方 对于 100% 的数据&…

【MATLAB 分类算法教程】_2粒子群算法优化支持向量机SVM分类 - 教程和对应MATLAB代码

分类代码案例2:粒子群算法优化支持向量机SVM分类 - MATLAB完全代码教程 1. 初始化代码2. 读取数据代码3.数据预处理代码4.利用粒子群算法PSO求解最佳的SVM参数c和g代码5.根据最佳的参数进行SVM模型训练代码6.SVM模型预测代码7.准确率分析以及分类结果对比作图代码本文以红酒数…

结合 tensorflow.js 、opencv.js 与 Ant Design 创建美观且高性能的人脸动捕组件并发布到InsCode

系列文章目录 如何在前端项目中使用opencv.js | opencv.js入门如何使用tensorflow.js实现面部特征点检测tensorflow.js 如何从 public 路径加载人脸特征点检测模型tensorflow.js 如何使用opencv.js通过面部特征点估算脸部姿态并绘制示意图tensorflow.js 使用 opencv.js 将人脸…

lisp学习历程

学习Lisp是一项有趣且具有挑战性的过程&#xff0c;它是一种古老的编程语言&#xff0c;但在人工智能和函数式编程领域仍然有很高的影响力。下面是一个可能的Lisp学习历程&#xff1a; 了解Lisp的历史和基本概念&#xff1a; 了解Lisp的起源、发展历程和影响。理解Lisp的基本概…