旧さびぬき覚書

webを作っていてつまずいた所やその他解決したことを書いたりするブログです。

CSSで背景に水平方向に貫いてるラインを入れたい

web制作中に「背景にwidth100%で水平方向(横)に1本のライン(線)が入ってて、その上に要素がある」ものを作る機会がありまして…


見出しのデザインで「文字の左右にラインが入ってる」ものありますよね

これで左右の余白0にすればいけるんじゃね?と思ったのですが、
要素にマージンつけちゃうと当たり前なんですがラインも途切れました。

そこで「文字にマーカーみたいに線いれる」デザインで使うlinear-gradientを応用して、グラデーションで中央にだけ線があるように見せれば…

html:

<div class="container-fluid">
     <div class="bg-line my-5">
          <div class="inner mx-auto">
               <img src="img/01.svg" alt="" width="40px">
               <img src="img/02.svg" alt="" width="40px">
               <img src="img/03.svg" alt="" width="40px">
               <img src="img/04.svg" alt="" width="40px">
          </div>
     </div>
</div>
css:

.bg-line {
     width: 100%;
     padding: 3em 0;
     background: linear-gradient(transparent 48%, #ffa22f 48%, #ffa22f 50%, transparent 50%);
}

.inner {
     max-width: 80%;
     display: flex;
     justify-content: space-around;
}


■結果

なんとかなった!!!
(もっと賢い線の引き方あると思うのであれば教えて下さい…)

補足:
・bootstrap4.2.1を使用しています。
・ラインの上に乗っける要素は自身でご準備ください。
・bg-lineかinnerのクラスにpaddingかheight設定しないと上手く表示されません。
・ラインの位置ですが、

background: linear-gradient(transparent 48%, #ffa22f 48%, #ffa22f 50%, transparent 50%);

の箇所の数値いじると変わります。超決め打ちです。