cssでのボーダーのグラデーションをいい感じにしたい
borderのグラデーションの時に一部詰まったため、その時のメモになります。
行おうとしたこと
- カードのUI
- ボーダーはグラデーションにしたい
- カードの縁は角丸にする
結果
最終的に今回制作したものの最終版になります。どのようなことをしたかなどについては以下に説明いたします。
対応したこと
1. ボーダー自体にグラデーションをかける
こちらを参考にborderのグラデーションを実行
結果については以下になります。
使用したcssプロパティについて
borderのグラデーションをしない場合、背景色のグラデーションと同様、 image
として記載を行う
ボーダー画像の使用範囲を指定するために使用
この場合だと以下のように border-radius
を宣言しても角丸にならないため、今回は不採用
2. 2つのdiv要素を作成して、各々にbackgroundを設定
1の方法でうまくいかなかったため、以下のようなイメージで制作
<div class="hoge1"> <!-- グラデーションの背景 --> <div class="hoge2"></div> <!-- 白色の背景 --> </div>
cssは以下のように記載
親要素のcss
.hoge1 { width: 100%; height: 200px; padding: 6px; background-image: linear-gradient(135deg, #6ccaff 0%, #b398ff 100%); border-radius: 10px; }
- 横幅・縦幅は任意
padding
でグラデーションの適応範囲を指定background-image
でグラデーション、border-radius
で角丸の範囲を指定
子要素のcss
.hoge2 { width: 100%; height: 100%; background: #fff; border-radius: 8px; }
- 横幅・縦幅は100%(親要素の幅が変更されても可変で適応させるため)
background
背景色(今回は白色、他の色にしたい場合はここの部分を変更)- 中の要素でも
border-radius
を指定- 親と同じ値の場合幅が違う都合上、少し違和感があるため少し小さい値を宣言
- 中の要素を指定しない場合は以下のようになる
最後に
これでborderのグラデーションでも角丸にすることができましたので、ぜひ参考にしてみてください!!