DIV+CSS布局中常见的10大错误

时间:2009-04-11 21:08来源:网络 作者:秩名 点击: 5次

如果遇到什么问题,请到ajax技术论坛寻求帮助,我们会尽量解答您提的问题。
  

CSS+DIV是网站标准(或称“WEB标准”)中常用的术语之一,通常为了说明与HTML网页设计语言中的表 格(table)定位方式的区别,因为XHTML网站设计标准中,不再使用表格定位技术,而是采用css+div的方式实现各种定位。应用应用 DIV+CSS编码时很容易犯一些错误。本文列举了一些常见的错误:

  1. 检查HTML元素是否有拼写错误、是否忘记结束标记

  即使是老手也经常会弄错div的嵌套关系。可以用dreamweaver的验证功能检查一下有无错误。

 


  2. 检查CSS是否正确

  检查一下有无拼写错误、是否忘记结尾的 } 等。可以利用CleanCSS来检查 CSS的拼写错误。CleanCSS本是为CSS减肥的工具,但也能检查出拼写错误。

  3. 确定错误发生的位置

 

  如果错误影响了整体布局,则可以逐个删除div块,直到删除某个div块后显示恢复正常,即可确定错误发生的位置。

  4. 利用border属性确定出错元素的布局特性

 

 

  使用float属性布局一不小心就会出错。这时为元素添加border属性确定元素边界,错误原因即水落石出。

  5. float元素的父元素不能指定clear属性

 

  MacIE下如果对float的元素的父元素使用clear属性,周围的float元素布局就会混乱。这是MacIE的著名的bug,倘若不知道就会走弯路。

  6. float元素务必指定width属性

  很多浏览器在显示未指定width的float元素时会有bug。所以不管float元素的内容如何,一定要为其指定width属性。

  另外指定元素时尽量使用em而不是px做单位。

 

  7. float元素不能指定margin和padding等属性

 

 

  IE在显示指定了margin和padding的float元素时有bug。因此不要对float元素指定margin和padding属性(可以在float元素内部嵌套一个div来设置margin和padding)。也可以使用hack方法为IE指定特别的值。

  8. float元素的宽度之和要小于100%

 

  如果float元素的宽度之和正好是100%,某些古老的浏览器将不能正常显示。因此请保证宽度之和小于99%。

 

  9. 是否重设了默认的样式?

  某些属性如margin、padding等,不同浏览器会有不同的解释。因此最好在开发前首先将全体的margin、padding设置为0、列表样式设置为none等。

 

 

  10. 是否忘记了写DTD?

 

  如果无论怎样调整不同浏览器显示结果还是不一样,那么可以检查一下页面开头是不是忘了写下面这行DTD:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

 

posted @ 2009-04-12 22:51 silverPerson 阅读(143) 评论(0) 编辑

转载自:http://www.360doc.com/content/090305/19/15822_2721806.html

首先看一下IDE方面的改进:
1)javacscript html css 智能感知,这个功能还是比较期待的
2)javascript调试功能
3)html编辑器在源文件和设计的基础增加split查看方式,这样就可以边改源文件边查看效果了
4)智能感知方面,在可选列表可见状态下按下Ctrl键,可以使列表透明,以查看被遮盖的部分,松开Ctrl后继续进行选择。
5)在创建项目之前,可以选择.net framework 的版本。这样,在使用vs 2008 强大IDE 的同时,可以创建 .基于net fx2.0 或 .net fx 3.0 的项目,而不用切换到vs2005下面。 

重要的还是语言特性方面的改进:
1)扩展方法:
     扩展方法允许编程人员在静态类上编写自己的方法,以扩充静态类的功能。
     比如我们可以写这样一个方法:
     public static bool IsPrime(this int integer)
     {
           if(integer == 1)
            {
                   return false;
            }
            for(int 2;i <= Math.Sqrt(integer); i++)
            {
                    if(integer == 0)
                           return false; 
             }
             return true;
      }
之后就可以这么写:
      int 1798517;
      if(i.IsPrime())
      {
              Console.WriteLine(i);
      

注意 static 和 this  关键字。这样做可以使程序更符合人的思维,更接近自然语言。看我们现在是怎么做的:
定义一个MyUtils类:
Class MyUtils
{
       public bool IsPrime(int integer)
       {
           if(integer == 1)
            {
                   return false;
            }
            for(int 2;i <= Math.Sqrt(integer); i++)
            {
                    if(integer == 0)
                           return false; 
            }
             return true;
      }
}
使用:
MyUtil mu new MyUtil();
bool flag mu.IsPrime(12517)
if(flag)
{
 ......
}
2) lambda表达式
.net 2.0 引进了匿名方法,.net 3.5进一步引进了lambda表达式来简化。
lambda表达式允许这样写:
IEnumerable <Book> cheapBooks books.where(b => b.Price <=50)
(where 关键字是下面要提到的Linq中提供的功能)
相应的匿名方法:
IEnumerable <Book> cheapBooks books.where(
                                                                 delegate(Book b)
                                                                 {
                                                                         return b.Price <=50;
                                                                }
                                                                );
3)Linq 语言集成查询(Language Integrated Query)
.net 3.5中增加了很多查询关键字,这样就可以直接编写查询,而不用再写sql语句。例如:
         var cheapBooks from book in books
                                 orderby book.Price 
                                 select book.Name, book.Author,book.Price
                                 where book.Price <= 50
books可以使一个数组,可以使一个集合,可以是XML文件也可以是数据库里的一个表
4)自动属性
自动属性允许编程人员在定义一个类时作如下简化:
public class Book
{
        public string Name{ getset; }
        public string Author{ get; set;        
        public int    Price{ get; set; }
}
当然也可以没有set,如果属性是只读的话。这样就免去了定义私有的 _name_author, _price及get set方法体,编译器会自动生成相应的私有变量和方法体。
5)对象初始化器,集合初始化器
在2.0中,我们这初始化一个对象;
Book book new Book();
book.Name "C# in nutshell";
book.Author "Peter Drayton";
book.Price 30;
3.5中我们可以这么写:
Book book new Book
{
        Name "C# in nutshell", Author "Peter Drayton",Price 30;
}
集合初始化器允许我们批量添加对象,而不用一条一条的用add方法添加:
List<Book> books new List<book>
{
        new Book{Name "C# in nutshell", Author "Peter Drayton",Price 30;};
        new Book{Name "Ajax in nutshell", Author "Peter Drayton",Price 40;};
         new Book{Name "Python in nutshell", Author "Peter Drayton",Price 50;};
};
6)隐式本地变量
3.5中引入了var关键字,允许开发者在定义变量时不指定类型:
var  15;
var new string[] {"a","b","c","d"}
但是c#仍然是强类型的,只不过编译器是根据后面所赋的值来推断出变量的类型,因此赋值是必须的,且只能有一种类型,定义后也就不能再进行改变,它在Linq 中非常有用,能极大地简化代码
7)匿名变量
var new [] {"a","b","c","d"}
var new {Name  "xml", Author "aa",Price 50};
C# 编译器会自动生成一个完整的匿名类包括私有字段,属性,get set,还有最后的赋值语句

 

Candy.Zhai

posted @ 2009-04-12 16:55 silverPerson 阅读(83) 评论(0) 编辑