CSS3制作共享工具栏
今天使用CSS3的伪类“:before”和":after"和animation等相关属性创建一个简单的共享工具提示栏效果。关键的一点是,我使用最少的HTML标签,以及不使用任何jQuery和javaScript脚本。但兼容性就惨了,这个大家都懂的。所以下面的效果只适合Firefox、Safari、Chrome和Opera浏览器。不过这种效果大家在平时制作中肯定常常使用到。那下面我们一起来看如何制作吧。
目标
使用纯CSS代码实现下面的DEMO效果:
HTML Markup
制作效果,我们就离不开基本的HTML结构,俗话说的好“巧妇难为无米之炊”,那么我们先写一个HTML结构:
<footer id="footerBar"> <ul id="mainPanel"> <li><a href="#" data-title="分享到新浪微博" class="sina">sina</a></li> <li><a href="#" data-title="分享到腾讯微博" class="qq">qq</a></li> <li><a href="#" data-title="分享到搜狐微博" class="sohu">sohu</a></li> <li><a href="#" data-title="分享到网易微博" class="t163">t163</a></li> <li><a href="#" data-title="分享到百度贴吧" class="tieba">tieba</a></li> <li><a href="#" data-title="分享到开心网" class="kaixin">kaixin</a></li> <li><a href="#" data-title="分享到人人网" class="renren">renren</a></li> <li><a href="#" data-title="分享到MSN" class="msn">msn</a></li> <li><a href="#" data-title="分享到FaceBook" class="facebook">facebook</a></li> <li><a href="#" data-title="分享到Twitter" class="twitter">twitter</a></li> <li><a href="#" data-title="分享到Linkedin" class="linkedin">linkedin</a></li> <li><a href="#" data-title="一键分享" class="ishare">ishare</a></li> </ul> </footer>
我在这里使用了一个HTML5的“footer”标签,让他固定浏览器的窗口底部,接着把每一个分享受工具列表项放在一个叫“ul#mainPanel”中,这些都是比较基础的东东,不用过多介绍大家都懂的,但在“<a>”标签中我定义了一个“data-title”,主要配合后面的样式来制作tooltip的内容:
<a href="#" data-title="分享到新浪微博" class="sina">sina</a>
并且在每一个项中定义一个不同的类名,利用sprite技巧制作不同的icon:
<a href="#" data-title="分享到新浪微博" class="sina">sina</a>
CSS Code
上面简单的了解了一下HTML结构,接下来就来看关键的样式制作:
1、固定工具面板
采用“position:fixed”将面板固定在浏览器窗口的底部:
*{margin: 0;padding:0}
html {
height: 100%;
}
body {
background: url(images/pattern_40.gif) repeat left top #161616;
height: 100%;
font: 12px/162% Tahoma,Arial,Helvetica,"SimSun","Arial Narrow",Geneva,sans-serif;
}
#footerBar {
background-color:#161616;
background: -moz-linear-gradient(top, rgba(22,22,22,.7) 0%, rgba(51,51,51,.7) 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(22,22,22,.7)), color-stop(100%,rgba(51,51,51,.7)));
background: -webkit-linear-gradient(top, rgba(22,22,22,.7) 0%,rgba(51,51,51,.7) 100%);
background: -o-linear-gradient(top, rgba(22,22,22,.7) 0%,rgba(51,51,51,.7) 100%);
background: linear-gradient(top, rgba(22,22,22,.7) 0%,rgba(51,51,51,.7) 100%);
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#B2161616,endColorstr=#B2333333);
-moz-box-shadow:0 1px 10px rgba(255,255,255,0.3);
-webkit-box-shadow: 0 1px 10px rgba(255,255,255,0.3);
box-shadow:0 1px 10px rgba(255,255,255,0.3);
position:fixed;
bottom:0;
left:0;
z-index:999;
width:100%;
}
这里采用了CSS3的渐变和盒阴影来制作其效果,最关键的是采用“position:fixed”固定了面板在窗口底部。由于不用去理会IE6-8的效果,就无需计较IE下的“fixed”处理了。
2、美化列表
现在,我们给我们的无序列表样式,下面仅是一个实例,你可以根据你的喜欢去写一个你想要的列表风格:
#mainPanel {
float:left;
width: 80%;
margin: 0 10%;
font-size: 1em;
}
#mainPanel li {
float: left;
position: relative;
border-right: 1px solid #555;
list-style: none outside none;
}
#mainPanel li:first-child {
border-left: 1px solid #555;
}
#mainPanel a {
background: url(images/jiathis_ico.png) no-repeat left top;
margin: 5px 20px;
float: left;
width: 16px;
height: 16px;
color: #333;
position: relative;
text-decoration: none;
text-indent: -999em;
}
3、用icon替换链接文本
接下来,使用sprite技巧将每个链接的文本替换成需要的icon图标:
#mainPanel a.sina {
background-position: 0 -96px;
}
#mainPanel a.qq {
background-position: 0 -144px;
}
#mainPanel a.sohu {
background-position: 0 -112px;
}
#mainPanel a.t163 {
background-position: 0 -128px;
}
#mainPanel a.tieba {
background-position: 0 -512px;
}
#mainPanel a.kaixin {
background-position: 0 -176px;
}
#mainPanel a.renren {
background-position: 0 -160px;
}
#mainPanel a.msn {
background-position: 0 -1424px;
}
#mainPanel a.facebook {
background-position: 0 -688px;
}
#mainPanel a.twitter {
background-position: 0 -704px;
}
#mainPanel a.linkedin {
background-position: 0 -1152px;
}
#mainPanel a.ishare {
background-position: 0 -1857px;
}
4、制作tooltip效果
制作tooltip效果,方法很多,就是使用纯CSS也能实现,我们在前面在《八个制作Linking(链接)的技巧》中有简单的介绍一种制作方法。但今天我想给大家介绍的是另外一种方法,使用“a:hover:before”和“a:hover:after”技巧:
#mainPanel a:hover:before {
content:attr(data-title);
background-color: #000;
text-align: center;
text-indent: 0;
width: 90px;
padding: 5px;
broder: 1px solid #111;
border-color: #111 #333 #333 #111;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
color: #666;
font-size: 1em;
position: absolute;
top: 0px;
left: 50%;
margin: -43px -50px;
z-index: 9999;
}
#mainPanel a:hover:after {
border: 7px solid #111;
border-color: #000 transparent transparent;
position: absolute;
top: 20px;
content:"";
display: block;
width: 0;
height: 0;
left:0;
top: -15px;
z-index: 9999;
}
上面代码,我有必要说明两点,首先此处我们使用:
#mainPanel a:hover:before {
content:attr(data-title);
}
上面的一种特殊方法,将调用了我们前面在“a”链接中定义的“data-title”属性值,从而生成了tooltip中的文本内容。我想这种方法还是蛮少人使用的,大家不仿尝试一下。
另外一点采用“a:hover:after”来制作了一个向下的小三角开形:
#mainPanel a:hover:after {
border: 7px solid #111;
border-color: #000 transparent transparent;
position: absolute;
top: 20px;
content:"";
display: block;
width: 0;
height: 0;
left:0;
top: -15px;
z-index: 9999;
}
这个三角主要使用border属性实现,详细的制作大家可以参阅《纯CSS制作的图形效果》。
到此时,我们tooltip的效果就出来了,或许有童鞋会问,为什么要在“a:hover”下加“:after”和“:before”,其实很简单的道理,因为我们只想在链接的悬浮状态下显示tooltip的内容。
5、动态效果
其实这个时候,我们的效果已经出来了。为了让其tooltip显示没有那么生硬,我在这里加上了一点动画效果:
#mainPanel a:hover:before {
content:attr(data-title);
background-color: #000;
text-align: center;
text-indent: 0;
width: 90px;
padding: 5px;
broder: 1px solid #111;
border-color: #111 #333 #333 #111;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
color: #666;
font-size: 1em;
position: absolute;
top: 0px;
left: 50%;
margin: -43px -50px;
z-index: 9999;
-moz-animation:mymove .25s linear;
-webkit-animation:mymove .25s linear;
-o-animation:mymove .25s linear;
-ms-animation:mymove .25s linear;
animation:mymove .25s linear;
}
#mainPanel a:hover:after {
border: 7px solid #111;
border-color: #000 transparent transparent;
position: absolute;
top: 20px;
content:"";
display: block;
width: 0;
height: 0;
left:0;
top: -15px;
z-index: 9999;
-moz-animation:mymove .25s linear;
-webkit-animation:mymove .25s linear;
-o-animation:mymove .25s linear;
-ms-animation:mymove .25s linear;
animation:mymove .25s linear;
}
@-moz-keyframes mymove {
0%{ -moz-transform:scale(0,0); opacity:0;}
50%{ -moz-transform:scale(1.2,1.2); opacity:0.3; }
75%{ -moz-transform:scale(0.9,0.9); opacity:0.7;}
100%{ -moz-transform:scale(1,1); opacity:1;}
}
@-webkit-keyframes mymove {
0%{ -webkit-transform:scale(0,0); opacity:0;}
50%{ -webkit-transform:scale(1.2,1.2); opacity:0.3;}
75%{ -webkit-transform:scale(0.9,0.9); opacity:0.7;}
100%{ -webkit-transform:scale(1,1); opacity:1;}
}
这里我使用Animation来制作动画。通过“keyframe”自己定义了一个“mymove”的动画效果,在这个效果中主要改变了“transform”和“opacity”:
@-moz-keyframes mymove {
0%{ -moz-transform:scale(0,0); opacity:0;}
50%{ -moz-transform:scale(1.2,1.2); opacity:0.3; }
75%{ -moz-transform:scale(0.9,0.9); opacity:0.7;}
100%{ -moz-transform:scale(1,1); opacity:1;}
}
@-webkit-keyframes mymove {
0%{ -webkit-transform:scale(0,0); opacity:0;}
50%{ -webkit-transform:scale(1.2,1.2); opacity:0.3;}
75%{ -webkit-transform:scale(0.9,0.9); opacity:0.7;}
100%{ -webkit-transform:scale(1,1); opacity:1;}
}
有关于这个动画效果的制作,大家可以参阅css3中的Animation和transform两个属性的使用。当然大家还可以使用别的动画效果,比如:Animate.css中介绍的动画效果。
那么现在效果就算完成了,大家可以参考最后使用的CSS代码:
*{margin: 0;padding:0}
html {
height: 100%;
}
body {
background: url(images/pattern_40.gif) repeat left top #161616;
height: 100%;
font: 12px/162% Tahoma,Arial,Helvetica,"SimSun","Arial Narrow",Geneva,sans-serif;
}
#footerBar {
background-color:#161616;
background: -moz-linear-gradient(top, rgba(22,22,22,.7) 0%, rgba(51,51,51,.7) 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(22,22,22,.7)), color-stop(100%,rgba(51,51,51,.7)));
background: -webkit-linear-gradient(top, rgba(22,22,22,.7) 0%,rgba(51,51,51,.7) 100%);
background: -o-linear-gradient(top, rgba(22,22,22,.7) 0%,rgba(51,51,51,.7) 100%);
background: linear-gradient(top, rgba(22,22,22,.7) 0%,rgba(51,51,51,.7) 100%);
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#B2161616,endColorstr=#B2333333);
-moz-box-shadow:0 1px 10px rgba(255,255,255,0.3);
-webkit-box-shadow: 0 1px 10px rgba(255,255,255,0.3);
box-shadow:0 1px 10px rgba(255,255,255,0.3);
position:fixed;
bottom:0;
left:0;
z-index:999;
width:100%;
}
#mainPanel {
float:left;
width: 80%;
margin: 0 10%;
font-size: 1em;
}
#mainPanel li {
float: left;
position: relative;
border-right: 1px solid #555;
list-style: none outside none;
}
#mainPanel li:first-child {
border-left: 1px solid #555;
}
#mainPanel a {
background: url(images/jiathis_ico.png) no-repeat left top;
margin: 5px 20px;
float: left;
width: 16px;
height: 16px;
color: #333;
position: relative;
text-decoration: none;
text-indent: -999em;
outline: 0;
}
#mainPanel a.sina {
background-position: 0 -96px;
}
#mainPanel a.qq {
background-position: 0 -144px;
}
#mainPanel a.sohu {
background-position: 0 -112px;
}
#mainPanel a.t163 {
background-position: 0 -128px;
}
#mainPanel a.tieba {
background-position: 0 -512px;
}
#mainPanel a.kaixin {
background-position: 0 -176px;
}
#mainPanel a.renren {
background-position: 0 -160px;
}
#mainPanel a.msn {
background-position: 0 -1424px;
}
#mainPanel a.facebook {
background-position: 0 -688px;
}
#mainPanel a.twitter {
background-position: 0 -704px;
}
#mainPanel a.linkedin {
background-position: 0 -1152px;
}
#mainPanel a.ishare {
background-position: 0 -1857px;
}
#mainPanel a:hover:before {
content:attr(data-title);
background-color: #000;
text-align: center;
text-indent: 0;
width: 90px;
padding: 5px;
broder: 1px solid #111;
border-color: #111 #333 #333 #111;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
color: #666;
font-size: 1em;
position: absolute;
top: 0px;
left: 50%;
margin: -43px -50px;
z-index: 9999;
-moz-animation:mymove .25s linear;
-webkit-animation:mymove .25s linear;
-o-animation:mymove .25s linear;
-ms-animation:mymove .25s linear;
animation:mymove .25s linear;
}
#mainPanel a:hover:after {
border: 7px solid #111;
border-color: #000 transparent transparent;
position: absolute;
top: 20px;
content:"";
display: block;
width: 0;
height: 0;
left:0;
top: -15px;
z-index: 9999;
-moz-animation:mymove .25s linear;
-webkit-animation:mymove .25s linear;
-o-animation:mymove .25s linear;
-ms-animation:mymove .25s linear;
animation:mymove .25s linear;
}
@-moz-keyframes mymove {
0%{ -moz-transform:scale(0,0); opacity:0;}
50%{ -moz-transform:scale(1.2,1.2); opacity:0.3; }
75%{ -moz-transform:scale(0.9,0.9); opacity:0.7;}
100%{ -moz-transform:scale(1,1); opacity:1;}
}
@-webkit-keyframes mymove {
0%{ -webkit-transform:scale(0,0); opacity:0;}
50%{ -webkit-transform:scale(1.2,1.2); opacity:0.3;}
75%{ -webkit-transform:scale(0.9,0.9); opacity:0.7;}
100%{ -webkit-transform:scale(1,1); opacity:1;}
}
最终效果如下所示:
到此这篇教程就介绍完了。我在此使用的是纯CSS3技巧制作的一个固定分享栏效果,而且里面的tooltip效果没有使用任何的脚本,为了能看到效果,建议大家在Firefox、Chrome、Safari和opera浏览器下浏览。如果您有任何意见或建议,请随时在下面的评论中留言。
如需转载烦请注明出处:W3CPLUS
jordan retro 11 mens youth
