我正在通过Firefox中的JavaScript编辑CSS渐变。我有一些输入框,用户可以在其中输入1.方向2.第一种颜色3.第二种颜色
这是HTML
<html> <head> <title>Linear Gradient Control</title> <script> function renderButton(){ var orientation = document.getElementById("firstValue").value; var colorOne = document.getElementById("firstColor").value; var colorTwo = document.getElementById("secondColor").value; //alert(orientation); //alert(colorOne); //alert(colorTwo); }; </script> <style> #mainHolder { width:500px; background: -moz-linear-gradient(left, green, red); } </style> </head> <body> <h1>Gradient Editor</h1> <form> <input type="text" id="firstValue">orientation</input><br /> <input type="text" id="firstColor">first color</input><br /> <input type="text" id="secondColor">second color</input><br /> </form> <button type="button" onclick="renderButton()">Render</button> <div id="mainHolder">Content</div> </body> </html>
回顾一下,用户将指定其3个值,这些值将传递给函数“ renderButton();”。我可以使用哪行更改CSS3渐变的3个值,以便用户可以制作自己的自定义渐变框?我假设它只需要一两行。
PS我意识到这个例子只适用于Firefox。我只想在使用不同的浏览器之前先弄清楚这个概念。
从以下内容开始:
var dom = document.getElementById('mainHolder'); dom.style.backgroundImage = '-moz-linear-gradient(' + orientation + ', ' + colorOne + ', ' + colorTwo + ')';
如果您需要支持比Firefox更多的浏览器,则需要结合使用浏览器嗅探或某些类似Modernizr的功能检测来完成。
以下是使用类似于Modernizr的功能检测(在Firefox,Chrome,Safari,Opera中测试过)进行功能检测的示例。
// Detect which browser prefix to use for the specified CSS value // (e.g., background-image: -moz-linear-gradient(...); // background-image: -o-linear-gradient(...); etc). // function getCssValuePrefix() { var rtrnVal = '';//default to standard syntax var prefixes = ['-o-', '-ms-', '-moz-', '-webkit-']; // Create a temporary DOM object for testing var dom = document.createElement('div'); for (var i = 0; i < prefixes.length; i++) { // Attempt to set the style dom.style.background = prefixes[i] + 'linear-gradient(#000000, #ffffff)'; // Detect if the style was successfully set if (dom.style.background) { rtrnVal = prefixes[i]; } } dom = null; delete dom; return rtrnVal; } // Setting the gradient with the proper prefix dom.style.backgroundImage = getCssValuePrefix() + 'linear-gradient(' + orientation + ', ' + colorOne + ', ' + colorTwo + ')';