CSS实现透明度效果的两种方法—— opacity 和 rgba()

在实际开发过程中,为了给用户呈现一些效果,我们需要控制元素的透明度。CSS 提供了 opacity 属性和 rgba() 函数给我们控制透明度,接下来通过一个例子来感受一下两种方法的区别。

<style>.transparentBox {display: inline-block;width: 100px;height: 100px;margin: 20px;color: #FFF;text-align: center;background-color: rgb(250, 179, 1);position: relative;}.transparentBox > div {width: 50px;height: 50px;line-height: 50px;background-color: rgb(210, 105, 30);position: absolute;top: 50%;left: 50%;margin-top: -25px;margin-left: -25px;}
</style>
<div class="transparentBox"><div>111</div>
</div>

在这里插入图片描述

opacity 属性

opacity 属性可以设置一个元素的不透明度。语法如下。

opacity: alpha;
alpha 取值范围为 0~1,值越小越透明( 0 表示完全透明,1 表示完全不透明 ),任何一个溢出这个取值区间的值都会被解析为在取值范围内最靠近它的值

IE8 或者更早版本的 IE 浏览器不支持 opacity 属性,若想要在这些浏览器中实现透明效果可以使用 filter 属性,语法格式如下:

filter: alpha(opacity=number);
number 的取值范围为 0~100,值越小则越透明( 0 表示完全透明,100 表示完全不透明 )

为了让所有浏览器都可以实现透明效果,我们可以同时定义 opacity 和 filter 两个属性,如下

div {opacity: 0.5;filter: alpha(opacity=50);
}

下面给最外层盒子设置 opacity 属性,看看有什么效果。

.transparentBox {opacity: 0.5;
}

在这里插入图片描述
可以看到中间盒子的透明度也被改变了,这也证实了 opacity 属性会影响子元素。此时子元素没有设置 opacity 属性,直接继承了父元素的,所以也是 0.5。如果给子元素也设置 opacity 属性会怎么样?

.transparentBox > div {opacity: 1;	/* 依次设为 1、 0.5、 0,观察效果 */
}

子元素 opacity: 1 的效果跟上面是一样的,但是设置比 1 小的值时,子元素有了不同的表现。

在这里插入图片描述
由上可知,opacity 属性具有继承性,当它被应用于某个元素上时,这个元素包括它的内容都被当成一个整体看待。一个元素和它的子元素(包括文本、边框、背景色等)都会具有相同的透明度,不过对于它的子元素还有以下两个要点。

  1. 子元素会直接继承父元素的透明度。子元素不设置 opacity 时,会受到父元素 opacity 的影响,拥有与父元素相同的透明度。
  2. 子元素的透明度是基于父元素的透明度计算的​。子元素 opacity 设为 1 时,父元素的影响依然在,所以在上面的例子中,没有任何变化;设为 0.5 时,相当于在父元素 0.5 的基础上再叠加了一层 0.5 的透明度,看上去更不透明了。

注意:opacity: 0 的元素在页面上肉眼不可见,像是“隐身”了,但 DOM 结构依然存在,所以在页面上仍然占据空间,因此在元素上绑定的事件也能被正常触发。

有时候我们想让子元素摆脱父元素的控制,给父元素单独设置透明度该怎么做?CSS 函数 rgba() 支持这样的做法。

rgba() 函数

rgba() 函数根据颜色的红色、绿色和蓝色成分来表达颜色,可选的 alpha 参数设置颜色的透明度。语法如下。

rgba(r, g, b, alpha)
R、G、B
每个都是从 0 到 255 之间的整数,或从 0% 到 100% 之间的 百分比,或者为关键字 none,分别代表红色、绿色和蓝色的通道。
A 可选
alpha 值(可以是百分比或0~1之间的数字)或者关键字 none,数字 1 对应 100%(完全不透明)。

下面给最外层盒子设置一个带透明度的背景色

.transparentBox {background-color: rgba(250, 179, 1, 0.5);
}

在这里插入图片描述
可以看到只是最外层盒子的背景颜色改变了,里面的盒子不受影响。有了 rgba() 我们可以更精确地控制颜色和它的透明度,而且不会影响子元素,不像 opacity 属性那样有继承性,对整体都有影响。

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

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

相关文章

AI驱动的软件测试,何时可以信赖?

综合编译&#xff5c;TesterHome社区 作者&#xff5c;Yuliya Vasilko&#xff0c;数据工程师 以下为作者观点&#xff1a; 越来越多的组织转向人工智能&#xff08;AI&#xff09;驱动的测试解决方案&#xff0c;以简化质量保证流程并提高软件可靠性。 随着对人工智能的依赖程…

功能案例 -- 拖拽上传文件,生成缩略图

直接看效果 实现代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>拖拽上传文件</title>&l…

低价寄快递寄件微信小程序 实际商用版,对接了低价快递渠道,运营平台赚取差价,支持市面上全部主流快递

盈利模式 快递代下CPS就是用户通过线上的渠道&#xff08;快递小程序&#xff09;&#xff0c;线上下单寄快递来赚取差价&#xff0c;例如你的成本价是5元&#xff0c;你在后台比例设置里面设置 首重利润是1元&#xff0c;续重0.5元&#xff0c;用户下1kg的单页面显示的就是6元…

ElasticSearch知识点

什么是ElasticSearch ElasticSearch: 智能搜索&#xff0c;分布式的搜索引擎&#xff0c;是ELK的一个非常完善的产品&#xff0c;ELK代表的是: E就是ElasticSearch&#xff0c;L就是Logstach&#xff0c;K就是kibana Elasticsearch是一个建立在全文搜索引擎 Apache Lucene基础…

FreeRTOS源码阅读笔记2--list.c

list.c中主要完成列表数据结构的操作&#xff0c;有列表和列表项的初始化、列表的插入和移除。 2.1列表初始化vListInitialise() 2.1.1函数原型 void vListInitialise( List_t * const pxList ) pxList&#xff1a;列表指针&#xff0c;指向要初始化的列表。 2.1.2函数框架…

联系作者方式的教程

首先你应该目前是在付费资源运行效果的展示文章页面&#xff0c;如下所示 然后一直往下滑&#xff0c;滑到这个文章的最下面&#xff0c;就可以看到我的推广名片&#xff0c;最后点击这个名片就可以获取到我的联系方式了~

学习OpenCV(蝴蝶书/C++)相关——2.MacOS下使用LLDB调试cpp程序

文章目录 1. VScode中的调试2. 配置VSCode中C++的调试(以OpenCV为例)2.1 创建适用于C++的.launch文件2.2 常见参数说明2.3 调试OpenCV的.launch文件示例2.3.1 .launch文件demo2.3.2 Debug模式的可执行文件3. 联合task.json文件一起使用3.1 创建tasks.json和launch.json文件3.2 …

安装纯净版Linux后的必备设置

目录 一&#xff1a;网络设置 1&#xff0c;设置yum源 2&#xff0c;配置网络 二&#xff1a;samba服务设置 1&#xff0c;安装samba 2&#xff0c;设置samba 3&#xff0c;windows上挂载 三&#xff1a;安装必备的开发软件 1&#xff0c;GCC安装 2&#xff0c;Pyth…

JLink edu mini 10Pin接口定义

注意&#xff1a;SWD接口在阵脚2&#xff0c;4&#xff1b;而20Pin的SWD接口在阵脚7&#xff0c;9 参考&#xff1a;1 官网资料&#xff1b; 2 【润石RS0104YQ Demo开发板测试分享】J-Link EDU Mini调试5V系统_国产运算放大器_模拟开关_线性稳压器_电平转换器_小逻辑_比较器…

Linux之基本指令操作

1、whoami whoami&#xff1a;查看当前账号是谁 2、who who&#xff1a;查看当前我的系统当中有哪些用户&#xff0c;当前有哪些人登录了我的机器 3、 pwd pwd&#xff1a;查看我当前所处的目录&#xff0c;就好比Windows下的路径 4、ls ls&#xff1a;查看当前目录下的文件信…

Doris:多源数据目录(Multi-Catalog)

目录 1.基本概念 2.基本操作 2.1 查看 Catalog 2.2 新增 Catalog 2.3 切换 Catalog 2.4 删除 Catalog 3.元数据更新 3.1手动刷新 3.2定时刷新 3.3自动刷新 4.JDBC Catalog 4.1 上传mysql驱动包 4.2 创建mysql catalog 4.3. 读取mysql数据 1.基本概念 …

【MySQL】列属性

文章目录 CHAR和VARCHAR插入单行 INSERT INTO插入多行插入分层行 LAST_INSERT_IN()创建表复制 CREAT TABLE AS更新单行 UPDATE...SET更新多行在UPDATES中使用子查询【需着重复习】删除行 DELETE恢复数据库到原始状态 CHAR和VARCHAR CHAR(50)&#xff1a;存储文本占5个字符&…

Vatee万腾科技决策力的未来展望:开创数字化创新的新高度

随着科技不断演进&#xff0c;Vatee万腾的科技决策力在数字化创新领域展现出了强大的潜力和前瞻性。 Vatee万腾的科技决策力被视为数字化创新的引擎&#xff0c;为未来创新注入了新的动力。通过深刻的市场洞察和科学决策&#xff0c;Vatee万腾致力于推动数字化创新走向新的高度…

算法导论6:摊还分析,显式与隐式

P258 摊还分析概念 聚合分析&#xff0c;利用它&#xff0c;我们证明对于n&#xff0c;一个n个操作的序列最坏情况下的花费的总时间为T(n)&#xff0c;因此&#xff0c;在最坏情况下&#xff0c;每个操作的平均代价&#xff08;摊还代价&#xff09;为T(n)/n 举了例子来形容这…

C#中.NET 7.0控制台应用使用LINQtoSQL、LINQtoXML

目录 一、新建控制台应用和数据库连接 二、手动添加System.Data.Linq程序包 三、手动添加System.Data.SqlClient程序包 四、再次操作DataClasses1.dbml 五、示例 1.源码 2.xml文件 默认安装的.NET 7.0控制台应用是不支持使用LINQtoSQL、LINQtoXML的。 默认安装的.NET F…

自动驾驶学习笔记(八)——路线规划

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo Beta宣讲和线下沙龙》免费报名—>传送门 文章目录 前言 路线规划 路由元素 路径搜索 最优…

【安卓13】谷歌原生桌面launcher3源码修改,修改桌面布局(首屏应用、小部件、导航栏、大屏设备任务栏)

前言 近期接到一个关于谷歌EDLA认证的需求&#xff0c;我负责的是谷歌原生桌面布局的修改&#xff0c;通过研究源码&#xff0c;将涉及到了一些修改思路发出来&#xff0c;大家可以参考一下有没有对你有用的信息。主要修改内容有&#xff1a; 1、搜索栏、底部导航栏未居中 2、…

LangChain应用全解析

一、Langchain基础 1.Langchain简介 (1)替换模型 from langchain.prompts import ChatPromptTemplatechat ChatOpenAI(temperature0) 使用代理ip llm ChatOpenAI(model_name"gpt-3.5-turbo", max_tokens2048, temperature0.5,openai_api_keyapi_key,openai_ap…

论文阅读:PVT v2: Improved Baselines with Pyramid Vision Transformer

来源&#xff1a;PVTv1 和PVTv2 链接&#xff1a;https://arxiv.org/pdf/2102.12122.pdf 链接&#xff1a;https://arxiv.org/pdf/2106.13797.pdf PVTv2是在PVTv1基础上&#xff0c;所以先介绍PVTv1 Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction…

windows上运行yolov3代码详解(小白)

batch_normalize1 # 是否做BN 代码链接 环境配置 没有Anaconda的话可以安装下 首先创建虚拟环境&#xff0c;名称随意&#xff0c;版本3.9.我觉得挺好的 激活虚拟环境 conda activate 刚刚创建的环境名称 切换到requirements.txt目录下&#xff0c;直接vscode打开yolov3文件…