css让背景图片显示透明遮罩_CSS项目测试(支持深色模式)

*事先声明:本文章教程教学、文章封面来源自[CSS]聚光灯项目 by CodingStartup起码课,且已经CodingStartup起码课授权允许转载!

为了保持原有风格,本文始终保持与@CodingStartup起码课的视频风格一致

*在出现同样的代码块时,灰色为原有代码,彩色为新增/修改代码

Hello,Everybody

今天我们不讲别的,就来讲讲利用CSS做一个聚光灯。

先给大家放个例子:https://itmanchina.github.io/css-test(复制到浏览器打开)

到这里,有的小伙伴会问啦,这是怎么做到的?好神奇!

其实很简单,一层灰色的底层文字;顶层文字为彩色,套用css的圆形遮罩(Mask),再加上css animation(移动效果)就可以了。

OK,回归正题:

项目总共分成两个部分

1.html

2.css*

因为html只占少量内容,我们重点把放在css上

(以下内容推荐到codepen.io或者其它代码实时预览网站测试!)

html部分:

<h1>TestTexth1>

css部分:

html {  font-size: 15px; }/*这里把文字【TestText】的大小设定为15px(不懂px的小伙伴请百度Picture  Element 【Pixel】) */
body{  background-color: #222;  /*背景颜色设为灰色*/  display: flex;  justify-content: center;  align-items: center;  min-height: 100vh;  }  /*这一段css把文字【TestText】固定在html最中间的位置*/
h1{  color: #333; /*这里设定字体的颜色为灰黑色*/  font-family: Helvetica; /*这里设置字体为Helvetica(常用于西方语言字母)*/  margin: 0;  padding: 0;  font-size: 8rem; /*文字大小设定*/  letter-spacing: -0.2rem; /*文字间距设定*/}/*知识点1:rem 它是CSS3中新增加的一个尺寸(度量)单位,根节点(html)的font-size决定了rem的尺寸,也就是说它是一个相对单位,相对于(html)。*//*知识点2:margin 这个简写属性设置一个元素所有外边距的宽度,或者设置各边上外边距的宽度;块级元素的垂直相邻外边距会合并,而行内元素实际上不占上下外边距。行内元素的的左右外边距不会合并。同样地,浮动元素的外边距也不会合并。允许指定负的外边距值,不过使用时要小心。(允许存在负值)*//*知识点3:padding 简写属性在一个声明中设置所有内边距属性;这个简写属性设置元素所有内边距的宽度,或者设置各边上内边距的宽度。行内非替换元素上设置的内边距不会影响行高计算;因此,如果一个元素既有内边距又有背景,从视觉上看可能会延伸到其他行,有可能还会与其他内容重叠。元素的背景会延伸穿过内边距。不允许指定负边距值。*/

↓写到这里,你的成果应该是这样的哦

976f79f4bd4eff2ab1eb62f1dc673f96.png

(底部文字示例)

到这里,第一步算是完成了(长叹一口气)

(接着还是CSS的内容)

css部分(敲重点):

h1::after{  content: 'TestText'; /*顶端文字的文字内容(与底端文字一致才能达到重叠效果)*/  color: yellow; /*顶端文字颜色设为“黄色”*/  position: absolute; /*css绝对定位(百度有较详细的介绍,这里不多赘述)*/  top: 0; /*顶端文字顶部距离*/  left: 0; /*顶端文字左端距离*/}
/*这时候,底部文字居中,顶部文字被固定在左上角*/

要将它(被设黄色的底部文字)与底部文字重叠起来,将h1字段(新增)position设定为relative就可以达到(顶部文字和底部文字)重叠的效果了

@CodingStartup起码课

也就是将上面的h1字段变成:

h1{  /*color: #333;*/  /*font-family: Helvetica;*/  /*margin: 0;*/  /*padding: 0;*/  /*font-size: 8rem;*/  /*letter-spacing: -0.2rem;*/  position: relative;  }

文字重叠完成!

效果图↓

9f6824fb12a3133878cf0cc3c2b66f8b.png

(顶部文字与底部文字结合后示例)

紧接着,继续修改h1::after部分(套用圆形mask【遮罩】)【也是重点!!!】

h1::after{  /*content: 'TestText';*/ /*顶端文字的文字内容(与底端文字一致才能达到重叠效果)*/  /*color: yellow;*/ /*顶端文字颜色设为“黄色”*/  /*position: absolute;*/ /*css绝对定位(百度有较详细的介绍,这里不多赘述)*/  /*top: 0;*/ /*顶端文字顶部距离*/  /*left: 0;*/ /*顶端文字左端距离*/  -webkit-clip-path: ellipse(100px 100px at 0% 50%); /*刻画一个直径为100px的正圆形,位置处于重叠文字的最左端、水平垂直的1/2处*/  clip-path: ellipse(100px 100px at 0% 50%); }/*由于浏览器的支援性问题,Safari、Chrome等浏览器需要一段前缀【-webkit-】才能支持clip-path的属性*//*使用前缀时一定要保留原来的属性*//*为了防止已经支持clip-path属性的浏览器(FireFox等)出错,保留原来的clip-path属性*/

到了这一步,黄色的小聚光灯应该会出现在最左边的【Te】处

这时候,尝试把clip-path的0%修改为50%(-webkit-和原来的都修改一下)看看聚光灯是不是被移动到了文字的中间。如果是的话,证明代码有效。如果不变的话,请检查代码是否有误!

【记得修改成功后重新把左边的50%改回0%哦!!!】

【右边的50%是定值,不要动!!!】

↓(效果图)↓

29f4c1448cdd77ed83a09fd5a21e7a49.png

(聚光灯居中示例)

好的,接下来继续创建新的区块:

@keyframes spotlight {  0% {    -webkit-clip-path: ellipse(100px 100px at 00% 50%);    clip-path: ellipse(100px 100px at 0% 50%);    /*这里直接套用完整的clip-path区块,下面的100%与0%用同样的数据*/  }  50% {    -webkit-clip-path: ellipse(100px 100px at 100% 50%);    clip-path: ellipse(100px 100px at 100% 50%);    /*50%的clip-path要把原本的0%改为100%,让mask(遮罩)到达文字的最右端*/  }  100% {    -webkit-clip-path: ellipse(100px 100px at 00% 50%);    clip-path: ellipse(100px 100px at 0% 50%);  }}/*keyframes的animation(动画)部分完成*/

动画部分完成得差不多啦,但还差一个重要的步骤!现在让我们继续将animation写入到h1::after中

h1::after{  /*content: 'TestText';*/ /*顶端文字的文字内容(与底端文字一致才能达到重叠效果)*/  /*color: yellow;*/ /*顶端文字颜色设为“黄色”*/  /*position: absolute;*/ /*css绝对定位(百度有较详细的介绍,这里不多赘述)*/  /*top: 0;*/ /*顶端文字顶部距离*/  /*left: 0;*/ /*顶端文字左端距离*/  /*-webkit-clip-path: ellipse(100px 100px at 0% 50%);*/ /*刻画一个直径为100px的正圆形,位置处于重叠文字的最左端、水平垂直的1/2处*/  /*clip-path: ellipse(100px 100px at 0% 50%);*/  animation: spotlight 5s infinite; /*让@keyframes里的动画5秒循环一次,动画永久循环*/  }

接下来有两个地方想修饰一下,第一,黄色的(顶端)文字是直接写在了h1::after里的content内,想把值设定在HTML里面

@CodingStartup起码课

①(终于)要对html部分动手了

<h1 data-spotlight="TestText">TestTexth1>

②继续改h1::after的内容

h1::after{  content: attr(data-spotlight); /*这部分直接从h1中读取顶部文字的值而不用在这里设定一个值了*/  /*color: "yellow";*/ /*顶端文字颜色设为“黄色”*/  /*position: absolute;*/ /*css绝对定位(百度有较详细的介绍,这里不多赘述)*/  /*top: 0;*/ /*顶端文字顶部距离*/  /*left: 0;*/ /*顶端文字左端距离*/  /*-webkit-clip-path: ellipse(100px 100px at 0% 50%);*/ /*刻画一个直径为100px的正圆形,位置处于重叠文字的最左端、水平垂直的1/2处*/  /*clip-path: ellipse(100px 100px at 0% 50%);*/  /*animation: spotlight 5s infinite;*/ /*让@keyframes里的动画5秒循环一次,动画永久循环*/  }

第二,大家会发制作成品的文字(TestText)是彩色的而不是黄色(纯色)的

@CodingStartup起码课

方法是用上背景图片,把文字当做一个mask(遮罩)【彩色图片地址:https://i.loli.net/2020/03/22/OhAmBwFYpfe25sL.jpg】

继续对h1::after动手

h1::after{  /*content: attr(data-spotlight);*/ /*这部分直接从h1中读取顶部文字的值而不用在这里设定一个值了*/  color: transparent; /*重中之重:顶端文字颜色设为“透明”*/  /*position: absolute;*/ /*css绝对定位(百度有较详细的介绍,这里不多赘述)*/  /*top: 0;*/ /*顶端文字顶部距离*/  /*left: 0;*/ /*顶端文字左端距离*/  /*-webkit-clip-path: ellipse(100px 100px at 0% 50%);*/ /*刻画一个直径为100px的正圆形,位置处于重叠文字的最左端、水平垂直的1/2处*/  /*clip-path: ellipse(100px 100px at 0% 50%);*/  /*animation: spotlight 5s infinite;*/ /*让@keyframes里的动画5秒循环一次,动画永久循环*/  background-image: url(https://i.loli.net/2020/03/22/OhAmBwFYpfe25sL.jpg);  /*这里把背景设置为url内图片的链接*/  background-size: 150%; /*经背景放大为原来的1.5倍*/  background-position: center center; /*将背景图置中*/  -webkit-background-clip: text; /*详细介绍查看上文有关【-webkit-】的介绍*/  background-clip: text; /*将背景的绘图区域设定在文字中*/  }

ff7eb89ad7984fca0275c9d51aaf1c8f.gif

到了这里,总算是搞定聚光灯效果的构建了

但是!因为这只是预览阶段的内容,所以暂时还不能直接发布到网络上!

Q:怎么办?

A:在html加入css的位置就可以了。

html部分(记得把这些代码保存到.html文件内):

<html><head><title>CSS 测试title> <link href="1.css" rel="stylesheet" type="text/css" media="all" /> head><body><h1 data-spotlight="TestText">TestTexth1>body>html>

来一遍没有注释的完整的css:

html{  font-size:15px;}body{  background-color: #222;  display: flex;  justify-content: center;  align-items: center;  min-height: 100vh;}h1{  color: #333;  font-family: Helvetica;  margin: 0;  padding: 0;  font-size: 8rem;  letter-spacing: -0.2rem;  position: relative;}h1::after{  content: attr(data-spotlight);  color: transparent;  position: absolute;  left: 0;  top: 0;  -webkit-clip-path: ellipse(100px 100px at 0% 50%);  clip-path: ellipse(100px 100px at 0% 50%);  animation: spotlight 6s infinite;  background-image: url(https://i.loli.net/2020/03/22/OhAmBwFYpfe25sL.jpg);  background-size: 150%;  background-position: center center;  -webkit-background-clip: text;  background-clip: text;}@keyframes spotlight {  0% {    -webkit-clip-path: ellipse(100px 100px at 00% 50%);    clip-path: ellipse(100px 100px at 0% 50%);  }  50% {    -webkit-clip-path: ellipse(100px 100px at 100% 50%);    clip-path: ellipse(100px 100px at 100% 50%);  }  100% {    -webkit-clip-path: ellipse(100px 100px at 00% 50%);    clip-path: ellipse(100px 100px at 0% 50%);  }}

最后,将这两个文件放置在服务器(或者Github Pages)的同一个目录下即可发布到网络上啦

~\(≧▽≦)/~

OK,以上就是关于CSS聚光灯项目的全部内容,觉得不错的话点个“在看吧”!

(也要记得关注CodingStartup起码课哦)

↓打赏一下

09e0954488a4e5ee6648cd878fcd9623.png

关注CodingStartup起码课↓32891ef0ab2fe6d8ca585f3ac432c4d2.png

点个“在看”就是对我们最大的支持!?

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

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

相关文章

一文读懂阿里云直播技术是如何实现的

简介&#xff1a; 东京奥运会已落下帷幕。比赛期间&#xff0c;全球亿万观众蜂拥至各大转播平台观看奥运赛事&#xff0c;平台直播能力显的尤为重要。阿里云作为视频直播平台的技术提供商&#xff0c;凭借在产品技术、资源带宽、服务保障等方面优势&#xff0c;可为各大转播平台…

低代码发展专访系列之七:低代码的火爆需要不一样的声音么?

编辑 | 曹芊芊话题&#xff1a;低代码发展系列专访前言&#xff1a;2019年开始&#xff0c;低代码爆火。有人认为它是第四代编程语言&#xff0c;有人认为它是开发模式的颠覆&#xff0c;也有人认为是企业管理模式的变革……有很多声音&#xff0c;社区讨论很热烈。CSDN随后展开…

启动、内存、卡顿三大分析,用户体验就用它?

简介&#xff1a; 启动分析支持通过预置采集和个性化自定义两种方式定义启动阶段&#xff0c;可以分别查询首次启动、冷启动、热启动的情况效果&#xff0c;并可以与设备、系统、版本、地域等维度做交叉筛选查询。 随着大量应用涌入市场加入“App内卷之战”&#xff0c;终端用…

adb echo shell 覆盖_一次写shell脚本的经历记录

点击上方“我的小碗汤”&#xff0c;选择“置顶公众号”精品文章&#xff0c;第一时间送达redis在容器化的过程中&#xff0c;涉及到纵向扩pod实例cpu、内存以及redis实例的maxmemory值&#xff0c;statefulset管理的pod需要重启。所以把redis集群的状态检查放到了健康检查中&a…

当新零售遇上 Serverless

简介&#xff1a; Serverless 的出现给传统企业数字化转型带了更多机遇。 某零售商超行业的龙头企业&#xff0c;其主要业务涵盖购物中心、大卖场、综合超市、标准超市、精品超市、便利店及无人值守智慧商店等零售业态&#xff0c;涉及全渠道零售、仓储物流、餐饮、消费服务、…

如果还不懂如何使用 Consumer 接口,就来看这篇!

作者 | 阿Q来源 | 阿Q说代码背景在开发过程中我遇到这么一个问题&#xff1a;表结构&#xff1a;一张主表A &#xff0c;一张关联表B &#xff0c;表 A 中存储着表 B 记录的状态。场景&#xff1a;第一步创建主表数据&#xff0c;插入A表&#xff1b;第二步调用第三方接口插入B…

京东:Flink SQL 优化实战

简介&#xff1a; 本文着重从 shuffle、join 方式的选择、对象重用、UDF 重用等方面介绍了京东在 Flink SQL 任务方面做的优化措施。 本文作者为京东算法服务部的张颖和段学浩&#xff0c;并由 Apache Hive PMC&#xff0c;阿里巴巴技术专家李锐帮忙校对。主要内容为&#xff1…

Spring Boot参数校验以及分组校验的使用

简介&#xff1a; 做web开发基本上每个接口都要对参数进行校验&#xff0c;如果参数比较少&#xff0c;还比较容易处理&#xff0c;一但参数比较多了的话代码中就会出现大量的if-else语句。虽然这种方式简单直接&#xff0c;但会大大降低开发效率和代码可读性。所以我们可以使用…

长文解析:作为容器底层技术的半壁江山, cgroup如何突破并发创建瓶颈?

简介&#xff1a; io_uring 作为一种新型高性能异步编程框架&#xff0c;代表着 Linux 内核未来的方向&#xff0c;当前仍处于快速发展中。阿里云联合 InfoQ 发起《io_uring 介绍及应用实践》的技术公开课&#xff0c;围绕 OpenAnolis 龙蜥社区 Anolis OS 8 全方位解析高性能存…

Orion:谷歌的新一代SDN控制器

作者 | 魏煌松来源 | 鲜枣课堂时至今日&#xff0c;谷歌在2015年公布的成果&#xff0c;“利用SDN将广域网带宽利用率提升至接近100%”&#xff0c;仍然是SDN的一个标杆案列&#xff0c;也是难以逾越的巅峰。但事实上&#xff0c;当时使用的SDN控制器Onix&#xff0c;早已退出了…

移动云正式发布基于龙蜥 Anolis OS 的 BC-Linux V8.2 通用版操作系统

简介&#xff1a; 2020年12月CentOS项目组宣布CentOS 8将于2021年12月31日结束支持&#xff0c;这意味着从2022年开始&#xff0c;使用CentOS 8的用户&#xff0c;将无法得到来自官方的新硬件支持、bug修复和安全补丁。针对这一情况&#xff0c;移动云大云操作系统团队基于国内…

干掉讨厌的 CPU 限流,让容器跑得更快

简介&#xff1a; 让人讨厌的 CPU 限流影响容器运行&#xff0c;有时人们不得不牺牲容器部署密度来避免 CPU 限流出现。本文介绍的 CPU Burst 技术可以帮助您既能保证容器运行服务质量&#xff0c;又不降低容器部署密度。文章分为上下两篇&#xff0c;该文为上篇&#xff0c;下…

微弱信号检测_机动车检测线常用传感器介绍

机动车检测线中经常会运用到各种传感器&#xff0c;这些传感器相当于车辆检测系统的“眼睛”、“鼻子”和“耳朵”&#xff0c;通过台体装置和装在台体中的传感器&#xff0c;能够把车辆的性能数据转换成计算机系统能够识别的信号&#xff0c;供计算机处理和计算&#xff0c;最…

赋能开发者,英特尔发布oneAPI 2022工具包

英特尔发布了oneAPI 2022工具包。此次发布的最新增强版工具包扩展了跨架构开发的特性&#xff0c;为开发者提供更强的实用性和更丰富的架构选择&#xff0c;用以加速计算。 英特尔公司首席技术官、高级副总裁、软件和先进技术事业部总经理 Greg Lavender表示&#xff1a;“我十…

Quick BI V4.0功能“炸弹”来袭,重磅推出即席分析、模板市场、企业微信免密登录等强势功能

简介&#xff1a; 2021年7月&#xff0c;Quick BI公共云版本迭代新功能&#xff1a;重磅推出即席分析、模板市场&#xff0c;分析门槛再降低&#xff1b;推出企业微信无缝对接&#xff0c;移动端类目个性配置及管理提升多端能力&#xff1b;数据建模配置交互升级至拖拽模式提升…

打印速度快点的打印机_瞒着领导偷偷给你们发两台打印机

前几次小粉笔组织的活动都被“投诉”&#xff01;说我们打印机太少~小粉笔心领神会&#xff0c;在这个月的活动预算费用上悄咪咪加了【两台打印机】~(看小粉笔多疼你们&#xff01;)希望知道的笔芯不要把这条推文转发给我领导(要不然你们以后就没有打印机了~哼&#xff01;)现在…

数据库误操作后悔药来了:AnalyticDB PostgreSQL教你实现分布式一致性备份恢复

简介&#xff1a; 本文将介绍AnalyticDB PostgreSQL版备份恢复的原理与使用方法。 一、背景 AnalyticDB PostgreSQL版&#xff08;简称ADB PG&#xff09;是阿里云数据库团队基于PostgreSQL内核&#xff08;简称PG&#xff09;打造的一款云原生数据仓库产品。在数据实时交互式…

与变异风险词赛跑 阿里探索AI治理网络风险

最近&#xff0c;阿里安全一线风控小二可粒发现&#xff0c;在禁售的风险防控库里&#xff0c;有人试图“上新”新品种&#xff0c;不法份子借助在社交媒体上走红的“魔法改运”等说辞&#xff0c;引人入玄学骗局。 尽量提前发现风险问题&#xff0c;提早布防是阿里安全风控部…

高效研发运维体系构建的流程和方法论

简介&#xff1a; 云计算产品大多都会与云原生发生关联&#xff0c;云原生正在重塑整个软件的生命周期。但到底什么是云原生&#xff1f;云原生带来的最大技术创新和未来机会是什么&#xff1f;围绕云原生&#xff0c;是否可以构建出一套云上的开发&运维体系&#xff0c;打…

Colima:MacOS 上的极简容器运行时和 Kubernetes

作者 | Addo Zhang来源 | 云原生指北Colima 是一个以最小化设置来在MacOS上运行容器运行时和 Kubernetes 的工具。支持 m1&#xff0c;同样也支持 Linux。Colima 的名字取自 Container on Lima。Lima 是一个虚拟机工具&#xff0c;可以实现自动的文件共享、端口转发以及 contai…