https://css-tricks.com/dom/
继续阅读 »
使用object对象来设置pdf文件的加载,兼容IE、Chrome、Firefox。
可以在data属性中设置文件的默认参数,如下文件中所示,来设置pdf阅读的初始状态。代码如下所示:
继续阅读 »
写在前面
如果你不会原生js,只会用jquery,那么你必须懂得jquery如何做性能优化。下面我总结了一些常用的,希望对大家有些帮助。
使用最新的jQuery类库
使用合适的选择器
(1) 使用id来定位DOM元素是最高效的方式,如果不能直接用id找到你需要的元素,可以考虑用find()方法。
(2) 标签选择器的性能也是不错的,它是性能优化的第二选择,因为jQuery将直接调用本地方法document.getElementByTagName()来定位DOM元素。
(3) 对于类选择器,现代浏览器和IE9+ 支持本地方法document.getElementByClassName(),而对于老的浏览器如IE8 以及以前的版
继续阅读 »
防抖(Debounce)和节流(Throttle)都是用来控制某个函数在一定时间内执行多少次的技巧,两者即相似又不同。
我们无法直接控制 DOM 事件触发频率,但我们可以在事件绑定和函数执行之间加一个控制层,所以当我们绑定 DOM 事件的时候,加上防抖或节流的函数变得特别有用。
more
看下面滚动事件的例子:
当使用触控板,滚动滚轮,或者拖拽滚动条的时候,一秒就可以触发 30 次事件。经测试,在移动设备上轻轻滚动一下,一秒可以触发 100 次之多。这么高的执行频率是你期待的吗?
早在 2011 年,Twitter 就出现了一个问题:当向下滚动页面的时候,页面会变得很卡顿。John Resig 发表了一篇博客解释这个问题
继续阅读 »
Sangmin is a Senior JavaScript developer working at NHN and the creator of the JavaScript animation library Collie.
I use collie framework to developed some HTML5 game.
继续阅读 »
简介
D3.js(后面简称D3,官方首页https://d3js.org/)是基于JavaScript开发的一套用于数据可视化工具,项目开源在GitHub,项目排名靠前。它提供了很多API,如DOM(Document Object Model)的一些操作,绘制图形等。截止本文发表时间,D3已更新到v4,v4在v3的基础上,有了很大的改变(因为v3只支持通过svg和dom构图,所以v4在v3的基础上增加了对Canvas的支持以及API的修改),本文使用的版本为v3的API。
Hello World
html
D3.js Hello World
继续阅读 »
AngularJS中在处理controller时提供了两种语法。
* 第一种是,在DOM中使用ng-controller="TestController",这样在定义controller时需要将model绑定到$scope上。
* 另一种是,在DOM中使用ng-controller="TestController as test",这样其实是将model直接绑定到controller的实例上。
在AngularJS的官方Get Started以及各种文档中,多推荐第一种方式,导致很多人可能都不知道原来还有第二种方式,我也是最近看一篇文章时才注意到这个。那么这两种方式各有什么优劣势呢?在现实的开发中到底更推荐哪种方式呢?今天就来探究
继续阅读 »
如果用 D3 来构建一个简单的散点图,我们需要创建一些圆点(circle)来展示你的数据。当你发现 D3 并没有提供内置的方法来同时创建多个 DOM 元素时,也许你会感到惊讶,但是,等等,为什么呢?
more
当然,你可以使用 append 方法来创建单个元素:
js
svg.append("circle")
.attr("cx", d.x)
.attr("cy", d.y)
.attr("r", 2.5);
这仅仅是一个圆点,我们需要的是一系列圆点,每个圆点代表一条数据。当然你可以用 for 循环来创建,但开始之前,请看看下面官方例子中的代码:
js
svg.selectAll("circle")
继续阅读 »
作为最流行的MVVM(Model-View-View-Model)框架之一,相信大部分前端对AngularJS都不会陌生,我也一样久仰大名。不得不说,AngularJS所带来的改变是巨大的,被称为未来浏览器的模式一点也不为过,尤其是思维上的转变。
作为一个常年挥舞着jQuery去指挥无穷无尽的DOM的前端,初次接触AngularJS是有困难的,许多先贤警告我们不要在AngularJS中使用jQuery,不是没有道理的。即使AngularJS中带有jQlite对象,也仅仅是为了弥补一些地方AngularJS的局限性。AngularJS操作UI的方式与jQuery有着极大区别,在深入学习之后,我渐渐的发现了这点。过去使用jQuery的
继续阅读 »
本文翻译自liusy182
Jest框架是facebook旗下一款单元测试框架,我个人十分喜欢它,因为它自动mock这一点十分强大。然而,当它遇到问题的时候,就会经常抛出一些模糊的调用栈信息。我在网上搜索尝试找到如何debug Jest测试的方法,却很难找到有用的信息。总之,它仍然还是一个比较新的测试框架。
Jest使用虚拟DOM来运行测试。这一点不同于Karma和Jasmine(它们是利用浏览器来运行测试的)。我觉得这就会给它带来一个很大的缺点:不能使用浏览器上的调试工具来调试Jest的测试。因此,我们需要借助于Node/V8引擎自带的调试器。Node默认的调试器是完全基于命令行形式的,类似于GDB - 虽然我从来就不
继续阅读 »