Archive for the 'css' Category

纯CSS做的3D效果

下面是一个用CSS做的一个3D的效果。你可以使用鼠标在图片中移动来显示这个效果。其实,这个效果只是能过移动图片来产生的。其可以工作在Internet Explorer 8, Firefox 3, Opera 9, Safari 3, Chrome 4 和 Konqueror 3.5下。网页在这里:http://www.romancortes.com/ficheros/meninas.html

JavaScript优化细节(过多的DOM调用)

在Web开发中,JavaScript的一个很重要的作用就是对DOM进行操作。可你知道么?对DOM的操作是非常昂贵的,因为这会导致浏览器执行回流(reflow)操作。而执行了过多的回流操作,你就会发现自己的网站变得越来越慢了。我们应该尽可能的减少DOM操作。
回流操作主要会发生在几种情况下:
改变窗体大小
更改字体
添加移除stylesheet块
内容改变哪怕是输入框输入文字
CSS虚类被触发如 :hover
更改元素的className
当对DOM节点执行新增或者删除操作或内容更改时。
动态设置一个style样式时(比如element.style.width=”10px”)。
当获取一个必须经过计算的尺寸值时,比如访问offsetWidth、clientHeight或者其他需要经过计算的CSS值(在兼容DOM的浏览器中,可以通过getComputedStyle函数获取;在IE中,可以通过currentStyle属性获取)。
解决问题的关键,就是限制通过DOM操作所引发回流的次数:
1.在对当前DOM进行操作之前,尽可能多的做一些准备工作,保证N次创建,1次写入。
2.在对DOM操作之前,把要操作的元素,先从当前DOM结构中删除:
通过removeChild()或者replaceChild()实现真正意义上的删除。
设置该元素的display样式为“none”。
修改操作完成后,将上面这个过程反转过来,建议使用第2种方式。
3.CSS部分
另外一个经常引起回流操作的情况是通过style属性对元素的外观进行修改,如element.style.backgroundColor = “blue”;
每次修改元素的style属性,都肯定会触发回流操作,要解决这个问题可以:
使用更改className的方式替换style.xxx=xxx的方式。
使用style.cssText = ”;一次写入样式。
避免设置过多的行内样式
添加的结构外元素尽量设置它们的位置为fixed或absolute
避免使用表格来布局
避免在CSS中使用JavaScript expressions(IE only)
4.将获取的DOM数据缓存起来。这种方法,对获取那些会触发回流操作的属性(比如offsetWidth等)尤为重要。
5.当对HTMLCollection对象进行操作时,应该将访问的次数尽可能的降至最低,最简单的,你可以将length属性缓存在一个本地变量中,这样就能大幅度的提高循环的效率。

css sprite

CSS Sprites是一种网页图片应用处理方式。它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢慢显示出来了。对于当前网络流行的速度而言,不高于200KB的单张图片的所需载入时间基本是差不多的,所以无需 顾忌这个问题。
  按照yahoo的rules for high performance web sites的原则,应当较少Client与Server端间 的HTTP Request次数。通过CSS Sprites方法将多张图片组装成单独的一张图片,可以有效减少HTTP请求 的次数。
  当整幅图片载入完成后,你就可以使用CSS方法通过设置背景位置的方式完成所需图片的准确调用。
  加速的关键,不是降低重量,而是减少个数。传统切图讲究精细,图片规格越小越好,重量越小越好,其实规格大小无所谓,计算机统一都按byte计算。客户端每显示一张图片都会向服务器发送请求,所以,图片越多请求次数越多,造成延迟的可能性也就越大。

firefox css自动换行的实现方法

IE直接用:
word-break:break-all; /*允许词内换行*/
word-wrap:break-word; /*内容将在边界内换行*/
/*需要注意的默认是:*/
word-wrap:normal /*允许内容顶开指定的窗口边界*/
而firefox却没有很好的实现办法 ,一个折中方案就是使用滚动条,但网上也提出了一种用js来判断换行的办法,这里摘录下(转自网络,特此说明)。 JavaScript复制代码
<script type=”text/javascript”>
function toBreakWord(intLen, id){
var obj=document.getElementById(id);
var strContent=obj.innerHTML;
var strTemp=””;
while(strContent.length>intLen){
strTemp+=strContent.substr(0,intLen)+”<br>”;
strContent=strContent.substr(intLen,strContent.length);
}
strTemp+= strContent;
obj.innerHTML=strTemp;
}
</script>
注:以上脚本放在</head>前面.
同个页面单处调用:
<div id=”content”>这里是要应用换行的内容</div><script type=”javascript”>toBreakWord(60, “content”);</script>
同个页面多处调用:
<div id=”content”>这里是要应用换行的内容</div><script type=”javascript”>toBreakWord(60,”content”);</script>
<div id=”content2″>这里是要应用换行的内容</div><script type=”javascript”>toBreakWord(60,”content2″);</script>
注:把应用的JS写在</div>后面,其中60表示一行要显示多少字字符,注意多个调用时ID的相应变化,不能同一个ID名称,应用上面的方法后IE也会是按设定的字符数换行,但是IE里面支持自动换行,所以只要判断一下是否为IE,如果不是IE就不要输出上面的 XML/HTML复制代码
<script language=”javascript”>toBreakWord(60, “content”);</script>
这段JS,如果不是就要输出。代码未经测试,偶只看了思路,有需要的自己去调试吧!有错误给我留言。
本文来自: 脚本之家(www.jb51.net) 详细出处参考:http://www.jb51.net/article/15423.htm

css首行缩进

text-indent:2em;

CSS实现段落首行缩进

段落前面空两个字的距离,不要再使用空格了。应该使用首行缩进text-indent。
  text-indent可以使得容器内首行缩进一定单位。比如中文段落一般每段前空两个汉字。
  在这里我们需要了解一种长度单位em。em是相对长度单位。相对于当前对象内文本的字体尺寸。
  我们中文段落一般每段前空两个汉字。实际上,就是首行缩进了2em。
  看下面的例子:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>PHP资讯 - www.mcder.com</title>
<style type=”text/css”>
p{text-indent: 2em; /*em是相对单位,2em即现在一个字大小的两倍*/}
</style>
</head>
<body>
<p>段落前面空两个字的距离,不要再使用空格了。应该使用首行缩进text-indent。长度单位em。相对于当前对象内文本的字体尺寸。我们首行缩进了2em。2em即现在一个字大小的两倍。我在网页教学网学到了好多新的知识</p>
</body>
</html>
  顺带说下text-indent属性隐藏文字的问题
  链接用图片做背景,text-indent:-9999px; 隐藏文字,此效果在 IE 中是正常的,但在 Firefox 里,鼠标点击该链接时,虚线框却会包住被缩进的文字,结果显示为虚线框 N 长。
  因为平时是用overflow:hidden; 属性的,所以一直也没有注意到这个问题的存在,但当你需要使用 JS 来实现某种交互时,强烈建议不要使用 overflow:hidden; 属性,因为会给你带来很多意想不到的麻烦。
  虚线框,其实就是 CSS 中的 outline 属性,这也说明 IE 和 Firefox 对于 outline 和 border 的解析范围并不一致:IE 认为虚线框就是border的边缘,而 Firefox 则认为虚线框应该是文字范围