用CSS实现各种特殊效果

1、文本效果

文本阴影

CSS3 提供了 text-shadow 文本阴影效果,这个属性在之前讲过,只是没有涉及浏览器支持情况。

text-shadow:
Opera Firefox Chrome IE Safari
9.5+ 3.5+ 4+ 10+ 3.1+

这里有几个注意点:

  1. text-shadow 在 CSS2 的时候出现过,但各大浏览器碍于消耗大量的资源,迟迟未支持,然后在 CSS2.1 中剔除了。现在,CSS3 已经全面支持了;
  2. 最低支持版本上,不同手册和教材上都不太相同,但版本年代久远,无伤大雅。最准确的可以查询这个 站:http://caniuse.com。最需要注意的只有 IE10 才支持,IE9 不支持的;
  3. 目前的浏览器不需要给这个属性加上任何前缀,具体查询前缀版本可以访问刚才提供的地址。
文本裁剪

CSS3 提供了 text-overflow 属性来控制文本的溢出部分,它的作用是对溢出的部分裁剪掉,然后判定是否添加省略 。首先我们先看下样式表的属性,如下:

属性值 说明
clip 默认值,裁剪文本时不添加“…”省略
ellipsis 裁剪文本时添加“…”省略

对于 text-overflow 的支持度,是根据它的属性值来判定的,不同的属性值浏览器支持度不同。

属性值 Opera Firefox Chrome IE Safari
clip 9.63+ 2.0+ 1.0+ 6.0+ 3.1+
ellipsis 10.5+ 6.0+ 1.0+ 6.0+ 3.1+

而在 Opera 主流版本中,引擎已经靠拢 webkit,则不需要-o-了。目前来说,也不需要兼容-o-了。

文本描边

CSS3 提供了描边属性,即 text-stroke、text-stroke-width、text-stroke-color。目前只有 webkit 引擎的浏览器支持,并且必须加上-webkit-前缀才能有效。

属性 Opera Firefox Chrome IE Safari
text-stroke 系列 15.0+ 不支持 4.0+ 不支持 3.1+
文本填充

CSS3 提供了一个文本颜色填充功能:text-fill-color,感觉和 color 属性很像。其实再配合其他属性才能达到不一样的效果。

属性 Opera Firefox Chrome IE Safari
text-fill-color 15.0+ 不支持 4.0+ 不支持 3.1+

2、渐变效果

CSS3 背景渐变功能,主要有两种渐变方式:线性渐变和径向(放射性)渐变。

线性渐变

CSS3 提供了 linear-gradient 属性实现背景颜色的渐变功能。在以前,这种效果必须采用图片才能实现的。首先,我们先看一下它的样式表,如下:

参数
方位 可选参数,渐变的方位。可以使用的值有:to top、to top right、to right、to bottom、to bottom left、to left、to top left
起始色 必选参数,颜色值
末尾色 必选参数,颜色值

通过 top、left、right、bottom 这四组实现的渐变方向有时比较单一,我们可以使用以角度单位的数值来设置方位。比如 0 度(0deg)相当于 to top;角度会沿逆时针方向随着你的角度的增加而增加。

默认情况下:起始颜色的百分比位置是 0%,末尾颜色的百分比位置是 100%,其他位置按照平均值分配。也可以使用 px 像素来设定,但计算麻烦点。

目前最新的主流浏览器都支持 CSS3 的渐变属性,那么对于之前的浏览器支持度如何呢以参考如下的表:

是否支持带前缀 Opera Firefox Chrome Safari IE
部分支持需带前缀 11.5 4 ~ 9 4 ~ 5
支持需带前缀 3.6 ~ 15 10 ~ 25 5.1 ~ 6
支持不带前缀 12.1+ 16+ 26+ 6.1+ 10.0+

这里提到了部分支持,说明当时可能渐变还尚未完善,但可以通过添加前缀来使用它了。具体哪些没完善,已经无法考证了,版本太过久远。那么支持带前缀和不支持带前缀的完整格式如下:

repeating-linear-gradient 属性值和 linear-gradient 基本相同,不再赘述。

径向渐变

CSS3 提供了径向渐变,也叫做放射性渐变:radial-gradient 属性值。它是从一个点向四周发散的方式扩展。属性值样式表如下:

参数
方位 可选参数,径向的方位。可以使用的值有:像素、百分比、固定值,或复合搭配使用
起始色 必选参数,颜色值
末尾色 必选参数,颜色值
形状 说明
circle 圆形
ellipse 椭圆形,默认值
方向 说明
top 从顶部发散
left 从左侧发散
right 从右侧发散
bottom 从底部发散
center 从中间发散
半径关键字 说明
closest-side 指定径向渐变的半径长度为从圆心到离圆心最近的边
closest-corner 指定径向渐变的半径长度为从圆心到离圆心最近的角
farthest-side 指定径向渐变的半径长度为从圆心到离圆心最远的边
farthest-corner 指定径向渐变的半径长度为从圆心到离圆心最远的角

3、边框图片效果

属性解释

CSS3 提供了一个新的属性集合,用这几个属性可以嵌入图片形式的边框。这样,边框就可以自定义了。

属性设置

要实现边框背景,我们对图片也有一定的要求,否则效果不能完全体现出来。图片可以通过九宫格的切分来了解它。我们使用 W3C 官 上教学的图片来讲解一下。

单单只有这句话,webkit 引擎下的浏览器会在盒子区块的四个角看到一丁点图像的影子。而其他浏览器什么都看不到。这是由于没有设置边框背景图像的宽度导致的。

这里设置的是边框图像的宽度,而不是边框宽度。当你设置边框宽度,你会发现,文本会偏移。而边框图像的宽度不会挤压文本。

以上设置完毕后,支持边框背景图片的浏览器会在四个角落铺上这张图片的完整形式。这个时候需要通过引入切割属性来配置背景图片的显示方式。

这里的 27 不需要设置 px 像素,因为它默认就是像素。设置 27 之后,我们会发现边框的四个角正好是橘红色的四个角。那么你可以逐步放大或逐步放下这个值,来体验一下它的变化。

上面只是单独设置了一个像素表示四个边切割的大小,你也可以设置百分比、浮点值或者分别设置四个变的大小。

如果想让边框背景向外扩张,那么可以进行扩张设置。

四个角设定好之后,我们要设定四个变的显示排列方式。使用 border-image-repeat 属性,有四个值提供使用,分别如下表:

属性 说明
stretch 指定用拉伸方式填充边框背景图,默认值
repeat 指定用平铺方式来填充边框背景图。当图片碰到边界时,如果超过则被截断
round 指定用平铺方式来填充边框背景图。图片会根据边框的尺寸动态调整图片的大小,直至正好可以铺满整个边框
space 指定用平铺方式来填充边框背景图。图片会根据边框的尺寸动态调整图片的之间的间距,直至正好可以铺满整个边框
简写和版本

border-image 简写格式很简单,具体如下:

以上是手册上摘录的,转换成实际格式如下:

对于支持的浏览器及版本如下表:

是否支持带前缀 Opera Firefox Chrome Safari IE
部分支持需带前缀 11.5~12.1 3.5 ~ 14 4 ~ 14 3.1 ~ 5.1
支持需带前缀
支持不带前缀 15+ 15+ 15+ 6+ 11.0+

兼容加上前缀:

4、变形效果

HTML5 中 CSS3 的变形效果包括平移、缩放和旋转元素的功能。

transform

CSS3 提供了元素变形效果,也叫做变换。它可以将元素实现旋转、缩放和平移的功能。属性有两个:transform 和 transform-origin。

属性 说明
transform 指定应用的变换功能
transform-origin 指定变换的起点

对于 transform 的属性值,具体如下表:

属性值 说明
none 无变换
translate(长度值或百分数值)
translateX(长度值或百分数值)
translatY(长度值或百分数值)
在水平方向、垂直方向或两个方向上平移元素
scale(数值)
scaleX(数值)
scaleY(数值)
在水平方向、垂直方向或两个方向上缩放元素
rotate(角度) 旋转元素
skew(角度)
skewX(角度)
skewY(角度)
在水平方向、垂直方向或两个方向上使元素倾斜一定的角度
matrix(4~6 数值,逗 隔开) 指定自定义变换
transform-origin

transform-origin 属性可以设置变换的起点。默认情况下,使用元素的中心作为起点。具体设置方案参考如下表:

属性值 说明
百分数值 指定元素 x 轴或 y 轴的起点
长度值 指定距离
left
center
right
指定 x 轴的位置
top
center
bottom
指定 y 轴的位置

这个属性是用来改变变形的基准点的,默认是在元素的中心位置,如果你改变了基准点,它就会按照这个基准点进行变形。

// 默认值,以中心点变形transform-origin: center center;transform-origin: 50% 50%;// 以左上角为基准点变形transform-origin: left top;transform-origin: 0px 0px;

                                                        

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年6月19日
下一篇 2020年6月19日

相关推荐