学びブログ
Learning Blog

DESIGN
HTML/CSS

HTMLとCSSを使用した画像のマスキングとホバーエフェクトの実装

ウェブデザインにおいて、画像に特定の形状を適用したり、マウスオーバー時にアニメーション効果を追加する方法はさまざまあります。今回のコラムでは、HTMLとCSSを使用して画像をマスキングし、更にホバーエフェクトを実装する方法について解説します。

HTMLコードの解説:

<a class="mask-alpha" href="#">
    <img class="target alpha-target" src="img/bg.jpg" alt="Masked image">
</a>

切り抜く画像をhtmlのimgタグで構成します。親要素にはaタグの実装して準備。

CSSコードの解説:

.mask-alpha {
    mask-image: url(../img/star.svg);
    mask-repeat: no-repeat;
    mask-size: auto 80%;
    mask-position: center;
    -webkit-mask-image: url(../img/star.svg);
    -webkit-mask-repeat: no-repeat;
    -webkit-mask-size: auto 80%;
    -webkit-mask-position: center;
    display: inline-block;
}
.target:hover{
    transform: scale(1.2);
}
.target{
    width: 300px;
    transition: all .4s;
}

今回の切り抜きに関しては、maskというプロパティを利用します。

Photoshopでもよく使っているあのマスクと同じ効果を持たせることができます。

.mask-alphaというクラスは、<a>要素に適用されており、要素全体にマスク効果を追加します。

mask-imageプロパティは、url(../img/star.svg)を指定しています。これにより、img/star.svgというファイルがマスク画像として使用されます。

mask-repeatプロパティは、マスク画像の繰り返し方法を指定しており、no-repeatを指定することで繰り返しを行いません。mask-positionプロパティは、マスク画像の位置を指定しています。ここでは、centerと指定されており、水平・垂直位置に中央配置されます。

mask-sizeプロパティは、マスク画像のサイズを指定しており、auto 100%を指定することで幅は自動調整され、高さは100%になります。同様のプロパティがベンダープレフィックス付きで-webkit-を用いて指定されているのは、一部の古いブラウザに対応するためです。

.targetというクラスは、<img>要素に適用されています。このクラスは、widthプロパティを使用して要素の幅を300pxに設定しています。また、transitionプロパティは、要素が変化する際のアニメーション効果を指定し、.4sで0.4秒かけて変化します。

.target:hoverは、.targetクラスにホバー時のスタイルを指定するためのセレクタです。transformプロパティを使用して、scale(1.2)を指定しています。これにより、要素が1.2倍に拡大されるアニメーション効果が発生します。

まとめ:

上記のHTMLとCSSコードの組み合わせによって、画像のマスキングとホバーエフェクトが実装されます。.mask-alphaクラスは、<a>要素にマスク効果を追加し、.targetクラスは<img>要素にホバーエフェクトを追加します。マスク画像はimg/star.svgというファイルであり、マスクの位置やサイズはCSSプロパティで調整できます。ホバーエフェクトは、マウスを要素の上に重ねると要素が拡大される効果です。

このコードを使用することで、ウェブページ上で画像を興味深く表示することができます。たとえば、マスク画像には星の形状を使っていますが、他の画像や形状に簡単に置き換えることもできます。また、ホバーエフェクトのスタイルも変更できます。たとえば、要素の移動や回転など、他のトランジション効果を追加することも可能です。

このコードの利点の1つは、HTMLとCSSのみを使用して実装できることです。JavaScriptなどの追加のプログラミング言語やライブラリは必要ありません。これにより、開発の手間を軽減しながら、魅力的な画像エフェクトを実現できます。

このコードを使用して、ウェブデザインにおいて興味深い画像のプレゼンテーションやユーザーエクスペリエンスを実現してみてください。