質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Q&A

解決済

4回答

2427閲覧

丸数字をhtml上に表示したい

k499778

総合スコア599

canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

0グッド

0クリップ

投稿2016/01/28 10:04

質問があります。
結論から言うと、

丸数字をhtml上に表示したいと思っています。どういった方法が1番良いでしょうか?

状況としては、
丸数字(①②③)をボックスの右上に配置して表示します。そのボックスは動的に増えます。限度20個くらい。

その丸数字を作成するのに思いついた方法は以下です。

・CSSで作成する
・丸数字の画像をダウンロードする
・キャンバスで作成する?

一度CSSで作ってみたのですが、
質が低く微妙でした。

質が低くなく、動的に増える丸数字に対応できる何かいい方法や参考サイト、あるいはそういったプラグインがあれば教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

String.fromCharCode( 5 + "①".charCodeAt(0) - 1)

これで"⑤"が得られます。そういうことではなくて?

投稿2016/01/28 10:34

yuba

総合スコア5568

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k499778

2016/01/28 12:41

yudaさん ありがとうございます。 このやり方だとさらにjsでfor文を使って動的に丸数字を作ることもできるので BAにさせていただきました。 String.fromCharCodeのような文字コードを変換するメソッドも知れてよかったです。 感謝しています。
yuba

2016/01/28 12:43

「たかだか20」とのことだったのでこんなコードになっています。21以上が渡されることがあるなら配列から引くようにします。
k499778

2016/01/28 13:09

yubaさん追加回答ありがとうございます。 21は文字コードが連続していないため、このメソッドでは取得が難しく、 配列に21以降の丸数字を格納し、そこから引く方がいいということですね。 勉強になります。ありがとうございます。
guest

0

他の方がおっしゃるように unicode なら1~50まで用意されてますので、数値範囲が足りるならそれを使うのがキレイと思います

最大数が50を超えるなら、白抜きの丸で背景画像を用意してHTML上で部品化し、javascriptで動的に数字をセットして配置する方法ならやったことあります

あとは、CSS3 で作った人がいたのでマネて白抜き数字をやってみました

css

1.sample { 2position: relative; 3color: #000; 4} 5 6.sample:before { 7content: ""; 8display: block; 9position: absolute; 10top: -2px; 11left: -4px; 12width: 22px; 13height: 22px; 14border-radius: 20px; 15background-color: black; 16z-index: -2; 17} 18 19.sample:after { 20content: ""; 21display: block; 22position: absolute; 23top: -1px; 24left: -3px; 25width: 20px; 26height: 20px; 27border-radius: 20px; 28background-color: white; 29z-index: -1; 30} 31

html

1<p class="sample">99</p>

見た目は・・・やはり微妙?
1桁の場合、2桁の場合、3桁の場合で調整したパターンが必要ですし・・・

投稿2016/01/28 12:01

takito

総合スコア3111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k499778

2016/01/28 12:46

takitoさん 返答ありがとうございます。 私も最初はバッチを作るようなイメージしか持っていなかったのですが、 単純に文字コードを使ってボックスに番号をつけても特に問題はないと気付きました。 私もまさにそのサイトを試しました。 文字の位置がずれたり、丸におさまりきらなかったりして、 もう少し効率よく、質のいい丸数字の作り方を探していました。 白抜きの丸の背景画像に数字をセットするといった発想も知りたかったので とても参考になりました。 ありがとうございます。
guest

0

丸数字というから文字コードの話かと思ったら、バッジの話ですね?

CSSで作るのが一番ラクだと思います。
質が低いと感じたのはフォントの問題か、古いブラウザのせいか。

試したCSSコードとキャプチャでもあれば、どこが満足いかなかったのかわかると思います。

投稿2016/01/28 10:36

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/01/28 10:37

他の人がみんな文字コードの話してるところを見ると、本当に文字コードの動的生成の話なのかな…
k499778

2016/01/28 12:53

luckerさん 返答ありがとうございます。 ちなみにこのサイトです。takitoさんの所でも話題になっていますが。 http://ameblo.jp/m-sm-r/entry-11578544446.html 最初はバッジを作るようなイメージでした。 ただ文字コードを使ってボックスの右上に配置するような形でも特に問題ないと気づいたり、それをjsで動的に生成するようなメソッドも知れたりして、 今はそっちで作ってみようと思います。 もしそれが不採用だった時はCSSなどを駆使してバッジを作ってみます。 貴重な意見ありがとうございました。
guest

0

Unicodeだと①〜㊿まではあります。文字コードをUTF-8にすれば、最新のOSにプリインストールされたフォントで問題ないでしょう。ただ、古い環境ではフォントに㊿等は含まれていない可能性があります。そのような古い環境にも対応するのであれば、○数字だけの外部フォントを用意するのがいいかと思います。

なお、Unicode上のマッピングは連続では無いので、["①", "②", ... , "㊿"]みたいな配列は用意しておく必要はあると思います。

投稿2016/01/28 10:36

編集2016/01/28 10:37
raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k499778

2016/01/28 12:57

raccyさん 返答ありがとうございます。 おっしゃる通りですね。 「○数字だけの外部フォントを用意する」や「配列を用意しておく」のようなよくやる発想を知りたかったので貴重な意見を聞けてよかったです。 感謝しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問