1. 关于css 中对于滤镜 filter 的使用及场景了解

105 阅读5分钟

css滤镜--filter

使用场景1:

在接触到maptalks 地图的底图常常会有不同的图层设置风格滤镜。 图层的 cssFilter 属性可以用 css filter 来给图层设置风格滤镜。 对底层的baseLayer 设置cssFilter

<!DOCTYPE html>
<html>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>瓦片图层与地理投影 - 底图风格滤镜</title>
  <style type="text/css">
    html,body{margin:0px;height:100%;width:100%}
    .container{width:100%;height:100%}
  </style>
  <link rel="stylesheet" href="https://unpkg.com/maptalks/dist/maptalks.css">
  <script type="text/javascript" src="https://unpkg.com/maptalks/dist/maptalks.min.js"></script>
  <body>
    <div id="map" class="container"></div>

    <script>
      var map = new maptalks.Map('map', {
        center: [105.08052356963802, 36.04231948670001],
        zoom: 5,
        minZoom:1,
        maxZoom:19,
        baseLayer: new maptalks.TileLayer('base', {
          urlTemplate: 'https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png',
          subdomains: ['a','b','c','d'],
          attribution: '&copy; <a href="http://osm.org">OpenStreetMap</a> contributors, &copy; <a href="https://carto.com/">CARTO</a>',

          // css filter
          cssFilter : 'sepia(100%) invert(90%)'
        })
      });

    </script>
  </body>
</html>

注释:代码来源于maptalks官网:maptalks.org/examples/cn…

使用场景2:

在特定的时期需要对特定的颜色底色时,采用grayscale(1)的参数做内容输出。

filter: grayscale(1);

image.png

设置完成后就能达到应有的效果。

使用场景3:

需要指定一个长度值作为参数,表示要应用的模糊程度。模糊程度越大,图像就越模糊。便使用blur()函数 eg:blur(5px)/blur(5%)/blur(5rem)

.filter {
  filter: blur(5px);
}

使用场景4:

调整图像的亮度,接受一个百分比值或者小数作为参数,用于指定亮度的级别 eg:brightness(120%)/brightness(1.2),大于1增加亮度,小于1 减少亮度

.filter {
  filter: brightness(120%); /* 或者 filter: brightness(1.2); */
}

使用场景5:

调整图像的对比度,接受一个百分比值或者小数作为参数,用于指定亮度的级别 eg:contrast(120%)/contrast(1.2),大于1增加对比度,小于1 减少对比度

.filter {
  filter:contrast(120%); /* 或者 filter:contrast(1.2); */
}

使用场景6:

图像添加阴影效果。它可以接受多个参数,包括阴影的颜色、偏移量、模糊度等。

.filter {
  filter: drop-shadow(2px 2px 4px rgba(0, 0, 0, 0.5));
}

drop-shadow()函数的参数说明:

水平偏移量:阴影相对于元素的水平位移量。可以为负数,表示阴影向左偏移。 垂直偏移量:阴影相对于元素的垂直位移量。可以为负数,表示阴影向上偏移。 模糊半径:阴影模糊的半径大小。可以为0,表示完全不模糊。 阴影颜色:阴影的颜色。可以使用命名颜色、RGB值、十六进制颜色、HSL值等表示颜色的格式,也可以使用rgba()函数指定颜色和透明度。

使用场景7:

图像进行色相旋转。它接受一个角度值作为参数,用于指定旋转的角度。

.filter {
  filter: hue-rotate(90deg);
}

使用场景8:

图像进行反色处理。它接受一个百分比值或者小数作为参数,用于指定反色的程度。

.filter {
  filter: invert(50%); /* 或者 filter: invert(0.5); */
}

使用场景9:

调整元素的不透明度(透明度)。它接受一个百分比值或者小数作为参数,用于指定元素的透明度级别。

.filter {
  filter: opacity(50%); /* 或者 filter: opacity(0.5); */
}

使用场景10:

调整图像的饱和度。它接受一个百分比值或者小数作为参数,用于指定饱和度的级别。

.filter {
  filter: saturate(200%); /* 或者 filter: saturate(2); */
}

使用场景11:

图像转换为深褐色(复古)效果。它接受一个百分比值或者小数作为参数,用于指定sepia(褐色)效果的程度。

.filter {
  filter: sepia(100%); /* 或者 filter: sepia(1); */
}

使用场景12:

多个滤镜函数的组合使用,以创建更复杂的效果。可以通过空格将多个函数链接在一起,它们的顺序会影响最终效果。

/*亮度增强和对比度增强的效果*/
.brightness-contrast {
  filter: brightness(150%) contrast(150%);
}
/*模糊且半透明*/
.blur-opacity {
  filter: blur(5px) opacity(50%);
}
/*灰度、褐色和饱和度增强的效果,使图像呈现出复古的灰色调*/
.grayscale-sepia-saturate {
  filter: grayscale(100%) sepia(50%) saturate(200%);
}

总结:

  1. filter 过滤属性

① 模糊(blur): 单位可为px或rem,值越大,越模糊

eg:filter:blur(3px)  

filter:blur(0.3rem)

②亮度(brightness): 值可为数字或百分数,小于1时,亮度更暗;等于1时,无变化;大于1时,亮度更亮

eg : filter:brightness(1.5)

filter:brightness(150%)

③对比度 (contrast):  值可为数字或百分数,小于1时,对比度更低;等于1时,无变化;大于1时,对比度更高

eg:filter:contrast(0.7)

filter:contrast(70%)

④阴影 (drop-shadow): 四个属性分别为:offset-x(阴影左右偏移的位置) offset-y(阴影上下偏移的位置) blur-radius(阴影模糊范围) color(阴影颜色)

eg:filter:drop-shadow(-20px 10px 14px #c112d1)

⑤灰度 (grayscale): 值可为数字或百分数,等于0时,无变化;等于1时,为全灰;小于0大于1时,灰度为中间值

eg:filter:grayscale(0.8)

filter:grayscale(80%)

⑥色调旋转(hue-rotate): 单位为deg,值为0deg时,无变化,90deg=0.25turn,-90deg=270deg

eg:filter:hue-rotate(90deg)

filter:hue-rotate(0.25turn)

⑦反色(invert): 值可为数字或百分数,等于0时,无变化;等于1时,完全反色

eg:filter:invert(0.6)

filter:invert(60%)

⑧透明度(opacity): 值可为数字或百分数,等于0时,为透明;等于0.5时,半透明;等于1时,无变化

eg:filter:opacity(0.3)

filter:opacity(30%)

⑨饱和度(saturate): 值可为数字或百分数,等于0时,无饱和度;等于0.5时,半饱和度;等于1时,无变化;大于1时,为更大饱和度

eg:filter:saturate(3)

filter:saturate(300%)

⑩褐度(sepia): 值可为数字或百分数,等于0时,无变化;等于1时,为全褐;小于0大于1时,褐度为中间值

eg:filter:sepia(0.65)

filter:sepia(65%)