• HOME > 
  • CSS > 
  • CSSだけで斜線を引く方法【transformとlinear...

CSSだけで斜線を引く方法【transformとlinear-gradientを使ったテクニックを解説】

投稿日:

このページにはGoogleアドセンス広告とアフィリエイト広告が含まれています。

カテゴリー記事のアイキャッチ画像

本記事は執筆時点(2022年08月09日)の情報をベースにしております。掲載している情報が最新ではない可能性がありますので何卒ご容赦ください。

広告
広告

CSSだけで斜線を引くには?

WEBサイトを制作していると、ページのデザインやtable(表)の空欄のセルに対して斜線を引きたい場面があります。

borderなどで簡単に表示できる縦や横の線と異なり、斜めに線を引くための専用のプロパティは存在しませんが、他のプロパティをうまく応用することで斜線を作りだすことができます。

CSSだけで斜線を引くには、次の2通りの方法があります。

  • transformプロパティのrotateを使う
  • backgroundプロパティのlinear-gradient

rotateは文字通り線を回転させて斜めにします。linear-gradientは背景のグラデーション効果を応用して斜線を引くので、背景色も斜めに分割することができます。

transform:rotateを使う方法

transformプロパティは要素を移動させたり、変型させることができるプロパティです。

rotateはその中で要素を回転させるときに以下のようにdegという単位で角度を指定して使います。

rotateの書き方

このrotateを使って横線(もしくは縦線)を回転させて斜線を作ります。

まずは横線を作ります。

HTML

<div class="test1"></div>

CSS

.test1{
    width:100%;
    height:3px;
    background:#d40000;
}

プレビュー

この線をtransfortm:rotateを使って任意の角度に回転させれば斜線になります。

なお、はみ出した部分は親要素にoverflow:hiddenを指定して非表示にしています。

CSS

.test1{
    -省略-
    transform:rotate(45deg);
}

プレビュー

rotateの値であるdegにマイナスを付ければ、作った斜線の向きを簡単に反転できます。

CSS

.test1{
    -省略-
    transform:rotate(-45deg);
}

プレビュー

以上がtransform:rotateを使って斜線を引く方法です。直感的に角度を操作して斜線を引くことはできますが、はみ出した部分の処理などが必要で、実際にデザインに組み込むとなると苦労します。

個人的には次に紹介するlinear-gradientを使って斜線を引く方法がおすすめです。

background:linear-gradientを使う方法

linear-gradientを使うと背景色をグラデーションさせることができます。複数の色を使ったグラデーションを作ったり、下図のようにはっきりと分割して色分けしたりすることも可能です。グラデーションさせる位置や角度も指定できるため、応用の効くプロパティです。

下の図が背景色にbackground:linear-gradentを使用した例です。

linear-gradientの例

linear-gradientの基本

linear-gradientは次のように値を指定して使用します。

linear-gradientの書き方

角度は記述しなければ自動的に上から下へのグラデーションになります。

下の例のように、ひとつの色の終わり位置と次の色の開始位置を同じにすれば、グラデーションではなく境界をはっきりとさせることができます。

HTML

<div class="test_lg"></div>

CSS

.test_lg{
    -省略-
    background: linear-gradient(45deg,#d40000 0%,#d40000 33%,#0000d4 33%,#0000d4 66%,#00dd44 66%,#00dd44 100%);
}

プレビュー

linear-gradientで斜線を引く

上記で説明したを方法を上手く応用し、下記のように「角度」と「境界の位置」を調整することで斜線が表現できます。

HTML

<div class="test_lg2"></div>

CSS

.test_lg2{
    -省略-
    background: linear-gradient(45deg,transparent 0%,transparent 49%,#d40000 49%,#d40000 51%,transparent 51%,transparent 100%);
}

プレビュー

実際には背景色が存在していますが、斜線以外をtransparentで透明にすることで斜線のみが表示されるようにしています。

「49%」「51%」の部分で斜線の太さが決まるので、この数値を変更すれば太くしたり細くしたりすることができます。

「45deg」が斜線の角度を決めている部分です。デベロッパーツールなどを活用してセルの角と角を結ぶような角度になるように値を調整してください。先頭に「-」(マイナス)を付ければ反対向きに変えることができます。

リンク先のサムネイル
Google Chromeのデベロッパーツールの使い方

デベロッパーツールとはWEBブラウザであるGoogle Chromeにはじめから備わっている機能の一つです。閲覧中のWEBサイトのページを構成しているHTMLやCSSといったソースコードを確認することができます...【もっと読む】

tableのセルに斜線を引く

斜線を使いたい場所として多いのが表の中の空欄のセルではないでしょうか?

linear-gradientによる斜線はCSSなので、tableに対しても簡単に設定できます。

HTML

<table class="test_tbl">
    <tr><th>ID</th><th>商品</th><th>価格</th></tr>
    <tr><th>1</th><td class="syasen"></td><td>100円</td></tr>
    <tr><th>2</th><td>リンゴ</td><td class="syasen"></td></tr>
</table>

CSS

.syasen{
    background: linear-gradient(7deg,#fff 0%,#fff 49%,#333333 49%,#333333 51%,#fff 51%,#fff 100%);
}

プレビュー

ID商品価格
1100円
2リンゴ

セルが空欄だったら斜線を引くようにする

先程の例では、空欄であるセルに対して手作業でsyasenというクラス名を付与することで斜線を表示させていますが、セレクターで上手く指定すればセルが空欄だった場合に自動的に斜線を表示させるようにできます。

要素が空かどうかを判別するには疑似セレクタである「:empty」を使います。

疑似セレクタのempty書き方

このようにあらかじめスタイルを用意しておけば、表を作る時に空欄かどうかを意識する必要がなくなるため作業が軽減されます。

HTML

<table class="test_tbl2">
    <tr><th>ID</th><th>商品</th><th>価格</th></tr>
    <tr><th>1</th><td></td><td>100円</td></tr>
    <tr><th>2</th><td>リンゴ</td><td></td></tr>
</table>

CSS

.test_tbl2 td:empty{
    background: linear-gradient(7deg,#fff 0%,#fff 49%,#333333 49%,#333333 51%,#fff 51%,#fff 100%);
}

プレビュー

ID商品価格
1100円
2リンゴ
リンク先のサムネイル
CSSのセレクターの使い方

CSSのセレクタ―は、スタイルを適用させたいHTML要素の特定に使います。セレクタ―を使ってスタイルを指定することで、同じスタイルを使いまわしたり一部分にだけ違うスタイルを適用させることが可能になります...【もっと読む】

まとめ

以上がCSSを使って斜線を引くテクニックです。transform:rotateだと位置を調整したりはみ出した部分を処理する必要があったりするので、linear-gradientの方がおすすめです。

広告
広告

関連する記事

サムネイル

CSSでPNG画像に影を落とす方法【filterプロパティd……

2025年01月15日
CSSでドロップシャドウをつけるには? CSSで要素に影(ドロップシャドウ)を付ける手段としては「box-shadow」や「text-shadow(テキストの場 […]
サムネイル

CSSのfilterプロパティの関数の種類と効果をまとめ【フ……

2025年01月06日
最終更新日:2025年01月15日
IEのサポートが終了したので、これまで使う機会の少なかったfilterプロパティを改めて調べたところ、CSSでの表現の幅を広げてくれる画期的なプロパティだと気づ […]
サムネイル

CSSで写真にぼかし加工を加える方法【filterプロパティ……

2025年01月06日
CSSだけで写真をぼかせる? CSSのfilterプロパティのblur()関数を使うと、画像(要素)にぼかしを加えることができます。 画像編集ソフトを使うことな […]
サムネイル

CSSで写真の明るさ(明度)を調整する方法【filterプロ……

2025年01月06日
CSSだけで画像の明度を調整できる? CSSのfilterプロパティのbrightness()関数を使うと、画像(要素)の明るさを変更することができます。 画像 […]
サムネイル

CSSで写真のコントラストを変更する方法【filterプロパ……

2025年01月06日
CSSだけで写真のコントラストを調整できる? CSSのfilterプロパティのcontrast()関数を使うと、画像(要素)のコントラストを変更することができま […]
サムネイル

CSSで写真を白黒に変更する方法【filterプロパティgr……

2025年01月06日
CSSだけで写真を白黒にできる? CSSのfilterプロパティのgrayscale()関数を使うと、画像(要素)を白黒に変更することができます。 グレースケー […]
サムネイル

CSSで写真をセピアに加工する方法【filterプロパティs……

2025年01月06日
CSSで写真をセピアに加工できる? CSSのfilterプロパティのsepia()関数を使うと、画像をセピア色に変換できます。 画像編集ソフトを使うことなくCS […]