begin process at 2008 05 17 12:03:24
1 173 987 membres
110 nouveaux aujourd'hui
13 974 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

AYXCOLORPIKER - SÉLÉCTEUR DE COULEURS JAVASCRIPT


Information sur la source

Catégorie :Graphique Classé sous : selecteur, couleur, colorpiker, color piker Niveau : Débutant Date de création : 30/04/2008 Date de mise à jour : 30/04/2008 13:28:12 Vu / téléchargé: 1 090 / 57

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note


Description

Ce sélecteur de couleur vous permettra de choisir une couleur simplement et rapidement.
Il est assez ergonomique et s'inspire du style de sélecteur de PHPBB3.
Le code est optimisé au maximum je pense...

Il y a une fonction close() et open() qui servent respectivement à cacher ou afficher le sélecteur sur un evenement que vous définirez.

Dans le Zip, vous trouverez un exemple d'utilisation très simple de cette classe.

Source

  • /**
  • * @author AlphaYaX
  • * @version 1.1
  • **/
  • /**
  • * @name Class ayxColorPiker
  • * @desc Selecteur de couleur
  • * @param psColorPanelDiv : Div qui contiendra le selecteur de couleur
  • **/
  • function ayxColorPiker(psColorPanelDiv)
  • {
  • /****
  • * Attributs
  • ****/
  • this.m_divColorPannel = psColorPanelDiv; // Div qui contiendra la pallete de couleurs.
  • this.m_divSourcePannel = ""; // Div qui contiendra la couleur de retour
  • this.m_nStep = 50; // Pas pour la génération des couleurs. (varie entre 0 et 255)
  • /**
  • * @name dispColor
  • * @desc Affiche la couleur survolée dans le div d'affichage
  • * @param psColor : Couleur actuellement survolee
  • **/
  • this.dispColor = function (psColor)
  • {
  • document.getElementById(this.m_divSourcePannel).style.backgroundColor = psColor;
  • };
  • /**
  • * @name close
  • * @desc Ferme la fenetre de selection de la couleur
  • * @param <none>
  • **/
  • this.close = function ()
  • {
  • document.getElementById(this.m_divColorPannel).style.display = 'none';
  • };
  • /**
  • * @name open
  • * @desc Ouvre la fenetre de selection de la couleur
  • * @param <none>
  • **/
  • this.open = function ()
  • {
  • document.getElementById(this.m_divColorPannel).style.display = 'block';
  • };
  • // Creation des elements de base du tableau
  • var oTableContainer = document.getElementById(this.m_divColorPannel);
  • var oTable = document.createElement("Table"); oTableContainer.appendChild(oTable);
  • var oTBody = document.createElement("TBody"); oTable.appendChild(oTBody);
  • // Ecart entre les cellules de couleurs
  • var attSpacing = document.createAttribute("cellspacing");
  • attSpacing.nodeValue = "1";
  • oTable.setAttributeNode(attSpacing);
  • // Style sur le tableau
  • oTable.border = "1px solid black";
  • oTable.style.margin = "0px";
  • oTable.style.padding = "0px";
  • // Création des lignes
  • for (var iRed=0; iRed<256; iRed+=this.m_nStep)
  • {
  • // Nouvelle ligne
  • var oRow = document.createElement("Tr"); oTBody.appendChild(oRow);
  • for (var iGreen=50; iGreen<256; iGreen+=this.m_nStep)
  • {
  • for (var iBlue=0; iBlue<256; iBlue+=this.m_nStep)
  • {
  • // Création de la cellule
  • var oCell = document.createElement("Td"); oRow.appendChild(oCell);
  • var sColor = "rgb("+iRed +","+iGreen +","+iBlue +")";
  • // Style sur les cellules
  • oCell.style.width = 8;
  • oCell.style.height = 8;
  • oCell.style.margin = 0;
  • oCell.style.padding = 0;
  • oCell.style.backgroundColor = sColor;
  • // Evenements
  • oCell.onclick = function() { oColorPiker.close(); };
  • oCell.onmouseover = function() { oColorPiker.dispColor(this.style.backgroundColor); };
  • };
  • };
  • };
  • };
/**
* @author   AlphaYaX
* @version  1.1
**/

/**
* @name   Class ayxColorPiker
* @desc   Selecteur de couleur
* @param  psColorPanelDiv : Div qui contiendra le selecteur de couleur
**/
function ayxColorPiker(psColorPanelDiv)
{
  /****
  * Attributs
  ****/
  this.m_divColorPannel  = psColorPanelDiv; // Div qui contiendra la pallete de couleurs.
  this.m_divSourcePannel = "";              // Div qui contiendra la couleur de retour
  this.m_nStep           = 50;              // Pas pour la génération des couleurs. (varie entre 0 et 255)


  /**
  * @name   dispColor
  * @desc   Affiche la couleur survolée dans le div d'affichage
  * @param  psColor : Couleur actuellement survolee
  **/
  this.dispColor = function (psColor)
  {
    document.getElementById(this.m_divSourcePannel).style.backgroundColor = psColor;
  };


  /**
  * @name   close
  * @desc   Ferme la fenetre de selection de la couleur
  * @param  <none>
  **/
  this.close = function ()
  { 
    document.getElementById(this.m_divColorPannel).style.display = 'none'; 
  };


  /**
  * @name   open
  * @desc   Ouvre la fenetre de selection de la couleur
  * @param  <none>
  **/
  this.open = function ()
  { 
    document.getElementById(this.m_divColorPannel).style.display = 'block'; 
  };
  


  // Creation des elements de base du tableau
  var oTableContainer = document.getElementById(this.m_divColorPannel);
  var oTable = document.createElement("Table");   oTableContainer.appendChild(oTable);
  var oTBody = document.createElement("TBody");   oTable.appendChild(oTBody);
  
  // Ecart entre les cellules de couleurs
  var attSpacing = document.createAttribute("cellspacing");
  attSpacing.nodeValue  = "1";   
  oTable.setAttributeNode(attSpacing);
  
  // Style sur le tableau
  oTable.border = "1px solid black";
  oTable.style.margin  = "0px";
  oTable.style.padding = "0px";
  
  // Création des lignes
  for (var iRed=0; iRed<256; iRed+=this.m_nStep)
  {
    // Nouvelle ligne
    var oRow = document.createElement("Tr");    oTBody.appendChild(oRow);
    
    for (var iGreen=50; iGreen<256; iGreen+=this.m_nStep)
    {
      for (var iBlue=0; iBlue<256; iBlue+=this.m_nStep)
      {
        // Création de la cellule
        var oCell   = document.createElement("Td");   oRow.appendChild(oCell);
        var sColor  = "rgb("+iRed +","+iGreen +","+iBlue +")";
        
        // Style sur les cellules
        oCell.style.width   = 8;
        oCell.style.height  = 8;
        oCell.style.margin  = 0;
        oCell.style.padding = 0;
        oCell.style.backgroundColor = sColor;
                
        // Evenements
        oCell.onclick       = function() { oColorPiker.close(); };
        oCell.onmouseover   = function() { oColorPiker.dispColor(this.style.backgroundColor); };
      };
    };
  };

};



Conclusion

Ce sélecteur de couleur n'est peut être pas parfait, mais il a l'avantage d'être facilement adaptable à la plupart des situations.

Cette version est stable et sans bugs connus.
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

30 avril 2008 13:28:12 :
V 1.1 : [fix] L'affichage du div est corrigé dans le fichier de test [up] Des couleurs ont été supprimés car peu différentes
  • signaler à un administrateur
    Commentaire de nicomilville le 30/04/2008 10:49:04

    Salut,

    Bon code !!!
    Pas de note pour l'instant... j'attend de voir si tu va faire des modifications...

    Maintenant les remarques un peu moins gentilles :

    Je ne vois pas ou est le div qui est censé afficher la couleur qui est survolé !!!
    Je pense également qu'il est peut être un peu trop étendu peu être que tu pourrai le faire de la forme d'un carré et suppimer quelque colone par exemple les couleur foncé on dirai qu'elles sont en trois exemplaires chacune !!!

    a++

  • signaler à un administrateur
    Commentaire de ralecul le 30/04/2008 15:14:45 7/10

    Salut,

    Ton code est intéressant mais je te propose quelques améliorations :
    - Possibilité de l'instancier plusieurs fois.
    - Passage d'options "à la prototype".
    - Ajout de callback onUpdate et onChange.
    - Amélioration de la création de la table
    - Correction de bug mineur : table.style.border, cell.style.height = 8+"px", Picker

    Voici le code correspondant :



    {Fichier : index.html}



    <html>
    <head>
      <script type="text/javascript" src="ayxColorPicker.js"></script>
    <style type="text/css">
    div.selector {
    float: left;
    width: 50px;
    height: 50px;  
    margin: 2px;
    border: 1px solid black;
    }
    </style>
    </head>
    <body>
      
      <div id="container"></div>
      <div id="update" class="selector"></div>
      <div id="change" class="selector"></div>
      
      <br style="clear: both; margin: 50px;" />
      
      <div id="container2"></div>  
      <div id="update2" class="selector"></div>
      <div id="change2" class="selector"></div>
        
    <script type="text/javascript">
    function $(id) {
    return document.getElementById(id);
    }

    new ayxColorPicker("container", {
    nbStep   : 30,
    autoHide : true,
    onUpdate : function(colorPicker, red, green, blue) {
    $('update').style.backgroundColor = "rgb("+red +","+green +","+blue +")";
    },
    onChange : function(colorPicker, red, green, blue) {
    $('change').style.backgroundColor = "rgb("+red +","+green +","+blue +")";
    }
    });  

    new ayxColorPicker("container2", {
    autoHide : false,
    onUpdate : function(colorPicker, red, green, blue) {
    $('update2').style.backgroundColor = "rgb("+red +","+green +","+blue +")";
    },
    onChange : function(colorPicker, red, green, blue) {
    $('change2').style.backgroundColor = "rgb("+red +","+green +","+blue +")";
    }
    });  
    </script>
    </body>
    </html>



    {Fichier : ayxColorPicker.js}



    function ayxColorPicker(div, options)
    {
    var _div = (typeof(div) == "string") ? $(div) : div;

    var _options  = options || {};
    var _autoHide = _options.autoHide || false;
    var _nbStep   = _options.nbStep   || 50;
    var _onChange = _options.onChange || false;
    var _onUpdate = _options.onUpdate || false;

    var _that = this;

      this.hide = function()
      {
        _div.style.display = 'none';
      };


      this.show = function()
      {
        _div.style.display = 'block';
      };
      
    function buildHtml()
    {
    var table = document.createElement("table");  
    table.setAttribute("cellspacing", 1);
    table.style.border = "1px solid black";
    table.style.margin  = "0";
    table.style.padding = "0";

    for (var red=0; red<256; red += _nbStep)
    {
    var row = document.createElement("tr");

    for (var green=0; green<256; green += _nbStep)
    {
    for (var blue=0; blue<256; blue += _nbStep)
    {
    var cell   = document.createElement("td");
    cell.style.width   = 8 + "px";
    cell.style.height  = 8 + "px";
    cell.style.margin  = 0;
    cell.style.padding = 0;
    cell.style.backgroundColor = "rgb("+red +","+green +","+blue +")";

    cell.onclick = function(r, g, b) //closure trick
    {
    return function()
    {
    if (_autoHide)
    _that.hide();

    if (_onChange)
    _onChange(_that, r, g, b);
    }
    }(red, green, blue);

    cell.onmouseover = function(r, g, b)
    {
    return function()
    {
    if (_onUpdate)
    _onUpdate(_that, r, g, b);
    }
    }(red, green, blue);

    row.appendChild(cell);
    }
    }
    table.appendChild(row);
    }
    _div.appendChild(table);
    }

    buildHtml();
    }



    PS : Ya pas moyen d'avoir de la coloration syntaxique lors de l'ajout de code dans un commentaire ?

  • signaler à un administrateur
    Commentaire de nicomilville le 30/04/2008 15:39:07

    J'ai vu que tu avais fait des modifications, c'est mieux mais il reste encore un une chose :

    - es ce que tu vois une diférence entre les deux premier carré foncé ?

    PS : J'attend les avis des autres pour voir si ils vont dans mon sens ou pas, pour l'instant tu a 8.5 !

Ajouter un commentaire

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS