5种你未必知道的JavaScript和CSS交互的方法

随着浏览器不断的升级改进,CSS和JavaScript之间 的界限越来越模糊。本来它们是负责着完全不同的功能,但最终,它们都属于网页前端技术,它们需要相互密切的合作。我们的网页中都有.js文件和.css文 件,但这并不意味着CSS和js是独立不能交互的。下面要讲的这五种JavaScript和CSS共同合作的方法你也许未必知道! 用JavaScript获取伪元素(pseudo-element)属性 大家都知道如何通过一个元素的style属性获取它的CSS样式值,但能获取伪元素(pseudo-element)的属性值吗?可以的,使用JavaScript也可以访问页面中的伪元素。 1 // Get the color value of .element:before 2 var color = window.getComputedStyle( 3     document.querySelector('.element'), ':before' 4 ).getPropertyValue('color'); 5 6 // Get the content value of .element:before 7 var content = window.getComputedStyle( 8     document.querySelector('.element'), ':before' 9 ).getPropertyValue('content'); 看见了吗,我能访问伪元素里的content属性值。如果你想创建一个动态的,风格别致的网站,这是一种非常有用的技术! classList API 很多的JavaScript工具库里都有addClass,removeClass和toggleClass等方法。为了对老式浏览器的兼容,这些类库采用的方法都是先搜索元素的className,追加和删除这个类,然后更新className。其实有一个新型的API提供了添加,删除和反转CSS类属性的方法,叫做classList: 1 myDiv.classList.add('myCssClass'); // Adds a class 2 3 myDiv.classList.remove('myCssClass'); // Removes a class 4 5 myDiv.classList.toggle('myCssClass'); // Toggles a class 大多数的浏览器里很早就实现了classListAPI,而且最终IE10里也实现了它。 直接对样式表进行添加和删除样式规则 我们都非常熟悉使用element.style.propertyName来修改样式,使用JavaScript能帮助我们做到这些,但你知道如何新增或修一个现有的CSS样式规则吗?其实非常的简单。 01 function addCSSRule(sheet, selector, rules, index) { 02     if(sheet.insertRule) { 03         sheet.insertRule(selector + "{" + rules + "}", index); 04     } 05     else { 06         sheet.addRule(selector, rules, index); 07     } 08 } 09 10 // Use it! 11 addCSSRule(document.styleSheets[0], "header", "float: left"); 这种方法通常是用来创建一个新的样式规则,但如果你想修改一个现有的规则,也可以这样做。 加载CSS文件 延迟加载图片、JSON、脚本等是用来加快页面显示速度的好方法。我们可以使用curl.js等这样JavaScript加载器来延迟加载这些外部资源,可你知道CSS样式表也可以延迟加载吗,而且在加载成功后回调函数会给予通知。 01 curl( 02     [ 03         "namespace/MyWidget", 04         "css!namespace/resources/MyWidget.css" 05     ],  06     function(MyWidget) { 07         // 你可以对MyWidget进行操作 08         // 这里没有对这个CSS文件引用,因为不需要; 09         // 我们只需要它已经加载到页面上了 10     } 11 }); 本网站使用的PrismJS语法高亮脚本就是延迟加载的。当所有的资源都加载后,回调函数就会触发,我可在回调函数里加载它。非常有用! CSS鼠标指针事件 CSS鼠标指针事件pointer-events属性非常的有趣,它的功效非常像JavaScript,当你把这个属性设置为none时,它能有效的阻止禁止这个元素,你也许会说“这又如何?”,但事实上,它是禁止了这个元素上的任何JavaScript事件或回调函数! 1 .disabled { pointer-events: none; } […]

龙生   03 Apr 2014
View Details

非常有用的 Markdown 编辑器和工具

Markdown 是 2004 年由 John Gruberis 设计和开发的纯文本格式的语法,所以通过同一个名字它可以使用工具来转换成 HTML。readme 文件,在线论坛编写消息和快速创建富文本文档的文本编辑器都非常流行使用 Markdown 格式。 在这篇文章中,我们会介绍 Windows 和 Mac OSx 下的一些有用的 Markdown 编辑器和工具。下面列表的工具会帮助您无障碍的去轻松编写和格式化文本,转换和预览标记语言。如果您觉得有哪些非常好的 Markdown 工具被我们忽略了,在评论中与大家交流吧:) 编辑器 1. StackEdit StackEdit 是个免费开源的 Markdown 编辑器,是基于 PageDown (Stack Overflow 使用的库)的。此编辑器可以传教和管理存储在本地的多个文档,同时也可以从 Google Drive 或者 Dropbox 导出或者导入,可以保存文档为 HTML 格式。 2. EpicEditor EpicEditor 是个嵌入式 JavaScript Markdown 编辑器,带有独立全屏编辑,在线预览,自动草稿保存,支持离线等功能。对于开发者来说,它提供一个强健的 API,容易进行自定义;允许通过绑定的 Markdown 解析器转换任何想转换的东西。EpicEditor 设置成可以允许用户使用任意的百年祭起,接受和返回一个字符串。这也说明用户可以使用任何风格的 Markdown, process Textile,甚至是创建一个简单的 HTML 编辑器/预览器 。同时,EpicEditor 的主题也非常容易自定义。 3. Markable Markable 是个卓越的 Markdown 编辑器,提供 Markdown 语法高亮,自动缩进和解除缩进,高亮当前行功能;提供行号,提供一个明亮和暗淡的主题;提供自动保存功能。当转换 HTML 到 Markdown 格式时,无论在什么设备,再次启动时都会恢复到最后编辑的状态。更厉害的是,它可以上传文件到其他设备,也可以从其他设备导入文件。 4. Dillinger Dillinger  是 cloud-enabled 的 HTML5 Markdown 编辑器,基于 Bootstrap 和 Node.js 5. Markdown Pad Markdown Pad 是 Windows 下的全功能 Markdown 编辑器。用户可以通过方便的键盘快捷键和工具栏按钮来使用或者移除 Markdown 格式。当你创建的时候,可以实时看到 HTML […]

龙生   02 Apr 2014
View Details

完全卸载oracle11g步骤

完全卸载oracle11g步骤: 1、 开始->设置->控制面板->管理工具->服务 停止所有Oracle服务。 2、 开始->程序->Oracle – OraHome81->Oracle Installation Products-> Universal Installer,单击“卸载产品”-“全部展开”,选中除“OraDb11g_home1”外的全部目录,删除。 5、 运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。 6、 运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有Oracle入口(以oracle或OraWeb开头的键)。 7、 运行refedit,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,删除所有Oracle入口。 8、 删除HKEY_CLASSES_ROOT目录下所有以Ora、Oracle、Orcl或EnumOra为前缀的键。 9、 删除HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu\Programs中所有以oracle开头的键。 10、删除HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI中除Microsoft ODBC for Oracle注册表键以外的所有含有Oracle的键。 11、我的电脑-->属性-->高级-->环境变量,删除环境变量CLASSPATH和PATH中有关Oracle的设定。 12、从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标。 13、删除所有与Oracle相关的目录(如果删不掉,重启计算机后再删就可以了)包括: 1.C:\Program file\Oracle目录。 2.ORACLE_BASE目录(oracle的安装目录)。 3.C:\WINDOWS\system32\config\systemprofile\Oracle目录。 4.C:\Users\Administrator\Oracle或C:\Documents and Settings\Administrator\Oracle目录。 5.C:\WINDOWS下删除以下文件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等。 6.C:\WINDOWS下的WIN.INI文件中若有[ORACLE]的标记段,删除该段。 14、如有必要,删除所有Oracle相关的ODBC的DSN 15、到事件查看器中,删除Oracle相关的日志 说明: 如果有个别DLL文件无法删除的情况,则不用理会,重新启动,开始新的安装,安装时,选择一个新的目录,则,安装完毕并重新启动后,老的目录及文件就可以删除掉了。 from:http://blog.csdn.net/machinecat0898/article/details/7792471

龙生   31 Mar 2014
View Details

VS2012 避免单击打开项目中的文件(单击改双击)

相信很多人都不习惯这个操作,因为一贯的传统和一直以来的版本都是双击打开项目中的文件。

既然以前是这样,现在改了那么一定有设置的地方,作为微软这样人性化设计的公司一定有回旋和适应的操作。没错,花了几分钟确实找到了:

b90e7bec54e736d125f5cc3d99504fc2d5626924

from:http://hi.baidu.com/jiang_yy_jiang/item/d960411afb71bc3ab83180f1

修改远程桌面端口

龙生   28 Mar 2014
View Details

安装Ecshop首页出现报错:Only variables should be passed by referen

出现下面这就话:

龙生   27 Mar 2014
View Details

中国各省人口排名(2013)

龙生   27 Mar 2014
View Details

郑州地铁规划

龙生   27 Mar 2014
View Details

一个程序员在卖软件服务中学到的销售经验

干了将近7年的软件开发,我开发实现了很多有趣的东西。最近,我开始投身销售,研究营销技术——为了我的新应用。 我感到发现客户并理解他们的消费行为是一件非常有挑战性的事情,同时也有很多的乐趣。程序员对销售的典型态度要么认为它不重要——这是最好的情况,最坏的 情况是根本不知道何为销售。在这里我要讲的是非常不同的另一面,希望能带来一些能让大家兴奋的建议。如果你喜欢这些建议,我将会再写一篇。 下面的这些忠告都是来自我经营一个B2B服务软件的经验。也许并不是每个人都能接受,但至少从趣味性和知识性方面还是值得一读的。 销售很重要。现在就拥抱它,从长期看,掌握它会带给你好处多多,你会理解销售有多难。 如果你不愿意投入时间、投入精力去理解销售,你又如何能期望别人去施展销售技术。 掌握一些统计学知识 你已经掌握了计算机、编程、软件工程等方面的众多知识,为什么不学点新玩意? 量化所有东西。这方面我还会说到好几次。 理解你的客户,因为你是在为他们做软件。 你做的所有事情都是为客户服务,即使有些东西他们是看不到的。 犹豫的客户是已经感兴趣的客户。 接上条,犹豫的客户在你上前提供帮助时不会觉得你讨厌。 接上条,你需要做的是,帮助他们明白这款产品很适合他。 产品的价值是体现在客户眼里的。 如果你不确信你的产品是否值这个价格,要么不要卖,要么换个价格。 和人们打交道进行营销是一个终极的分布式系统。 程序员做销售有优势,因为你对产品的理解有特殊的方式。 程序员做销售有优势,因为你能穿透表象看到数据。 程序员做销售有劣势,因为你对软件的理解是一种特殊的方式。 程序员做销售有劣势,因为你能穿透表象看到数据。 用数据分析出谁应该是你交流的对象。 多交流。 多打电话。 真的,多打电话。 站在客户的立场上想问题。 用数据说话。 用图表,95%的数据都要有图表。 目前有多少试用用户?你应该知道。 有多少客户到了他们试用的最后一天?你应该知道。 明白我的意思吗?你需要十分了解你的试用用户。尽可能多的了解。 你的软件的试用期是多久?为什么是这么久? 定价非常难,你至少会能弄错一次。 听取客户对价格的议论,但对产品的价值你必须有信心。 便宜没好货。 有很多关于销售的学问,学一点。 Bruce Hardie很出色。学学他。 你的竞争对手是如何买产品的? 尝试别人的试用产品,看看别人是如何做的。 下次如果接到销售的电话,多说说。学学电话的另一端是如何工作的。 包年价效果很好,有机会就提供这样的套餐。 争取一个新客户的开销是多少? 一个新客户能给你带来多少收入? 一个客户能给你带来的经常性收入是多少? 销售很有趣。喜欢上它。 [英文原文:Sales For Engineers, 1-50 ]   from:http://www.oschina.net/news/50074/sales-for-engineers

龙生   26 Mar 2014
View Details

程序员/开发者的时间都去哪了?

对于那些不知道程序员/开发者的时间都去哪了的人,本文可能会提供一些线索。我记录了这份日志不仅是为了看看时间都花费在哪了,也是为了看看我都做了些什么,检视下自己是否偷懒了。当回顾之后,我发现花这些时间都是值得的。 作为开始,下面是我在前一阶段追踪的bug,(假设)你应该可以看到其中的错误。仅仅拿出这10行JavaScript并找到错误在哪里并不难,但要在茫茫的代码中定位这10行并证明那些就是bug,这就有一定的难度了。 如此宁静的一天。通常情况下,有三个人可能打断我工作的连贯性,因为11:30之前,我要不时的与他们通过语音或文字信息交流和讨论。把这些过程以log记录下来,实际上是对我工作的推进是有帮助的。这使得我能端坐在键盘前专注于我的工作,以免被别的问题分心。 09:50   收到了一封来自团队成员的邮件,内容是关于一些可能会产生问题的代码。我看了一下,并把目前解决不了部分整理起来。 10:10   继续昨天IE7虚拟机的下载(4gb)。 10:15   由于IE7下载的时间比较长,我趁着下载的时候,申请了TestingBot的账号。 10:20   与一名开发者Skype语音,讨论关于他新添加的功能。 10:21   由于设计师没有正确的把图片上传到网站,产生了大量的报错邮件。我花费了两天的时间让设计师掌握源代码控制软件。由于有些设计师没有Visual Studio,我也建立了一些用来存储特定内容的文件夹,这些文件夹可以自动发布问题给这些设计师。我有没有提到,无论是在测试中,镜像模拟阶段还是已发 布的产品中出现的每一个错误我都会记录下来。我认为这些设计师都应该看一看。 10:22   一名开发者要与我进行Skype语音。为了防止下载软件占据网速,而影响通信,我不得不暂停下载IE7。 10:45   完成与那名开发者的语音通信。 10:50   由于持续的退信错误,250个报错邮件不能够正常工作。我继续了IE7的下载。放弃删除报错邮件,手动连接Azune并刷新那些设计师之前没有正确上传的图片。 10:55   通过网络服务器继续测试IE7浏览器。查看日志中IE7报错的部分并找到错误发生的原因。 11:00   测试位置出现了新的错误。我发现是由于某一名开发者的原因,如果他能修复错误,测试将会继续进行。我发现缺失图片错误的原因是设计师仍然没有图片添加 到源码中。由于仍然报出大量的错误,Will不得不提醒那名设计师。查看进度服务器(设计师的乐园)上的图片,我发现设计师还是没有上传。我为设计师收集 了一份错误列表,其内容是由于缺少图片而产生的错误。我提取了这些错误,记录在一份Excel中,这里提取的仅仅是关于图片的报告。我创建了一个支持工单 (译者注:support ticket 支持工单系统),并发邮件给设计师。 11:11   回到IE7的错误上。通过查看日志,我找到了错误的原因。 11:16   在日志中找到IE7的错误并下载下来。由于文件比较大,下载花费了一点时间。 11:21   从日志中提取50个IE7的JavaScript代码错误。追踪Excel中的错误并试图减少这50行代码的错误。 11:23   发现错误出现在日志的起始处,而不是最近的记录。我对日志进行时间倒序排序并找到更多的错误。 11:26   不再查找Excel中新加入的错误,仅仅查看现在已经记录下来的。 11:30   第一个错误是无法加载谷歌的网站分析服务。原来又是那可恶的百度搜索引擎。 11:31   在开发过程中修复了下一个错误。 11:32   下一个问题发生在Mac中的FireFox浏览器。我想在上Mac需要建立一个完全单独的测试计划,因此我创建了一个支持工单。 11:35   余下的50个错误都是由于同一个Mac系统的问题,我不得不去找一些较早时间发生的错误。 11:37   在错误搜索中,用“或”取代“与”,并试着取消搜索过程,但无反应。 11:42   一封报错邮件提醒我,测试位置发现字体缺失的问题,我将此问题发邮件给设计师。 11:43   之前的搜索过程被取消,开始重新搜索。 11:45   设计师回邮件说,那些文件出现缺失并非偶然,现在问题已经解决了。 11:46   在等待下一批错误的时候,已发布产品又出现了一个不可思议的IE7错误。我用支持工单记录下了这个错误。如果当初我能有时间(5分钟),我绝不会去考虑其他错误细节。 11:50   最后,通过使用textingbot.com网站去查看IE7的错误,我现在知道为什么IE7不得不被淘汰了。除了提示一个模糊的行数、字符位置信息 和“期望一个标识符,字符串或数字”这类日志中已经有的信息,再也没有什么可用的开发工具可以帮助提供更多的错误信息了。 11:52   借助IE7测试浏览器的“查看源码(View source)”功能和之前记录错误的行数,我发现少了几行。再试一次,提示超时。我想我并没有少了那几行,因为IE7报告有一行没有 JavaScript代码,这个功能一定被行数和空白符(空格、Tab和回车)干扰了。 11:57   我刚注意到某页的中间几段JavaScript时,再次被设计师打断。通过查看这段代码,我发现它们主要负责处理移动端显示的问题。我试着直接在测试服务器上编辑这段代码,看看能不能注释掉这些错误。 12:04   不能直接编辑。由于测试服务器需要密码,网络蜘蛛程序禁止我建立索引。这意味着测试浏览器服务无法进入测试服务器。 12:06   哦!!!我进入测试服务器发现错误还在那里。哦不,测试服务器崩溃了。 12:08   重启IE7的测试并再次执行测试,日志上没有出现任何JavaScript错误。 12:09   删除那些可能有问题的代码的注释,我发现错误再次出现在日志中。接下来要缩小范围查找错误。 12:10   测试服务器又开始无反应,无法刷新页面。启动另一个服务器,并登入,我发现依然会出现错误。注释掉一些代码后,我发现错误是由于最后10行代码。为了 确定,我们将这10行代码页注释掉,发现可以运行了。我们再缩小一下范围,加一些alert函数。IE7再次崩溃。 12:26   一些尝试之后,我重启了IE7测试服务器,我发现了错误的原因。由于一段脚本代码使得IE7崩溃,我想这段代码也可以造成其他浏览器崩溃。这些代码不 算很糟糕,我也不会(太)责备设计师。但是,这些代码本来不应该在任何浏览器上运行,更确切的说,进入到产品运行的环境中。它被嵌入到那页代码的中间部 分。这属于JavaScript代码的问题,设计师用它们做一些黑客行为的事情,比如隐藏移动设备的菜单,而且这些JavaScript代码被藏在一页中 的中间部分。这些代码附近并没有放置测试代码,没人会在最初的快速浏览中发现它们。但它们带来的后果显而易见。 12:30 我在源代码中修复了这个bug,并记录下这个过程。接着,我开始解决其他IE7的bug。它们是。。。 12:34   我意识到,我必须将这段经历告诉开发团队,因为他们都可能会写上面那种代码(除了IE7,哪里都可以运行),而且仍然有相当多的用户在使用着这个功能。 […]

龙生   26 Mar 2014
View Details
1 320 321 322 413