ボタンのボーダーにグラデーションを指定する機会があったので、対応方法をメモ。
サンプルコード
まずは疑似要素でボーダー部分を設定する方法です。
HTML
<a href="" class="btn">BUTTON</a>
CSS
.btn {
display: block;
width: 200px;
box-sizing: border-box;
padding: 10px 0;
color: #000000;
text-decoration: none;
text-align: center;
/* ボーダーに必要な部分 */
position: relative;
border-left: #E74C3C 1px solid;
border-right: #3498DB 1px solid;
}
.btn:before,
.btn:after {
content: '';
position: absolute;
left: 0;
display: block;
width: 100%;
height: 1px;
background: linear-gradient(90deg, #E74C3C, #3498DB);
}
.btn:before {
top: -1px;
}
.btn:after {
bottom: -1px;
}
左右のボーダーはborderで設定して、上下のグラデーションがかかったボーダーは疑似要素で対応しています。
疑似要素で対応するデモページ
HTML
次に入れ子の要素を追加して、背景でグラデーションを指定する方法です。
<a href="" class="btn2"> <span class="btn2_inner">BUTTON</span> </a>
CSS
.btn2 {
display: block;
width: 200px;
box-sizing: border-box;
color: #000000;
text-decoration: none;
text-align: center;
/* ボーダーに必要な部分 */
background: linear-gradient(90deg, #E74C3C, #3498DB);
padding: 1px;
}
.btn2_inner {
display: block;
padding: 10px 0;
background: #ffffff;
}
背景でグラデーションを指定して、入れ子の要素でその上から白色背景をかぶせています。
背景指定で対応するデモページ
コメントが承認されるまで時間がかかります。