Подтвердить что ты не робот

Какова формула для вычисления размера шрифта для тегов в tagcloud?

У меня есть облако тегов, и мне нужно знать, как изменить размер шрифта для наиболее используемых тегов.

Мне нужно установить размер min-font и max-font-size.

4b9b3361

Ответ 1

Вы можете использовать линейную или логарифмическую оценку количества элементов, связанных с определенным тегом, относительно самого большого тега, умножить его на разницу между минимальным и максимальным размерами шрифтов, а затем добавить его к минимальному размеру шрифта. Например, математика в псевдокоде может быть:

let min = 12, max = 24
for each tag
    font = (items / items in biggest tag) * (max - min) + min

Ответ 2

Чтобы сделать @Delan более понятным, я создал несколько примеров на языках, с которыми я знаком.

Пример в Javascript

var tags =
[
    { Name: "c#", Uses: 100 },
    { Name: ".net", Uses: 75 },
    { Name: "typescript", Uses: 50 },
    { Name: "lua", Uses: 50 },
    { Name: "javascript", Uses: 25 },
    { Name: "jquery", Uses: 1 },
    { Name: "c++", Uses: 0 },
];

var max = 100; // Should be computed
var min = 0;   // Should be computed

var fontMin = 10;
var fontMax = 20;

for (var i in tags)
{
    var tag = tags[i];

    var size = tag.Uses == min ? fontMin
        : (tag.Uses / max) * (fontMax - fontMin) + fontMin;
}

Пример в С#

var tags = new List<Tag>
{
    new Tag { Name = "c#", Uses = 100 },
    new Tag { Name = ".net", Uses = 75 },
    new Tag { Name = "typescript", Uses = 50 },
    new Tag { Name = "lua", Uses = 50 },
    new Tag { Name = "javascript", Uses = 25 },
    new Tag { Name = "jquery", Uses = 5 },
    new Tag { Name = "c++", Uses = 5 },
};

int max = tags.Max(o => o.Uses);
int min = tags.Min(o => o.Uses);

double fontMax = 20;
double fontMin = 10;

foreach (var tag in tags)
{
    double size = tag.Uses == min ? fontMin
        : (tag.Uses / (double)max) * (fontMax - fontMin) + fontMin;
}

Ответ 3

Try:

<div data-i2="fontSize:[10,30]">
    <span data-i2="rate:1">A</span>
    <span data-i2="rate:4">B</span>
    <span data-i2="rate:7">C</span>
    <span data-i2="rate:12">G</span>
    <span data-i2="rate:5">H</span>
</div>

Тогда

i2.emph();

http://jsfiddle.net/EUaC5/1/