当前位置:  编程技术>WEB前端
本页文章导读:
    ▪CSS读书笔记(二)      浏览器常见bug以及修复。1.双外边距浮动bug  最常见的bug是IE 6和更低版本中的双边距浮动bug,这个bug使任何浮动元素上的外边距加倍。  修复:display:inline2.  3像素文本偏移bug  IE5和.........
    ▪javascript,将一个函数作为另一个函数的返回值。      假设我们用一个数组保存一组学生的基本信息。var studentsData = [{name:"mike",age:17}, {name:"loren",age:16}, {name:"frank",age:18}];现在,我们需要对这个数组按照姓名(name)字段进行升序排序,在.........
    ▪活动页和题来了(滚动抖动)        伴随着html5和css3的成熟,页面展现的越来越绚丽越吸引人,尤其体现在各大网站的专题活动上。现在写了一个简略的框框。实现思想:当滚动条滚动时,滚动到底部切换到下一屏,滚.........

[1]CSS读书笔记(二)
    来源:    发布时间: 2013-11-15

浏览器常见bug以及修复。

1.双外边距浮动bug

  最常见的bug是IE 6和更低版本中的双边距浮动bug,这个bug使任何浮动元素上的外边距加倍。

  修复:display:inline

2.  3像素文本偏移bug

  IE5和IE6上的bug,当文本与一个浮动元素相邻时,这个bug就会表现出来。例如将一个元素向左浮动,并且不希望相邻段落中的文本围绕浮动元素。你可能会在段落上应用一个左外边距。

  .myFloat{

    float:left;

    width:200px;

  }

  p{

    margin-left:200px;

  }

  如果这么做,在文本和浮动元素之间就会出现一个3像素的间隙。

  修复:

  p{

    height:1%;

    margin-left:0;

  }

  .myFloat{

    margin-right:-3px;

  }

3.IE6重复字符bug

  在某些情况下,一系列浮动元素的最后一个元素中的最后几个字符会在浮动元素下面重复出现。

  当在一系列浮动元素的第一个和最后一个元素之间有多个注释时,就会出现这个bug。前两个注释没有影响,但是在后续的每个注释会导致两个字符重复出现。所以,3个注释会导致连个重复字符,4个注释会导致4个重复字符,5个注释会导致6个重复字符。 这个bug似乎与前面的3像素bug有关。为了修复这个bug可以通过设置负的右边距从最后一个浮动元素上去掉3像素,或者使容器扩大3像素。但是,这两种方法可能在IE7中造成问题。

  修复:从HTML中删除注释

4.IE6“藏猫猫”bug

  一个浮动元素后面跟着一些非浮动元素,最后一个是清理元素,所有这些元素都包含在一个设置了背景颜色或图像的父元素中。如果清理元素碰到了浮动元素,那么中间的非浮动元素看起来消失了,隐藏到了父元素的背景颜色或图像后面,只有在刷新页面时才重新出现。

  修复:最容易的办法是去掉父元素的背景颜色或图像,但是,这常常是不可行的。另外一个办法是避免清理元素与浮动元素接触。如果容器元素应用了特定的尺寸,那么这个bug似乎就不会出现了。如果给元素指定行高,这个bug也不会出现。最后,将浮动元素和容器元素的position属性设置为relative也会减轻这个问题。

5.相对容器中的绝对定位

  IE6和更低版本在使用这个技术时会有许多bug。原因在于相对定位的元素没有获得IE的内部hasLayout属性。因此,它们不创建新的定位上下文,所有绝对定位元素相对于视口进行定位。

  修复:使相对定位的容器拥有布局,一种方法是在容器上显式设置width和height。在不知道高宽的情况下可以使用条件注释过滤IE5 IE6,为容器提供一个任意高度。

  .container{

    height:1%;

  }

本文链接


    
[2]javascript,将一个函数作为另一个函数的返回值。
    来源:    发布时间: 2013-11-15

假设我们用一个数组保存一组学生的基本信息。

var studentsData =
[{name:"mike",age:17},
{name:"loren",age:16},
{name:"frank",age:18}];

现在,我们需要对这个数组按照姓名(name)字段进行升序排序,在这个场景内,使用数组的sort(compareFunction)方法进行排序,该方法的参数是一个比较函数。

比较函数接收两个参数,如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等则返回0,如果第一个参数应该位于第二个之后则返回一个正数。

以下为按照name字段进行排序:

function compareFunctionByName(object1,object2){
var value1=object1["name"];
var value2=object2["name"];
if(value1<value2){
return -1;
}else if(value1==value2){
return 0;
}else{
return 1;
}
};


studentsData.sort(compareFunctionByName);

结果:

frank
loren
mike

 

这样的排序写法简单有效,但是,如果此时需求发生变换,除了name外还需要对学生的age进行排序时,一般的做法是另外写一个按照age字段进行排序的比较函数,然后在调用的地方作个条件判断,决定使用哪一个版本的比较函数,如下。

function compareFunctionByAge(object1,object2){
var value1=object1["age"];
var value2=object2["age"];
if(value1<value2){
return -1;
}else if(value1==value2){
return 0;
}else{
return 1;
}
};

上面的写法工作的很好,但是两个版本的比较函数除了比较字段的不同外,其余部分均相同,如果又增加了对其他字段进行排序需求的话,代码的冗余度大大增加,而且代码会越来越丑陋。

 

当这种场景发生时,我们就需要用到js函数中一个非常有用的特性:将一个函数作为另一个函数的返回值。

具体作法,写一个生成函数,该生成函数根据字段名生成相应版本的比较函数,并将比较函数返回作为sort方法的参数。

如下:

function createCompareFunction(fieldName){
return function(object1,object2){
var value1=object1[fieldName];
var value2=object2[fieldName];
if(value1<value2){
return -1;
}else if(value1==value2){
return 0;
}else{
return 1;
}
};
}

//按照name字段进行排序
studentsData.sort(createCompareFunction("name"));

//按照age字段进行排序
studentsData.sort(createCompareFunction("age"));

如此便解决了高冗余度的问题,并且通用性良好。

 

javascript函数的这一特性在实际中应用点很多,继续挖掘中。。。

^_^。

本文链接


    
[3]活动页和题来了(滚动抖动)
    来源:    发布时间: 2013-11-15

 

 伴随着html5和css3的成熟,页面展现的越来越绚丽越吸引人,尤其体现在各大网站的专题活动上。

现在写了一个简略的框框。

实现思想:
当滚动条滚动时,滚动到底部切换到下一屏,滚动到顶部时切换到上一屏。
点击按钮时滚动到对应的屏。

代码简略:

1、滚动条滚动方向,-1向下,1向上,注意:如用ie,请用ie9以上的浏览器看效果。

document.addEventListener(mousewheel,function(e){
e = e || window.event;
if(!isFirefox){
direct = e.wheelDelta>0?-1:1;
}
else{
direct = e.detail<0?-1:1;
}
},false);

2、滚动到那一屏

$(document).scroll(function(){
rollH = $(this).scrollTop();
if(islock){
if((rollH===docH-winH) && (direct === 1 )){
num++;
if(num>5){
num = 5;
return;
}
if(!((num===5)||(num===0))){
islock = false;
}
running(num);
}
else if((rollH ===0)&&(direct === -1)){
num--;
if(num<0){
num = 0;
return;
}
if(!((num===5)||(num===0))){
islock = false;
}
running(num);
}
}
});

3、切换滚动,在切换那一时刻,将滚动条隐藏,结束后再显示。除了第一屏外,其他的屏都是距离顶端有1px距离。

var islock = true;
test.animate({"left":"0px","top":"0px"},500,function(){
$(document).scrollTop(0);
setTimeout(function(){
islock=true;
$(document).scrollTop(1);
$("body").removeClass("bodyon");
},500);
});

运行代码

 


    
最新技术文章:
▪css white-space:nowrap属性用法(可以强制文字不...
▪IE里button设置border:none属性无效解决方法
▪border:none与border:0使用区别
▪html清除浮动的6种方法示例
▪三个不常见的 HTML5 实用新特性简介
▪css代码优化的12个技巧
▪低版本IE正常运行HTML5+CSS3网站的3种解决方案
▪CSS Hack大全-教你如何区分出IE6-IE10、FireFox、Chr...
▪ie6,ie7,ie8完美支持position:fixed的终极解决方案
▪小技巧处理div内容溢出
▪html小技巧之td,div标签里内容不换行
▪纯CSS实现鼠标放上去改变文字内容
▪li中插入img图片间有空隙的解决方案
▪CSS3中Transition属性详解以及示例分享
▪父div高度不能自适应子div高度的解决方案
▪告别AJAX实现无刷新提交表单
▪从零学CSS系列之文本属性
▪HTML 标签
▪CSS3+Js实现响应式导航条
▪CSS3实例分享之多重背景的实现(Multiple background...
▪用css截取字符的几种方法详解(css排版隐藏溢...
▪页面遮罩层,并且阻止页面body滚动。bootstrap...
▪CSS可以做的几个令你叹为观止的实例分享
▪详细分析css float 属性以及position:absolute 的区...
▪IE6/IE7/IE8/IE9中tbody的innerHTML不能赋值的完美解...
▪CSS小例子(只显示下划线的文本框,像文字一...
▪可以给img元素设置背景图
▪不通过JavaScript实现的自动滚动视差效果
▪div+CSS 兼容小摘
▪CSS的inherit与auto使用分析
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3