【CSS】mask遮罩

 出于对b站视频为什么不遮挡人物的好奇,查看了相关的图片和相关文档,发现图片是类似于一个PS的遮罩层:

 

这张图片是怎么来的,肯定是AI识别出来然后生成的,一张图片也就一两K,一次加载很多张也不会造成很大的负担。查找文档,主要利用了以下属性:



详细相关mark属性:

 

  • 它可以用于隐藏或部分隐藏一个元素的可见区域,类似于PS中的遮罩概念
  • 对于遮罩
    • 如果元素添加了遮罩属性,那么目标元素将会按照遮罩的形状来显示
      • 遮罩透明的区域,元素也会透明,即该区域被隐藏
    • 通常,遮罩可以是透明的图片或者是带渐变的元素
  • 属性值:
    • mask-image
    • mask-repeat
    • mask-position
    • mask-clip
    • mask-origin
    • mask-size
    • mask-mode
    • mask-composite

常见的几种属性

(1)mask-image

  • mask-image表示使用图片资源作为遮罩

    • 默认值为none,即无遮罩图片
    • 使用url()来引入图片资源,同背景图片的引入方式
      • 引入的图片资源可以是.jpg.png.svg
      • 注意,linear-gradient生成的渐变也是一种图片,所以也可以使用渐变来作为遮罩
  • 示例说明

    • 先使用线性渐变绘制一个带透明区域的网格背景

      .bg {
          background-image: linear-gradient(
              to top,
              #000 0%,
              #000 50%,
              transparent 50%,
              transparent 100%
          ),
              linear-gradient(to right, transparent 0%, transparent 50%, #000 50%, #000 100%);
          background-size: 50px 50px;
      }
      复制代码
    • 然后将这个渐变应用于元素的mask-image属性上

    .spider {
        border: 1px dashed #ccc;
        -webkit-mask-image: linear-gradient(
            to top,
            #000 0%,
            #000 50%,
            transparent 50%,
            transparent 100%
        ),
            linear-gradient(to right, transparent 0%, transparent 50%, #000 50%, #000 100%);
        -webkit-mask-size: 50px 50px; /* 这个属性用于控制遮罩图层的大小,在后面会介绍 */
    }
    复制代码

(2)mask-repeat

  • mask-repeat表示重复遮罩,作用效果同背景属性background-repeat类似

    • 属性值:
      • repeat:默认值,表示重复
      • repeat-x:表示在水平方向上重复
      • repeat-y:表示在垂直方向上重复
      • no-repeat:表示不重复
      • space:表示平铺
      • round:表示尽量靠在一起
  • 示例说明

    • 这里找到一张圆形图片作为遮罩处理

      .spider1 {
          -webkit-mask-image: url('./mask.ico');
          -webkit-mask-repeat: repeat; /* 默认值,表示重复 */
      }
      .spider2 {
          -webkit-mask-image: url('./mask.ico');
          -webkit-mask-repeat: no-repeat; /* 表示不重复 */
      }
      复制代码

(3)mask-position

  • mask-position属性和background-position属性的表现类似,用于控制遮罩的作用位置

    • 属性值:
      • 关键字:topbottomleftrightcenter
        • 如果只有一个关键字,则默认缺省的关键字为center
      • 数值:%pxemrem
      • 默认值为 0% 0%,即左上角
  • 示例说明

    .spider1 {
        -webkit-mask-image: url('./mask.ico');
        -webkit-mask-repeat: no-repeat;
        -webkit-mask-position: right;
    }
    .spider2 {
        -webkit-mask-image: url('./mask.ico');
        -webkit-mask-repeat: no-repeat;
        -webkit-mask-position: left;
    }
    复制代码

(4)mask-clip

  • mask-clip的表现也和background-clip的表现类似
    • 属性值:
      • content-boxpadding-boxborder-box
      • fill-boxstroke-boxview-box
      • no-clip
    • 这个属性需要搭配盒模型相关属性才能看到效果,如marginpadding

(5)mask-origin

  • mask-origin用于设置遮罩的起始位置,其行为与表示和background-origin类似
    • 主要属性值有:
      • content-boxborder-box
      • margin-boxpadding-box
      • fill-boxstroke-boxview-box
    • 这个属性需要搭配盒模型相关属性才能看到效果,如marginpadding

(6)mask-size

  • mask-size用于控制图片的尺寸,其效果和行为与background-size类似

    • 属性值:
      • 关键字:
        • contain:使图片完全适应元素区域,保证最短边能够完全显示,剩余部分会自动重复以填充,会保持图片原有宽高比
        • cover:使图片完全覆盖背景区域,保证最长边能够完全填充元素区域,会保持图片原有宽高比
        • auto:自适应
      • 数值:%empxrem
  • 示例代码

    .spider1 {
        -webkit-mask-image: url('./mask.ico');
        -webkit-mask-repeat: no-repeat;
    }
    .spider2 {
        -webkit-mask-image: url('./mask.ico');
        -webkit-mask-repeat: no-repeat;
        -webkit-mask-size: cover;
    }
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要实现 CSS 遮罩动画,可以使用 CSS 中的 `transition` 属性和 `transform` 属性。 `transition` 属性可以设置元素过渡效果,包括过渡的属性、过渡时间、过渡方式等。 `transform` 属性可以设置元素的变换效果,包括平移、旋转、缩放等。 示例代码如下: HTML: ```html <div class="mask"></div> ``` CSS: ```css .mask { /* 定位 */ position: fixed; top: 0; left: 0; /* 大小 */ width: 100%; height: 100%; /* 背景颜色 */ background-color: black; /* 透明度 */ opacity: 0; /* 过渡效果 */ transition: opacity 0.5s ease; /* 层级 */ z-index: 9999; } .show { /* 透明度 */ opacity: 0.5; /* 变换效果 */ transform: scale(1); } ``` 以上示例中,`.mask` 元素设置了 `position: fixed` 属性使其覆盖整个页面,设置了 `background-color` 属性为黑色,同时使用 `opacity` 属性设置其透明度为 0,并设置了 `transition` 属性使其透明度变化时有过渡效果。`.show` 类用来控制元素的显示状态,当添加 `.show` 类时,`.mask` 元素的透明度会从 0 变为 0.5,同时使用 `transform` 属性实现缩放效果,从而实现了遮罩动画效果。 JavaScript 代码如下: ```js const mask = document.querySelector('.mask'); function showMask() { mask.classList.add('show'); } function hideMask() { mask.classList.remove('show'); } ``` 以上 JavaScript 代码中,`showMask` 函数用来显示遮罩层,`hideMask` 函数用来隐藏遮罩层,通过操作 `.mask` 元素的类名来实现遮罩动画效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值