• css3 实现png图片改变背景颜色


    实际上是用的是就是css的filter的drop-shadow属性

    drop-shadow:

    1 不支持内阴影

    2 不支持多阴影

    3 兼容性 ie13+  谷歌 火狐   android4.4+  ios

    4 实现的是正真意义上的投影。对于非透明的部分都会有投影,表现形式与box-shdow不一样,透明的部分不会有阴影,包括png格式的图片的透明部分

    demo1修改png图片的颜色:

    html

    <div class="demo1">
        <div class="del"></div>
    </div>

    css

    .demo1 {
                width: 16px;
                height: 16px;
                overflow: hidden;
                margin: 50px auto;
            }
            .demo1 .del{
                width: 16px;
                height: 16px;
                position: relative;
                background: url("images/delete.png") no-repeat center;
            }
            .demo1 .del:hover{
                left:-16px;
                border-right:16px solid transparent;
                -webkit-filter:drop-shadow(16px 0 0px red);
                filter:drop-shadow( 16px 0 0px red);
            }

     filter:drop-shado(x偏移 y偏移  r模糊半径  color投影的颜色);

    1 “改变颜色”时设置left:-16px:使原来的背景颜色,向左移动16px(背景图片的宽度是16px,元素的宽度也是16px);

    2 父元素overflow:hidden;就隐藏了,这是del被完全隐藏,
    3 为了显示投影(根据投影在透明部分没有投影)设置border-right:16px solid transparent;(增加del的表现宽度),下面就只剩下改变图片的颜色了,根据drop-shadow
    4 设置投影filter:drop-shadow( 0px 0 0px red); 这时候的投影在del背景图片的下方,因为背景图左移动16px,所以看不到,这是设置x轴偏移16px,刚好的2 中设置的border-right上,这样就实现css改变png图片的颜色了

    demo2:实现带有三角的box的投影

    三角的实现方法:为了兼容都是用border写的,使用box-shadow(盒阴影)如果实现三角也带阴影,就需要在父元素和三角上都设置box-shadow就会出现阴影重叠,效果不是很好
    这里就可以使用drop-shadow实现
    html
    <div class="demo">
        <div class="angle"></div>
    </div>
    
    

    css

    .demo {
                width: 300px;
                height: 100px;
                background-color: #fff;
                margin: 100px auto;
                /*-webkit-box-shadow:  0px 0px 10px #000;
                -moz-box-shadow: 0px 0px 10px #000;
                box-shadow: 0px 0px 10px #000;*/
                filter: drop-shadow(5px 5px 10px #000);
            }
    
            .angle {
                position: absolute;
                margin-left: -20px;
                margin-top: 30px;
                width: 0;
                height: 0;
                border-right: 20px solid #fff;
                border-top: 20px solid transparent;
                border-bottom: 20px solid transparent;
    
            }

    效果图:











  • 相关阅读:
    关于Android架构那些事
    关于投资那些事
    关于单例模式的N种实现方式
    关于如何避免Android中Bitmap引起的OutOfMemoryError
    关于Java设计模式的一些概况
    阿里云服务器使用记录:服务器运行的网页无法访问
    毕业设计进度:3月22日
    前端框架:bootstrap多个模态框跳转使用时发生的页面左移问题
    毕业设计进度:3月20日
    毕业设计进度:3月19日
  • 原文地址:https://www.cnblogs.com/xiaofenguo/p/6138453.html
Copyright © 2020-2023  润新知