CSS 投影问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSS 投影问题相关的知识,希望对你有一定的参考价值。
样式 投影问题
这样写在文件里就没事,但写在CSS样式里就不行了??
这是写文件里(有效果)
style="filter:dropshadow(color=#ffffff,offx=1,offy=1,positive=1);"
这是写样式里(没效果)
A:link,A:visited font-size: 12px;color: #005993; text-decoration: none; filter:dropshadow(color=#ffffff,offx=1,offy=1,positive=1);
<div class="right" style="filter:dropshadow(color=#ffffff,offx=1,offy=1,positive=1);"><a href="#">首页</a> | <a href="#">密码保护</a> | <a href="#">帮助</a></div>
-----------------------------------------------
Alpha | 设置不同的透明度变化效果
-----------------------------------------------
Blur | 建立模糊效果
-----------------------------------------------
DropShadow| 建立一种偏移的影象轮廓,即投射阴影
-----------------------------------------------
FlipH | 水平翻转
-----------------------------------------------
FlipV | 垂直翻转
-----------------------------------------------
Glow | 为对象的边界增加色彩光效
-----------------------------------------------
Gray | 将图片以灰度形式显示
-----------------------------------------------
Invert | 将色彩、饱和度以及亮度值完全反转,类似底片效果
-----------------------------------------------
Light | 在一个对象上进行灯光投影
-----------------------------------------------
Mask | 为一个对象建立彩色透明遮罩
-----------------------------------------------
Shadow | 为对象建立轮廓的影效果
-----------------------------------------------
Wave | 在X轴和Y轴方向利用正弦波打乱图片
-----------------------------------------------
Xray | 只显示对象的轮廓
-----------------------------------------------
----------------括号里面的是参数。-------------
细致的解释看下面:
1、Alpha 滤镜
"Alpha"属性是把一个目标元素与背景混合。设计者可以指定数值来控制混合的程度。这种“与背景混合”通俗地说就是一个元素的透明度。通过指定坐标,可以指定各种不同范围的透明度。
Alpha 滤镜语法
FILTER:ALPHA(opacity=opacity,finishopacity=finishopacity,
style=style,startx=startx,
starty=starty,finishx=finishx,finishy=finishy)
参数含义分别如下:
参数 说明
opacity 透明度。默认的范围是从0 到 100,他们其实是百分比的形式。也就是说,0代表完全透明,100代表完全不透明。
finishopacity 是一个可选参数,如果想要设置渐变的透明效果,就可以使用他们来指定结束时的透明度。范围也是0 到 100。
style 指定透明区域的形状特征:
0 代表统一形状
1 代表线形
2 代表放射状
3 代表矩形
startx 渐变透明效果开始处的 X坐标。
starty 渐变透明效果开始处的 Y坐标。
finishx 渐变透明效果结束处的 X坐标。
finishy 渐变透明效果结束处的 Y坐标。
2、Blur 滤镜
用手指在一幅尚未干透的画面迅速划过时,画面就会变得模糊。”Blur"就是产生同样的模糊效果。
Blur滤镜语法 html:filter:blur(add=add,direction=direction,
strength=strength)
Script语言: [oblurfilter=] object.filters.blur
参数含义分别如下:
参数 说明
add 它指定图片是否被改变成印象派的模糊效果。模糊效果是按顺时针的方向进行的,
这是一个布尔值:ture (默认)或false
direction 该参数用来设置模糊的方向。
0度代表垂直向上,每45度为一个单位,默认值是向左的270度
strength 只能使用整数来指定,代表有多少像素的宽度将受到模糊影响,默认是5个像素。
3、DropShadow 滤镜
“DropShaow",顾名思义就是添加对象的阴影效果。其工作原理是建立一个偏移量,加上色彩。
DropShadow 滤镜语法 filter:dropshadow
(color=color,offx=ofx,offy=offy,positive=positive)
参数含义如下:
参数 说明
Color 代表投射阴影的颜色
offx X方向阴影的偏移量
offy Y方向阴影的偏移量
Positive 布尔值
如果为TRUE(非0),就为任何的非透明像素建立可见的投影
如果为FASLE(0),就为透明的像素部分建立透明效果
4、FlipH, FlipV 滤镜
FlipH 滤镜实现水平反转
FlipH 滤镜语法 filter:filph
FlipV 滤镜实现垂直反转
FlipV 滤镜语法 filter:filpv
5、Glow 滤镜
对一个对象使用"glow"属性后,这个对象的边缘就会产生类似发光的效果。
Glow 滤镜语法 filter:glow(color=color,strength)
参数含义如下:
参数 说明
Color 指定发光的颜色
STRENGTH 强度,值为1到255之间的任何整数,指定发光色力度和范围。
6、Gray 滤镜
使用Gray滤镜可以把一张图片变成灰度图,语法很简单:
Gray 滤镜语法 filter:gray
7、Invert滤镜
使用Invert滤镜可以把对象的可视化属性全部翻转,包括色彩、饱和度、和亮度值
Invert 滤镜语法 filter:invert
8、Xray滤镜
使用Xray滤镜可以让对象反映出它的轮廓并把这些轮廓加亮,类似于所谓的“X”光片。
Xray 滤镜语法 filter:xray
9、Mask 滤镜
Mask 滤镜语法 filter:mask(color=color)
使用"MASK"属性可以为对象建立一个覆盖于表面的膜,其效果就象戴着有色眼镜看物体一样 。
10、Light 滤镜
Light 滤镜语法 filter:light
这个属性模拟光源的投射效果。一旦为对象定义了“LIGHT"滤镜属性,那么就可以调用它的“方法(Method)"来设置或者改变属性。“LIGHT"可用的方法有:
参数 说明
AddAmbient 加入包围的光源
AddCone 加入锥形光源
AddPoint 加入点光源
Changcolor 改变光的颜色
Changstrength 改变光源的强度
Clear 清除所有的光源
MoveLight 移动光源
我们可以定义光源的虚拟位置,以及通过调整X轴和Y轴的数值来控制光源焦点的位置,还可以调整光源的形式(点光源或者锥形光源)指定光源是否模糊边界、光源的颜色、亮度等属性。如果动态的设置光源,可能会产生一些意想不到的效果。
11、Shadow 滤镜
Shadow 滤镜
语法 filter:shadow(color=color,direction=direction)
利用“Shadow”属性可以在指定的方向建立物体的投影,COLOR是投影色,DIRECTION是设置投影的方向。其中0度代表垂直向上,然后每45度为一个单位。它的默认值是向左的270度。
12、Wave 滤镜
Wave 滤镜
语法 filter:wave(add=add,freq=freq,
lightstrength=strength,
phase=phase,strength=strength)
参数 说明
wave 把对象按垂直的波形样式打乱。
默认是 TRUE(非0)
ADD 是否要把对象按照波形样式打乱
FREQ 波纹的频率,也就是指定在对象上一共需要产生多少个完整的波纹
LIGHTSTRENGTH 可以对于波纹增强光影的效果,范围0----100
PHASE 设置正弦波的偏移量
STRENGTH 振幅大小
--------------------------------------------------------------
内容很多,慢慢看。还有这个问题发到电脑那块的话肯定有很多人回答的。
资料来天极网~
使用 CSS 3 制作长投影
www.jackpu.com/shi-yong-css-3-zhi-zuo-chang-tou-ying-long-shadow/
在flat design(扁平化的设计)中,Long Shadow (长投影)被看着屡试不爽的设计技能。比如下面这张,非常经典的长投影设计:
摄影师选择长投影通常是给图片带来戏剧效果, 在自然界中,长投影发生在黄昏的时候,太阳接近地平线时,水平地面上的物体俯瞰就会有长投影的效果。在界面设计中我们通常采用了模拟45度角的效果,模拟阳光从西北角上射来,从而与设计的主题形成鲜明的对比效果。使用photoshop制作长投影有很多种方法,你可以阅读常用的四种方法创建长投影效果,自己平时最喜欢用的也是第四种,通过图层复制和移动来达到这样的效果,比如自己在behance上传的这张图片,
大致原理就是 你复制一个当前图层,选中图层样式,填充黑色,然后将其移到原图层下面。然后使用鼠标或者滤镜都可以实现平移,友移一个单位和下移一个单位。
然后,我们再复制这个图层,再平移一次。然后合并这两个阴影图层
然后我们再重复动作,即把这个图层复制一次,向下移和向右移动2个单位。再执行合并。依次类推复制,移动偶数倍单位,合并,然后再重复。
当然你用滤镜->其他->位移会更加方便
大致就是这样的效果,然后最后设置下透明度就好。
上面说的是设计,前端如何通过css代码来实现这样的效果?大家第一时间想到就是css3已经支持的text-shadow
首先我们给背景添加一种比较突出的颜色吧,自己强烈安利flatcolors这个网站,里面有很多配色方案,随取随用。 我们给body 设置一下背景色。自己比较喜欢蓝色。接下来我们再去google font里面挑选自己喜欢的字体,如果你觉得默认的字体可以接受也没关系.自己选择了Passion One
然后在css代码中引入就好。
@import url(‘https://fonts.googleapis.com/css?family=Passion+One‘);
这个时候我们在我们的body里面随便敲几个字母吧,比如long shadow
<body>
<h1>Long Shadow</h1>
</body>
然后我们定义一些h1的基本样式;
h1{
text-align:center;
font-size:6rem;
padding-top:2rem;
}
接下来就是要实现最核心的就是写text-shadow的代码了
text-shadow的值可以有x,y轴的位移,加模糊半径和颜色。
/* offset-x | offset-y | blur-radius | color */
text-shadow: 1px 1px 2px black;
我们只要反复的平移,然后使其颜色趋近与背景色既可以了。
也就是这样子的代码
text-shadow: 1px 1px rgba(18, 67, 100, 0.5) , 2px 2px rgba(20, 72, 107, 0.51) , 3px 3px rgba(22, 76, 113, 0.52) , 4px 4px rgba(23, 81, 119, 0.53) , 5px 5px rgba(25, 85, 125, 0.54) ...
但是这样写下去肯定是不现实的,自己需要反复计算步长和增长。还好我们有scss和less这样的预处理框架。我们可以非常方便的完成颜色的换算和增长。
scss代码实现参考
@function longshadow($color_a,$color_b,$stepnum, $opacity: 1){
$gradient_steps: null;
<a href="http://www.jobbole.com/members/lowkey2046">@for</a> $i from 1 through $stepnum {
$weight: ( ( $i - 1 ) / $stepnum ) * 100;
$colour_mix: mix($color_b, rgba($color_a, $opacity), $weight);
$seperator: null;
@if($i != $stepnum){
$seperator: #{','};
}
$gradient_steps: append( #{$gradient_steps}, #{$i}px #{$i}px $colour_mix $seperator );
}
@return $gradient_steps;
}
函数的执行效果就是类似于我穿入一个颜色a和一个颜色b,其中颜色a就是阴影开始的地方的颜色,颜色b就是背景的颜色,步长也就是类似你希望你的阴影有多长,最后一个就是透明度。然后就是计算了,我们没次都移动一个单位,然后颜色进行百分比的递减,最后组织好样式就可以了。
这个时候我们只需要在h1的样式中使用这个函数就好
@include text-shadow(longshadow(darken($bg,30%),$bg,50, 0.5));
其中$bg:就是我们背景的颜色咯: #3498db。
扩展阅读
https://designmodo.com/long-shadows-design/
http://codepen.io/hugo/pen/xzjGB
https://developer.mozilla.org/en/docs/Web/CSS/text-shadow
觉得本文对你有帮助?请分享给更多人
关注「前端大全」,提升前端技能
以上是关于CSS 投影问题的主要内容,如果未能解决你的问题,请参考以下文章