list-style-type
CSS プロパティには多くの可能な値があります (例: decimal
、lower-latin
などupper-greek
)。ただし、キリル文字には何もありません(ところで、言語ごとに異なるバリエーションがあります)。
キリル文字で順序付きリストをスタイルする最良の方法は何ですか?
(私はあまり満足していませんが、私が最終的に得た解決策を提供しています。)
list-style-type
CSS プロパティには多くの可能な値があります (例: decimal
、lower-latin
などupper-greek
)。ただし、キリル文字には何もありません(ところで、言語ごとに異なるバリエーションがあります)。
キリル文字で順序付きリストをスタイルする最良の方法は何ですか?
(私はあまり満足していませんが、私が最終的に得た解決策を提供しています。)
私はキリル文字のリストスキームについて何も知らないので、ここで少し文化的な困惑のリスクがありますが、CSS3リストモジュール(まだドラフトで作業中)はかなりの数のキリル文字のアルファベットリストタイプを定義しlower-belorussian
ます:、、、、、、、、、、、、、、、、、、。_ _ _ _ 予想通り、これらのサポートの状態は現在嘆かわしいものです(GeckoやWebKitでは確かに何もありません)が、うまくいけば、これらは実装され始めるでしょう。lower-bulgarian
lower-macedonian
lower-russian
lower-russian-full
lower-serbo-croatian
lower-ukrainian
lower-ukrainian-full
upper-belorussian
upper-bulgarian
upper-macedonian
upper-russian
upper-russian-full
upper-serbo-croatian
upper-ukrainian
upper-ukrainian-full
更新:いくつかの変更が行われました–リストタイプの定義がCSS3カウンタースタイルモジュールに移動されました。現在のドラフト(2015年2月)では、残念ながらすべてのアルファベットのキリル文字タイプが失われています。これは候補者の推奨段階にあるため、その時点で追加が行われる可能性はほとんどありません。おそらくCSS4リストスタイルで?
この方法では、各リスト項目の前に CSS で生成されたコンテンツを使用しています。
.lower-ukrainian {
list-style-type: none;
}
.lower-ukrainian li:before {
display: inline-block;
margin-left: -1.5em;
margin-right: .55em;
text-align: right;
width: .95em;
}
.lower-ukrainian li:first-child:before {
content: "а.";
}
.lower-ukrainian li:nth-child(2):before {
content: "б.";
}
/* and so on */
キリル文字の番号がないことに驚いています。これがあなたのための簡単なJSソリューションです:
function base_convert(n, base) {
var dictionary = '0123456789abcdefghijklmnopqrstuvwxyz';
var m = n.toString(base);
var digits = [];
for (var i = 0; i < m.length; i++) {
digits.push(dictionary.indexOf(m.charAt(i)) - 1);
}
return digits;
}
var letters = {
'russian': {
'lower': 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя',
'upper': 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'
}
}
$('ul, ol').each(function() {
if (!(results = $(this).prop('class').match(/(upper|lower)-([a-z]+)/i))) return;
var characters = letters[results[2]][results[1]];
$('> li', this).each(function(index, element) {
var number = '', converted = base_convert(++index, characters.length);
for (var i = 0; i < converted.length; i++) {
number += characters.charAt(converted[i]);
}
$(this).attr('data-letter', number);
});
});
私の書いたロシア語は、文字で数えることができないことからわかるように、確かに悪いので、letters
オブジェクトを適切に変更してください。
デモ: http: //jsfiddle.net/JFFqn/14/