js小问题集
以下是针对我遇到的各种细节点,觉得有必要熟悉和常用的集合。
大体包括 js格式化,css效果,html输出等。比较零散却实用,避免有同遭遇的同学踩坑。
1.jquery锚点跳转
(function() {
//如果已经有锚点了则判断该锚点是否存在,再滚动
if (location.hash) {
var target = $(location.hash);
if (target.length == 1) {
var top = target.offset().top - 99;
if (top > 0) {
$('html,body').animate({
scrollTop: top
},500);
}
}
}
//针对a链接中带#号的点击
$('a[href*=#]').on("click", function() {
var target = $(this.hash);
if (target.length) {
var vtop = target.offset().top;
$('html,body').animate({
scrollTop: vtop - 99
},500);
return false;
} });
})();
2.css loading效果,适合一张loading图式加载页面
.loading {
display: none;
position: fixed;
z-index: 99999;
top: 0;
left: 0;
height: 100%;
width: 100%;
background: rgba( 255, 255, 255, .8 ) url('../Images/loading.gif') 50% 50% no-repeat;
}
3. css垂直居中的办法
设置div属性为table,子内容为table-cell,vertical-align:middle,此方法是最常见的,兼容性较好,偶尔在低版本会出现问题。建议使用。
Content goes here
#wrapper{display: table;}#cell{ display: table-cell; vertical-align: middle;}
ps:还有几个办法,有时间则另开专题阐述。
4.js判断浏览器是否为IE8以下
var lessThenIE8 = function () {
var UA = navigator.userAgent,isIE = UA.indexOf('MSIE') > -1,
v= isIE ? /\d+/.exec(UA.split(';')[1]) : 'no ie';
return v <= 8;
}();
5. php下使用basename在中文目录下使用会出现问题,可使用下面的函数代替。
function get_basename($filename){
return preg_replace('/^.+[\\\\\\/]/', '', $filename);
}
6.bootstrap 下的遮罩层默认是显示在顶部,如需要垂直居中,可参照如下方法。以下是针对设备在768px以上显示。
.modal {
text-align: center;
}
@media screen and (min-width: 768px) {
.modal:before {
display: inline-block;
vertical-align: middle;
content: " ";
height: 100%;
}
.modal-dialog {
display: inline-block;
text-align: left;
vertical-align: middle;
}
}
7.html下textarea下设置默认换行,可用 来代替 \r\n
8.js 小数转百分比:
var a=0.34;
return a.toFixed(2).slice(2,4)+"%";
9.js计算滚动条宽度,主要原因是因为:在pc浏览器中,滚动条会占位元素的内边距和内容区域,而在移动浏览器中,滚动条是不占位,且自动显隐的,因此,在全屏或者元素做滚动的情况下不能忽视此问题。
function getScrollbarWidth() {
var oP = document.createElement('p'),
styles = {
width: '100px',
height: '100px',
overflowY: 'scroll'
},
i,
scrollbarWidth;
for (i in styles) oP.style[i] = styles[i];
document.body.appendChild(oP);
scrollbarWidth = oP.offsetWidth - oP.clientWidth; //根据新生成的dom中的偏移宽度和使用宽度计算出滚动轴宽度
oP.remove();
return scrollbarWidth;
}
10.html下table表头固定,某些需求需要将table下的表头固定在顶部,即滚动内容的时候标题仍置顶,一般情况下是通过js来实现,新生成一个table,并填充现有的标题。再用css覆盖在旧的标题上面。如下是html标签实现,需注意宽度问题。https://output.jsbin.com/AjiJIGA/1
.table-head{padding-right:17px;background-color:#999;color:#000;}
.table-body{width:100%; height:300px;overflow-y:scroll;}
.table-head table,.table-body table{width:100%;}
<col />
<col />
参照效果:https://jsfiddle.net/13ugu4fm/