浪人のサムライ

TOP

SCSS(CSS)で矢印を作る方法

SCSS(CSS)で矢印を作る方法です。完成は以下のような感じです。

HTML


<p class="arrow"></p>

何てことはない、HTMLです。arrowというクラス名を付けています。CSSのルールの範囲内で、クラス名を考えましょう。

SCSS


.arrow {
  width: 50px;
  background: #000;
  height: 5px;
  border: 2px solid #000;
  position: relative;
  &::before {
    content: "";
    position: absolute;
    width: 20px;
    right: -4px;
    bottom: 5px;
    transform: rotate(45deg);
    border: 2px solid #000;
    background: #000;
  }

  &::after {
    content: "";
    position: absolute;
    width: 20px;
    right: -4px;
    top: 5px;
    transform: rotate(-45deg);
    border: 2px solid #000;
    background: #000;
  }
}

arrowにposition: relative;を書きます。起点になります。あとは、beforeとafterにCSSを効かせます。

transform: rotate(45deg);で、角度を付けます。position: absolute;と書き、topやbottom、そしてrightで位置を調整します。

CSS


.arrow {
  width: 50px;
  background: #000;
  height: 5px;
  border: 2px solid #000;
  position: relative;
}
.arrow::before {
  content: "";
  position: absolute;
  width: 20px;
  right: -4px;
  bottom: 5px;
  transform: rotate(45deg);
  border: 2px solid #000;
  background: #000;
}
.arrow::after {
  content: "";
  position: absolute;
  width: 20px;
  right: -4px;
  top: 5px;
  transform: rotate(-45deg);
  border: 2px solid #000;
  background: #000;
}

文字を横に置く

文字を横に置いてみます。

文字を横に置く

HTML


<div class="arrow-box">
文字を横に置く
<div class="arrow"></div>
</div>

全体を囲んでいます(arrow-box)。あとは、テキストを書きました。pは書いておりません。通常は書くでしょう。

SCSS


.arrow-box{
width: 300px;
display: flex;
align-items: center;
}

矢印に関しては、何も変更はありません。.arrow-boxにflexで横並びにします。

CSS


.arrow-box {
  width: 300px;
  display: flex;
  align-items: center;
}

くの字にする

くの字にしたいと思います。先ほどより、少し、簡単です。

HTML


<p class="ku-box"></p>

簡単なHTMLです。

SCSS


.ku-box{
width: 30px;
position: relative;
&::before{
content: "";
position: absolute;
right: 0;
width: 30px;
border: 3px solid #000;
background: #000;
transform: rotate(-45deg);
}

&::after{
content: "";
position: absolute;
right: 0;
bottom: 10px;
width: 30px;
border: 3px solid #000;
background: #000;
transform: rotate(45deg);
}
}

1番上の矢印のSCSSとさほど変わりません。

CSS


.ku-box {
  width: 30px;
  position: relative;
}
.ku-box::before {
  content: "";
  position: absolute;
  right: 0;
  width: 30px;
  border: 3px solid #000;
  background: #000;
  transform: rotate(-45deg);
}
.ku-box::after {
  content: "";
  position: absolute;
  right: 0;
  bottom: 10px;
  width: 30px;
  border: 3px solid #000;
  background: #000;
  transform: rotate(45deg);
}

さいごに

矢印の傾きは簡単ですが、位置の調整が難しい。ネットで調べてみましたが、有力な情報はありませんでした。

これが限界か。

矢印は印象的になります。少しめんどくさい部分もありますが、気になる方はお試しあれ。バックアップを取ってから、対応しましょう。