要说学习CSS3的确很简单,但要精通并掌握那可不容易,现在分享给大家几个常用的CSS属性给人以不同的效果。因为在尝试的过程中始终会出一点小差错。所以那些美丽的CSS站点一定是通过精心调制才得来的。真是在此过程中,我们的功底才得以提升。
一、RGBA 属性
最近网上对CSS3的讨论真的很火,现在讲一下CSS3里目前用的比较广的RGBA属性的高级使用方法。这个属性的兼容问题比较简单,IE8已经支持这个属性,IE6和IE7也可以通过hack支持。RGBA和CSS2里的RBG属性差不多,只是RGBA属性多了一个透明度的定义,CSS3标准里对RGBA属性的解释如下:
/* 基本语法 */
em { color: Rgba(red,green,blue,opacity) }
/* 举例 */
em { color: rgba(255,0,0,1) }
/* 红色,不透明 */
em { color: rgba(100%,0%,0%,1) }
/* 同上 */
|
在现实中,使用三个1~255的十进制数值去定义一个颜色比用百分比更加准确,下面是几个颜色的RGB数值,大家在使用的时候只需要把00~FF的16进制数值换算成十进制就行了。
二、shadow属性
Shadow属性可以在指定的方向建立物体的投影。它的表达式是这样的:
Filter:Shadow(Color=color,Direction=direction) |
在这里,Shadow有两个参数值:Color参数用来指定投影的颜色;Direction参数用来指定投影的方向。
这里说的方向与我们在第二节Blur属性中提到的“方向与角度的关系”是一样的。
也许您会问,前面讲到的Dropshadow属性和Shadow属性有什么不同吗?
光说的话,您恐怕还难以理解,让我们看一看分别利用这两个属性做出来的效果有什么不同(见下图):
Shadow效果 Dropshadow效果
这样一对比,就可以很明显的看出两者的不同。
Shadow属性可以在任意角度进行投射阴影,Dropshadow属性实际上是用偏移来定义阴影的。所以,看上去左图的文字和阴影就像是一体的,而右图的文字就像脱离了阴影一样。
本例的代码如下:
<html> <head> <title> shadow</title> <style>//*开始设置CSS样式*// <!-- .shadow{position:absolute;top:20;width:300; filter:shadow(color=#cc66ff,direction=225);} //*定义Shadow类的样式,绝对定位,Shadow属性,阴影颜色、投影方向*// .dropshadow{position:absolute;top:180;width:300; filter:dropshadow(color=#cc66ff,offx=10,offy=10,positive=1);} //*设置Dropshadow类的样式,样式与Shadow类相似, 不同的是滤镜用了 Dropshadow属性,设置X轴和Y轴的偏移量*// --> </style> </head> <body> <div class=“shadow”>//*区域内为Shadow类*// <p style=“font-family:bailey;font-size:48pt; font-weight:bold;color:#FF9900;”> Hongen Online</p>//*定义字体名称、大小、粗细、前景色*// </div> <div class=“dropshadow”>//*区域内为Dropshadow类*// <p style=“font-family:bailey;font-size:48pt; font-weight:bold;color:#FF9900;”> Hongen Online</p>//*定义字体样式与Shadow类的一样*// </div> </body> </html> |
三、圆角矩形
所谓的CSS高级技巧...其实是一些对基本技巧的创意组合, 任何手段和技巧都是解决问题的方法.
只要学会这种思考问题的方法, 你也能拥有属于自己的CSS秘籍
CSS2 还没有办法创造出曲线边框, 明显的, 仅仅方框是没办法满足我们设计师的.
所以CSS圆角技术到现在还是那么的火.
1. 固定宽度的纯色圆角矩形
在众多圆角技术中, 固定宽度的圆角矩形应该是最容易实现的, 只需要2个图片以及一段简单的html代码.
html代码如下:
<div> <h1>标题</h1> <p>内容</p> </div> |
图片大致如下:
top.gif bottom.gif
CSS代码大致如下:
.wrapper{width:181px;background:#8cc355 url(../images/bottom.gif) no-repeat left bottom;} .wrapper h1{padding:10px 20px 0 20px;background:url(../images/top.gif) no-repeat left top;} .wrapper p{padding:0 20px 10px 20px;} |
Tips:
wrapper中的宽度(width)是图片的真实宽度, 背景中的背景色是与纯色图片相同的颜色.
h1和p中相应设置了内补丁,为了内容不重叠或碰到外框.
图片需要有背景色, 即除了圆角矩形纯色部分的颜色以外的区域需要有和当前容器(
div )所在的父级容器相同的背景色.
这种方法适用于宽度固定, 高度自适应的纯色圆角矩形.
2. 固定宽度的非纯色圆角矩形
这个方法是上一个方法的延伸, 这次我们不在容器上定义背景色, 而是定义重复的背景图片.
html代码如下:
<div> <h1>标题</h1> <p>内容</p> </div> |
图片大致如下:
top.gif bottom.gif tile.gif
CSS代码大致如下:
.wrapper{width:183px;background:url(../images/tile.gif) repeat-y center;} .wrapper h1{padding:20px 20px 0 20px;background:url(../images/top.gif) no-repeat left top;} .wrapper p{padding:0 20px 20px 20px;background:url(../images/bottom.gif) no-repeat left bottom;} |
Tips:
特性与第一个方法类似;
不能适用于非垂直改变的背景图像.
PS. 固定高度的圆角矩形也可以类似的完成,不赘述了
3. 滑动门技术(Sliding Doors)
前面的两种圆角矩形都是固定宽度的,只能在垂直方向上自适应增长(或水平方向上),
如果需要同时在垂直方向与水平方向上自适应增长尺寸的话, 很显然前两种方法不适用. 这时我们就可以采用所谓的滑动门技术.
原理:
Top-Left.gif 与 Bottom-Left.gif 都是大图像,
Top-Right.gif 和 Bottom-Right.gif 都是小图像, 小图像在大图像上根据尺寸进行自动滑动以适应内容.
该方法用到2组4个图片: 1组Top图片构成顶部圆角, 1组Bottom图片构成底部圆角以及主体.
注意容器的最大高度和宽度不能超过图片的最大高度和宽度.
图片的结构位置:
html代码大致如下:
<div> <div> <div> <h1>标题</h1> <p>内容</p> </div> </div> </div> |
CSS代码大致如下:
.wrapper{width:20em;background:#ccc url(../images/bottom-left.gif) no-repeat left bottom;} .box-outer{background:url(../images/bottom-right.gif) no-repeat right bottom;} .box-inner{background:url(../images/top-left.gif) no-repeat left top;} .wrapper h1{padding:2%;background:url(../images/top-right.gif) no-repeat right top;} .wrapper p{padding:2%;} |
Tips:
该方法很好的解决了容器扩展的问题, 但是要注意容器的最大尺寸不要超过背景图片所能构成的最大尺寸;
该方法需要2组额外的没有任何语义的标签, 在结构上并不理想, 我们可以用JavaScript和DOM动态添加额外元素来避免这个问题,
JavaScript不作讨论.
滑动门适用范围很广, 以至于随处可见.
4. 山顶角(MountainTop)
Web大师Dan Cederholm的发明, 和他在Web Standard
Solutions中的变色龙小图标有异曲同工之妙.
如果用 3.滑动门 的技术创建多种颜色的圆角矩形, 那是不是要建立多组不同颜色的图片呢?
那是不是会很麻烦呀? 幸运的是Dan为我们带来了山顶角. 他建立的不是多种颜色的图片组, 而是一组圆角的蒙板.
用蒙板盖住背景色, 生成圆角矩形, 这种逆向思维令人敬佩.
圆角蒙板
基本的HTML代码和CSS代码与上例相同, 也需要4个不同的圆角蒙板.
代码不做重复.
Tips:
可以使用.png来创建圆滑的透明蒙板, 但介于IE6和以下版本不支持png-24的透明效果,
需要用到Hacks, 所以不太推荐. 所以对于gif图片的蒙板, 对于小弧度的圆角矩形效果较好, 大弧度的圆角矩形可能会出现锯齿.
同样的需要添加额外的非语义标签, 语义化狂热者们可以用JavaScript来完成这个工作.
5. CSS Sprites 圆角
CSS Sprites并不是专门制作圆角矩形的, 但是它提供了一种制作圆角矩形的方案.
结构构成图
实际用到的圆角小图
只单单用background的position来指定圆角图片背景定位,
但是会多出很多额外标签, 这里不做推荐.
via webjx.com
另外,如果对于高级的浏览器比如Chrome,Safari,Firefox等,还可以直接使用border-radius属性。
例如:
div#rad{ border-radius:2px; background:yellow; } |
也能够显示一个圆角框,而圆角的程度取决于border-radius后面的值。
四、CSS Sprites背景绝对定位
CSS Sprites, 利用CSS background-position
进行背景绝对定位, 减少HTTP请求, 加速网页显示, 解决图片载入闪动问题的技巧.
CSS Sprites最适合用来做的, 恩, 比如:
清单导航的CSS鼠标翻转效果
大量小图标集中的应用 (FckEditor)
...很多很多,多的想不出来了.
实现原理简单地说就是控制容器的大小, 然后利用background-repeat,
background-position来对背景图片进行定位. 更可以理解为将网站大量背景图整合到一张大图中的这种行为(
表象上 )
用一个鼠标翻转事件来说明吧:
准备
01.jpg
02.jpg
HTML代码:
<ul> <li><a id="item1" href="#" title="Item 1"> </a></li> <li><a id="item2" href="#" title="Item 2"> </a></li> <li><a id="item3" href="#" title="Item 3"> </a></li> <li><a id="item4" href="#" title="Item 4"> </a></li> <li><a id="item5" href="#" title="Item 5"> </a></li> <li><a id="item6" href="#" title="Item 6"> </a></li> <li><a id="item7" href="#" title="Item 7"> </a></li>
<li><a id="item8" href="#"
title="Item 8"> </a></li>
<li><a id="item9" href="#"
title="Item 9"> </a></li>
</ul>
|
CSS代码:
ul { width:300px; height:300px; margin:0px auto; padding:0px; overflow:hidden; background:transparent url(02.jpg)} li {list-style-type:none; width:100px; height:100px; float:left} li a { display:block; width:100px; height:100px; text-decoration:none; background:transparent url(01.jpg) no-repeat 500px 500px; } a#item1:hover {background-position: 0 0; } a#item2:hover {background-position: -100px 0;} a#item3:hover {background-position: -200px 0;} a#item4:hover {background-position: 0 -100px;} a#item5:hover {background-position: -100px -100px;} a#item6:hover {background-position: -200px -100px;} a#item7:hover {background-position: 0 -200px;} a#item8:hover {background-position: -100px -200px;} a#item9:hover {background-position: -200px -200px;} |
效果图如下:
有人要问了, 这有什么用么? 这可以模拟图片热区说明, 地图提示 等等...
Tips:
CSS Sprites需要精确的背景图片定位, 比较让人头疼. 网页教学网
相对于减少了多次HTTP请求的优点, 却增加了一次性一个大的HTTP请求的缺点...
自己权衡吧
五、CSS高级属性选择器
CSS的选择器可谓种类繁多,属性选择器就是其中一种,虽然老浏览器(如IE6)不支持,但当前主流的标准浏览器都很好的支持。所以有必要学习一下。
所谓属性选择器就是能选择具有指定属性元素的CSS选择器。比如:
input[type="text"] { border:1px;} |
这条CSS规则就声明了类型为文本框的输入标签的边框为1像素。这是一般而言的属性选择器,当元素比较复杂时就得用到可以匹配属性的高级选择器了。比如:
div[class^="menu"] { color:red;}
div[class$="menu"] { color:red;}
div[class*="menu"] { color:red;} |
大家可以看到不同的一点就是class后面跟的三人符号:”^”,”$”,”*”。分别表示:
1.匹配具有class属性,且值以menu开头的div元素。例如:class为menu1,menua,menu0都可以渲染指定CSS规则。
2.匹配具有class属性,且值以menu结尾的div元素。例如:class为1menu,amenu,0menu都可以渲染指定CSS规则。
3.匹配具有class属性,且值含有menu的div元素。例如:class为1menu,menu1,0menua都可以渲染指定CSS规则。
你可以在这里查看效果和源代码,(来自keelii.com)
六、伪类和高级的伪类
通过XX:伪类名的方式给元素添加伪类,比如在a标签的鼠标移上、鼠标点击、已访问的不同样式可以通过这个方式来实现。
a:link{ /*平常状态*/
text-decoration:none;
}
a:hover{ /*移上*/
text-decoration:underline;
color:green;
}
a:focus,a:active{ /*点击*/
text-decoration:underline;
color:red;
}
a:visited{ /*已访问*/
color:purple;
text-decoration:none;
} |
除此之外还有:first-child表示第一个子元素的样式(比如<ul><li></li><li></li></ul>)等,你可以在W3C查阅更多消息。
以及::选择器,用它可以实现更奇妙的效果。比如本博客使用了
*::selection{
background:rgb(233,184,233);
text-shadow:1px 1px 1px #ffb69a;
} |
于是你便可以看到这种神奇效果,当你选中本文文字时样式的更改。
七、更多Webkit属性
一般Webkit属性以-webkit-开头,比如-webkit-border-radius-,相应的同时也有-moz-的属性,比如-moz-border-radius属性。这表示他们处于基本测试版,而且仅能有这些内核的浏览器识别。你可以打开这里参考更多Webkit属性以美化显示效果。
|