css小案例:导航栏特效,实现如下图所示效果;
首先可以将html代码写出:
1 <nav class="cl-effect-1"> 2 <a href="#">Umbrella</a> 3 <a href="#">Ineffable</a> 4 <a href="#">Lilt</a> 5 <a href="#">Mellifluous</a> 6 <a href="#">Serendipity</a> 7 </nav>
css部分:
1 nav{ 2 text-align: center; 3 } 4 nav a { 5 position: relative; 6 display: inline-block; 7 margin: 15px 25px; 8 outline: none; 9 color: #fff; 10 text-decoration: none; 11 text-transform: uppercase; 12 letter-spacing: 1px; 13 font-weight: 400; 14 text-shadow: 0 0 1px rgba(255,255,255,0.3); 15 font-size: 1.35em; 16 } 17 18 nav a:hover, 19 nav a:focus { 20 outline: none; 21 } 22 .cl-effect-1 a { 23 margin: 0 10px; 24 padding: 10px 20px; 25 } 26 27 .cl-effect-1 a::before { 28 position: absolute; 29 top: 0; 30 left: 0; 31 100%; 32 height: 2px; 33 background: #fff; 34 content: ''; 35 -webkit-transition: top 0.3s; 36 -moz-transition: top 0.3s; 37 transition: top 0.3s; 38 } 39 40 .cl-effect-1 a::after { 41 position: absolute; 42 top: 0; 43 left: 0; 44 2px; 45 height: 2px; 46 background: #fff; 47 content: ''; 48 -webkit-transition: height 0.3s; 49 -moz-transition: height 0.3s; 50 transition: height 0.3s; 51 } 52 53 .cl-effect-1 a:hover::before { 54 top: 100%; 55 opacity: 1; 56 } 57 58 .cl-effect-1 a:hover::after { 59 height: 100%; 60 }
代码很简单,下面就其中的要素重点来解析。
一、可以看出我们所写的html部分文字内容为小写,而显示效果为全大写,这里有一个css属性:text-transform 定义文本的大小写状态,此属性对中文无意义。
取值:capitalize | uppercase | lowercase | none | inherit
none |
默认。定义带有小写字母和大写字母的标准的文本。 |
capitalize |
文本中的每个单词以大写字母开头。 |
uppercase |
定义仅有大写字母。 |
lowercase |
定义无大写字母,仅有小写字母。 |
inherit |
规定应该从父元素继承 text-transform 属性的值。 |
所以这里通过css部分写入text-transform: uppercase;来实现。
二、伪元素
1、 基本语法
在了解进阶的应用之前,先来了解一下语法规则。平常仅仅需要将这两个伪元素用于添加一些自定义字符时,只需使用伪类使用的单冒号写法,以保证浏览器的兼容性:
Html代码
1 p:before {}
不过,在 CSS3 中为了区别伪元素和伪类为伪元素使用了双冒号,因此如果使用了 display 或者 width 等属性时使得显示脱离了原本元素后,建议按照标准双写。过于老的浏览器可能会存在支持问题,不过伪元素大多是配合 CSS3 使用,就无所谓向下兼容了:
Html代码
1 img::after {}
这两个伪类下特有的属性 content ,用于在 CSS 渲染中向元素逻辑上的头部或尾部添加内容。注意这些添加不会改变文档内容,不会出现在 DOM 中,不可复制,仅仅是在 CSS 渲染层加入。比较有用的是以下几个值:
· [String] - 使用引号包括一段字符串,将会向元素内容中添加字符串。示例:
Html代码
1 a:after { content: "↗"; }
· attr() – 调用当前元素的属性,可以方便的比如将图片的 Alt 提示文字或者链接的 Href 地址显示出来。示例:
Html代码
1 a:after { content:"(" attr(href) ")"; }
· url() / uri() – 用于引用媒体文件。示例:
Html代码
1 h1::before { content: url(logo.png); }
· counter() – 调用计数器,可以不使用列表元素实现序号功能。具体请参见 counter-increment 和 counter-reset 属性的用法。示例:
Html代码
1 h2:before { counter-increment: chapter; content: "Chapter " counter(chapter) ". " }
2、进阶技巧
清除浮动是一个时常会遇到的问题,不少人的解决办法是添加一个空的 div 应用 clear:both; 属性。现在,无需增加没有意义的元素,仅需要以下样式即可在元素尾部自动清除浮动:
Html代码
1 .clear-fix { *overflow: hidden; *zoom: 1; } 2 3 .clear-fix:after { display: table; content: ""; 0; clear: both; }
许多人喜欢给 blockquote 引用段添加巨大的引号作为背景,这种时候我们就可以用 :before 来代替 background 了,即可以给背景留下空间,还可以直接使用文字而非图片:
Html代码
1 blockquote::before { 2 3 content: open-quote; 4 5 position: absolute; 6 7 z-index: -1; 8 9 color: #DDD; 10 11 font-size: 120px; 12 13 font-family: serif; 14 15 font-weight: bolder; 16 17 }
用 :before 和 :after 伪类结合更多 CSS3 强大的特性,还可以完成非常多有意思的特效和 Hack。
取值:capitalize | uppercase | lowercase | none | inherit