سؤال

لدي سحابة علامة وأحتاج إلى معرفة كيف يمكنني تغيير حجم الخط لمعظم العلامات المستخدمة.

أحتاج إلى ضبط حجم الأسفل وحجم أقصى حجم.

هل كانت مفيدة؟

المحلول

يمكنك استخدام تقييم خطي أو لوغاريتمي لعدد العناصر المرتبطة بعلامة معينة بالنسبة إلى أكبر علامة ، وضربها بالفرق بين أحجام الخطوط الدنيا والحد الأقصى ، ثم إضافتها إلى الحد الأدنى لحجم الخط. على سبيل المثال ، قد تكون الرياضيات في الرمز الكاذب:

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

نصائح أخرى

لجعل إجابة @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;
}

مثال في C#

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;
}

محاولة:

<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/

خطرت لي هذه:

max_word_count = 412  # should count from list
min_word_count = 44   # should count from list
difference = max_word_count - min_word_count
min_weight = 99 / difference * min_word_count

for each tag
    weight = 99 / difference * this_word_count - min_weight + 1

التي أعطتني الكلمات الموزعة بين 1 و 100. فهي تعمل بشكل مثالي بالنسبة لي في Znaci.net/arhiv.

إخلاء المسئولية: أنا لست جيدًا في الرياضيات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top