纯CSS3实现支持自定义设定的图标

网上有各种用CSS3画图标,画漫画的代码,实在是有点吊!如果能为自己的网站也绘制一套CSS3图标,那么就省去了用小图片的力气。虽然说各大浏览器对CSS3的支持性还不尽相同,但是大势所趋,写写更健康。

首先,我们要做到使用简单,简单到给元素加个类就能使用图标,然后我们还要支持可定制,比如颜色,大小。看下面的代码:

<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>CSS3 ICONS</title>
	</head>
	<body>
		<div class="container">
			<a class="css3-icon css3-icon-search" href="#"></a>
		</div>
	</body>
</html>

我们只要给a标签加上两个类就可以让它变成一个图标。之所以加两个,是因为类css3-icon实现的图标的基本样式,而css3-icon-search则实现了具体的search图标样式:

/*global icon style*/
.css3-icon{
	position:relative;
	display:block;
	/*custom the icon size*/
	width:100px;height:100px;font-size:10px;
	background:#ccc;
}
.css3-icon:before,.css3-icon:after{content:"";position:absolute;left:0;background:transparent;font-size:1em;}

伪元素肯定是要用上的,而且要相对于.css3-icon绝对定位。我们希望图标的大小是可以自定义的,所以在:before和:after伪元素里我们使用了相对单位em,为此要在.css3-icon中对font-size重新赋初始值。

接下来我们画一个search图标:

/*---------------------
search icon
----------------------*/
.css3-icon-search:after {
		left:55%;top:70%;
    width:40%;height:12%;
		background:#456;
		transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);
}
.css3-icon-search:before {
		left:10%;top:5%;
    width:50%;height:50%;
    border:.9em solid #456;
    border-radius:50%;-webkit-border-radius:50%;-moz-border-radius:50%;--o-border-radius:50%;
}
.css3-icon-search:hover:before{
	border-color:#ff7;
}
.css3-icon-search:hover:after{
	background:#ff7;
}

在before伪元素中,利用border-radiuis画一个圆,在after伪元素中,利用transform画出放大镜的手柄。为了支持图标缩放,这里都使用了百分比,效果如下:

要修改大小的话只要改变.css3-icon中的width,height,font-size即可(需要等比例改变大小)。但是还有一个问题,目前不支持自定义颜色。我们还需要改进代码,在.css-icon中设置颜色,具体图标的颜色则采用继承的方式:

/*--------------------------------------
pure css icons
author:liquanfeng
created:2014/9/4
version:1.0
blog:http://readit.sinaapp.com
---------------------------------------*/
/*global icon style*/
.css3-icon{
	position:relative;
	display:block;
	/*custom the icon size*/
	width:100px;height:100px;font-size:10px;
	background:#ccc;
	border-color:#456;
}
.css3-icon:hover:before,.css3-icon:hover:after{
	border-color:#ff7;/*custom your hover effect*/
}
.css3-icon:focus:before,.css3-icon:focus:after{
	border-color:#ff7;/*custom your focus effect*/
}
.css3-icon:active:before,.css3-icon:active:after{
	border-color:#ff7;/*custom your active effect*/
}
.css3-icon:visited:before,.css3-icon:visited:after{
	border-color:#ff7;/*custom your visited effect*/
}
.css3-icon:before,.css3-icon:after{
	content:"";
	position:absolute;left:0;
	background:transparent;
	font-size:1em;
}
/*global icon style end*/
/*---------------------
search icon
----------------------*/
.css3-icon-search:before {
    left:10%;top:5%;
    width:50%;height:50%;
    border:.9em solid;
    border-color:inherit;
    border-radius:50%;-webkit-border-radius:50%;-moz-border-radius:50%;--o-border-radius:50%;
}
.css3-icon-search:after {
    left:55%;top:70%;
    width:40%;height:0;
    border-top:.9em solid;
    border-color:inherit;
    transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);
}

以上就是所有代码了,其他的图标都可以按这个框架来实现,利用旋转和border特性来画图标,然后在global style里面自定义尺寸和颜色就ok了。

时间: 2024-08-10 15:11:53

纯CSS3实现支持自定义设定的图标的相关文章

纯css3样式属性制作各种图形图标

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="

纯css3开发的响应式设计动画菜单(支持ie8)

这是一个响应式设计的菜单.单击列表图标,当你显示屏大小可以完全水平放下所有菜单项时,菜单水平显示(如图1).当你的显示屏不能水平放置所有菜单项时,菜单垂直显示(如图2). 而且显示的时候是以动画的型式显示.效果相当的好. 点击这里在线预览 下面贴出实现这功能的源代码,这是一个纯用css3实现的菜单 html代码: <div class="container"> <!--[if lte IE 8]> <style> .iconicmenu > l

纯CSS3实现自定义涂鸦风格的边框

今天我们要来分享一款基于纯CSS3的自定义边框应用,看上去它像一个Tooltip控件,因为下边框有一个小三角,就像很多地方的引用文本框一样.另外这款CSS3边框是涂鸦风格的,看起来很有个性.用CSS3实现自定义边框的好处是可以自适应边框内部的文字数量大小. 下面我们来分享一下实现的方法,主要由HTML代码和CSS代码组成. HTML代码: <div> <div> <div>CSS3简单实现涂鸦风格边框 Welcome to</div> </div>

纯CSS3悬停图标旋转导航动画代码

分享一款纯CSS3悬停图标旋转导航动画代码.这是一款鼠标移到图标上动画旋转显示导航菜单.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div id="x_contant"> <a class="xzt1" href="#"><img src="images/xztz_1.png" /></a> <a class="xzt2" hr

纯CSS3美化单选按钮radio

这种纯CSS3美化单选按钮radio的方法适用于以下情况: 1.可兼容IE9以上,需要兼容IE8的要写IE的hack把样式去掉 2.只支持单选按钮radio,因为单选按钮选中样式的圆圈可以用CSS做出来,但是复选按钮checkbox的选中效果对勾就需要图片或者图标字体库 3.不需要JS支持切换效果 下图是最终效果图: HTML代码: <label for="man" class="radio"> <span class="radio-bg

6个Web前端纯CSS3实现的单多选选择框效果图展示(下)

4.mootools实现checkbox和radiobox效果 能在支持 FireFox.Chrome.Safari.傲游.搜狗.360浏览器. 源码下载/   在线演示 5.  jquery打钩打叉图标特效 源码下载  /  在线演示 6.  纯CSS3实现的单多选选择框 源码下载 /  在线演示 6个Web前端纯CSS3实现的单多选选择框效果图展示(下)

纯CSS3实现打火机火焰动画

HTML5已经越来越流行起来了,尤其是移动互联网的发展,更是带动了HTML5的迅猛发展,我们也是时候学习HTML5了,以防到时候落伍.今天给大家介绍10款效果惊艳的HTML5应用,方便大家学习,也将应用的源码整理了一下发给大家. 1.纯CSS3实现打火机火焰动画 这又是一款很酷的纯CSS3动画特效,它是一个可以点燃的打火机,当你用鼠标滑过这只打火机时,打火机就会打开,然后开始出现火焰燃烧的动画特效.另外要说明的是,整个动画都是利用纯CSS3实现的,没有一行JS代码,小伙伴们,这个CSS3动画是不

纯CSS3实现宽屏二级下拉菜单

今天我们要来分享一款基于纯CSS3的宽屏二级下拉菜单,这款菜单的子菜单在展开的时候是很宽敞的,菜单项中可以自定义格式的内容,非常实用,也很大气.由于是用纯CSS3实现,所以这款下拉菜单不用运行Javascript,展示速度当然是非常快的. 在线预览   源码下载

纯CSS3大转盘抽奖(响应式、可配置)

源于前段时候微信小程序最初火爆公测时段,把以前用 Canvas 实现的大转盘抽奖移植成微信小程序,无奈当时小程序对 Canvas 支持不够完善,只好降低用 CSS3 实现.虽然比不上 Canvas 绘图的绚丽,但也总算完成了一个抽奖的 Demo,详见:https://github.com/givebest/wechat-turntalbe-canvas. 事后想起,CSS3 实现也并不是无有益处,比如简单.快捷.调试方便.渲染想来也是要比 Canvas 要高效的,更重要的一点是支持媒体查询,大转