写真・画像にフレームを付けたい、影を付けたい、トリミングしたい、色を変えたい。
そんなときは、写真・画像データ自体を加工すればいいわけですが、めんどくさい(個人的感想が強めです)。
いまは、写真・画像データはそのままに、CSSだけでさまざまな加工・編集ができます。
CSSであれば、再度デザインを変えたくなったときは、CSSを書き換えるだけですみます。写真・画像の元データを修正する必要はありません。
CSSで、簡単に、写真・画像をリデザインしてみましょう。
目次
使い方
HTML
HTMLはこちらをコピーしてご利用ください。
デザインサンプルはこのソースに対してCSSを適用させています。
<p class="XXX">
<img src="image.jpg" alt="イメージ">
</p>
冒頭「class="XXX"
」の「XXX
」は、後述するデザインサンプルのCSSのクラス名に変更してご利用ください。CSSに「.photo08
」と書かれている場合は「photo08
」がクラス名です。HTMLは「class="photo08"
」に変更します。「image.jpg
」は写真画像です。
CSS
後述する「デザインサンプル」のCSSをコピーしてご利用ください。
ただし、写真の下部に小さな余白が入る場合は、以下のCSSを追加してください。写真とテキストが並ぶときにどのラインで揃えるかを指定する記述です。bottom
で揃えるようにする。細かな説明は省きます…余白ができる場合は、おまじないとして記述してください。
img {
vertical-align: bottom;
}
デザインサンプル
シンプルなフォトフレーム
.photo01 {
display: inline-block;
border: #000000 10px solid;
}
枠線(border
)を太めの実線(solid
)にすることでフレーム風になります。
.photo01 {
display: inline-block;
padding: 10px;
background: #000000;
}
p
にpadding
で余白を設けて、background
で背景色を黒に指定。これでも同様のデザインになりますね。
写真に影を付ける
.photo02 {
display: inline-block;
box-shadow: 10px 10px 5px #bbbbbb;
}
box-shadow
で影が付けられます。1番目の10px
で水平方向の位置を、2番目の10px
で垂直方向の位置を、3番目の5px
でぼかしの距離を指定しています。
写真を傾ける
.photo03 {
display: inline-block;
box-shadow: 10px 10px 5px #bbbbbb;
transform: rotate(-5deg)
}
box-shadow
で影が付けられます。1番目の10px
で水平方向の位置を、2番目の10px
で垂直方向の位置を、3番目の5px
でぼかしの距離を指定しています。
写真の傾きは、transform
のrotate
(回転)で指定します。(-5deg)
で5度傾けています。
ポラロイド風のフォトフレーム
.photo04 {
display: inline-block;
padding: 1px;
background: #000000;
box-shadow: 5px 5px 3px #bbbbbb;
}
.photo04 img {
padding: 10px 10px 30px;
background: #fff;
}
2段階で枠線を指定し、ポラロイド風を実現しています。
1段階目。内側のimg
にpadding
で余白(下側だけ大きめに指定)を設けて、backgroundで背景色を白に指定。
2段階目。外側のp
にpadding
で1px
の余白を設けて、background
で背景色を黒に指定。
box-shadow
で影を付けています。1番目の10px
で水平方向の位置を、2番目の10px
で垂直方向の位置を、3番目の5px
でぼかしの距離を指定しています。
写真をトリミングする(正方形に切り抜き)
.photo05 img {
width: 200px;
height: 200px;
object-fit: cover;
}
デザインサンプル「ポラロイド風のフォトフレーム」の写真をトリミングしたものです。
width
とheight
でトリミング後のサイズを指定します。object-fit: cover
を指定すると、先のサイズ内で、写真の縦横比を保ちつつ最大化表示してくれます。object-fit
はCSSだけでトリミングできる神プロパティです。
写真をトリミングする(円形に切り抜き)
.photo06 img {
width: 200px;
height: 200px;
object-fit: cover;
border-radius: 100px;
}
デザインサンプル「ポラロイド風のフォトフレーム」の写真をトリミングしたものです。
width
とheight
でトリミング後のサイズを指定します。さらにborder-radius
で角を丸く指定します。width
とheight
が今回は200px
なので、その半分の100px
を指定すると綺麗な円になります。border-radius: 50%;
でも構いません。
object-fit: cover
を指定すると、先のサイズ内で、写真の縦横比を保ちつつ最大化表示してくれます。
写真タイトル・ワンポイント装飾を加える
.photo07 {
position: relative;
}
.photo07::before {
position: absolute;
content: 'NEW YORK';
left: 0;
top: 0;
color: #ffffff;
padding: 5px 10px;
background: #000000;
}
疑似要素(before
)を使って実現させます。p
(親要素)にまずposition: relative;
を指定します。次に親要素に対して絶対的な位置を、疑似要素(before
)の、position: absolute;
、left: 0
、top: 0
で指定しています。これで写真の左上に配置されます。content: 'NEW YORK';
でテキストを入れ、color
、padding
、background
で装飾しています。
写真を透過させる
左がCSSで透過させる前の写真。右がCSSを適用した後のイメージです。
.photo08 {
display: inline-block;
background: #000000;
}
.photo08 img {
opacity: 0.5;
}
opacity
で写真が透過されます。数値を0に近づけるとより透明になります。今回は黒背景に重ねているので黒味がかっています。
「写真に文字を重ねたいけど、写真がごちゃごちゃしてて文字が見えづらい」なんてときにこういった加工をかけると、文字が見やすく強調されますね。
白黒写真に色調補正
左がCSSでの色調補正前の写真。右がCSSを適用した後のイメージです。
.photo09 img{
filter: grayscale(100%);
}
filter
はさまざまなフィルタ効果を加えることができるプロパティです。grayscale
の数値を100%に近づけるほど色数が減ります。100%
で白黒になります。
セピア色に色調補正
左がCSSでの色調補正前の写真。右がCSSを適用した後のイメージです。
.photo10 img{
filter: sepia(100%);
}
filter
はさまざまなフィルタ効果を加えることができるプロパティです。sepia
の数値を100%に近づけるほど色数が減り、セピア度合いを調整できます。
以前はこんな便利なCSS・プロパティは用意されていませんでした。
いろいろ新しくなり、便利で簡単になっています。うまく活用していきましょう。