一些代码整理(持续更新)

  • cindy Liu
  • 12 Minutes
  • September 21, 2018

陆续更新一些常用代码片段

表格排序图标显示不出来的情况:

1
2
3
thead tr th:after {
font: normal normal normal 1.6rem/1.5 FontAwesome,sans-serif;
}

实时获取input框的值:

1
2
3
4
5
6
7
8
9
10
<input type="text" id="username" autoComplete='off'>
<div id="result"></div>

<script type="text/javascript">
$(function () {
$('#username').bind('input propertychange', function () {
console.log($(this).val());
});
})
</script>
使用bind(‘input propertychange’)会出现兼容性问题,使得只有IE以及高版本的chrome有效,因此改成如下
1
2
3
$('#username').change(function () {
console.log($(this).val());
}

微信浏览器下出现软键盘页面变形时解决办法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script type="text/javascript"> 

var clientHeight = document.body.clientHeight;
var _focusElem = null; //输入框焦点 //利用捕获事件监听输入框等focus动作

document.body.addEventListener("focus", function(e) {
_focusElem = e.target || e.srcElement;
}, true); //因为存在软键盘显示而屏幕大小还没被改变,所以以窗体(屏幕显示)大小改变为准

window.addEventListener("resize", function() {
if(_focusElem && document.body.clientHeight < clientHeight) { //焦点元素滚动到可视范围的底部(false为底部)
_focusElem.scrollIntoView(false); } });

</script>

未来元素绑定事件

weui的picker组件,点击完成跳转页面,与此同时点击遮罩层不触发该事件 于是只能获取a标签 来添加点击事件,由于此处的a标签是个未来元素,因此不能用一下写法

1
2
3
$('.picker-button').click(funciton(){
...
})

改为:

1
2
3
$('body').delegate('.picker-button', 'click', function () {
...
})

用 CSS 实现元素垂直居中

不知道自己高度和父容器高度的情况下, 利用绝对定位只需要以下三行:
1
2
3
4
5
6
7
8
9
10
parentElement{
position:relative;
}

childElement{
position: absolute;
top: 50%;
transform: translateY(-50%);

}
若父容器下只有一个元素,且父元素设置了高度,则只需要使用相对定位即可
1
2
3
4
5
6
7
8
9
parentElement{
height:xxx;
}

.childElement {
position: relative;
top: 50%;
transform: translateY(-50%);
}

Flex 布局:

不考虑兼容老式浏览器的话,用Flex布局简单直观一劳永逸:

1
2
3
4
5
parentElement{
display:flex;/*Flex布局*/
display: -webkit-flex; /* Safari */
align-items:center;/*指定垂直居中*/
}

跨浏览器的事件处理程序

要保证处理事件的代码在大多数浏览器下一致地运行,只需关注冒泡阶段。
(以下代码最好记下来)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
var EventUtil = {
addHandler: funciton(element, type, handler){
if(element.addEventListener){
element.addEventListener(type, handler, false)
}else if(element.attachEvent){
element.attachEvent('on'+type, handler)
}else {
element['on'+type] = handler;
}
}

removeHandler: function(element, type ,handler){
if(element.removeEventListener){
element.removeEventListener(type, handler, false)
}else if(element.datachEvent){
element.datachEvent('on'+type, handler)
}else {
element['on'+type] = null
}
}
};



//以下是调用方式
var btn = document.getElementById("myBtn")
var handler = function(){
alert("Cliked")
};
EventUtil.addHandler(btn, "click", handler)
//这里省略了其他代码
EventUtil.removeHandler(btn, "click", handler)