zoukankan      html  css  js  c++  java
  • 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;
    
            }

    效果图:











  • 相关阅读:
    HDOJ 4747 Mex
    HDU 1203 I NEED A OFFER!
    HDU 2616 Kill the monster
    HDU 3496 Watch The Movie
    Codeforces 347A A. Difference Row
    Codeforces 347B B. Fixed Points
    Codeforces 372B B. Hungry Sequence
    HDU 1476 Sudoku Killer
    HDU 1987 How many ways
    HDU 2564 词组缩写
  • 原文地址:https://www.cnblogs.com/xiaofenguo/p/6138453.html
Copyright © 2011-2022 走看看