Uma nuvem de tags é um conjunto de tags relacionadas e seus pesos correspondentes. Uma nuvem de tags típica tem de 30 a 150 tags. afetar o tamanho da fonte ou outros efeitos visuais usados. Enquanto isso, histogramas ou gráficos de pizza são mais comumente usados ​​para representar cerca de 12 pesos diferentes. Portanto, a nuvem de tags pode representar mais direitos, embora seja menos precisa. Além disso, as nuvens de tags costumam ser interativas: as tags são normalmente hiperlinks que permitem aos usuários detalhar seu conteúdo.

Primeiro, um site de alto perfil usando nuvem de tags – o site de compartilhamento de fotos Flickr. O designer da nuvem de tags é o designer de interação Stewart Butterfield. Mais tarde, a nuvem de tags foi adotada por sites como del e Technorati.

De acordo com a função da nuvem de tags (em vez do estilo), ela pode ser dividida em três categorias principais de aplicativos. Dentre eles, a primeira categoria é utilizada para descrever cada item independente do site, enquanto a segunda categoria se concentra em caracterizar a rotulagem de todos os itens do site como um todo:

O primeiro tipo de nuvem de tags: cada item possui sua própria nuvem de tags independente. Quanto maior a fonte da tag, mais vezes o usuário usou essa tag neste item. Isso é muito importante quando a página conta cliques publicamente e não exige precisão. dados. Seja aplicável. Por exemplo, Last usa o primeiro tipo de nuvem de tags.

O segundo tipo de nuvem de tags: os sites geralmente têm uma nuvem de tags muito grande. Quanto maior a fonte da tag, mais entradas no site usaram essa tag. O segundo tipo de nuvem de tags pode mostrar a popularidade das tags e é mais comum em aplicações práticas, como o flickr.

O terceiro tipo de nuvem de tags: Neste tipo, as tags são usadas como uma ferramenta para um item de dados representar o tamanho dos dados de cada item em toda a coleção.

Em termos gerais, técnicas de visualização semelhantes não se limitam às nuvens de tags, mas também podem ser usadas em nuvens de palavras ou de dados, por exemplo.

A introdução do texto acima foi retirada da entrada "Tag Cloud" da Enciclopédia Baidu. http://baike.baidu.com/view/1284756.htm

Exemplo de nuvem de tags:

imagem.png

A geração de nuvem de tags geralmente é atualizada dinamicamente e o programa de geração pode ser escrito usando vários scripts. A seguir, é apresentada uma maneira de gerar uma biblioteca de classes javascript. Esta biblioteca de classes é desenvolvida por uma empresa/indivíduo. a biblioteca de classe mais baixa na página.

Exibir parte da página:

<!DOCTYPE html
<html  xmlns="http://www.w3.org/1999/xhtml"
<head
<meta http-equiv="Content-Type" content="text/html; charset=gbk2312" /
<title</title
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"</script
<script type="text/javascript" src="jqcloud-1.0.0.js"</script
<link rel="stylesheet" type="text/css" href="jqcloud.css" /
<script type="text/javascript"
var word_list = [
<?php
$a="食堂,8;义,1;汗,9.4;补贴,8;扛不住,6.2;维,5;施,5;仁政,5;奶,5;以为,4";
$b=explode(";",$a);
foreach($b as $c){
$d=explode(",",$c);
echo "{text:\"".$d[0]."\", weight:".$d[1]."},";
}
?  
      ];
      $(function() { 
        $("#container3").jQCloud(word_list);
      });
</script
</head
<body
<div class="circle_Corner" id="key_Words"
<div style="width:800px; height:600px; background-color:#FFFFFF" 
<div id="container3" style="width: 800px; height: 600px; margin: 0 auto;text-align:center"</div
      </div
</div
</body
</html>

A página precisa chamar o arquivo JQuery. jqcloud-1.0.0.js é o arquivo da biblioteca de classes. O código-fonte está anexado. jqcloud.css é o arquivo de controle de estilo CSS de suporte, no qual a cor e o tamanho da fonte do texto exibido. pode ser ajustado. Na parte do script php, $a são os dados originais, que são uma combinação de (texto, valor de peso). Cada registro é separado por (;). Tenha cuidado para não adicionar (;) ao último registro, caso contrário, um espaço em branco). array será gerado, fazendo com que o javascript seja exibido em branco após ser lido, e o formato compilado do script php seja gerado.

{text: "所有", weight: 2},

Caso você utilize outros scripts para gerá-lo, poderá utilizar este formato como destino final para facilitar a leitura por scripts javascript.

Se você mesmo precisar inserir texto para geração, poderá escrever uma página HTML e passar parâmetros para $a.

Em mais ocasiões, a geração de nuvem de tags requer a leitura de valores do banco de dados para obter funcionalidade de atualização em tempo real:

$sql=mysql_query();
$res=mysql_fetch_array($sql);

Então você pode percorrer a matriz com uma instrução de loop foreach ou do while,

echo $res[i]

gerar

{text: "text", weight: weight},

Formulário de dados estruturados;

Também pode ser usado

$res=mysql_fetch_object($sql);

formulário e, em seguida, use do while loop

$res->name

Produza o valor do valor para reunir o formulário de dados estabelecido.

Se você precisar adicionar um link de URL ao texto da nuvem de tags, basta adicionar outro parâmetro à estrutura de dados:

{text: "text", weight: weight, link: "url"},

Você pode conseguir o efeito do link URL.

código-fonte js:

/*!
 * jQCloud Plugin for jQuery
 *
 * Version 1.0.0
 *
 * Copyright 2011, Luca Ongaro
 * Licensed under the MIT license.
 *
 * Date: Tue Apr 17 16:03:49 +0200 2012
*/

(function( $ ) {
  "use strict";
  $.fn.jQCloud = function(word_array, options) {
    // Reference to the container element
    var $this = this;
    // Namespace word ids to avoid collisions between multiple clouds
    var cloud_namespace = $this.attr('id') || Math.floor((Math.random()*1000000)).toString(36);

    // Default options value
    var default_options = {
      width: $this.width(),
      height: $this.height(),
      center: {
        x: ((options && options.width) ? options.width : $this.width()) / 2.0,
        y: ((options && options.height) ? options.height : $this.height()) / 2.0
      },
      delayedMode: word_array.length > 50,
      shape: false // It defaults to elliptic shape
    };

    options = $.extend(default_options, options || {});

    // Add the "jqcloud" class to the container for easy CSS styling, set container width/height
    $this.addClass("jqcloud").width(options.width).height(options.height);

    // Container's CSS position cannot be 'static'
    if ($this.css("position") === "static") {
      $this.css("position", "relative");
    }

    var drawWordCloud = function() {
      // Helper function to test if an element overlaps others
      var hitTest = function(elem, other_elems){
        // Pairwise overlap detection
        var overlapping = function(a, b){
          if (Math.abs(2.0*a.offsetLeft + a.offsetWidth - 2.0*b.offsetLeft - b.offsetWidth) < a.offsetWidth + b.offsetWidth) {
            if (Math.abs(2.0*a.offsetTop + a.offsetHeight - 2.0*b.offsetTop - b.offsetHeight) < a.offsetHeight + b.offsetHeight) {
              return true;
            }
          }
          return false;
        };
        var i = 0;
        // Check elements for overlap one by one, stop and return false as soon as an overlap is found
        for(i = 0; i < other_elems.length; i++) {
          if (overlapping(elem, other_elems[i])) {
            return true;
          }
        }
        return false;
      };

      // Make sure every weight is a number before sorting
      for (var i = 0; i < word_array.length; i++) {
        word_array[i].weight = parseFloat(word_array[i].weight, 10);
      }

      // Sort word_array from the word with the highest weight to the one with the lowest
      word_array.sort(function(a, b) { if (a.weight < b.weight) {return 1;} else if (a.weight > b.weight) {return -1;} else {return 0;} });

      var step = (options.shape === "rectangular") ? 18.0 : 2.0,
          already_placed_words = [],
          aspect_ratio = options.width / options.height;

      // Function to draw a word, by moving it in spiral until it finds a suitable empty place. This will be iterated on each word.
      var drawOneWord = function(index, word) {
        // Define the ID attribute of the span that will wrap the word, and the associated jQuery selector string
        var word_id = cloud_namespace + "_word_" + index,
            word_selector = "#" + word_id,
            angle = 6.28 * Math.random(),
            radius = 0.0,

            // Only used if option.shape == 'rectangular'
            steps_in_direction = 0.0,
            quarter_turns = 0.0,

            weight = 5,
            custom_class = "",
            inner_html = "",
            word_span = "";

        // Extend word html options with defaults
        word.html = $.extend(word.html, {id: word_id});

        // If custom class was specified, put them into a variable and remove it from html attrs, to avoid overwriting classes set by jQCloud
        if(word.html && word.html["class"]) {
          custom_class = word.html["class"];
          delete word.html["class"];
        }

        // Check is min(weight) > max(weight) otherwise use default
        if (word_array[0].weight > word_array[word_array.length - 1].weight) {
          // Linearly map the original weight to a discrete scale from 1 to 10
          weight = Math.round((word.weight - word_array[word_array.length - 1].weight) /
                              (word_array[0].weight - word_array[word_array.length - 1].weight) * 9.0) + 1;
        }
        word_span = $('<span>').attr(word.html).addClass('w' + weight + " " + custom_class);

        // Append link if word.url attribute was set
        if (word.link) {
          // If link is a string, then use it as the link href
          if(typeof word.link === "string") {
            word.link = {href: word.link};
          }

          // Extend link html options with defaults
          word.link = $.extend(word.link, {href: encodeURI(word.link.href).replace(/'/g, "%27")});

          inner_html = $('<a>').attr(word.link).text(word.text);
        } else {
          inner_html = word.text;
        }
        word_span.append(inner_html);

        // Bind handlers to words
        if (!!word.handlers) {
          for (var prop in word.handlers) {
            if (word.handlers.hasOwnProperty(prop) && typeof word.handlers[prop] === 'function') {
              $(word_span).bind(prop, word.handlers[prop]);
            }
          }
        }

        $this.append(word_span);

        var width = word_span.width(),
            height = word_span.height(),
            left = options.center.x - width / 2.0,
            top = options.center.y - height / 2.0;

        // Save a reference to the style property, for better performance
        var word_style = word_span[0].style;
        word_style.position = "absolute";
        word_style.left = left + "px";
        word_style.top = top + "px";

        while(hitTest(document.getElementById(word_id), already_placed_words)) {
          // option shape is 'rectangular' so move the word in a rectangular spiral
          if (options.shape === "rectangular") {
            steps_in_direction++;
            if (steps_in_direction * step > (1 + Math.floor(quarter_turns / 2.0)) * step * ((quarter_turns % 4 % 2) === 0 ? 1 : aspect_ratio)) {
              steps_in_direction = 0.0;
              quarter_turns++;
            }
            switch(quarter_turns % 4) {
              case 1:
                left += step * aspect_ratio + Math.random() * 2.0;
                break;
              case 2:
                top -= step + Math.random() * 2.0;
                break;
              case 3:
                left -= step * aspect_ratio + Math.random() * 2.0;
                break;
              case 0:
                top += step + Math.random() * 2.0;
                break;
            }
          } else { // Default settings: elliptic spiral shape
            radius += step;
            angle += (index % 2 === 0 ? 1 : -1)*step;

            left = options.center.x - (width / 2.0) + (radius*Math.cos(angle)) * aspect_ratio;
            top = options.center.y + radius*Math.sin(angle) - (height / 2.0);
          }
          word_style.left = left + "px";
          word_style.top = top + "px";
        }
        already_placed_words.push(document.getElementById(word_id));

        // Invoke callback if existing
        if ($.isFunction(word.afterWordRender)) {
          word.afterWordRender.call(word_span);
        }
      };

      var drawOneWordDelayed = function(index) {
        index = index || 0;
        if (!$this.is(':visible')) { // if not visible then do not attempt to draw
          setTimeout(function(){drawOneWordDelayed(index);},10);
          return;
        }
        if (index < word_array.length) {
          drawOneWord(index, word_array[index]);
          setTimeout(function(){drawOneWordDelayed(index + 1);}, 10);
        } else {
          if ($.isFunction(options.afterCloudRender)) {
            options.afterCloudRender.call($this);
          }
        }
      };

      // Iterate drawOneWord on every word. The way the iteration is done depends on the drawing mode (delayedMode is true or false)
      if (options.delayedMode){
        drawOneWordDelayed();
      }
      else {
        $.each(word_array, drawOneWord);
        if ($.isFunction(options.afterCloudRender)) {
          options.afterCloudRender.call($this);
        }
      }
    };

    // Delay execution so that the browser can render the page before the computatively intensive word cloud drawing
    setTimeout(function(){drawWordCloud();}, 10);
    return $this;
  };
})(jQuery);

código fonte css:

div.jqcloud {    
font-family: 微软雅黑,"Helvetica", "Microsoft YaHei", sans-serif;    
color: #09f;    
overflow: hidden;    
position: relative;    
}    
div.jqcloud a {    
color: inherit;    
font-size: inherit;    
text-decoration: none;    
}    
div.jqcloud a:hover {    
color: #0df;    
}    
div.jqcloud a:hover {    
color: #0cf;    
}    
div.jqcloud span {    
padding: 0;    
}    
div.jqcloud span.w10 {    
	font-size: 40px;    
	color: #ff4c8e;    
}    
div.jqcloud span.w9 {    
	font-size: 36px;    
	color: #ffc552;    
}    
div.jqcloud span.w8 {    
font-size: 34px;    
color: #addb48;    
}    
div.jqcloud span.w7 {    
font-size: 32px;    
color: #d680ff;    
}    
div.jqcloud span.w6 {    
font-size: 30px;    
color: #81d7ff;    
}    
div.jqcloud span.w5 {    
font-size: 28px;    
color: #FF87B7;    
}    
div.jqcloud span.w4 {    
	font-size: 26px;    
	color: #FBC97A;    
}    
div.jqcloud span.w3 {    
	font-size:24px;    
	color: #BEE269;    
}    
div.jqcloud span.w2 {    
	font-size: 22px;    
	color: #E4AFFF;    
}    
div.jqcloud span.w1 {    
	font-size: 20px;    
	color: #AFE8FF;    
}

Beta:

http://thatV.promote existente empréstimos.com/Ele simplesmente perdeu

Deixe uma resposta