怎么把网页变成灰色?怎么让头像或某一部分不变灰色?filter/backdrop-filter/mix-blend-mode/svg/grayscale(1)

news2025/1/16 21:41:47

在国家公祭日,我们哀悼沉思,势要勿忘国耻振兴中华;在国家重要人物逝世后,举国哀悼;这些时段很多网站都会积极呼应,给与自己的网页设置成灰色;那给网页设置成灰色是经过怎样的设置来实现的呢?

 ​​​​​​

有的网站给自己整个页面设置为灰色;有的网站给首屏设置成灰色;有的则是给大多区域设置成灰色,留出某些部分是原色。

1、filter(让整个网页都呈现出灰色效果)

使用filter要注意,当给父级元素设置了灰色效果后,就像给父级加上了一个滤镜,这个元素的子级是不能通过调整子级的filter来摆脱父级滤镜遮盖。

所以给与整个网页呈现灰色,可以直接给html设置

<style>
    html {
      filter: grayscale(0.95);
      -webkit-filter: grayscale(0.95);
    }
</style>

2、使用svg滤镜

SVG 滤镜的存在,让本来就非常强大的 CSS 如虎添翼。具体方案是使用svg的feColorMatrix

<style>
    html {
      filter: url(#grayscale);
    }
</style>


<svg xmlns="https://www.w3.org/2000/svg" style="display:none;">
  <filter id="grayscale">
    <feColorMatrix type="matrix" values="0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0"/>
  </filter>
</svg>

3、backdrop-filter

把效果应用在元素后面的区域所覆盖的所有的元素(可能有些绕,可以对比下filter的作用)

filter:把效果应用在该元素身上,其后代元素不能摆脱

拿blur模糊效果来举例看效果(以下分别是正常效果、filter的效果、backdrop-filter的效果) 

<style>
  .bg {
    padding: 10px;
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    background-image: url(./bg-2.jpg);
  }
  .bg > div {
    width: 300px;
    height: 250px;
    line-height: 250px;
    text-align: center;
    background: rgba(255, 255, 255, 0.7);
  }
  .bg div:nth-child(2) {
    filter: blur(6px);
  }
  .bg div:nth-child(3) {
    backdrop-filter: blur(6px);
  }    
</style>

看到效果后再回想上面的那句话,backdrop-filter不影响自己这个元素,会把效果放在这个元素下面的区域上。 

这次来个新的,用它来做首屏变灰,下滚的区域正常显示

<style>
  html {
      position: relative;
      width: 100%;
      height: 100%;
      overflow: scroll;
  }
  html::before {
      content: "";
      position: absolute;
      inset: 0; /* top/bottom/left/right:0的简写 */
      backdrop-filter: grayscale(95%);
      z-index: 10;
  }
</style>

【注意】backdrop-filter  存在一些兼容性问题,对于火狐 v103 及以下可能不支持 

4、混合 mix-blend-mode

mix-blend-mode是CSS中另一个可以对颜色效果进行干预操作的属性——混合模式,相对backdrop-filter兼容性要好

继续拿首屏置灰来实验,具体实现代码:

<style>
  html {
      position: relative;
      width: 100%;
      height: 100%;
      overflow: scroll;
      /* 一定要加上白背景的! */
      background: #fff;
  }
  html::before {
      content: "";
      position: absolute;
      inset: 0;
      background: rgba(0, 0, 0, 1);
      mix-blend-mode: color;
      z-index: 10;
  }
</style>

【问题】

无论是兼容性好的min-blend-mode还是兼容性欠佳的backdrop-filter,都会有个问题——影响交互,就像有mask隔开一样,我们类似hover这些交互无法实现。(后面说解决办法)

5、除部分元素外,其他的区域置灰

有时候我们想要页面上除去某些地方之外的地方变灰,比如页面变灰但不让头像变灰

我们用filter来实现,就得考虑子级不能摆脱父级的遮罩

所以这个选择器很有意思,需要认真琢磨琢磨

<style>
  :not(:has(.avatar)):not(.avatar){
    filter:grayscale(1);	
  }
</style>

【解释】

拿xb类举例子  :not(:has(.xb)){样式}   所选元素——后代元素中不存在类名为xb的元素

下面两个图中可以看到样式不会加在div.avatar-box身上,而是会加在img.avatar.xb上

因为img.avatar.xb下面没有后代元素了,所以更不用说类名为xb的元素了,所以就得选它

基于上面的选择器,再增加:not(.xb)  即 :not(:has(.xb)):not(.xb){样式}

所选的元素——【后代元素中】类名不包含xb的元素并且本身不是类名为xb的元素(既不包含,也不是)

这样就可以避免 在avatar的父级上添加filter后导致avatar无法摆脱父级效果的问题

从下面两个图中可以看到,样式没有加在div.note-user上,因为这个元素的后代元素中存在类名为xb的元素,但是div.note-txt-box上是有样式的,因为这个元素的后代元素中不存在类名为xb的元素。

所以我们把用于测试的xb去掉,使用avatar类名来排除头像区域的灰色效果

同img.avatar的父级div.avatar-box同级的div.user-nick会有灰色效果,因为它的后代元素中既没有.avatar的元素自己本身也不是.avatar的元素;但div.avatar-box没有灰色效果,因为它的后代元素中存在.avatar的元素,所以不符合:not(:has(.xb)) 条件。

 6、滤镜影响交互问题

上面说到的一个问题——min-blend-mode或backdrop-filter的设置会影响一些交互效果

想要在鼠标hover到的时候,让转一圈,但实际这颗心没能被我打动

需要 pointer-events 的帮助,让我们的鼠标事件不发生在这个“mask”身上,也就是穿透到下面

pointer-events:none;

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

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

相关文章

利用pandas_udf加速机器学习任务

note pandas udf和python udf区别&#xff1a;前者向量化是在不同partition上处理pandas_udf使用panda API来处理分布式数据集&#xff0c;而toPandas()将分布式数据集转换为本地数据&#xff0c;然后使用pandas进行处理&#xff0c;如果Pyspark的dataframe非常大&#xff0c;…

快速排序和归并排序哪个快?

两个排序的基本思想都是分治&#xff08;分而治之&#xff09;,实现一般都使用递归实现。1.快速排序双边指针&#xff08;交换法&#xff09;&#xff1a;记录分界值 &#xff0c;创建左右指针&#xff08;记录下标&#xff09;。以第一个元素为分界值&#xff0c;先从右向左找…

C语言指针变量作为函数参数

在C语言中&#xff0c;函数的参数不仅可以是整数、小数、字符等具体的数据&#xff0c;还可以是指向它们的指针。用指针变量作函数参数可以将函数外部的地址传递到函数内部&#xff0c;使得在函数内部可以操作函数外部的数据&#xff0c;并且这些数据不会随着函数的结束而被销毁…

ocelot的单节点解决方案

ocelot的问题前面我们解决了consul的单节点的集群扩建。这里讨论如果在多客户端访问时&#xff0c;单网关也会有瓶颈。如果单台挂掉&#xff0c;那么也会麻烦&#xff0c;所以根据项目需要解决问题。ocelot多节点部署最简单的粗暴解决&#xff0c;多部署几台网关。但是我们需要…

mac环境和windows环境下GeoServer如何安装部署

geoserver是从事GIS行业都应当了解的一个gis服务器。 所以说学会geoserver是一个非常必要的事情。那么这篇文章呢我就带着大家来一起学习如何在Mac机器上和windows机器上安装并部署Geoserver。 首先不管是哪个环境我们都需要去官网上先下载安装包。 第一步我们要去geoserver的…

【计算机组成原理】y = a * b + c 的执行具体流程

文章目录1.2.2 认识各个硬件部件1. 主存储器的基本组成2. 运算器的基本组成3. 控制器的基本组成4. 计算机的工作流程1.2.2 认识各个硬件部件 1. 主存储器的基本组成 存储体&#xff1a;存放数据和指令地址寄存器&#xff1a;用来存放读取存储体数据时存放的具体位置数据寄存器…

12、字符(串)输入、输出

目录 一、字符数据输入&#xff0f;输出 1. 字符数据输入 2. 字符数据输出 二、字符串输入&#xff0f;输出 1. 字符串输入函数 2. 字符串输出函数 一、字符数据输入&#xff0f;输出 1. 字符数据输入 字符数据输入使用的是getchar函数&#xff0c;其作用是从终端&…

前端遇到的问题

inputs-outputs https://angular.cn/guide/inputs-outputs 用于父组件与子组件间的值传递 在项目中引入核心组件 父组件在其html界面绑定属性 在子组件里通过Input传递值 具体里: 使用默认规则数组绑定固定值(比如id)的错误 这里两个ts文件之间传值,采用了一个get函数,…

微信小程序 view组件的基本使用

1.view基本理论 能看图就尽量减少文字提示&#xff0c;从图书可以看出ABC是纵向排列的。 为什么会纵向排列而不是横向排列&#xff0c;那是因为view是块元素&#xff0c;能占满整一行。 怎么让view块元素横向并排呢&#xff1f; 向上图一样横向排列&#xff0c;接下来教学从0…

Kerberos协议与认证数据包分析

Kerberos协议 Kerberos是一种在开放的非安全网络中认证并识别用户身份信息的方法, 它旨使用密钥加密技术为客户端/服务端应用程序提供强身份认证。 目前主流的Kerberos版本是2005年的RFC4120标准的Kerberos v5, Windows、Linux和MacOs均支持Kerberos协议。Kerberos基础 Kerbe…

Quartz入门看这一篇文章就够了

第一章 Quartz简介 第一节 Quartz是什么? 1Quartz [kwɔːts]是一个完全由Java编写的开源的作业调度框架第二节 Quartz可以用来做什么? 比如说买火车票下单之30分钟之后,查看是否付款付款完成之后,在乘车日期的时候是否乘车或者每个月1号扣房贷每个月20号自动还信用卡想定时…

为什么要使用采购管理软件 采购管理软件推荐

在企业发展道路上&#xff0c;采购部门是一个非常重要的组织&#xff0c;它会直接影响到企业的经济效益。企业在采购活动中&#xff0c;如果还是采用传统线下的采购方式&#xff0c;那么很容易导致采购信息不集中&#xff0c;效率低&#xff0c;出错率高&#xff0c;最终损害企…

爱情呼叫转移-深度广度遍历合集

1.这件事是特殊的&#xff0c;还是普遍的&#xff1f; 工作中常常会遇到各种各样的问题&#xff0c;不管黑猫白猫&#xff0c;抓到老鼠就是好猫。哪只猫好&#xff0c;往往需要对比分析。 如何做数据对比&#xff0c;需要加入哪些数据来分析&#xff0c;在哪里进行数据对比&am…

查找 二分查找 (终极巩固)

二分条件&#xff1a; 1) 序列有序 2&#xff09;支持随机访问 二分思想&#xff1a; 大体思想是二分之后如果目标值在左侧&#xff0c;则中间包括右边区间所有pass掉 right mid - 1; 目标在右侧&#xff0c;则中间包括左边所有pass left mid 1; 注意点 left < rig…

Python Fiddler抓包工具教学,获取公众号(pc客户端)数据

前言 今天来教大家如何使用Fiddler抓包工具&#xff0c;获取公众号&#xff08;PC客户端&#xff09;的数据。 Fiddler是位于客户端和服务器端的HTTP代理&#xff0c;是目前最常用的http抓包工具之一。 开发环境 python 3.8 运行代码pycharm 2021.2 辅助敲代码requests 第三方…

VS2022 开发Qt之修改软件图标

开发环境本次实验使用的开发环境是win10 64位系统 IDE使用VS2022,Qt版本是Qt5,15.写博客背景最近再练习使用VS开发Qt,到修改软件图标的事情.在网上搜索了一番大部分修改图标的都是基于Qt自带的编译器,由于本人使用的VS的IDE和自带的编译器设置方法有所不同,在一番查找实验后还整…

【论文学习】YOLOv1-YOLOv4

文章目录You Only Look Once,Unified ,Real-Time Object DetectionAbstractIntroductionUnified DetectionNetwork DesignTrainingInferenceLimitations of YOLOComparison to Other Detection SystemsYOLO9000:Better,Faster,StrongerAbstractIntroductionBetterBatch Normali…

【C++之类和对象】日期类的实现

目录前言一、日期类的基本样式二、构造函数三、拷贝构造函数四、赋值运算符重载五、日期比较1. 判断一个日期是否小于另一个日期2. 判断一个日期和另一个日期是否相等3. 判断一个日期是否小于等于另一个日期4. 判断一个日期是否大于另一个日期5. 判断一个日期是否大于等于另一个…

独孤九剑xss通关教程

独孤九剑xss通关教程 独孤九剑第一式&#xff1a; 这里过滤了 () 构造payload&#xff1a; ?data"><svg><script>%26%23x65%3B%26%23x76%3B%26%23x61%3B%26%23x6c%3B%26%23x28%3B%26%23x6c%3B%26%23x6f%3B%26%23x63%3B%26%23x61%3B%26%23x74%3B%26%23…

开门红,农民大衣哥兔年第一条祝福,为何在百万艺人中选择杨语莲

俗话说&#xff1a;人逢喜事精神爽。这句话用到农民歌唱家大衣哥身上&#xff0c;就再贴切不过了&#xff0c;因为在新年即将来临之际&#xff0c;他的儿子小伟又一次结婚了。大衣哥是一个非常接地气的明星&#xff0c;这些年来他无绯闻不炒作&#xff0c;堪称为娱乐圈的楷模&a…