web

PC端开发常见问题

Posted by BY Devin on February 27, 2017

Gecko(Firedox内核) 、Webkit(Chrome内核)浏览器中图片轮播切换向左向右切换的尺寸不正确;

原因:由于代码写在ready时开始获取图片尺寸,但是Webkit中图片往往还没加载完成,所以获取的尺寸有问题;

方法:事件、函数写在onload内;

Table表格列数过多超出显示窗口时,无法实现表头在往下滚动时能固定位置;

原因:一般情况使用display:fixed脱离文本流即可,但是列数过多脱离文本流后全挤在可视窗口内导致位置全移位;

方法:可以参考datatable的fixed-header,采用两个Table实现

E7下块元素如何兼容 display:inline-block写法?

原因:在IE6、IE7中设置display: inline-block,只能保证这个div拥有块元素的特征(可设置宽度,高度等),但还是会产生换行。接下来要设置display: inline,使其不产生换行。将display:inline-block ; *display:inline;写在同一个样式内,inline-block属性是不会触发元素的layout的,因此我们还要额外加上 *zoom:1来触发layout!

方法:{ display:inline-block; *display:inline; *zoom:1}

E7下position:relative; position:absolute兼容z-index写法?

原因:因为(relative或absolute)的父元素”在渲染层次时起到了主要作用,前面的被后面的覆盖了。

方法:在每个父级中加入z-index属性即可;(由于2个正方形都已经absolute不占位置,添加的2个父级就会处于同一水平上;)

<div style="position:relative;z-index:2;">
	<div style="position:absolute;z-index:100;width:100px;height:100px;background:red;">
                这个一个大正方形;全显示;
	</div>
</div>
<div style="position:relative;z-index:1;">
	<div style="position:absolute;z-index:10;width:20px;height:20px;background:black;">
                这个一个小正方形;被遮盖;
	</div>
</div>

优化大图片加载速度?

方法:

第一种是先用原图制作一张缩略图;第二种图片延迟技术(比如向下滚动到某位置才开始加载图片)

第二种

<div style="width:400px;height:300px;position:relative;">    
     <img src="放置缩略图" style="width:100%;height:100%;"/> 
     <img src="放置原图"  style="width:100%;height:100%;position:absolute;top:0px;left:0px;"/>
 </div>

ajax异步使用html5media.js在低版本浏览器分页列表video视屏不生效;

原因:低版本浏览器在不支持video这标签时会自动转换flash方式播放,但是使用ajax异步获取的video视频无法转换,由于异步处理时html5media.js没有初始化;

方法:在html5media.js文件寻找到以下代码 // Automatically execute the html5media function on page load. DomReady.ready(html5media);放入使用ajax加载数据内容到页面上的html内;

IMG与DIV(block类型元素)下边界有距离、缝隙或空隙;

方法:img{vertical-align:bottom/middle/top;}DIV中font-size:0 ;

如何父元素绑定的事件子元素中不被继承;

方法:其实原生JS有addEventListener()第三个参数useCapture为true既是不被继承。但是这种方式在jquery里面是不可以的,由于jquery的机制不允许。如果要实现不继承可以使用event.target判断点击的元素是哪一个来实现;

<span data-wiz-span="data-wiz-span" style="font-size: 0.833rem;">$('el').on('click',function(e){
    if(e.target == '.class') return ;
})</span>

按照原理刷新会把form的值清空。所以现在目的就是让刷新后值依然存在

方法:必要条件URL中有对应的参数与参数值,在document.ready时把对应的参数值传到对应的form元素的value属性中即可。这种方式也是可以解决select元素按条件展示不同的选择内容;

解决父form标签内套一层子form在生成DOM结构必定只有父form,希望获取值子form的input值集合

方法:子form标签换成DIV标签并给一个class名(假设为.form),然后使用.serializeArray()获取DIV内的所有表单元素键值对对象;

$('.form :input').serializeArray();

IE8以下解决对象不支持“forEach or map”属性或方法;

添加附件的MapAndForEach.js 即可;