[CSS] 如何在標題前後用偽元素加線

有些網站會用偽元素在標題前後加兩根線,類似這種效果:
------ 標題 ------
到底怎麼做呢?

 

demo一樣看上一篇的 DrawGame
 

主要的 code

<div className="titleContainer">
  <h2 className="title">[React] 抽獎小遊戲 陣列渲染實作練習</h2>
</div>
.titleContainer {
  position: relative;
}

.title {
  text-align: center;
}

.title::before,
.title::after {
  position: absolute;
  content: "";
  height: 2px;
  top: 70%;
  background: #666;
  width: calc(50% - 230px);
}

.title::before{
  left: 0;
}

.title::after {
  right: 0;
}

 
 
html 的部分首先你要用一個容器放你要加線的標題,
容器要設 position:relative
標題設 position:absolute ,這樣偽元素出現的位置才能相對於容器。

最後使用 background 來設定線的顏色。

 
我們想要的效果是線大概在中間,基本上會是 top:50%
往上或往下調到一個合適的值就放上去,也沒啥好說的。

 

然後是起始位置,
::before 從左邊開始所以 left:0
::after 從右邊開始所以 right:0
 

最後是寬度。

我們會想要跟標題保持一點距離,
但螢幕寬度縮小的時候又不能讓線蓋到字。
所以這邊寬度不能寫死。
用 calc 來計算。

 

怎麼算咧?

可以這樣想,因為是左右兩邊各半,
所以50%,不過你直接放50%肯定會蓋到字,
因為你還沒扣掉標題跟你要留白的寬度。

 

標題寬度固定的情況下,可以直接用開發者工具去指標題得到標題寬度 x ,
因為左右各半,所以 x/2 才是必須扣掉的寬度。

所以最後會是
calc(50% - (x/2)px)

 

這個寬度沒有算留白,所以可以再扣一點,假如想留個20px
那就是
calc(50% - (x/2-20)px)

 

這邊只是一個概念示意,實際上px前面不能是運算式
必須直接寫數字
ex.
width: calc(50% - 230px);

 

另外要留意,calc()裡面,運算符號要跟前後都留一個空白
也就是說你不能像下面這樣寫
width: calc(50%-230px);
 

50%跟230px中間那個-前後必須各有一個空白

大概就是這樣了