Wie erhalte ich den Hintergrundfarbcode eines Elements?
console.log($(".div").css("background-color"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="div" style="background-color: #f5b405"></div>
Was ich möchte
#f5b405
javascript
jquery
css
hex
background-color
Laukok
quelle
quelle
$(this).animate({ backgroundColor: '#f5b405' }, 'fast');
Antworten:
Überprüfen Sie den Beispiellink unten und klicken Sie auf das Div, um den Farbwert in hex zu erhalten.
var color = ''; $('div').click(function() { var x = $(this).css('backgroundColor'); hexc(x); console.log(color); }) function hexc(colorval) { var parts = colorval.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/); delete(parts[0]); for (var i = 1; i <= 3; ++i) { parts[i] = parseInt(parts[i]).toString(16); if (parts[i].length == 1) parts[i] = '0' + parts[i]; } color = '#' + parts.join(''); }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class='div' style='background-color: #f5b405'>Click me!</div>
Überprüfen Sie das Arbeitsbeispiel unter http://jsfiddle.net/DCaQb/
quelle
$(this).css('backgroundColor')
zurückrgba(n, n, n, n)
.Hierfür gibt es einen kleinen Hack, da die HTML5-Zeichenfläche erforderlich ist, um Farbwerte zu analysieren, wenn bestimmte Eigenschaften wie
strokeStyle
und festgelegtfillStyle
sind:var ctx = document.createElement('canvas').getContext('2d'); ctx.strokeStyle = 'rgb(64, 128, 192)'; var hexColor = ctx.strokeStyle;
quelle
function getBackgroundColor($dom) { var bgColor = ""; while ($dom[0].tagName.toLowerCase() != "html") { bgColor = $dom.css("background-color"); if (bgColor != "rgba(0, 0, 0, 0)" && bgColor != "transparent") { break; } $dom = $dom.parent(); } return bgColor; }
Funktioniert ordnungsgemäß unter Chrome und Firefox
quelle
Sie haben die Farbe, die Sie nur benötigen, um sie in das gewünschte Format zu konvertieren.
Hier ist ein Skript, das den Trick machen sollte: http://www.phpied.com/rgb-color-parser-in-javascript/
quelle
Wenn
background-color
unter einem Element keine Definition von vorhanden ist , gibt Chrome dessenbackground-color
as ausrgba(0, 0, 0, 0)
, während Firefox dies ausgibttransparent
.quelle
Meine schöne nicht standardmäßige Lösung
HTML
<div style="background-color:#f5b405"></div>
jQuery
$(this).attr("style").replace("background-color:", "");
Ergebnis
quelle
Hinzufügen einer @ Newred-Lösung. Wenn Ihr Stil mehr als nur das
background-color
hat, können Sie dies verwenden:$(this).attr('style').split(';').filter(item => item.startsWith('background-color'))[0].split(":")[1]
quelle
Diese Lösung verwendet einen Teil dessen, was @Newred und @Radu Diță gesagt haben. Funktioniert aber in weniger Standardfällen.
$(this).attr('style').split(';').filter(item => item.startsWith('background-color'))[0].split(":")[1].replace(/\s/g, '');
Das Problem, das beide haben, ist, dass keiner nach einem Leerzeichen zwischen Hintergrundfarbe und Farbe sucht.
All dies stimmt mit dem obigen Code überein.
quelle