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-width: 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;
                        width: 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>

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

原文地址:https://www.cnblogs.com/InnerPeace-Hecdi/p/9301680.html

时间: 2024-11-13 02:37:38

css实现调色板案例的相关文章

div+css登陆界面案例2

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> body{ margin: 0px; padding:0px; font-size:12px; background-color: #1873a

div+css登陆界面案例

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style type="text/css"> body{ margin: 0px; padding:0px; font-size:12px; background-color: #1873aa; text-align: center; overflow: hid

别具光芒 CSS网页布局案例剖析 中文pdf扫描版

别具光芒:CSS网页布局案例剖析以七大完整案例为线索,紧密围绕在使用CSS+DIV布局制作网页过程中遇到的实际需要和应该掌握的技术,全面介绍了CSS布局网页的各方面内容和技巧.书中摒弃了案例书常见的一味罗列步骤,轻视技术原理的做法,把案例作为学习手段,不但侧重讲解CSS盒子模型.标准流.浮动.定位等四大核心技术原理,更侧重讲解如何在实践中应用它们.读者通过案例,既可以掌握CSS的核心技术要点,也可以了解相关技术和工作流程,使读者不但知其然,还知其所以然.此外,本书还结合了流行的CMS内容管理系统

CSS的一些案例和坑

display: inline-block的坑 (一) 先看了个例子 <style type="text/css"> ul{ width: 300px; height: 50px; } li{ width: 50px; height: 50px; background: blue; display: inline-block; } </style> <body> <ul> <li></li> <li>&

Javascript+CSS经典效果案例剖解

在编写前端代码的时候经常会因为网页添加什么动态效果而发愁,现在给你一些经典的案例,可以到时候参考一下的. CSS+js滚动图片功能: 涉及到的知识点:CSS: width height background-image以及其他一些样式属性, Javascript:Event事件有:mouseover mouseout click image的load DOM:element.style element.scrollTop 以及 setInterval() clearInterval()等 需要定

HTML学习笔记 CSS背景样式案例 第六节 (原创) 参考使用表

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>样式</title> <link rel="stylesheet" href="tzy.css" type="text/css"> </head> <body>

HTML学习笔记 CSS学习选择器案例 第五节 (原创) 参考使用表

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="tzy.css" type="text/css"> <style type="tex

2017.9.24 基于HTML+JavaScript+CSS的开发案例&amp;&amp;JavaScript+CSS+DIV实现表格变色

1.JavaScript+CSS+DIV实现下拉菜单 1.1 层标签<div> 基本语法: <div id="层编号" style="position:absoult;left:29px;top:12px; width:200px;henght:100px;background-color:#33CC99; float:none;clear:none;z-index:1"> </div> 语法说明: ·position属性主要是来

css绘制基本案例

css绘制三角形 <style> .triangle-box{ margin: 50px auto; height: 300px; width: 500px; box-shadow: 1px 1px 10px rgba(0,0,0,0.3); position: relative; } .triangle{ position: absolute; top: 10px; left: 20px; border-width: 30px; border-color: #c2c2c2 transpare