LoginSignup
2
2

More than 5 years have passed since last update.

CSS animation で遊び倒す - mask image -

Last updated at Posted at 2019-03-10

CSS animation day 47 となりました。
本日は、mask プロパティに について、お届けします。

1. 完成版

スクリーンショット 2019-03-10 16.45.55.png

2. 参考文献

Tech.Dig
Clipping and Masking
WPJ
オークニズム

3. 分解してみる

❶.

まずは、マークアップします。
星空の絵を中央に出しましょう。

index.html
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8" />
    <link rel="stylesheet" href="css/styles.css" />
  </head>
  <body>
    <div class="container">
      <img src="img/star.png" class="alpha-target" />
    </div>
  </body>
</html>
styles.css
body {
  margin: 0;
  padding: 0;
  background: #fffddd;
}

.container {
  position: relative;
  width: 100%;
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
}

img {
  display: block;
  max-width: 50%;
  height: auto;
  margin: 0 auto;
}

スクリーンショット 2019-03-10 16.45.22 (1).png

星空が出ました。

❷.
mask プロパティ を使用します。-webkit- をつけないと動きませんので、注意しましょう。

styles.css

.alpha-target {
  -webkit-mask-image: url("../img/cat.png");
  -webkit-mask-mode: alpha;
  -webkit-mask-repeat: no-repeat;
  -webkit-mask-size: 400px; 
  -webkit-mask-position: center center;
}

スクリーンショット 2019-03-10 16.45.55.png

星空の画像をネコ型にくり抜くことができました。
素敵ですね!


mask プロパティについて、解説します。


mask-mode:
mask 画像には、alpha と luminance の2つのタイプがあります。

alpha は、自分の画像が黒いところ (alpha値: 1)と重なった部分を、画像として表示します。

今回の場合、cat.pngが
スクリーンショット 2019-03-10 15.08.38.png

黒色をしておりました。mask-mode: alpha で、猫の黒い部分(アルファ値1)だけが、切り抜かれたというカラクリです。
面白いプロパティですね!


mask-image:
mask 画像を指定するのですが、background image と同じような使い方をします。
・使用できる画像は、jpg, png, svg があり、グラデーションも設定できます。

styles.css

.alpha-target {
   mask-image: linear-gradient(black 0%, transparent 100%);

スクリーンショット 2019-03-10 15.44.01.png


mask-size, maske-position:
background-size, background-position と同じような使い方をします。
mask 画像の大きさと、表示位置を指定することができます。


mask-repeat
mask画像を、どのようにリピートさせるかを決めることができます。

-webkit-mask-repeat: round;
ぎっちりつめてリピートします。

スクリーンショット 2019-03-10 17.03.35.png

-webkit-mask-repeat: space;
領域内に、感覚を空けて配置します。

スクリーンショット 2019-03-10 17.05.02.png

リピートさせたくないときは、no-repeatをつけましょう。

本日は以上となります。
明日は、このテクニックを使い、アニメーションを設定していきます。
それではまた明日〜

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2