開発環境
- macOS High Sierra - Apple(OS)
- Emacs (Text Editor)
- JavaScript (プログラミング言語)
- Safari(Web ブラウザー)
W3C勧告では上線で1000倍を表す表記を使う I̅V̅I. などを例示していますが、多くのブラウザは実装していないようですね。
— Hiroyasu Kamo (@kamo_hiroyasu) 2017年10月17日
Unicodeに100,000までのローマ数字があるのでそれを使う実装があっても良さそうですが… ↀ(1000), ↁ(5000), ↂ(10000), ↇ(50000),ↈ(100000) これで399,999までいけるはず。
— Shiro Kawai (@anohana) 2017年10月17日
ol element の type 属性ではなく、CSS の list-style-type で指定しても結果は同じか気になったのと、他の種類の場合はどうなるか気になったので、気軽に確認できるようにしてみた。
コード(Emacs)
HTML5
<div id="output0"></div> <input id="n0" type="number" min="1" step="1" value="1000"> <select id="marker0"> </select> <script src="sample.js"></script>
JavaScript
let types = ['disc', 'circle', 'square', 'decimal', 'cjk-decimal', 'decimal-leading-zero', 'lower-roman', 'upper-roman', 'lower-greek', 'lower-alpha', 'lower-latin', 'upper-alpha', 'upper-latin', 'arabic-indic', 'bengali', 'cambodian', 'cjk-earthly-branch', 'cjk-heavenly-stem', 'cjk-ideographic', 'devanagari', 'ethiopic-numeric', 'georgian', 'gujarati', 'gurmukhi', 'hebrew', 'hiragana', 'hiragana-iroha', 'japanese-formal', 'japanese-informal', 'kannada', 'katakana', 'katakana-iroha', 'khmer', 'korean-hangul-formal ', 'korean-hanja-formal', 'korean-hanja-informal', 'lao', 'lower-armenian', 'malayalam', 'mongolian', 'myanmar', 'oriya', 'persian', 'persian', 'simp-chinese-formal', 'simp-chinese-informal', 'tamil', 'telugu', 'thai', 'tibetan', 'trad-chinese-formal', 'trad-chinese-informal', 'upper-armenian', 'disclosure-open', 'disclosure-closed', 'ethiopic-halehame-ti-er', 'ethiopic-halehame-ti-et', 'hangul', 'hangul-consonant', 'urdu'], div0 = document.querySelector('#output0'), input_n0 = document.querySelector('#n0'), input_marker0 = document.querySelector('#marker0'), inputs = [input_n0, input_marker0], range = (start, end, step=1) => { let res = []; for (let i = start; i < end; i += step) { res.push(i); } return res; }; marker0.innerHTML = types .map((type) => `<option ${type === 'upper-roman' ? 'selected' : ''}>${type}</option>`) .join(''); let output = () => { let n = parseInt(input_n0.value, 10); div0.innerHTML = `<ol style="list-style-type: ${marker0.value}">` + range(0, n) .map((i) => `<li style="margin-left:12em;">${i + 1}</li>`).join('\n') + '</ol>'; }; inputs.forEach((input) => input.onchange = output); output();
0 コメント:
コメントを投稿