CSSだけで角丸枠線グラデーション

この記事は約3分で読めます。
広告

枠線グラデーションと角丸は相性がめっちゃ悪い。
一筋縄じゃCSSだけで実装できない。

でもどうにかこうにかやる方法があるので今回は、そんなどうにかこうにかCSSだけで角丸枠線グラデーションを実装する方法のご紹介です。

角丸グラデーション(ボタン背景有り)

枠線グラデーション

HTML

<div class="button1">
  <p>枠線グラデーション</p>
</div>

css

.button1 {
  position: relative;
  background: linear-gradient(to right, #02d3bb, #8027f4);
  border-radius: 100px;
}
.button1::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: #ffffff;
  border-radius: 100px;
  width: calc(100% - 10px);
  height: calc(100% - 10px);
}

線の太さは「width」と「height」の「calc(100% – 10px)」で調整してね!
これの欠点は、背景が画像の時ボタン背景があるところです。

角丸グラデーション(ボタン背景なし)

枠線グラデーション

HTML

<div class="button2">
  <p>枠線グラデーション</p>
</div>

css

.button2 {
  position:relative;
}
.button2::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 100%;
  height: 100%;
  border-radius: 100px;
  border: 4px solid transparent;
  background: linear-gradient(to right, #02d3bb, #8027f4) border-box border-box;
  -webkit-mask: linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0) border-box;
  -webkit-mask-composite: destination-out;
  mask: linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0) border-box;
  mask-composite: exclude;
}

枠線の太さは「::before」要素の「border」の値をいじってね!

エンデ・バタローをフォローする
CSS

埼玉県北本市に住み始めて2年目。

前は東京都の京王線沿線に。
その前は神戸の三宮に。
その前は名古屋の八事霊園の近くに住んでいました。

ある年の冬、車で島根県へ旅行に出かけました。
同県の山中にある寒村をゆるゆると走っていると地面が凍結しており
車ごと川に滑り落ちそうになった経験を持つ30代(男)です。

フロントエンドを始めて9年目になります。
最近は、ずっとwordpressをいじっており
エディタはVSCodeに乗り換え、日々の業務でイラレとフォトショ、HTMLとCSSとjavascriptとphpを使用してます。
仕事をしていて、検索する手間を省くためフロント技術ブログを書いています。

エンデ・バタローをフォローする
広告
初めてのブログ

コメント

タイトルとURLをコピーしました