Ich möchte eine anklickbare 6 * 6 Farbpalette mit HTML5 Canvas erstellen. Ich sollte in der Lage sein, auf jedes Farbraster auf der Palette zu klicken und die Hintergrundfarbe sollte zu der ausgewählten Farbe wechseln.Um eine 6 * 6 Farbpalette mit html5 Leinwand zu erstellen
Antwort
Mit React habe ich das gemacht. Vielleicht haben Sie nach dem Durchschauen eine Vorstellung davon, was Sie alles tun müssen.
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>
Um das hinzuzufügen, können Sie 'cxt.getImageData()' verwenden, um die Farbe des Quadrats zu erhalten, auf das Sie klicken. Dann müssen Sie nur den Hintergrund entsprechend dieser Farbe einstellen. (Dies ist nur eine grundlegende ToDo-Liste. Den Rest müssen Sie herausfinden. Versuchen Sie zu googeln!) – Brendan
Danke. das hilft. Ich würde gerne wissen, ob dies auch mit Bootstrap möglich ist. –
@NandanaSrinivasan Es gibt keinen Grund Bootstrap zu verwenden, wenn Sie eine Leinwand verwenden werden –
- 1. Stiftung 6 off-Leinwand nicht schließen
- 2. HTML5 Datum Eingang 6 stelliges Jahr
- 3. HTML5 Leinwand zu PDF
- 4. Eine html5-Leinwand übersetzen
- 5. iAds mit neuen iPhone 6 und 6 +
- 6. 6-6 Scheibe mit 6-3-3 unter
- 7. HTML5 Leinwand Hintergrundbild wiederholen
- 8. Anaglyph 3D-Bild auf HTML5-Leinwand erstellen
- 9. Bild-Diashow mit Leinwand HTML5
- 10. Foundation 6 Off-Leinwand von Bower Paket auszulösen versagt
- 11. Versuchen, ein kreisförmiges Menü mit 6 Radialen zu erstellen
- 12. Migration Java-Webanwendung von Tomcat 6 zu JBoss EAP 6
- 13. Wie eine Antwortnachricht zu erstellen und Content-String hinzufügen, um es in ASP.NET 5/MVC 6
- 14. Verschwommenes Bild nach Leinwand drehen, nur in Android 6
- 15. Leistung von IcedTea 6 im Vergleich zu Suns HotSpot 6
- 16. HTML5 generieren Leinwand Hintergrundbild
- 17. Verwenden von Entity Framework 6-Klassenbibliotheksprojekt mit MVC 6
- 18. eine dunkele, umgekehrt Farbpalette in Seaborn Erstellen
- 19. NSolid mit Knoten 6
- 20. Dart HTML5 Leinwand Bibliothek?
- 21. HTML5-Leinwand fillText Ränder
- 22. Installiere iOS 6 Simulator auf Xcode 6
- 23. iPhone 6 und 6 Plus Responsive Haltepunkte
- 24. Verschlusstabellen mit Entitätsframework 6
- 25. Middleman mit Foundation 6
- 26. Wie eine Volltextsuche mit Entity Framework 6
- 27. Erstellen Sie eine benutzerdefinierte Farbpalette in R
- 28. HTML5 Leinwand Diashow Problem
- 29. VB 6 Multithreading Verwirrung
- 30. HTML5 getImageData ohne Leinwand
Sie Leinwand nicht brauchen, dies zu tun - und in der Tat Leinwand bedeuten, dass Sie Ihre eigene Cursor Klick-Tracking-Logik implementieren werden müssen. Warum möchten Sie Leinwand verwenden? – Dai
Zusammen mit @Dais Kommentar: Verwenden Sie einfach einfache HTML - Tabellen und lassen Sie JavaScript alle in einer 'for' - Schleife generieren. Erstellen Sie in jeder Iteration das html-Element und fügen Sie für jede Iteration eine bestimmte Menge einer 'rgb'-Farbe hinzu. – Brendan
Keine klare Frage ... Nun, Sie können die Canvas-Füllfarbe mit 'context.fillStyle = 'red' setzen und dann eines Ihrer 6x6-Rechtecke mit' context.fillRect (column * columnSize, row * rowSize, columnSize , rowSize) 'Sie können auf Klickereignisse im Canvas mit' myCanvasElement.onclick = function (event) {...}; 'hören. Sie können die Hintergrundfarbe eines Elements ändern mit 'anyElement.style.backgroundColor = 'red'' – markE