CSS
1- 制作小三角
利用没有宽度和高度只有border的元素,当border-top-color是有颜色,其他边都是透明色就有三角。

1 | <div class="con">123</div> |
如果三角是朝右的,只需修改边框颜色为border-color: transparent #fff transparent transparent;
2- 带有文字的圆形图标
因为图形内有文字,可以考虑使用border-radius 和 绝对定位
除了圆形图标之外,利用border-radius可以制作各种形状的小图标
1 | .close { |
3 - 三角按钮
主要利用了 transform 的 rotate属性

1 | .right span { |
4 - 遮罩层
使用before等元素
使用固定定位
当我们需要给某个盒子设置遮罩层的时候,可以在盒子内设置一个div 这个div是固定定位至盒子的最顶端,然后这个div是占满整个盒子,最后使用z-index把遮罩层设置到盒子的下面。
1 | .bc { |
JS
1- 奇数次点击打开,偶数次点击关闭
1 | var flag = 0; //这个flag放在函数外部,只执行一次 |
2 - 双击某元素(带有文字),出现一个文本框,可以通过文本框修改某元素内的文字。
- 双击文字的时候,在里面生成一个文本框,
- 当失去焦点或者按下回车然后把文本框输入的值给原先元素即可。
1 | $("ul , ol ").on("dblclick", "p", function() { |
3 - dom元素添加html标签
传统做法可以先创建元素,然后追加,但是当需要添加很多html标签时候就很麻烦。因此可以使用 element.insertAdjacentHTML()
方法。
insertAdjacentHTML()
方法将指定的文本解析为 Element 元素,并将结果节点插入到DOM树中的指定位置。
1 | element.insertAdjacentHTML(position, text); |
- position是插入的位置
- text是插入的文本,String型
算法的优化
1) x && F(x)
x && F(x) 是当x本身就是false不存在的时候,就不会执行后面的F(x),这样显然提高了效率,比如下面这个
1 | index--; |
2) return 直接跳出当前函数 (在 if 的分支里面用效果比较好)
如下在某个函数里面,如果文档中没有这个‘active’类,那么就要执行很多代码,可是如果有这个类,就不需要执行了,此时一个return解决了我们的燃眉之急。
1 | function(){ |
return 三元表达式代替仅有if … else … 的函数
1 | yd: function(flag) { |
3 ) 手动调用事件
比如我们在函数A里,接下来的运行效果和已经写好的函数B相同,那么我们在A里面可以直接调用B函数,减少了代码量。
1 | this.onclick()//手动调用我们的点击事件 不需要鼠标触发 |
4) some方法
首先some()方法的效率非常高,尤其数据很多的时候,some的使用条件:当我们检索某个唯一值(需要遍历数组)的时候,可以使用some() 方法,因为some检索到检索值之后,就会终止循环。
some()通常是 return value == 检测值;
来结束循环条件,但是我们可以根据需求,自动设置返回值。比如下面这段代码,可以获取到检索值同时还能结束循环条件
1 | data.some(function(value) { |
5)三元表达式
- 用于切换一个变量的两个值
1 | toggleLoginType: function() { |