在Web中使用什么单位来定义页面的字体大小,至今天为止都还在激烈的争论着,有人说PX做为单位好,有人说EM优点多,还有人在说百分比方便,以至于出现了CSS Font-Size: em vs. px vs. pt vs. percent这样的PK大局。不幸的是,仍然有不同的利弊,使各种技术都不太理想,但又无法不去用。真是进也难,退也难呀。 最近在学习em的相关知识的时候,无意之间让我拾得一宝,就是使用rem来设置Web页面的字体大小。让我一下子就来劲了,一口气看完并测试了一回,还真是爽歪歪的呀。师傅说好东西不能吃独食,于我就在这里给大家吹吹这个从没见过的REM。 在详细介绍rem之前,我们先一起来回顾一下我们常用的两种记量单位,也是备受争论的两个: PX为单位 EM为单位 PX为单位 在Web页面初期制作中,我们都是使用“px”来设置我们的文本,因为他比较稳定和精确。但是这种方法存在一个问题,当用户在浏览器中浏览我们制作的Web页面时,他改变了浏览器的字体大小,这时会使用我们的Web页面布局被打破。这样对于那些关心自己网站可用性的用户来说,就是一个大问题了。因此,这时就提出了使用“em”来定义Web页面的字体。 em为单位 前面也说了,使用是“px”为单位是比较方便,而又一致,但在浏览器中放大或缩放浏览页面时会存在一个问题,要解决这个问题,我们可以使用“em”单位。Richard Rutter’在《How to size text using ems》一文中有做过详细的介绍,追至早一点,Richard Rutter也在《How to Size Text in CSS》中进行过深入的剖析。 这种技术需要一个参考点,一般都是以<body>的“font-size”为基准。比如说我们使用“1em”等于“10px”来改变默认值“1em=16px”,这样一来,我们设置字体大小相当于“14px”时,只需要将其值设置为“1.4em”。
1 2 3 4 5 6 7 8 9 10 11 12 |
<span class="tag">body</span> <span class="rules">{ <span class="rule"><span class="attribute">font-size</span>:<span class="value"> <span class="number">62.5</span>%;</span></span><span class="comment">/*10 ÷ 16 × 100% = 62.5%*/</span> <span class="rule">}</span></span> <span class="tag">h1</span> <span class="rules">{ <span class="rule"><span class="attribute">font-size</span>:<span class="value"> <span class="number">2.4</span>em;</span></span> <span class="comment">/*2.4em × 10 = 24px */</span> <span class="rule">}</span></span> <span class="tag">p</span> <span class="rules">{ <span class="rule"><span class="attribute">font-size</span>:<span class="value"> <span class="number">1.4</span>em;</span></span> <span class="comment">/*1.4em × 10 = 14px */</span> <span class="rule">}</span></span> <span class="tag">li</span> <span class="rules">{ <span class="rule"><span class="attribute">font-size</span>:<span class="value"> <span class="number">1.4</span>em;</span></span> <span class="comment">/*1.4 × ? = 14px ? */</span> <span class="rule">}</span></span> |
为什么“li”的“1.4em”是不是“14px”将是一个问号呢?如果你了解过“em”后,你会觉得这个问题是多问的。前面也简单的介绍过一回,在使用“em”作单位时,一定需要知道其父元素的设置,因为“em”就是一个相对值,而且是一个相对于父元素的值,其真正的计算公式是: 1 ÷ 父元素的font-size × 需要转换的像素值 = em值 这样的情况下“1.4em”可以是“14px”,也可以是“20px”,或者说是“24px”,总之是一个不确定值,那么解决这样的问题,要么你知道其父元素的值,要么呢在任何子元素中都使用“1em”。这样一来可能又不是我们所需要的方法。 这里我只是简单的介绍了一个这两个单位的使用,具体一点的大家可以参阅: Best Practices的站长Kyle的《CSS Font-Size: em vs. px vs. pt vs. percent》 Converting px into percentage and em for relative CSS font sizes Em Vs Percent Widths CSS: Units of Measurement Jennifer Kyrnin的Using Points, Pixels, Ems, or Percentages for CSS Fonts Rem为单位 CSS3的出现,他同时引进了一些新的单位,包括我们今天所说的rem。在W3C官网上是这样描述rem的——“font size of the root element” 。下面我们就一起来详细的了解rem。 […]
View Details1、前言 在游戏开发中很多功能按权重随机给东西,比如:掉落、奖励、抽奖等等….. 2、功能 *)支持多个权重进行随机 *)能屏蔽指定权重,防止再次随机到 3、实现 [java] view plaincopy public int weightRandom(BitSet exclude, int… weights) { if (weights == null) { //安全性验证 } int length = weights.length; if (length == 0) { return –1; } if (len == 1) { int w = weights[0]; if (w < 0) { //安全性验证 } else if (w == 0) { return –1; } else { return 0; } } int total = 0; for (int i = 0; i < len; i++) { if (exclude != null && exclude.get(i)) { continue; } int w = weights[i]; total += w; } if (total <= 0) { return –1; } int randomNum = random(1, total), hitIndex = –1, partNum = 0; for (int i = 0; i < len; i++) { if (exclude != null && exclude.get(i)) { continue; } int w = weights[i]; partNum += w; if (partNum >= randomNum) { hitIndex = i; break; } } return hitIndex; } from:http://blog.csdn.net/zeus_9i/article/details/11900015
View Details一、问题定义: 问下有一个数组,这些数组中的值都有自己的权重,怎样设计才能高效的优先取出权重高的数?? 例如: 复制代码代码如下: 权重: 8 2 11 79 权重返回的值: 0 1 2 3 二、分析问题: 思路一:创建一个数组数组大小为权重和的大小,如值0的权重是8,则放入8个0值,值1的权重是2,则放入2个1值,依次类推。 然后用用一个权重和大小的随机数,产生随机数,即可。缺点要占用过多的内存。 思路二: 权重和数组 w[i]存储的是[0,i]元素的所有元素的权重和 时间复杂度O(n) 空间复杂度O(n) 随机[0,W[399]] 看随机数 落在哪个Wi 内就选哪个 时间复杂度 O(longn) 所以总的时间复杂度时间复杂度O(n) 空间复杂度O(n) 伪代码: 轮盘赌 并不是一种特别好的选择算子,但它容易实现。 首先要明白一点,由于交叉、变异等算子,并不能控制进化方向,所以进化的重任落在选择算子上。 如果明白了这一点,就好办了。 轮盘赌,就是积累概率来实现的,通常适应度大的被选择的几率较高。 假如:fit为适应度数组,共m个 复制代码代码如下: for i=1 to m '先求和 sum=sum+fit(i) next i For i = 1 To n ‘n-是要生成多少个个体 temp = temp + fit(i) If rnd <= temp / sum Then 输出 i 就是结果 Exit Function End If Next i 三、解决问题: 复制代码代码如下: package datastruct; import java.util.HashMap; import java.util.Map; /** 权重随机数: 如 权重:8 2 11 […]
View Detailscurl是专门用来进行网络交互的库,提供了一堆自定义选项,用来应对不同的环境,稳定性自然要大于file_get_contents。 选择curl的理由 关于curl与file_get_contents,摘抄一段通俗易懂的对比: file_get_contents其实是一堆内置的文件操作函数的合并版本,比如file_exists,fopen,fread,fclose,专门提供给懒人用的,而且它主要是用来对付本地文件的,但又是因为懒人的原因,同时加入了对网络文件的支持; curl是专门用来进行网络交互的库,提供了一堆自定义选项,用来应对不同的环境,稳定性自然要大于file_get_contents。 使用方法 1、开启curl支持 由于php环境安装后默认是没有打开curl支持的,需修改php.ini文件,找到;extension=php_curl.dll,把前面的冒号去掉,重启服务即可; 2、使用curl进行数据抓取 复制代码代码如下: // 初始化一个 cURL 对象 $curl = curl_init(); // 设置你需要抓取的URL curl_setopt($curl, CURLOPT_URL, 'http://www.cmx8.cn'); // 设置header curl_setopt($curl, CURLOPT_HEADER, 1); // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 运行cURL,请求网页 $data = curl_exec($curl); // 关闭URL请求 curl_close($curl); 3、通过正则匹配找到关键数据 复制代码代码如下: //$data是curl_exec返回的的值,即采集的目标内容 preg_match_all("/<li class=\"item\">(.*?)<\/li>/",$data, $out, PREG_SET_ORDER); foreach($out as $key => $value){ //此处$value是数组,同时记录找到带匹配字符的整句和单独匹配的字符 echo '匹配到的整句:'.$value[0].' '; echo '单独匹配到的:'.$value[1].' '; } 技巧 1、超时的相关设置 通过curl_setopt($ch, opt) 可以设置一些超时的设置,主要包括: CURLOPT_TIMEOUT 设置cURL允许执行的最长秒数。 CURLOPT_TIMEOUT_MS 设置cURL允许执行的最长毫秒数。 (在cURL 7.16.2中被加入。从PHP 5.2.3起可使用。 ) CURLOPT_CONNECTTIMEOUT 在发起连接前等待的时间,如果设置为0,则无限等待。 CURLOPT_CONNECTTIMEOUT_MS 尝试连接等待的时间,以毫秒为单位。如果设置为0,则无限等待。 在cURL 7.16.2中被加入。从PHP 5.2.3开始可用。 CURLOPT_DNS_CACHE_TIMEOUT 设置在内存中保存DNS信息的时间,默认为120秒。 复制代码代码如下: curl_setopt($ch, CURLOPT_TIMEOUT, 60); //只需要设置一个秒的数量就可以 […]
View Details运行环境: PHPSTORM版本 : 8.0.1 PHP版本 : 5.6.2 xdebug版本:php_xdebug-2.2.5-5.6-vc11-x86_64.dll ps : php版本和xdebug版本一定要相对应,且要看清64位和32位哦~ 1. PHP安装xdebug扩展 php.ini的配置,下面的配置仅供参考,路径要换成自己的! [xdebug] zend_extension=”D:\wamp\php-5.6.2-x64\ext\php_xdebug-2.2.5-5.6-vc11-x86_64.dll” xdebug.remote_enable = On xdebug.remote_handler = dbgp xdebug.remote_host= localhost xdebug.remote_port = 9000 xdebug.idekey = PHPSTORM ps : remote_handler 、 remote_host、 remote_port 这些都有默认值,但还是建议设置下,至少知道要设置这些参数~ 查看phpinfo~ 2.PHPSTORM设置 楼主以前一直用zendstudio,刚开始用phpstorm非常蛋疼,用了一段时间后发现还挺好用的~ 1.首先检查phpstorm的xdebug配置 这里的debug port要和php.ini里面的 xdebug.remote_port相一致!默认是9000,如果9000端口被占用的话,可以改成其他端口。 2. 设置debug. 添加本地的 web server~ www.51open.pcom 是我本地的 web server~ ~ 3.开始调试 打好第一个断点,shift + F9就可以了 打好 第一个断点 ,选中配置的debug, 按旁边的臭虫 按钮 总结: 根据断点配置,或在打开 Debug URL 的过程中,或在 POST 之后,如果 PhpStorm 监听到了 Debug 连接,就会立即切换到编辑器界面,并跳转到设置的断点处,浏览器端会等待 PhpStorm 的操作。 你可以随时中断 PhpStorm 的调试,或方便的进行 Step Into / Step Over / Run to cursor(这个刁爆了): […]
View Details问题: 解决办法: 1.电脑左下角开始--搜索”php.exe“,记录下路径,如我的是C:\xampp\php\ 2.点击phpstorm里的configured PHP Interpreter(见下图) 3.点击下图里的红框 4.在下图红框输入步骤1里的php的文件夹路径确认即可。 PS:本人是新手在自学PHP,有什么说得不对的,麻烦各位指出。谢谢。 from:http://www.bubuko.com/infodetail-649755.html
View Details<?php /** * Created by JetBrains PhpStorm. * User: Administrator * Date: 12-9-18 * Time: 上午11:03 * To change this template use File | Settings | File Templates. */ // ctrl+j 插入活动代码提示 // ctrl+alt+t 当前位置插入环绕代码 // alt+insert 生成代码菜单 // ctrl+q 查看代码注释 // ctrl+d 复制当前行 // ctrl+y 删除当前行 // shift+F6 重命名 // ctrl+shift+u 字母大小写转换 // ctrl+f 查找 // ctrl+r 替换 // F4 查看源码 // ctrl+shift+i 查看变量或方法定义源 // ctrl+g 跳转行 // ctrl+alt+F12 跳转至当前文件在磁盘上的位置 // alt+down 查看下一个方法 // alt+up 查看上一个方法 // ctrl+alt+l 重新格式化代码 // ctrl+shift+down statement向下移动 // ctrl+shift+up statement向上移动 // alt+shift+down line向下移动 // alt+shift+up line向上移动 // ctrl+/ 行注释 // ctrl+shift+/ 块注释 // ctrl+shift+n 打开工程中的文件 // ctrl+b 跳到变量申明处 // ctrl+[] 匹配 {}[] // ctrl+shift+]/[ 选中块代码<table>….</table> // ctrl+x 剪切行 // ctrl+shift+v 复制多个文本 // alt+left/right 标签切换 // ctrl+p 显示默认参数
View Detailsphpstorm 设置多项目并存 phpstorm 或 webstorm设置多个项目可以并存: File -> settings -> Directories -> Add Content Root 中添加你当前的工程目录。 from:http://www.bestphper.cn/article-46.html
View Details介绍 枚举是一个指定的常数,其基础类型可以是除 Char 外的任何整型。 如果没有显式声明基础类型,则使用 Int32。 编程语言通常提供语法来声明由一组已命名的常数和它们的值组成的枚举。 定义 默认基数从O开始,也可指定数值。 enum Days { Saturday=1, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday }; enum Colors { Red = 1, Green = 2, Blue = 4, Yellow = 8 }; 使用 Colors myColors = Colors.Red; string strColor=myColors.tostring(); int IntColor=(int)myColors ; 位或 Colors myColors = Colors.Red | Colors.Blue | Colors.Yellow; 位与 Colors myColors = Colors.Red & Colors.Blue & Colors.Yellow; 遍历 foreach (string s in Enum.GetNames(typeof(Days))) Response.Write(s + "--" + Enum.Parse(typeof(Days), s).ToString()); 转换 Colors mc=Colors Enum.Parse(typeof(Colors ), "red"); if (System.Enum.IsDefined(typeof(Days), "Monday")) Days ds= (Days)Enum.Parse(typeof(Days), "Monday"); 实例二: public enum NoticeType { Notice = 'A', LabRule = 'H', HotInformation = 'N', Column = 'C', All = '1', Null = '0' } //新建枚举类型 NoticeType noticeType1 = NoticeType.Column; //把枚举类型转换为string d="Column" string d = noticeType1.ToString(); //取得枚举类型的基数 dd=’C' char dd = (char)noticeType1; //通过基数取得对应的枚举类型 noticeType2 = NoticeType.Notice //(NoticeType)’A'; 两种方式都可以 NoticeType noticeType2 = (NoticeType)Char.Parse("A"); //通过名称取得枚举类型 noticeType3 = NoticeType.Notice NoticeType noticeType3 = (NoticeType)Enum.Parse(typeof(NoticeType), "Notice"); from:http://www.cnblogs.com/an-wl/archive/2011/04/14/2015815.html
View Details当 HTML5 问世之后,距离实现 Flash 被淘汰的预言又迈近了一大步,尽管 Adobe 在尽可能地通过更新和维护来提升 Flash 的实用性和兼容 性,不过江河日下的处境依旧不改,然而从今年7月开始,Mozilla 已经禁止 Firefox 全平台运行包含 18.0.0.203 及以下的所有 Adobe Flash 版本,不用猜都知道,又是因为安全漏洞这个老问题。 近段时间以来,不少用户都开始抱怨浏览器在加载 Flash 插件时出现崩溃现象,而这也就促使 Firefox 与 Chrome 开始考虑是否应该继续支持 Flash 运行,Chrome 更是已经暂时关闭 Flash。 大型视频网站 YouTube 和直播站点 Twitch 也已经或即将完成从 Flash 到 HTML5 的过渡,这也就是为什么最近打开 Youtube 总显示 Flash 崩溃无法观看的原因。 从各大网站纷纷拥抱 HTML5 这个大趋势来看,浏览器不再支持 Flash 可能会真的来临。,对于浏览器厂商和网站来说,这并不会带来多大的损失,相反他们认为去 Flash 化就是在剔除糟粕,在这样的环境下,最受伤的当然是 Abobe,其次就是 Flash 游戏开发者。 老实说,Flash 游戏在PC刚刚普及之初确实让不少人感受到了无限乐趣,尽管现在看起来大多数Flash游戏就像是用各种补丁随意拼凑的“三流作 品”,但Flash对游戏界的影响是极其深远的,Flash游戏以制作简单,操作方便,无需安装,文件体积小等优点渐渐传播开来,只可惜直到目前为止 Flash游戏都难登大雅之堂。 纯益智Flash游戏的巅峰之作:Nekogames的《星探》系列从2007年开始,几乎是一年一部,可见它的受欢迎程度;而《王国保卫战》、 《舰队Collection》的推出也让人对Flash游戏多少表示认同,不过当手游和Unity引擎普及之后,Flash上的优秀游戏几乎都选择了移 植,移植之后的体验度甚至超过了原版。 这只是从市场宏观视角来进行陈述,那么从Flash游戏制作者个人的立场来看又是怎样的呢?Gamestop旗下网页游戏站点Kongregate 最近也在转战HTML5,不过该网站的制作人John Cooney表示还是不愿意相信这个事实。他记得在2010年的时候就已经有人告知他Flash将会走向衰亡,不过那时候他认为这只是一个笑话,因为根据 Kongregate的监测显示,当年的Flash游戏还是很火爆。 由Newgrounds.com站长Tom Fulp和synj.net站长Dan Paladin共同设计的Flash游戏《外星原人》曾经在网络上造成了相当大的轰动,2002年Dan Paladin专门成立了Behemoth工作室将其进行重制之后推出了家用机版,2008年推出第2款游戏《城堡毁灭者》,创下全球近80万次下载的佳 绩。 在Tom Fulp看来,Flash是他涉足游戏领域最佳的工具,从1998年开始就一直是Flash的死忠粉丝,Tom Fulp认为Flash能够让不少游戏制作新手快速融入到这个行业中来,只可惜当前Flash的表现太令人失望。 而《超级食肉男孩》的开发者Edmund McMillen在2001年也使用Flash开发过游戏,但目前他只用来制作动画和执行一些简单的程序,Edmund McMillen认为Flash在上手使用方便之余,同时也带来了专业性不强,无法实现深度娱乐等缺点,在这个无时无刻不讲究创意和元素多样性的游戏行业里,Flash变得越来越力不从心了。 让Flash彻底倒下的最后一步恐怕就是浏览器不再提供支持,而在此之前,Flash游戏开发者和厂商就必须对今后如何生存的问题进行考虑,而在游戏开发技术上也要不断补充新的知识,在转移阵地的过程中,可能会淘汰一部分开发者。 其实《王国保卫战》已经做出了一个不错的表率,当然还有诸如《被诅咒的宝藏》等优秀的作品,凭借移动平台的人气和便捷性,游戏传播的速度会更快。从 当前形势来看,移动平台将会成为距离Flash游戏开发者们最近的生存乐土,至于Flash或将沦为游戏初期创作概念的呈现以及动画制作的一个“小工具”。 from:http://www.oschina.net/news/66695/flash-will-gone
View Details