一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Frontend

通过user-Agent获取浏览器和操作系统信息

 下面是我整理的一些userAgent大家先看看格式 //Firefox 1.0.X Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7 //Firefox 1.X Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8) Gecko/20060109 Firefox/1.5 (pigfoot) Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20060115 Firefox/1.6a1 //Firefox 2.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3 //苹果的Safari 2.0.X Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/419 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8 在Windows XP SP2 下, IE7 将发送其 User-Agent 头为: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1) 在Windows 2003 Server 下, IE7 将发送其 User-Agent 头为: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2) 在Windows Vista 下, IE7 将发送其 User-Agent 头为: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0) 我的机器的 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) Maxthon 傲游 1.x 系列的 UserAgent 值是  “Maxthon”,傲游 2.0 的 UserAgent 值是 “Maxthon 2.0″。所以只需要通过程序在 User-Agent 字符串中查找是否出现 “Maxthon” 或者 “Maxthon 2.0″ Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322) Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; Maxthon 2.0) 其他的 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.2) Gecko/20021120 Netscape/7.01 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2) 一般来讲只需要判断浏览器的内核就可以了 像遨游1.X版本腾讯的TT浏览器都是IE6的核心 如果没有特殊需要可以不加区分 下面的例子只按浏览器核心判断是那种浏览器 //获取userAgent var sUserAgent = window.navigator.userAgent; //获取红色字体的部分Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) var fAppVersion = parseFloat(window.navigator.appVersion); //比较版本大小后面的程序会用到,如果不熟悉split和push方法请参照《JavaScript学习笔记1:Array类》 function compareVersions(sVersion1, sVersion2) { var aVersion1 = sVersion1.split(“.”); var aVersion2 = sVersion2.split(“.”); if (aVersion1.length > aVersion2.length) { for (var i = 0; i < aVersion1.length – aVersion2.length; i++) { aVersion2.push(“0″); } } else if (aVersion1.length < aVersion2.length) { for (var i = 0; i < aVersion2.length – aVersion1.length; i++) { aVersion1.push(“0″); } } for (var i = 0; i < aVersion1.length; i++) { if (aVersion1[i] < aVersion2[i]) { return -1; } else if (aVersion1[i] > aVersion2[i]) { return 1; } } return 0; } //判断userAgent字符串里面是否有Opera字段,有则设isOpera为true,下面还会用到 var isOpera = sUserAgent.indexOf(“Opera”) > -1; var isMinOpera4 = isMinOpera5 = isMinOpera6 = isMinOpera7 = isMinOpera7_5 = false; if (isOpera) { var fOperaVersion; //Opear可以伪装成其他的浏览器,这里判断的是没有伪装的 if (window.navigator.appName == “Opera”) { fOperaVersion = fAppVersion; } //这里判断的是伪装后的(某些伪装情况下在userAgent中不会出现Opera字样对这种情况我们无能为力,不过毕竟是极少 //数),关于Opera的伪装请自己查看相关资料 else { //这个有点难度了关于正则表达式的 //我们要匹配的部分(红色字体) User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; -?) Opera 7.60 var reOperaVersion = new RegExp(“Opera (\\d+\\.\\d+)”); reOperaVersion.test(sUserAgent); //RegExp["$1"]取出第一次匹配的结果,转换成浮点型 //Opera 7.60 这个是匹配结果,转换成浮点后只剩下数字部分7.60,刚好是我们想要的结果 fOperaVersion = parseFloat(RegExp["$1"]); } //目前最新版本为9.20,请自行添加 isMinOpera4 = fOperaVersion >= 4; isMinOpera5 = fOperaVersion >= 5; isMinOpera6 = fOperaVersion >= 6; isMinOpera7 = fOperaVersion >= 7; isMinOpera7_5 = fOperaVersion >= 7.5; } var isKHTML = sUserAgent.indexOf(“KHTML”) > -1 || sUserAgent.indexOf(“Konqueror”) > -1 || sUserAgent.indexOf(“AppleWebKit”) > -1; var isMinSafari1 = isMinSafari1_2 = false; var isMinKonq2_2 = isMinKonq3 = isMinKonq3_1 = isMinKonq3_2 = false; if (isKHTML) { var isSafari = sUserAgent.indexOf(“AppleWebkit”) > -1; var isKonq = sUserAgent.indexOf(“Konqueror”) > -1; //MacOS X的默认浏览器,基于KHTML,参考前面给出的userAgent if (isSafari) { var reAppleWebKit = new RegExp(“AppleWebKit\\/(\\d+(?:\\.\\s*)?)”); reAppleWebKit.test(sUserAgent); var fApplieWebKitVersion = parseFloat(RegExp["$1"]); isMinSafari1 = fApplieWebKitVersion >= 85; isMinSafari1_2 = fApplieWebKitVersion >= 124; } //判断是否是Konqueror浏览器,Unix下的浏览器,基于KHTML else if(isKonq) { var reKong = new RegExp(“Konqueror\\/(\\s+(?:\\.\\d+(?:\\.\\d)?)?)”); reKong.test(sUserAgent); isMinKonq2_2 = compareVersions(RegExp["$1"], “2.2″) >= 0; isMinKonq3 = compareVersions(RegExp["$1"], “3.0″) >= 0; isMinKonq3_1 = compareVersions(RegExp["$1"], “3.1″) >= 0; isMinKonq3_2 = compareVersions(RegExp["$1"], “3.2″) >= 0; } } //IE var isIE = sUserAgent.indexOf(“compatible”) > -1 && sUserAgent.indexOf(“MSIE”) > -1 && !isOpera; var isMinIE4 = isMinIE5 = isMinIE5_5 = isMinIe6 = false; if (isIE) { var reIE = new RegExp(“MSIE (\\d+\\.\\d+)”); reIE.test(sUserAgent); var fIEVersion = parseFloat(RegExp["$1"]); isMinIE4 = fIEVersion >= 4; isMinIE5 = fIEVersion >= 5; isMinIE5_5 = fIEVersion >= 5.5; isMinIE6 = fIEVersion >= 6.0; } //Mozilla,火狐数此类 var isMoz = sUserAgent.indexOf(“Gecko”) > -1 && !isKHTML; var isMinMoz1 = sMinMoz1_4 = isMinMoz1_5 = false; if (isMoz) { //最新的版本号是4个标志位的了,这里应该把正则表达式改成”rv:(\\d+\\.\\d+(?:\\.\\d+(?:\\.\\d+)?)?)” var reMoz = new RegExp(“rv:(\\d+\\.\\d+(?:\\.\\d+)?)); reMoz.test(sUserAgent); //调用前面比较版本的方法 isMinMoz1 = compareVersions(RegExp["$1"], “1.0″) >= 0; isMinMoz1_4 = compareVersions(RegExp["$1"], “1.4″) >= 0; isMinMoz1_5 = compareVersions(RegExp["$1"], “1.5″) >= 0; } //Netscape var isNS4 = !isIE && !isOpera && !isMoz && !isKHTML && (sUserAgent.indexOf(“Mozilla”) == 0) && (navigator.appName == “Netscape”) && (fAppVersion >= 4.0 && fAppVersion < 5.0); var isMinNS4 = isMinNS4_5 = isMinNS4_7 = isMinNS4_8 = false; if (isNS4) { isMinNS4 = true; isMinNs4_5 = fAppVersion >= 4.5; isMinNs4_7 = fAppVersion >= 4.7; isMinNs4_8 = fAppVersion >= 4.8; } var isWin = (window.navigator.platform == “Win32″) || (window.navigator.platform == “Windows”); var isMac = (window.navigator.platform == “Mac68K”) || (window.navigator.platform == “MacPPC”) || (window.navigator.platform == “Macintosh”); var isUnix = (window.navigator.platform == “X11″) && isWin && isMac; var isWin95 = isWin98 = isWinNT4 = isWin2K = isWinME = isWinXP = false; var isMac68K = isMacPPC = false; var isSunOS = isMinSunOS4 = isMinSunOS5 = isMinSunOS5_5 = false; if (isWin) { //Win2003为Windows NT 5.2 //那个vista是Windows NT 6.0 isWin95 = sUserAgent.indexOf(“Win95″) >= -1 || sUserAgent.indexOf(“Windows 95″) >= -1; isWin98 = sUserAgent.indexOf(“Win98″) >= -1 || sUserAgent.indexOf(“Windows 98″) >= -1; isWinME = sUserAgent.indexOf(“Win 9x 4.90″) >= -1 || sUserAgent.indexOf(“Windows ME”) >= -1; isWin2K = sUserAgent.indexOf(“Windows NT 5.0″) >= -1 || sUserAgent.indexOf(“Windows 2000″) >= -1; isWinXP = sUserAgent.indexOf(“Windows NT 5.1″) >= -1 || sUserAgent.indexOf(“Windows XP”) >= -1; isWinNT4 = sUserAgent.indexOf(“WinNT”) >= -1 || sUserAgent.indexOf(“WindowsNT”) >= -1 || sUserAgent.indexOf(“WinNT4.0″) >= -1 || sUserAgent.indexOf(“Windows NT 4.0″) && (!isWinME && !isWin2K && !isWinXP); } if (isMac) { isMac68K = sUserAgent.indexOf(“Max_68000″) > -1 || sUserAgent.indexOf(“68K”) > -1; isMacPPC = sUserAgent.indexOf(“Mac_PowerPC”) > -1 || sUserAgent.indexOf(“PPC”) > -1; } //Unix的系统太多了 这里只对SunOS做了判断 if (isUnix) { isSunOS = sUserAgent.indexOf(“SunOS”) > -1; if (isSunOS) { var reSunOS = new RegExp(“SunOS (\\d+\\.\\d+(?:\\.\\d+)?)”); reSunOS.test(sUserAgent); isMinSunOS4 = compareVersions(RegExp["$1"], “4.0″) >= 0; isMinSunOS5 = compareVersions(RegExp["$1"], “5.0″) >= 0; isMinSunOS5_5 = compareVersions(RegExp["$1"], “5.5″) >= 0; } } 注意:上面的对操作系统和浏览器判断的先后顺序是不能改变的,类似于排除法 现在好多的Ajax框架里都有这个东东可以拿来直接用, 写的有点匆忙,后面很多地方和前面用的方法相同就没有复述 如果你和我一样是新手欢迎和我交流,我的邮箱是zyyn2000【at】21cn.com,最近正在学ASP.NET Ajax相关的技术,也请高手指点 如果你想看自己的userAgent在浏览器上敲这个就可以了^_^ javascript:document.write(navigator.userAgent) 这个东西我还写了一个C#版的,方便一次性识别大量的userAgent^_^ 我的作文很少及格写的不好大家见笑了,欢迎批评指正。 国际惯例:如需转载请注明出处,谢谢. from url:http://www.cnblogs.com/Ajax-cn/archive/2007/04/24/725334.html

龙生   19 Feb 2013
View Details

js中substring和substr的用法

  substring 方法用于提取字符串中介于两个指定下标之间的字符 substring(start,end) 开始和结束的位置,从零开始的索引 参数     描述start     必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。stop     可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。如果省略该参数,那么返回的子串会一直到字符串的结尾。 返回值 一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字符,其长度为 stop 减 start。 说明 substring 方法返回的子串包括 start 处的字符,但不包括 end 处的字符。如果 start 与 end 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。如果 start 比 end 大,那么该方法在提取子串之前会先交换这两个参数。如果 start 或 end 为负数,那么它将被替换为 0。 2.substr 方法 定义和用法 substr 方法用于返回一个从指定位置开始的指定长度的子字符串。 语法 stringObject.substr(start [, length ]) 参数    描述start   必需。所需的子字符串的起始位置。字符串中的第一个字符的索引为 0。length 可选。在返回的子字符串中应包括的字符个数。 说明 如果 length 为 0 或负数,将返回一个空字符串。如果没有指定该参数,则子字符串将延续到stringObject的最后。 举例:var str = “0123456789″; alert(str.substring(0));————”0123456789″alert(str.substring(5));————”56789″alert(str.substring(10));———–”"alert(str.substring(12));———–”"alert(str.substring(-5));———–”0123456789″alert(str.substring(-10));———-”0123456789″alert(str.substring(-12));———-”0123456789″alert(str.substring(0,5));———-”01234″alert(str.substring(0,10));———”0123456789″alert(str.substring(0,12));———”0123456789″alert(str.substring(2,0));———-”01″alert(str.substring(2,2));———-”"alert(str.substring(2,5));———-”234″alert(str.substring(2,12));———”23456789″alert(str.substring(2,-2));———”01″alert(str.substring(-1,5));———”01234″alert(str.substring(-1,-5));——–”" alert(str.substr(0));—————”0123456789″alert(str.substr(5));—————”56789″alert(str.substr(10));————–”"alert(str.substr(12));————–”"alert(str.substr(-5));————–”0123456789″alert(str.substr(-10));————-”0123456789″alert(str.substr(-12));————-”0123456789″alert(str.substr(0,5));————-”01234″alert(str.substr(0,10));————”0123456789″alert(str.substr(0,12));————”0123456789″alert(str.substr(2,0));————-”"alert(str.substr(2,2));————-”23″alert(str.substr(2,5));————-”23456″alert(str.substr(2,12));————”23456789″alert(str.substr(2,-2));————”"alert(str.substr(-1,5));————”01234″alert(str.substr(-1,-5));———–”" http://www.cnblogs.com/chinafine/archive/2009/02/26/1398771.html

龙生   19 Feb 2013
View Details

jquery $(document).ready() 与window.onload的区别

 1.执行时间window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。$(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。2.编写个数不同window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个$(document).ready()可以同时编写多个,并且都可以得到执行3.简化写法window.onload没有简化写法$(document).ready(function(){})可以简写成$(function(){});

龙生   19 Feb 2013
View Details

15 个非常有用的 jQuery 表单插件

  有很多 jQuery 的表单插件。这里收集了其中15个是最有用的插件。 ALAJAX (Ajaxify your HTML form) 该插件可轻松将你的表单变成 Ajax 方式处理,阻止了提交动作,然后通过 Ajax 方式提交。 jQuery File Upload (AJAX Upload with progress and more) Niceforms 这是一个让表单变得好看的 jQuery 插件 Fancy AJAX Contact Form meioMask (Input field mask plugin) 编辑框的输入模式限制插件 Elastic (expanding textarea) jQuery Elastic 是一个用来根据Textarea文本编辑框输入的数据自动改变输入框大小的jQuery插件。 Live Form Validation Custom Select Box (options with images) 为下拉列表增加图标显示 Pretty Checkbox 美化复选框 jQuery UI Datepicker Complexify (password strength) jQuery Form Field Validation A cool form validation with tooltips. Ketchup (form validation plugin) 带工具提示的表单验证 Valid8 Simple and cool validation plugin. jQuery qTip (tooltip plugin)  

龙生   19 Feb 2013
View Details

分享 7 款令人难忘的 jQuery 实用教程

  这次分享的一些网页特效都是完全基于jQuery的,而且相信大部分插件都可以帮助WEB前端开发者简化很多开发工作,比如菜单、图片播放等实用功能。这里我向大家展示了这些插件的在线演示,同时也提供源代码的下载,方便各位同学研究。 1、jQuery环形动画菜单 这是一款少有的jQuery菜单,很显然,环形动画是它最大的亮点,很有创意哦。 在线演示 / 源码下载 2、jQuery动画下拉菜单 这里有4个不同主题的下拉菜单,十分清爽漂亮。 在线演示 / 源码下载 3、带小图标的jQuery多级菜单导航 这是一款带有功能图标的多级菜单,用jQuery实现。 在线演示 / 源码下载 4、jQuery带缩略图的图片播放插件 这是一款基于jQuery的图片播放插件,带缩略图,而且用起来也方便。 在线演示 / 源码下载 5、古典卡带播放器 这是jQuery结合HTML5实现的古典卡带播放器,很经典。 在线演示 / 源码下载 6、jQuery实现的Lava-Lamp样式的动画菜单 基于jQuery的滑动动画菜单,仿Flash。 在线演示 / 源码下载 7、minimal tab 这是一款基于jQuery的tab菜单插件,google play风格的 在线演示 / 源码下载 以上就是7个令人难忘的jQuery实用教程,希望大家喜欢,收藏起来吧。 转自:http://www.oschina.net/news/35429/7-jquery-tutorials

龙生   19 Feb 2013
View Details

不容错过的 window8 metro UI 风格的 web 资源

  最近微软已经正式发布了windows 8操作系统,window操作系统的风格已经完全改变成了瓦片状的Metro UI。 对于微软来说这是一个巨大的改变,而且所有微软的平台包括,桌面,平板,移动及其网站都使用这个UI风格。 Metro UI包含了所有的现代web设计的特点,包括了,简化,基于网格的界面,并且富有连续性。 大家如果有兴趣可以看看这个界面设计说明 (http://msdn.microsoft.com/en-us/library/windows/apps/hh465424.aspx)。 如果你也喜欢Metro风格的话,这里我们收集了很多windows 8的Metro UI风格布局资源,希望大家喜欢! Metro风格的网站框架和模板 Metro UI CSS Metro UI CSS是一个非常完整的创建Metro风格的网站的框架。使用LESS创建,并且拥有网格系统,排版样式,表格,按钮和图片。 同时也拥有内建的javascript组件,帮助你生成片状,菜单,边栏,进度条,提示等等 etro UI CSS BootMetro BootMetro是一个Twitter Bootstrap的Metro风格主题。你可以创建Metro风格的样式。例如,片状UI,工具栏,其它组件。 metro-bootstrap 类似上面的BootMetro,这是另外一个Twitter Bootstrap主题,拥有所有的漂亮组件,并且包含了LESS。 Metro UI Template 这是一个网站的框架和模板,用来创建windows 8 Metro UI风格的界面。拥有平滑的过渡效果和tiles(包括,RSS,Twitter,weather等等) 这个模板支持模板并且拥有jQuery UI主题。 Droptiles – Metro-Style Web Dashboard 一个开源的windows 8开始界面dashboard(类似igoogle)。 使用tiles来展示信息,每一个tiles是独立的应用可以用来获取数据。这个项目基于ASP.NET可以移植到其它语言。 PHP Image Gallery In Metro UI 一个PHP的图片画廊可以自动生成缩略图,并且可以使用lightbox来显示图片。支持HTML5和CSS3。 Motown 一个用来创建Metro风格应用的类库,使用很少代码即可实现。不依赖其它javascript类库。 Metro风格jQuery插件资源 jq-metro 一个jQuery插件用来创建Metro风格的界面。目前,panorama,privot,进度条,列表选择,切换,按钮等。 Metro JS 这个jQuery Metro UI插件可以用来创建tiles,应用条,并且支持主题。功能和设计完全可定制。 jQuery Metro UI Plugin 这个插件可以简单的创建tiles视图并且支持聚焦。 jQuery Mobile Metro Theme 一个免费jQuery移动Metro UI主题,完全支持自定义。使用不同插件来处理应用栏,进度条,按钮和日期选择器。 Metro UI Theme Builder For jQuery UI 拥有themeroller风格的jQuery UI主题创建,帮助你创建Metro UI风格样式 TileJS (non-jQuery) 一个标准的javascript代码来创建tiles并且拥有完整tiles的onclick效果。 免费Metro UI图标 Modern UI Icons 一套简单手绘的Metro […]

龙生   04 Nov 2012
View Details

分享一个QQ关闭窗口的代码

 

龙生   24 Oct 2012
View Details

JS中操作table的方法

JS中操作table的方法   var myTable = document.getElementById("myTable ");   //添加行   var newTR = myTable.insertRow(index);   该方法创建一个新的 TableRow 对象表示一个新的 <tr> 标记,并把它插入表中的指定位置。      新行将被插入 index 所在行之前。若 index 等于表中的行数,则新行将被附加到表的末尾。   如果表是空的,则新行将被插入到一个新的 <tbody> 段,该段自身会被插入表中。   //设置行的id和class属性   newTR.id = "myid";   newTR.className="MainContentText";   //添加列:序号   var newTD=newTR.insertCell(0);   //添加列内容   newTD.innerHTML = "dfdsf";           //删除表所有行,只留标题行   var rows = myTable.rows.length;   for(var i=0;i<rows-1;i++){   myTable.deleteRow();//不给参数,代表删除最后一行   }           JS本身不支持方法重载   Js中实现方法重载的方式也知道了呵呵(会默认调用参数最多的那个方法) 转自:http://www.cnblogs.com/judy/archive/2010/06/05/1752230.html

龙生   22 Oct 2012
View Details

网页应用特殊字体,ttf转换为woff、svg、等格式字体

第一步样式表中定义一个@face样式 @font-face {font-family: 'weiruanyahei';src: url('7000.eot');src: local('weiruanyahei Regular'), local('weiruanyahei'), url('7000.ttf') format('truetype'),url('7000.woff') format('woff');} font-family: 'weiruanyahei';这个 “weiruanyahei”是自己起的名字什么都行。。。 第二步 在服务器上安装这个特殊字体 第三步 下载字体的ttf格式转换成需要的woff,eot,svg等格式字体 这个是要做到多个浏览器都支持的效果 转换步骤 我用的一个网站转换的 挺好用的 网址 http://onlinefontconverter.com/ 注册一下 上传ttf字体 然后选择需要的格式就会转换了 下载下来就好了 第四步 把转换好的格式 分别上传到 服务器的网站文件中。。css中7000.woff就是那个字体的路径及名称 我的是在同级目录下所以就直接写7000.woff了。 第五步 #poem{font-size:45px;font-family:weiruanyahei;text-align:center;} 样式中定义font-family:weiruanyahei; 是你起的名字   然后再应用的地方应用就好了。。。。。。   大功告成哦 转自:http://hi.baidu.com/ionly0801/item/6f3aa7ea7c296b3e86d9deae

龙生   25 Sep 2012
View Details
1 57 58 59 65