SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【CSS】背景だけ斜めにする

問題

スタイルシートで、背景だけ斜めにできますか?

斜めに2色で区切ったりできますか?

skewed-background

答え

スタイルシートで回転させたりゆがめたりは可能。

transform の skew や rotate を使う。

要素全体を10度ゆがめると以下のようになる。

テキストテキストテキスト
テキストテキストテキスト
<div style="border:1px solid #000; width:300px; overflow:hidden;">
    <div style="padding:100px 50px; transform:skew(0deg, -10deg); background:#00c; color:#fff;">テキストテキストテキスト</div>
    <div style="padding:100px 50px;">テキストテキストテキスト</div>
</div>

中身はゆがめたくないので、中身だけ逆向きにゆがめて元に戻す。

テキストテキストテキスト
テキストテキストテキスト
<div style="border:1px solid #000; width:300px; overflow:hidden;">
    <div style="padding:100px 50px; transform:skew(0deg, -10deg); background:#00c; color:#fff;">
        <div style="transform:skew(0deg, 10deg);">テキストテキストテキスト</div>
    </div>
    <div style="padding:100px 50px;">テキストテキストテキスト</div>
</div>

上に斜めに背景が見えるのを防ぐには、マイナスのマージンで上に移動してもらえばOK。

テキストテキストテキスト
テキストテキストテキスト
<div style="border:1px solid #000; width:300px; overflow:hidden;">
    <div style="margin-top:-50px; padding:100px 50px; transform:skew(0deg, -10deg); background:#00c; color:#fff;">
        <div style="transform:skew(0deg, 10deg);">テキストテキストテキスト</div>
    </div>
    <div style="padding:100px 50px;">テキストテキストテキスト</div>
</div>

あとは画面の幅や傾きに応じて調整すること。

背景に画像を使えば、背景画像だけ傾けたり、任意の角度の縞模様の背景が作れたりする。

関連するメモ

コメント