• [刘阳Java]_纯CSS代码实现内容过滤效果


    继续我们技术专题课,我们今天给大家带来的是一个比较酷炫的“纯CSS代码实现内容过滤效果”,没有加入任何JS的效果。全部都是应用CSS3的新增选择器来实现的。先看效果截图

    实现思路

    • 上面的四个按钮是利用 radio + label 组合方式实现
    • 下面的图片全部都通过左浮动方式排列
    • 外层有一个最大的div,它来包含按钮+图片
    • 当点击按钮的时候,我们通过 CSS3 的属性选择器 + 兄弟选择器来实现过滤效果,且也具备点击事件效果(牛逼)

    完整的代码如下

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style type="text/css">
                body {
                    margin: 0;
                    text-align: center;
                    font-family: "微软雅黑";
                    background: #f5f5f5;
                }
                h1 {
                    text-align: center;
                }
                .container {
                    width: 90%;
                    margin: 0 auto;
                }
                input[type='radio'] {
                    display: none;
                }
                label {
                    width: 23%;
                    float: left;
                    text-align: center;
                    background: #FFFFFF;
                    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
                    color: #222222;
                    padding: 0.5%;
                    margin: 0.5%;
                    margin-bottom: 30px;
                    cursor: pointer;
                }
                /* 选取紧接着男装后面的label标签 */
                /* CSS3中选择器的新用法 */
                input[type='radio'][id='men']:checked + label {
                    background: #6666ff;
                }
                input[type='radio'][id='men']:checked ~ .women, input[type="radio"][id="men"]:checked ~ .children {
                    width: 0;
                    height: 0;
                    padding: 0;
                    margin: 0;
                    opacity: 0;
                }
                /* 选取紧接着女装后面的label标签 */
                input[type="radio"][id="women"]:checked + label {
                    background: #ff4466;
                }
                input[type="radio"][id="women"]:checked ~ .men, input[type="radio"][id="women"]:checked ~ .children {
                    width: 0;
                    height: 0;
                    padding: 0;
                    margin: 0;
                    opacity: 0;
                }
                /* 选取紧接着童装后面的label标签 */
                input[type="radio"][id="children"]:checked + label {
                    background: #66dd99;
                }
                input[type="radio"][id="children"]:checked ~ .men, input[type="radio"][id="children"]:checked ~ .women {
                    width: 0;
                    height: 0;
                    padding: 0;
                    margin: 0;
                    opacity: 0;
                }
                .tile {
                    width: 23%;
                    float: left;
                    transition: all 1s;
                    margin: 0.5%;
                    padding: 0.5%;
                    background: #6666ff;
                }
                .tile img {
                    width: 100%;
                }
            </style>
        </head>
        <body>
            <h1>纯CSS代码实现内容过滤效果</h1>
            <div class="container">
                <input type="radio" name="clothing" id="men" value="" />
                <label for="men">男装</label>
                <input type="radio" name="clothing" id="women" value="" />
                <label for="women">女装</label>
                <input type="radio" name="clothing" id="children" value="" />
                <label for="children">童装</label>
                <input type="radio" name="clothing" id="reset" value="" />
                <label for="reset">重置</label>
                <div class="tile men">
                    <img src="img/1.jpg" alt="">
                </div>
                <div class="tile women">
                    <img src="img/2.jpg" alt="">
                </div>
                <div class="tile men">
                    <img src="img/3.jpg" alt="">
                </div>
                <div class="tile children">
                    <img src="img/4.jpg" alt="">
                </div>
                <div class="tile men">
                    <img src="img/5.jpg" alt="">
                </div>
                <div class="tile women">
                    <img src="img/6.jpg" alt="">
                </div>
                <div class="tile women">
                    <img src="img/7.jpg" alt="">
                </div>
                <div class="tile children">
                    <img src="img/8.jpg" alt="">
                </div>
                <div class="tile men">
                    <img src="img/9.jpg" alt="">
                </div>
                <div class="tile children">
                    <img src="img/10.jpg" alt="">
                </div>
                <div class="tile women">
                    <img src="img/11.jpg" alt="">
                </div>
                <div class="tile children">
                    <img src="img/12.jpg" alt="">
                </div>
                <div class="tile men">
                    <img src="img/13.jpg" alt="">
                </div>
                <div class="tile men">
                    <img src="img/14.jpg" alt="">
                </div>
                <div class="tile children">
                    <img src="img/15.jpg" alt="">
                </div>
                <div class="tile women">
                    <img src="img/8.jpg" alt="">
                </div>
            </div>
        </body>
    </html>
  • 相关阅读:
    vue iview 导入excel文件(upload)
    iview table 中用根据不同状态改变颜色(用render)
    vue项目中导出excel表格数据
    iview table 中 render 时间格式化
    微信浏览器的部分特效更接近浏览器IE 9
    ABP 拦截器不工作
    vue + webpack 添加的引用不编译成ES6的问题
    把vue组件添加到body下
    vue+vuex+router实现阻止浏览器回退
    webpack使用vue-moment-libs 在PC微信浏览器下显示空白
  • 原文地址:https://www.cnblogs.com/liuyangjava/p/8513039.html
Copyright © 2020-2023  润新知