• css实现调色板案例


    代码来自http://dabblet.com/gist/70c434a6e802b062f494

    主要涉及css中伪元素的应用,主要有nth-child()和before、after等伪元素,重点为兄弟元素的巧妙应用。
    效果:



    <!DOCTYPE html>
    <html lang="en">
    <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>css实现调色板</title>
        <style>
            .palette li:first-child:nth-last-child(n+4) .color-options a:after,
            .palette li:first-child:nth-child(n+4)~li .color-options a:after {
                content: none;
            }
    
            .palette li:first-child:nth-last-child(n+6) .color-options a,
            .palette li:first-child:nth-last-child(n+6)~li .color-options a {
                color: transparent;
                font-size: 0;
            }
            .palette li:only-child .delete{
                display: none;
            }
            .palette {
                display: flex;
                height: 200px;
                max- 900px;
                font: bold 90%/1 sans-serif;
            }
                .palette li {
                    flex: 1;
                    list-style: none;
                    background: #d6e0e5;
                }
                    .color-options {
                        background-color: rgba(0, 0, 0, .5);
                        padding: 10px;
                        margin: 0 10px;
                        overflow: hidden;
                        border-radius: 0 0 10px 10px;
                    }
                        .color-options .add { float: left; }
                        .color-options .delete { float:right; }
    
                        .color-options a {
                            color: white;
                            text-decoration: none;
                        }
                        .color-options a:before {
                            display: inline-block;
                            font-size: 1rem;
                             1.3rem;
                            margin-right: .3rem;
                            text-align: center;
                            line-height: 1.3;
                            background:white;
                            border-radius: 50%;
                            letter-spacing: normal;
                        }
    
                        .color-options .add:before {
                            content: "+";
                            color: #590;
                        }
                        .color-options .delete:before {
                            content: "x";
                            color: #b00;
                        }
    
                        .color-options a:after {
                            content: "color";
                            font-weight: normal;
                        }
        </style>
    </head>
    <body>
        <ul class="palette">
            <li>
                <div class="color-options">
                    <a href="#" class="add">Add</a>
                    <a href="#" class="delete">Delete</a>
                </div>
            </li>
        </ul>
        <script>
            function $$(expr, con ) {
                return [].slice.call((con || document).querySeletorAll(expr));
            }
    
            var colors = [
                "#d6e005",
                '#082323', '#E6E2AF', '#A7A37E', '#EFECCA', '#046380', // Sandy stone beach
       	        '#1C171D', '#FEE169', '#CDD452', '#F9722E', '#C9313D', // Sushi Maki
       	        '#2E95A3', '#50B8B4', '#C6FFFA', '#E2FFA8'  // Agave
            ],
            palette = document.querySelector('.palette'),
            template = palette.firstElementChild;
    
            function addColor(template){
                var li = template.cloneNode(true);
                var color = colors.pop();
                colors.unshift(color);
                li.style.background = color;
                palette.insertBefore (li, template.nextSibling);
            }
    
            palette.onclick = function(evt){
                var button = evt.target;
    
                if(button.className == 'add'){
                    addColor(button.parentNode.parentNode);
                }else if(button.className == "delete"){
                    var li = button.parentNode.parentNode;
                    li.parentNode.removeChild(li);
                }
            }
            
        </script>
    </body>
    </html>
    
    

    对比自己写的,高下立知。

  • 相关阅读:
    简单好用的日历排期控件
    Ext.js create store
    Ext.js页面添加元素
    Ext.js Tree
    前端设计的七大法则
    如何写软件开发相关文档,它包含哪些种类和内容
    行内文字末尾下降
    正则表达式
    滚动加载数据
    location.hash来保持页面状态
  • 原文地址:https://www.cnblogs.com/InnerPeace-Hecdi/p/9301680.html
Copyright © 2020-2023  润新知