简体   繁体   English

在JQuery中将CSS渐变动态地应用于元素

[英]Applying a css gradient to an element dynamically in JQuery

My fiddle - http://jsbin.com/jebusoxa/1/edit 我的小提琴-http: //jsbin.com/jebusoxa/1/edit

I'm making a simple HSL color picker and dynamically applying a gradient to a range input type on dom ready & element on change to update the picker. 我正在制作一个简单的HSL颜色选择器,并动态将渐变应用于dom ready上的范围输入类型和更改时的元素以更新选择器。

// Setup Code Update
$(".cpick-code-hsl").on('change keyup', function() {
  $(this).val( "hsla(" + $(".cpick-hue-text").val() + ", " + $(".cpick-s-text").val() + ", " + $(".cpick-l-text").val() + ", " + $(".cpick-a-text").val() + ")");

  // Apply as body background
  $(".head").css({
    "background": $(".cpick-code-hsl").val()
  });

  $(".cpick-code-rgb").val( $(".head").css("backgroundColor") );

  // Alpha Saturation
  $(".cpick-s").css({
    "background": "linear-gradient(to right, #7f7f80 0%," + "hsl(" + $(".cpick-hue").val() + "," + $(".cpick-s").val() + "%," + $(".cpick-l").val() + "%)" + " 100%)"
  });
  // Alpha Lightness
  $(".cpick-l").css({
    "background": "linear-gradient(to right, #000000 0%," + "hsl(" + $(".cpick-hue").val() + "," + $(".cpick-s").val() + "%," + $(".cpick-l").val() + "%) 50%,#ffffff 100%)"
  });
  // Alpha Preview
  $(".cpick-a").css({
    "background": "linear-gradient(to right, rgba(51,51,51,0) 0%," + "hsl(" + $(".cpick-hue").val() + "," + $(".cpick-s").val() + "%," + $(".cpick-l").val() + "%)" + " 100%)"
  });
});

I came across the Gradientz plugin, but it's not working on Firefox. 我遇到了Gradientz插件,但在Firefox上不起作用。 Does anyone know of a better and easier solution? 有谁知道更好更好的解决方案?

Do you have access to a stylesheet or a <style> element? 您可以访问样式表或<style>元素吗? It would be much easier, more performant, and result in cleaner markup if you defined a css class, then use jQuery to add that class to your element. 如果定义了一个css类,然后使用jQuery将该类添加到您的元素中,将会更容易,更高效,并且产生更清晰的标记。

http://jsfiddle.net/he3tw/ http://jsfiddle.net/he3tw/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM