色调旋转滤镜按钮-在线生成

本例应用颜色拾取插件 https://farbelous.io/bootstrap-colorpicker/tutorial-Basics.html
直接放源码,有兴趣的点击例子查看:

<html lang="zh">

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>色调旋转滤镜下的按钮</title>
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/4.0.0/css/bootstrap.min.css"
        integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <link href="css/bootstrap-colorpicker.css" rel="stylesheet">
    <style type="text/css">
        html,
        body &#123;
            height: 100%;
        &#125;
    </style>
</head>

<body>
    <div class="container jumbotron h-100">
        <h1>选择颜色</h1>
        <div id="demo" class="input-group" title="Using input value">
            <input type="text" class="form-control input-lg" value="" />
            <span class="input-group-append"><span
                    class="input-group-text colorpicker-input-addon"><i></i></span></span>
        </div>
        <h4 class="pt-3">色调旋转滤镜下的按钮</h4>
        <div id="hueBtnBox"></div>
        <h4 class="pt-3">css</h4>
        <div id="css"></div>
    </div>
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script src="js/bootstrap.bundle.min.js"></script>
    <script src="js/bootstrap-colorpicker.js"></script>
    <script>
        $(function () &#123;
            $('#demo').colorpicker(&#123;
                "color": "#ff0000"
            &#125;);
            $('#demo').on('colorpickerChange', function (event) &#123;
                initColor(event.color);
            &#125;);
            //初始化
            initColor('#ff0000');
            //生成36种旋转滤镜颜色
            function initColor(color) &#123;
                color = String(color).indexOf('#') >= 0 ? color : hexify(String(color));
                var templeteStyle = '.ui-button-primary&#123;border: 1px solid ' + color + ';background-color: ' +
                    color + ';color: #fff;&#125;.ui-button-primary:hover &#123;background-color: ' + LightenDarkenColor(
                        color, -20) + ';border-color: ' + LightenDarkenColor(color, -20) + ';&#125;';
                var res = [];
                if (!$('#colorPickerStyle').length) &#123;
                    $(document.head).append('<style id="colorPickerStyle">' + templeteStyle + '</style>');
                &#125; else &#123;
                    $('#colorPickerStyle').html(templeteStyle);
                &#125;
                for (var i = 0, len = 36; i < len; i++) &#123;
                    res.push('<button class="btn ui-button-primary m-1" style="filter:hue-rotate(' + i +
                        '0deg);">其它色按钮</button>')
                &#125;
                $('#hueBtnBox').html(res.join(''));
                $('#css').html(templeteStyle);
            &#125;
        &#125;);
        //十六进制转为RGB
        function hex2Rgb(hex) &#123;
            var rgb = [];
            if (/^\#[0-9A-F]&#123;3&#125;$/i.test(hex)) &#123; //判断传入是否为#三位十六进制数
                let sixHex = '#';
                hex.replace(/[0-9A-F]/ig, function (kw) &#123;
                    sixHex += kw + kw; //把三位16进制数转化为六位
                &#125;);
                hex = sixHex; //保存回hex
            &#125;
            if (/^#[0-9A-F]&#123;6&#125;$/i.test(hex)) &#123; //判断传入是否为#六位十六进制数
                hex.replace(/[0-9A-F]&#123;2&#125;/ig, function (kw) &#123;
                    rgb.push(eval('0x' + kw)); //十六进制转化为十进制并存如数组
                &#125;);
                return `rgb($&#123;rgb.join(',')&#125;)`; //输出RGB格式颜色
            &#125; else &#123;
                console.log(`Input $&#123;hex&#125; is wrong!`);
                return 'rgb(0,0,0)';
            &#125;
        &#125;
        //rgb转换十六进制
        function hexify(color) &#123;
            var values = color
                .replace(/rgba?\(/, '')
                .replace(/\)/, '')
                .replace(/[\s+]/g, '')
                .split(',');
            var a = parseFloat(values[3] || 1),
                r = Math.floor(a * parseInt(values[0]) + (1 - a) * 255),
                g = Math.floor(a * parseInt(values[1]) + (1 - a) * 255),
                b = Math.floor(a * parseInt(values[2]) + (1 - a) * 255);
            return "#" +
                ("0" + r.toString(16)).slice(-2) +
                ("0" + g.toString(16)).slice(-2) +
                ("0" + b.toString(16)).slice(-2);
        &#125;
        //转换颜色变亮、变暗
        function LightenDarkenColor(col, amt) &#123;
            var usePound = false;
            if (col[0] == "#") &#123;
                col = col.slice(1);
                usePound = true;
            &#125;
            var num = parseInt(col, 16);
            var r = (num >> 16) + amt;
            if (r > 255) r = 255;
            else if (r < 0) r = 0;
            var b = ((num >> 8) & 0x00FF) + amt;
            if (b > 255) b = 255;
            else if (b < 0) b = 0;
            var g = (num & 0x0000FF) + amt;
            if (g > 255) g = 255;
            else if (g < 0) g = 0;
            return (usePound ? "#" : "") + (g | (b << 8) | (r << 16)).toString(16);

        &#125;
    </script>
</body>

示例:请点这里


 上一篇
清除cookie稳妥做法 清除cookie稳妥做法
清除cookie稳妥做法就是设置cookie与清除cookie写法一致,cookie清除不了的问题,主要出现在设置与清除cookie并非一端操作的情况下,此时需要注意path、domain的设置必须保持一致,注意下文中注释//warning
2019-03-27
下一篇 
百度分享-设置缩略图及标题 百度分享-设置缩略图及标题
一不小心走进你的锅…当你工作中用到 百度分享,百度官方提供了两种方式,如图:一定会毫不犹豫点进百度分享官网,按其提示的两种方式选择一种来用,那么问题来了…,当你真的把网页分享出去时,你可能提出类似这种问题:…无法正常显示分享缩略图和介绍?
2019-03-14
  目录