ag-grid介绍
- 号称世界上最好的HTML5表格
- 支持绝大多数主流框架: 原生JavaScript/Angular/React/Vue/AngularJS/Polymer/Aurelia/Web Components
- 社区版和商业版,主要功能开放为社区版,商业版支持增强特性
localStorage、sessionStorage、cookie和session的优缺点
文章翻译自stackoverflow上的一个问题: what-is-the-difference-between-localstorage-sessionstorage-session-and-cookies
现在是2018年,前端开发中层出不穷的框架和新技术,如何能入门前端开发?
这个专栏就是为了这个问题而产生的,把握住不变的要点,然后去适应这个变化的前端世界。
AngularJS 1.x平滑升级Angular实战(翻译)
本文翻译自Directly Upgrading From AngularJS 1.X To Angular Without Preparing The Existing Code Base
正文:
当我们从AngularJS 1.x升级到Angular(2/4/5)时,我们通常会先准备AngularJS 1.x的代码:
这个过程会引入像组件这类新的AngularJS 1.x技术。并且,引入TypeScript和像SystemJS或者Webpack之类的模块加载器是准备已有代码的进一步工作。这样做的目的是为了让代码更接近Angular便于更好的集成。
但是,在一些情况下,准备已有的代码成本很大。例如,试想一下这样的情形,当你不想修修改已有的AngularJS1.x的代码,并且想要写一些Angular的应用。当这样的情况在你的项目中发生,跳过准备阶段是一个好的主意。
这篇文章一步步展示如何完成这个过程。像官方的升级教程一样,包含准备代码的工作,这里也是升级流行的AngularJS 1.x 手机分类实例。
即使这个实例覆盖了AngularJS 1.5中引入的组件,这里展示的对使用控制器(controller)和指令(directive)的代码也适用。
整个实例代码可以在Github 仓库中找到。为了接下来每一步更容易,我针对每一步做了一个代码提交。
记录JavaScript中创建对象的几种方法。
工厂模式是一种设计模式,抽象创建具体对象的过程,用函数来封装特定接口并创建对象的细节。
实例:
1 | /* 工厂模式 */ |
优点:
解决创建多个相似对象。
缺点:
没有解决对象识别的问题。
设计导航菜单的过程中,有时候会涉及到二级子菜单,外部的或者是内部页面页面的跳转,这个时候,锚点可能会派上场。
其中使用锚点进行页面的各部分内容跳转,有时候页面的导航栏是使用固定定位(fixed)的布局,可能会导致标题遮挡部分跳转后的内容,因此,需要对锚点调整后的位置进行偏移。
通过使用css实现锚点跳转后的位置调整:
定义一个class:
1 | .named-target { |
将这个class赋给锚点或者锚点后的元素即可。
字面上的原理可以理解为元素外边距向上移动了50像素,使用上内边距给抵消了。
内在的原理,我还没理解,待理解了再更新。
css布局经历了使用table和float布局的过程,W3C推出了flexbox的布局方式。
使用div或者其他标签作为容器,用于放置其他子元素。
嵌套在容器中的直接元素自动转为flex item,子元素的子元素便不是flex item。
1 | <!-- html part --> |
i18next的jquery插件jquery-i18next的使用方法
使用jquery-i18next插件前,需要jquery和i18next的支持。
jquery-i18next支持npm和bower安装
1 | # npm package |
1 | <ul class="nav"> |
可在源码路径下创建locales/en/translation.json文件
1 | { |
1 | // 其中i18nextInstance是i18next的实例,最后一个参数是配置项 |
最终展现在网页中的结果
1 | // <ul class="nav"> |
通过jQuery的选择器来实现不同的翻译
1 | <a id="btn1" href="#" data-i18n="myKey"></a> |
1 | <ul class="nav"> |
1 | <div class="outer" data-i18n="ns:key" data-i18n-target=".inner"> |
比如,想要设置某个元素的title属性的多语言,可使用这种方式;或者其他提示信息等。
1 | <a id="btn1" href="#" data-i18n="[title]key.for.title"></a> |
和设置单个属性类似,不过通过分号进行分隔,添加多个属性。
1 | <a id="btn1" href="#" data-i18n="[title]key.for.title;myNamespace:key.for.text"></a> |
1 | <a id="btn1" href="#" data-i18n="[html]key.for.title"></a> |
给一个元素原有内容前插入一些翻译文字
1 | <a id="btn1" href="#" data-i18n="[prepend]key.for.title">insert before me, please!</a> |
给一个元素原有内容后追加一些翻译文字
1 | <a id="btn1" href="#" data-i18n="[append]key.for.title">append after me, please!</a> |
1 | <a id="btn1" href="#" data-i18n="[data-someDataAttribute]key.for.content"></a> |
想要设置disabled的超链接,让用户不可点击,可添加一个class来设置。
1 | .disabled-link { |
注意:
pointer-events这个属性对浏览器兼容性有一定的要求。
IE11
Edge 14
Firefox 51
Chrome 49
Safari 10
Opera 43
【以上】
li的默认样式有几种,我们想要自定义li的样式,例如定义颜色或者显示的图标,以下是操作的两种方法。
修改的原理,取消list默认的style,并通过伪元素before来设置新的样式。
1 | ul {list-style: none} |
特殊符号的一些输入可使用Unicode编码:• = “\2022”, ◦ = \25E6” and ▪ = “\25AA”
修改的原理,通过自定义的class来区分标点和文字的颜色。
1 | .listStyle { |