zoukankan      html  css  js  c++  java
  • CSS阴影、滤镜,让视觉更有立体感!

    阴影和滤镜在一般的情况是为了点缀视觉元素而存在。

    阴影三剑客:box-shadow、text-shadow、drop-shadow();drop-shadow是filter里的滤镜函数。三者都能产生阴影效果。

    区分:盒子轮廓产生阴影效果,使用box-shadow,

      文本轮廓产生阴影效果,使用text-shadow,

      透明图像的非透明部分轮廓产生阴影效果,使用filter:drop-shadow()

    具备参数:offsetX:水平偏移,阴影的水平位置(必填),可用任何长度单位,允许负值,正值向右负值向左

         offsetY:垂直偏移,阴影的垂直位置(必填),值同上

         Blur:模糊半径。阴影的清晰程度(虚色),值同上,值越大边缘越模糊

         spread:扩展距离,阴影的实体尺寸(实色),值同上,允许负值,正值扩大,负值缩小,默认为0 

         color:投影颜色

         position:投影位置,outset:阴影显示在外部(默认);inset:阴影显示在内部

    1 box-shadow: offset-x offset-y blur spread color position
    2 text-shadow: offset-x offset-y blur color
    3 drop-shadow(offset-x, offset-y, blur, color)

    多重阴影:可声明多重效果,使用逗号隔开,先声明的阴影层叠等级最高,会遮挡后面声明的阴影,排列方向有position决定,后面声明的阴影接着上一个排列下去,此时需将blur或者spread增大,防止先声明的阴影遮挡。

    定向阴影:巧妙声明spread为blur的复制可产生定向阴影,这样是为了抵消阴影的扩散,正负决定了偏移方向。

        offset-x:正值向右负值向左

        offset-y:正值向下负值向上

    模拟边框:border参与到盒模型的计算和布局中占据了一定的位置,若希望不纳入盒模型的计算和布局,可用outline替代border,box-shadow也能替代border产生边框的效果,并且不纳入盒模型的计算和布局,阴影不影响布局,可能会阀盖其他节点,阴影不能触发滚动条,也不会增加滚动区域大小。

    blur渲染阴影是虚色,而spread渲染阴影是实色,将其余的参数声明为0,spread声明为正值,如:box-shadow:0 0 0 10px #eee;可以结合border-radius让阴影变成圆角。

    例子:彩虹色带

    1 <div class="bruce flex-ct-x" data-title="使用box-shadow描绘彩虹色带(多重阴影实现)">
    2     <div class="rainbow-bar bar-1"></div>
    3     <div class="rainbow-bar bar-2"></div>
    4 </div>
     1 $rainbow: 0 0 0 8px #f66 inset,
     2     0 0 0 16px #f90 inset,
     3     0 0 0 24px #ff3 inset,
     4     0 0 0 32px #3c9 inset,
     5     0 0 0 40px #9c3 inset,
     6     0 0 0 48px #09f inset,
     7     0 0 0 56px #66f inset;
     8 .rainbow-bar {
     9     width: 250px;
    10     &.bar-1 {
    11         overflow: hidden;
    12         position: relative;
    13         height: 125px;
    14         &::after {
    15             display: block;
    16             border-radius: 100%;
    17             width: 100%;
    18             height: 200%;
    19             box-shadow: $rainbow;
    20             content: "";
    21         }
    22     }
    23     &.bar-2 {
    24         margin: 125px 0 0 50px;
    25         border-radius: 100%;
    26         height: 250px;
    27         box-shadow: $rainbow;
    28         clip-path: polygon(0 0, 100% 0, 100% 50%, 0 50%);
    29     }
    30 }

    滤镜:和PS里面的滤镜效果是一样的,一样理解

    属性:blur():模糊值,可用任何长度单位,0为显示原图,越大越模糊

       brightness():亮度,百分比,可用0~1代替,0:全黑;1为显示原图

       contrast():对比度,百分比,可用0~1代替,0:全黑;1为显示原图

       drop-shadow():阴影

       grayscale():灰度,百分比,可用0~1代替,0:显示原图;1为全灰

       hue-rotate():色相翻转,角度,0为显示原图,0~360deg减弱原图色彩

       invert():反相,百分比,可用0~1代替,0为显示原图,1为完全饭庄原图色彩

       opacity():透明度,0:显示透明,1:显示原图

       saturate():饱和度,0:完全不饱和原图,1显示原图

       sepia():褐色,0:显示原图,1显示为褐

    例子:悼念模式一行代码全站进入悼念模式,把<html>替换成<html style="filter:grayscale(1)">即可,简单粗暴。当然核心代码是filter:grayscale(1),意思是把当前节点及其后代节点设置成100%的灰度模式

         

    佳物不独来,万物同相携。
  • 相关阅读:
    Android开发过程中的坑及解决方法收录(二)
    【转】Android开发之数据库SQL
    Android开发过程中的坑及解决方法收录(一)
    Android开发之基于监听的事件处理
    Android开发——导入github安卓项目源码
    Android开发之常见事件响应方式
    Android studio导入eclipse项目(亲测)
    Android开发——diglog cancel与dismiss方法区别
    Android开发——Toast知识
    android 点击返回键 以及 加载activity 生命周期 记录。。。,一目了然
  • 原文地址:https://www.cnblogs.com/rongrongtu/p/14620943.html
Copyright © 2011-2022 走看看