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é: 3 402 / 179

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

Cliquez pour voir la capture en taille normale
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.
 

Fichier Zip

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

Historique

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

Commentaires et avis

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

Discussions en rapport avec ce code source dans le forum

Changer la couleur d'un textfield [ par Blondy ] J'aimerais faire une méthode qui change la couleur d'un textfield. Je sais que nous pouvons changer le texte avec .value mais la couleur, avec .style? changer de couleur la cellule quand la souris vient et part [ par Stephane ] salut a tousvoila je connais pas trop javascript, alors je me sert des sources qu'il y a, mais y a un truc qu'il n'y est pas :Comment peut on changer Changer der couleur un bouton. [ par SoniqExnihilo ] Salut.j'ai fait un bouton bleu et j'aimerai que quand je click dessu il devien rouge par exemple.Voila le code que j'ai ecris mais il produit une erre Couleur d'une cellule d'un tableau html [ par ypothier ] Est-ce que quelqu'un pourrai m'aider. J'ai un tableau HTML bien simple. Mais j'aimerai être capable de modifier la class à laquel il appartient dans u COULEUR DE FOND [ par PatriceVB ] Est-il possible quand on clique sur un lien, de changer la couleur de fond de la page ? Changement de couleur de cellules dans un tableau [ par krevette ] Bonjour tt le mondej'aimerais changer la couleur des cellules d'un tableau (jusque la pas de probleme). Mais ce qu'il y a c'est que je voudrais change couleur du texte d'une cellule ou la couleur du fond d'une cellule d'une table [ par rabdane ] J'aimerais avoir un javascript qui change la couleur du texte d'une cellule ou la couleur du fond d'une cellule d'une table appelé TABLE1.cette table probleme avec couleur scrool I.E [ par Meduse ] Votre texte ICIVotre texte ICIje place ce bout de code entre les balises &lt;HEAD&gt; et &lt;/HEAD&gt; dans ma page hTML pour pouvoir collorer la scro Roll-over spécial [ par Inc0 ] Voila, je voudrai faire un rollo- over assez joli.Lorsque la souris est au dessus du lien ça change de couleur. Ok ça j' arrive (lol), mais maintenant Couleur des separateur de frames... [ par Mirror1661 ] Salut!ça doit etre super simple mais j'y arrive pas... Comment on change la couleur des bordures qui separent les differentes frames?MerciMirror.


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

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

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,936 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.