css小案例:导航栏特效

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         width: 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         width: 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: ""; width: 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

posted @ 2016-05-24 19:23  indigojh  阅读(2681)  评论(0编辑  收藏  举报