在一次聊天中讨论到如何利用CSS来制作一个按钮,不但能自适应宽高,并且还要在不实用图片的情况下,让按钮有类似“外描边”、“内描边”和圆角的效果,并且兼容IE6、IE7。所以今天特地花了点时间来做这个。
当完成以后,发现单纯的按钮有点单调,就想加点ICON来美化一下。可既然按钮都是用CSS来完成,那ICON还用图片来显示,是否有些背道而驰,所以仍然利用CSS属性来给按钮增添我们所需的图标。此时在保证“低配用户”能正常显示的情况下,也加入一些CSS3属性,起到渐进增强的目的,让“高级用户”能够得到更好的呈现效果。
这样做的好处在于按钮和图标颜色都能通过CSS来调整,维护起来比较方便。还有就是CSS的渲染速度比较快,同时还减少了HTTP请求量。
不过,并不是说用CSS必定比图片好,关键还是要根据实际环境和需求,合理使用才是关键。
本例兼容:IE6-10、Chrome、Safari、Opera。
一、布局。
<span class="btn btnGreen"> <i class="btnLine"></i><!-- 上边框 --> <span class="btnIn"><!-- 内边框 --> <a href="#" class="btnBg btnGreen">Button</a><!-- 背景色 --> </span> <i class="btnLine"></i><!-- 下边框 --> </span>
二、配置公用属性,以便资源复用。
.btn{ text-decoration:none; } .btn i{ font-style:normal; } .btn, .btnBg{ display:inline-block; vertical-align:bottom; } .btnDown{ position:relative; } .btnLine{ display:block; padding-top:1px; border-width:0 1px; border-style:solid; } .btnIn{ display:block; padding:0 1px; text-align: center; } .btnBg{ color:#FFF; font-weight:700; text-decoration:none; }
三、给按钮配置颜色
.btnGreen .btnLine{ border-color: #BBDCF4; /*边角虚化*/ background: #14517A; /*上下边框颜色*/ } .btnGreen .btnIn{ background-color:#14517A; /*左右边框颜色*/ } .btnGreen .btnBg{ padding:10px 20px; border:1px solid #5CBBE9; /*内边框颜色*/ background-color:#20A4E2; /*背景色*/ text-shadow:1px 1px 1px #14517A; } .btnGreen:hover{ background-color:#4FB4ED; } .btnGreen .arrowT{ -webkit-filter: drop-shadow(-1px -1px 1px #14517A); } .btnGreen .arrowR{ -webkit-filter: drop-shadow(-1px 1px 1px #14517A); } .btnGreen .arrowB{ -webkit-filter: drop-shadow(1px 1px 1px #14517A); } .btnGreen .arrowL{ -webkit-filter: drop-shadow(1px -1px 1px #14517A); } .btnGreen .btnPr{ position:relative; padding-right:30px; } .btnGreen .btnPl{ position:relative; padding-left:30px; }
四、利用css border属性绘制箭头
/* 箭头设置 */ .arrow{ position:absolute; top:50%; right:12px; width: 0; height: 0; border-width: 6px; border-style:solid dashed dashed; border-color: #FFF transparent transparent; font-size: 0; line-height: 0; vertical-align: middle; } .arrowT{ margin-top:-8px; -moz-transform: rotate(180deg); -webkit-transform: rotate(180deg); -o-transform: rotate(180deg); transform: rotate(180deg); filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2); /* 2=180度 */ } .arrowR{ margin-top:-6px; margin-right:-3px; -moz-transform: rotate(-90deg); -webkit-transform: rotate(-90deg); -o-transform: rotate(-90deg); transform: rotate(-90deg); filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3); /* 3=270度 */ } .arrowB{ margin-top:-3px; } .arrowL{ margin-top:-6px; margin-right:3px; -moz-transform: rotate(90deg); -webkit-transform: rotate(90deg); -o-transform: rotate(90deg); transform: rotate(90deg); filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1); /* 1=90度 */ } .arrowBack, .arrowGo{ font-family:\5B8B\4F53; letter-spacing: -8px; color:#FFF; } .arrowBack{ padding-right:13px; /* letter-spacing + padding */ } .arrowGo{ padding-left:5px; padding-right:8px; *padding-right:0; }
五、利用@font-face来代替图片ICON
IE:从IE4开始支持eot格式,IE9开始支持woff。
webkit/safari:支持TrueType/OpenType(.ttf),OpenType PS(.otf),iOS4.2+支持.ttf,iOS 4.2以下只支持SVG字体; Safari5.1+ 开始支持woff格式
Chrome:除webkit支持的以外,从Chrome 6开始,开始支持woff格式;
Firefox:支持.ttf和.otf,从Firefox 3.6开始支持woff格式;
Opera:支持.ttf、.otf、.svg。 Opera 11开始支持woff;
iPad, iPhone and Android 3.0+ 支持SVG fonts。
/* 设置图标 */ @font-face { font-family: 'RaphaelIcons'; src: url('../fonts/raphaelicons-webfont.eot'); /* IE9*/ src: url('../fonts/raphaelicons-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/raphaelicons-webfont.woff') format('woff'), url('../fonts/raphaelicons-webfont.ttf') format('truetype'), url('../fonts/raphaelicons-webfont.svg#raphaelicons-webfont') format('svg'); /* IE6-IE8 */ /* chrome、firefox */ /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ /* iOS 4.1- */ } .cssIcon{ padding-right:10px; font-family: 'RaphaelIcons'; }
小提示:如需手机访问可以把DEMO页的地址通过二维码生成器转换成二维码,然后用移动设备扫描访问。
附录:
Raphaël Icon-Set via @font-face
20 @fontface Icon Sets
搜主意2LF 说:
作品版权(著作权)登记 文章来源:搜主意 文章来源:搜主意 电话:0574-88321111
March 26, 2018 10:12 am
8848在线问答 说:
+= 运算符号i+=m+1 意思 i=i+m+1,8848在线问答;自加右边项再赋值给 8848在线问答 自
March 22, 2018 10:58 am
余姚招聘网 说:
会议听取了三个基层支部、专线工作组关于上半年开展工作情况的和下半年具体工作部署的汇报;通报了总支部上半年 宁波求职网 组织发展计划落实情况和下半年计划实施的目标,宁波求职网;通报了总支部上半年刚刚成立的"北仑区中小企业服务中心"组织机构落实情况,并就在今后开展为中小企业服务中的融资、法律服务、科技咨询的相关职能作了具体的说明;传达和学习了民建市委会下发的《参政议政调研课题奖励办法》和《信息工作管理办法》。 7月25日下午,民建北仑区总支部一届六次全委(扩大)会议在区行政中心会议室召开,总支部和基层支部全体委员、各专线工作组组长出席本次会议,会议由总支部主委、区投资合作局局长贺波主持。 贺波在最后讲话中,肯定
May 17, 2015 11:00 pm
东北大米 说:
确实啊,多谢分享。
July 25, 2014 5:15 pm
yuewolf 说:
CSS3确实强悍!
October 21, 2013 9:58 am