从微信聊天框开始学习CSS属性filter

简介: 从微信聊天框开始学习CSS属性filter

前言

给别人发图片时,Ctrl+A选中图片发生了颜色反转。

下面重现一下

filter

至于为什么会联想到filter属性,主要是因为小时候经常玩手机的拍照功能,黑白滤镜、复古。。。

所以第一印象就是搜索CSS的滤镜属性,就找到了,所以来简单学习一下。(微信的那个具体怎么实现并不了解)

说是学习,但是其实就只是了解一下怎么使用而已。使用filter属性主要用法就是通过Filter函数来实现具体效果。

invert()

刚开始就先从实现遇到的反转先。invert()函数反转输入图像,参数是转换的比例,值为0%表示无变化,值为100%表示完全反转。

filter

超出100%之后也是和100%一样的效果。也就是说需要反转只需要设置CSS属性filterinvert(100%)即可,当然也不一定需要是100%。上面测试的是图像,但是实际上非图像该属性也是起作用的。

div {
    width: 200px;
    height: 200px;
    background-color: red;
    filter: invert(100%)
}

image-20220611222043656

上面的反转是不是很有意思。这是因为红色的rgb值为(255, 0, 0),所以反转后的rgb值为(0, 255, 255),即上面的效果。

实用技巧

我们可以给html元素添加filter: invert(100%),即可实现切换亮暗模式。

document.documentElement.style.filter='invert(100%)'

filter

可以使用该方法开启黑暗模式看pdf文件的(虽然有一些地方会有点怪)

blur()

调整输入图像的模糊程度,参数可以设置为CSS长度(pxem等,不接受百分比)

image-20220612124521327

使用技巧

filter属性的blur()可以将模糊应用于元素。说到模糊,可能想到的应用就是自己制作一下有毛玻璃效果的背景图片了。接下来来耍一下。(在网上看到的效果,下面的例子也是参考网上的)

基本解构:

css

body {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    background: url('https://i.loli.net/2019/11/17/GAYyzeKsiWjP5qO.jpg') no-repeat;
    background-size: cover;
}

.grass {
    position: fixed;
    top: 50px;
    width: 72vw;
    height: 36vh;
    box-shadow: 0 0.3px 0.7px rgb(0 0 0 / 13%), 0 0.9px 1.7px rgb(0 0 0 / 18%), 0 1.8px 3.5px rgb(0 0 0 / 22%), 0 3.7px 7.3px rgb(0 0 0 / 28%), 0 10px 20px rgb(0 0 0 / 40%);
}

html

<body>
    <div class="grass"></div>
</body>

image-20220612132534829

现在给grass盒子添加一下模糊度。

filter: blur(4px);

image-20220612132921567

但是结果和我们想象的不太一样,只有阴影有模糊。这是因为filter是将模糊等图形效果应用于元素,而后面的背景图片是该元素后面的body元素的,所以添加的模糊并不会添加到后面的背景图片中。

这时候,就轮到filter的好兄弟backdrop-filter登场了,它可以让你为一个元素后面区域添加图形效果(如模糊或颜色偏移)。值和filter的一样用法。

backdrop-filter: blur(4px);

image-20220612135449495

drop-shadow()

对输入图像应用阴影效果。(和box-shadow很相似,不过,在部分浏览器中通过filter可以提供硬件加速)

  • offset-x:设置阴影的水平偏移量
  • offset-y:设置阴影的垂直偏移量
  • blur-radius:设置阴影的模糊半径,值越大,越模糊,阴影也会更大、更淡
  • color:颜色
div {
    width: 200px;
    height: 200px;
    background-color: pink;
    filter: drop-shadow(4px 4px 6px black);
}

image-20220612151813219

复合函数

Filter函数可以任意组合来控制渲染。

div {
    width: 200px;
    height: 200px;
    background-color: red;
    filter: invert(100%) drop-shadow(4px 4px 6px black);
}

image-20220612152120004

filter属性还有很多很有意思的用法,可以设置对比度、灰度等。这里就不再过多赘述了,有想了解的可以到官方文档查阅。

目录
相关文章
|
15天前
|
前端开发
css的渐变属性linear-gradient
css的渐变属性linear-gradient
|
5天前
|
前端开发
CSS属性:盒子模型
CSS属性:盒子模型
18 0
|
5天前
|
前端开发
CSS属性
CSS属性
17 0
|
7天前
|
前端开发
前端基础(五)_CSS文本文字属性、背景颜色属性
本文详细介绍了CSS中关于文本和背景颜色的样式属性。包括字体大小、字体族、字体加粗、字体样式、文本行高、`font`属性、文本颜色、文本对齐方式、文本装饰线、首行缩进等文本属性,以及背景颜色、背景图片、背景重复、背景位置等背景属性。文章通过示例代码展示了这些属性的具体应用和效果。
12 3
前端基础(五)_CSS文本文字属性、背景颜色属性
|
6天前
|
小程序 JavaScript API
微信小程序开发学习之页面导航(声明式导航和编程式导航)
这篇文章介绍了微信小程序中页面导航的两种方式:声明式导航和编程式导航,包括如何导航到tabBar页面、非tabBar页面、后退导航,以及如何在导航过程中传递参数和获取传递的参数。
微信小程序开发学习之页面导航(声明式导航和编程式导航)
|
6天前
|
小程序 前端开发 索引
微信小程序中的条件渲染和列表渲染,wx:if ,wx:elif,wx:else,wx:for,wx:key的使用,以及block标记和hidden属性的说明
这篇文章介绍了微信小程序中条件渲染和列表渲染的使用方法,包括wx:if、wx:elif、wx:else、wx:for、wx:key以及block标记和hidden属性的使用。
微信小程序中的条件渲染和列表渲染,wx:if ,wx:elif,wx:else,wx:for,wx:key的使用,以及block标记和hidden属性的说明
|
6天前
|
小程序 JavaScript
微信小程序学习之数据绑定,事件绑定,事件传参与数据同步的学习记录
本文介绍了微信小程序中的数据绑定、事件绑定、事件传参与数据同步的基本概念和使用方法,包括如何在data对象中定义数据、使用mustache语法在wxml中渲染数据、绑定和处理事件、事件对象属性、事件传参以及实现输入框与data数据的同步。
微信小程序学习之数据绑定,事件绑定,事件传参与数据同步的学习记录
|
1月前
|
前端开发
|
1月前
|
Web App开发 移动开发 自然语言处理
|
9天前
|
前端开发
Vue3基础(十ba)___在css中使用props或者计算属性的变量,来实现动态样式
本文介绍了如何在Vue3中通过CSS变量和props或计算属性来实现动态样式。
12 0
下一篇
无影云桌面