杂#得闲先整理#

杂#以下内容大部分摘于网络,如有……(此处省略N个字)#

做单的时候不时会遇到说姓名,手机号码、出生地,然后要求两端对齐,这时候就要用text-align:text-justify这个属性了。设定玩text-align为justify之后,还要设定text-justify的值。之前有用过,但是对其还是不够了解。IE的取值如下:

  • auto :允许浏览器用户代理确定使用的两端对齐法则
  • inter-word :通过增加字之间的空格对齐文本。该行为是对齐所有文本行最快的方法。它的两端对齐行为对段落的最后一行无效
  • newspaper : 通过增加或减少字或字母之间的空格对齐文本。是用于拉丁文字母表两端对齐的最精确格式
  • distribute :处理空格很像newspaper,适用于东亚文档。尤其是泰国
  • distribute-all-lines :两端对齐行的方式与distribute相同,也同样不包含两段对齐段落的最后一行。适用于表意字文档
  • inter-ideograph : 为表意字文本提供完全两端对齐。他增加或减少表意字和词间的空格

该属性有严格的兼容性问题,而且在FF和chrome需要手动在汉字间插入空白或软换位标签才生效。

在网络上面找到一段究极方案(测试有效)

.test1 {
      text-align:justify;
      text-justify:distribute-all-lines;/*ie6-8*/
      text-align-last:justify;/* ie9*/
      -moz-text-align-last:justify;/*ff*/
      -webkit-text-align-last:justify;/*chrome 20+*/
  }
  @media screen and (-webkit-min-device-pixel-ratio:0){/* chrome*/
      .test1:after{
          content:".";
          display: inline-block;
          width:100%;
          overflow:hidden;
          height:0;
      }
  }

 原理不懂,拿来用再说。

##########5-15##########

一般我们在JS中添加事件,是这样子的

obj.onclick=method

这种绑定事件的方式,兼容主流浏览器,但如果一个元素上添加多次同一事件呢?

obj.onclick=method1;
obj.onclick=method2;
obj.onclick=method3;

如果这样写,那么只有最后绑定的事件,这里是method3会被执行,这个时候我们就不能用onclick这样的写法了,主角改登场了,在IE中我们可以使用attachEvent方法

//object.attachEvent(event,function);
btn1Obj.attachEvent("onclick",method1);
btn1Obj.attachEvent("onclick",method2);
btn1Obj.attachEvent("onclick",method3);

使用格式是前面是事件类型,注意的是需要加on,比如onclick,onsubmit,onchange,执行顺序是

method3->method2->method1

由于IE8以及更早的版本不支持addEventListener()函数,因此需要一个标准的函数把这些差异性做封装

function addListener(target,type,handler) {
    if (target.addEventListener) {
        target.addEventListener(type,handler,false);
    } else if (target.attachEvent) {
        target.attachEvent("on"+type,handler);
    } else {
        target["on"+type] = handler;
    }
}

去掉事件写法:

removeEventListener(type,handler,false);

detachEvent("on"+type,handler)

##########5-16##########

js获取css值(兼容FF、IE)

用obj.style.attr来获取样式的时候,只能获取到该标签里面style的行内样式,并不能满足需求,为了获取到最终使用的CSS属性值,这里使用getComputedStyle和currentStyle来获取

getComputedStyle是一个可以获取当前元素所有最终使用的CSS属性值。返回的是一个CSS样式声明对象([object CSSStyleDeclaration]),只读。

语法如下:

var style = window.getComputedStyle("元素", "伪类");

例如:

var dom = document.getElementById("test"),
    style = window.getComputedStyle(dom , ":after");#提示下:Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1) 之前,第二个参数“伪类”是必需的(如果不是伪类,设置为null)#
currentStyle是IE浏览器自娱自乐的一个属性,其与element.style可以说是近亲,至少在使用形式上类似,element.currentStyle,差别在于element.currentStyle返回的是元素当前应用的最终CSS属性值(包括外链CSS文件,页面中嵌入的<style>属性等)。

getPropertyValue方法可以获取CSS样式申明对象上的属性值(直接属性名称),例如:

window.getComputedStyle(element, null).getPropertyValue("float");

如果我们不使用getPropertyValue方法,直接使用键值访问,其实也是可以的。但是,比如这里的的float,如果使用键值访问,则不能直接使用getComputedStyle(element, null).float,而应该是cssFloatstyleFloat,自然需要浏览器判断了,比较折腾!

使用getPropertyValue方法不必可以驼峰书写形式(不支持驼峰写法),例如:style.getPropertyValue("border-top-left-radius");

兼容性
getPropertyValue方法IE9+以及其他现代浏览器都支持,见下表:

 ChromeFirefox (Gecko)Internet ExplorerOperaSafari
基本支持 支持 支持 9 支持 支持

OK,一涉及到兼容性问题(IE6-8肿么办),感觉头开始微微作痛了~~,不急,IE自由一套自己的套路,就是getAttribute方法。

八、getPropertyValue和getAttribute

在老的IE浏览器(包括最新的),getAttribute方法提供了与getPropertyValue方法类似的功能,可以访问CSS样式对象的属性。用法与getPropertyValue类似:

style.getAttribute("float");

注意到没,使用getAttribute方法也不需要cssFloatstyleFloat的怪异写法与兼容性处理。不过,还是有一点差异的,就是属性名需要驼峰写法,如下:

style.getAttribute("backgroundColor");

如果不考虑IE6浏览器,貌似也是可以这么写:

style.getAttribute("background-color");


posted @ 2013-05-13 15:36  KEVIN_葉  阅读(244)  评论(0编辑  收藏  举报