sikaku

1要素のHTMLとCSSだけでドットの枠を作ってみた

ぴこぴこ 8bit けい
ブロックようそ

角がドットっぽく丸くなるブロック要素をHTML1要素とCSSのみでつくってみたので置いておきます。

source code

基本

demo
text
HTML
  1. <div class="game">text</div>
CSS
  1. @import url('https://fonts.googleapis.com/css2?family=DotGothic16');
  2. .game {
  3. --border-width: 3px;/* 枠線幅 */
  4. --border-color: #ffffff;/* 枠線色 */
  5. position: relative;
  6. margin: 0 calc( var(--border-width) * 2 );/* 外余白 */
  7. padding: 10px 5px;/* 内余白 */
  8. border-style: solid none;
  9. border-width: var(--border-width);
  10. border-color: var(--border-color);
  11. background-color: transparent;/* 背景色 */
  12. color: #ffffff;/* 文字色 */
  13. font-family:'DotGothic16',sans-serif;/* フォント */
  14. }
  15. .game::before ,
  16. .game::after {
  17. content: '';
  18. position: absolute;
  19. top: var(--border-width);
  20. bottom: var(--border-width);
  21. display: block;
  22. width: var(--border-width);
  23. background-color: inherit;
  24. color: var(--border-color);
  25. --border-width-m: calc( var(--border-width) * -1);
  26. }
  27. .game::before {
  28. right: 100%;
  29. box-shadow: 0 var(--border-width-m), 0 var(--border-width), var(--border-width-m) 0;
  30. }
  31. .game::after {
  32. left: 100%;
  33. box-shadow: 0 var(--border-width-m), 0 var(--border-width), var(--border-width) 0;
  34. }

配色等簡易変更ツール

demo
text

入力で上記ソースも書き換わります。

枠線
要素

何をやっているのか

demo
text

before elment after

擬似要素のbefore,afterを使って枠線を作成しています。

demo内ボタンクリックでそれぞれ分離できるようにしたので個別にどんな表示か確かめたい人はそちらから。

各部品役割
  • elemnt(要素自体)
    • borderで上下の線表示
  • before,after(擬似要素)
    • 枠線太さ分の幅のブロック要素
    • 上下に枠線太さ分の余白
    • box-shadowで線表示

CSS編集について

基本

擬似要素部分は変更非推奨

基本コメントアウト付きの行のみ変更推奨

今回CSS変数を利用しているので、変更時の編集必要箇所をかなり少なくできたと思います。

余白の調整

擬似要素を除いた「要素自体」部分の余白になるのでその点加味して調整してください。

デフォルトでは外余白の左右に擬似要素表示分の領域を確保しています。