2016-07-20 8 views
-3

HTML5キャンバスを使用してクリック可能な6 * 6カラーパレットを作成します。私はパレット上の各色のグリッドをクリックすることができ、背景色は選択された色に変わるはずです。html5キャンバスを使用して6 * 6カラーパレットを作成するには

+0

これを行うには、キャンバスを必要としない - 実際にキャンバスを使用して独自のカーソルのクリックトラッキングロジックを実装する必要がありますを意味します。なぜキャンバスを使いたいのですか? – Dai

+0

@Daiのコメントに沿って:単純なHTMLテーブルを使用して、それらのすべてを 'for'ループで生成させるようにしてください。各反復では、html要素を作成し、繰り返しごとに 'rgb'色にある量を追加します。 – Brendan

+0

明確な質問ではない...さて、キャンバスの塗りつぶしの色を 'context.fillStyle = 'red''で設定し、6x6矩形の1つを' context.fillRect(column * columnSize、row * rowSize、columnSize 、rowSize) 'myCanvasElement.onclick = function(event){...};を使用してキャンバス上でクリックイベントを聴くことができます。 'anyElement.style.backgroundColor = 'red''を使って要素の背景色を変更することができます – markE

答えて

0

リアクトを使って、これを作った。たぶんこのことを見てから、あなたは何をする必要があるのか​​というアイデアを得るでしょう。

class Palette extends React.Component { 
 
    constructor(props) { 
 
    super(props); 
 
    this.state = { color: '#FFFFFF' }; 
 
    } 
 
    
 
    setColor(row, col) { 
 
    const color = this.getColor(row, col); 
 

 
    this.setState({ color }); 
 
    document.body.style.backgroundColor = color; 
 
    } 
 
    
 
    getColor(row, col) { 
 
    const hue = Math.floor(col/this.props.height * 360); 
 
    const sat = 100; 
 
    const lit = Math.floor((1 - (row + 1)/(this.props.width + 1)) * 100); 
 
    
 
    return `hsl(${hue},${sat}%,${lit}%)`; 
 
    } 
 
    
 
    render() { 
 
    const rows = []; 
 
    
 
    for (let i = 0; i < this.props.height; i++) { 
 
     const cols = []; 
 
     
 
     for (let j = 0; j < this.props.width; j++) { 
 
     
 
     cols.push(
 
      <div 
 
      className="col" 
 
      onClick={ 
 
      () => this.setColor(j, i) 
 
      } 
 
      style={{ 
 
       backgroundColor: this.getColor(j, i) 
 
      }} /> 
 
     ); 
 
     } 
 
    
 
     rows.push(
 
     <div className="row"> 
 
      {cols} 
 
     </div> 
 
    ); 
 
    } 
 
    
 
    return (
 
     <div className="palette"> 
 
     {rows} 
 
     </div> 
 
    ); 
 
    } 
 
} 
 

 
ReactDOM.render(<Palette width={6} height={6} />, document.body);
.palette { 
 
    display: flex; 
 
    flex: 1; 
 
    flex-direction: column; 
 
    cursor: pointer; 
 
} 
 

 
.row { 
 
    display: flex; 
 
    flex: 1; 
 
    flex-direction: row; 
 
} 
 

 
.col { 
 
    width: 20px; 
 
    height: 20px; 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

+0

これに追加するには、 'cxt.getImageData()'を使ってクリックした四角形の色を取得することができます。次に、その色に従って背景を設定するだけです。 (これは単なる基本的なToDoリストです。残りはあなたが把握する必要があります。グーグルで試してみてください) – Brendan

+0

ありがとう。それは助ける。 Bootstrapを使ってこれが可能かどうかを知りたい。 –

+0

@NandanaSrinivasanあなたがキャンバスを使うつもりならば、ブートストラップの使用には何の意味もありません –

関連する問題