2天驾驭DIV+CSS (实战篇)(转)

 这是去年看到的一片文章,感觉在我的学习中,有不少的影响。于是把它分享给想很快了解css的兄弟们。本文是实战篇。

基础篇
[知识一] “DIV+CSS” 的叫法是不准确的
[知识二] “DIV+CSS” 将你引入两大误区
[知识三] 什么是W3C标准?
[基础一] CSS如何控制页面
[基础二] CSS选择器
[基础三] CSS选择器命名及常用命名
[基础四] 盒子模型
[基础五] 块状元素和内联元素

实战篇
[第一课] 实战小热身
[第二课] 浮动
[第三课] 清除浮动
[第四课] 导航条(上) | 导航条(下)
[大练习] 前四节课大练习
[第五课] 浮动布局之结构设计 | 浮动布局之表现设计
[第六课] 定位
[第七课] 定位应用
[第八课] CSS Hack

技巧篇
[单张图片按钮实例] 
[首行文字两文字缩进]

 
 
【第一课】实战小热身




上课了~请同学先把下面的例子根据要求做出来

    【例子】
        要求:
        1)宽度、高度均是200像素;
        2)颜色为红色#900;

        自己做做,看看能不能作出来?先不要看我的代码,如果真的做不出来,就下载下来,跟着下面说的一步一步修改。
        下面是我的代码:  【第一课】实战小热身.rar (1.24 KB, 下载次数: 4671) 

        IE6和FF显示的实际效果




        怎么样,比较容易吧~,但是你们有没有发现,红色区域离浏览器的顶部和左边的边距IE6和FF的不一样,有没有发现?这样的话,我们作出来的页面浏览器就不兼容了,效果不一样了?为什么会这样?

        这是因为每个浏览器都有一个内置的CSS文件,当你没有对某个标签的属性设置的时候,浏览器就会应用内置的CSS文件,怎么才能做到浏览器兼容?不着急,你只需要在CSS文件中,将我们目前应用到得标签body和div置零就OK了,代码这么写:

        body,div{padding:0; margin:0;}

 


        如果您对上面CSS的样式写法不熟悉,就返回去看一下“【基础二】CSS选择器”,当把这句话加上之后,是不是两款浏览器显示效果一样了~如下图




        好,我们接着来,现在再加一个条件:
        3)让红色区域与浏览器的顶部和左边距离为20像素;


        怎么样,有没有思路?没有思路没关系,继续向下看:
        我们,只需要设置红色方块的外边距就可以了,添加如下:
        CSS代码:

  1. margin-top:20px;
    margin-left:20px;

     

效果如下图:




        这样就使红色区域定位于页面坐标(20,20)处了,与浏览器上边距和左边距都为20像素。
        不过上面的这种写法我们可以精简为

        margin:20px 0 0 20px;

 



        其中的数值顺序是:上右下左。
        而margin:20px 0;则和margin:20px 0 20px 0;是等价的哟~只不过是更加精简而已,这样写CSS加载速度会更快。

        我们接着将问题延伸,怎样才能让红色区域水平定位于浏览器的正中间,无论浏览器窗口的大小,显示器分辨率的大小。
也很简单,刚刚加的两句话"margin-top:20px;margin-left:20px;"修改为:

        margin:0 auto;

 

        怎么样,有意思吧,红色区域是不是位于浏览器的正中间了~

        好~!到这里第一节课结束,是不是很简单,或者太简单了!!!如果感觉不过瘾那就赶紧学下一节!^_^

 

【第二课】浮动



页面布局有两种方式
1)浮动Float 
2)定位Position


今天就通过一个小小的练习,通过引导的方式,让大家理解
Float的含义。

【例子】
要求:
1)两个方块,一个红色#900,一个蓝色#009;
2)红色方块宽度和高度均为200像素,蓝色方块 宽度为300像素,高度为200像素;
3)红色方块和蓝色方块上外边距(margin-top)和左外边距(margin-left)均为20像素;

页面效果如下:



源代码: 【第二课】浮动 实例.rar (1.29 KB, 下载次数: 2253) 


        大家应该注意到了,虽然红色方块的宽度并不是100%,但是蓝色并未和红色处于同一行,这就是块状元素比较“霸道”的一点,(即使块状元素的宽度不是100%,它也不允许其他元素和他同在一行)为了消除这种“霸权”,让红色和蓝色方块都处在一行,如图



        此时就需要拿出我们的利器Float!只需要在红色方块的CSS里面加上“float:left;”,这时候在IE6中可以看到蓝色方块的确跑到红色方块的后面了,并且处于一行了,但是在FireFox中却变成了如下效果:



        这时候就需要注意了,FF中如果前面的区域浮动了,后面的那个区域很有可能就会和前面的区域发生重叠并错位。

        怎么才能解决这个问题,解决这个浏览器兼容的问题,很容易,只需要在蓝色方块的CSS代码中也加入“float:left;”,问题就解决了,加上试试,看看在FF中蓝色方块是不是和红色方块处于一行了~

        到这里,大家应该明白Float的作用了吧,就是为了消除块状元素“霸权主义”的一把利器!在布局页面时有时候是需要消除块状元素霸权主义才能布局好哟,比如KwooJan的博客中间内容部分,分为左边(LEFT)和右边(RIGHT),就是要用上面这个方法布局的哟,如下图




细心的同学会注意到,在IE6中红色方块距离浏览器的左边距并不是CSS代码中定义的20像素,而是40像素,如下图:



其实这是IE6的一个BUG(IE6双倍边距BUG),只要满足下面3个条件才会出现这个BUG:

        1)要为块状元素;
        2)要左侧浮动;
        3)要有左外边距(margin-left);


解决这个BUG很容易,只需要在相应的块状元素的CSS属性中加入“display:inline;”,代码如下:

#redBlock{
width:200px;
height:200px;
background:#900;
margin-top:20px;
margin-left:20px;
float:left;
display:inline;
}

 

现在再看看,是不是IE6和FF显示一样了呢~

呵呵,这节课也比较容易吧,如果大家有不明白的可以留言,我会做进一步解释。
下节课,我们讲讲“浮动清除(Clear)”问题!

最终代码: 【第二课】浮动 实例 最终代码.rar (1.31 KB, 下载次数: 2469) 

精简后的CSS代码加载更快,大家一看就明白了^_^

精简后代码: 【第二课】浮动 实例 最终代码 精简版.rar (1.45 KB, 下载次数: 3487) 

【第三课】清除浮动



        还记得第二课我们做的例子的效果么?最后效果是,红色方块和蓝色方块都处于一行,我们使用“float:left;”,打击了块状元素的“霸道”,即块状元素不允许其他元素和它处于同一行。我们将红色方块的CSS代码中加入了“float:left;”后,红色方块终于允许蓝色方块和它处于同一行。如图:




        我们换一种方法表达上面的意思,因为红色方块的“左侧浮动”,才导致蓝色方块上移至红色方块的尾后;

        在上个例子中,为了达到浏览器兼容性,我们在红色、蓝色方块CSS代码中分别加了“float:left;”,这样IE和FF中显示效果一样,如果此时我们还想放一个宽度400像素,高度100像素的绿色方块,并让其处于第二行,希望效果如下图:





可是这时候不管怎么放,在IE中的效果始终是:





        导致绿色排到蓝色的后面这种情况就是因为蓝色方块CSS代码中含有"float:left;",但是为了浏览器兼容性,又不能去掉(什么?这句话看不明白,只能说明第二节课你没有好好学,好好品味!),怎么办?
好办~!只要在CSS代码中加入下面这段代码:

        .clear{clear:both;}

并在HTML代码中加入下面代码:

        



上面这句话究竟加在哪个位置呢,要加在蓝色方块和绿色方块中间,然后看看效果是不是我们想要的了~^_^

        <div id="redBlock">博客的左侧div>
        <div id="blueBlock">博客的右侧div>
        <div class="clear">div>
        <div id="greenBlock">博客的版权信息div>

 

目的就是为了清除蓝色方块的浮动对下面绿色方块的影响!是影响哟~是清除影响,而不是清除蓝色方块的浮动,或者说清除蓝色方块的浮动对下面区域块产生的作用!(仔细品品我说的这句话!)

        如果还是不明白,你就在红色方块和蓝色方块中间加上“

”,看看效果变成什么样子,然后再品品我刚才说的话!

        这节课就到这里,下节课我们做一个导航条,很实用的哟!一定要把前三节吃透,不然第四节会跟不上理解不透!

        第三课代码:  第三课代码.rar (1.46 KB, 下载次数: 2580) 

【第四课】导航条(上)



【注】本节所有的知识点均来自“知识1、2、3”,“基础篇1、2、3、4、5”和“实战篇的前三课”,思路是本节的、知识点是原来的,如果有看不懂的地方最好返回去再巩固一下,也许看其中的某一节,你觉着简单,你真的会吗?真的能灵活运用吗?如果前面的教程你采取了一目十行的方式浏览教程,而不是学习教程,这节内容搞不好就卡在哪个前面讲过的知识点上,所以建议大家学习的时候,认真的逐句的去理解教程中的每句话!  ---厘米IT学院  KwooJan

        好,开始上课!
      
        前三节课,我们知道了什么是“块状元素和内联元素”,以及xHTML+CSS布局的核心概念“盒子模型”,同时又学习了一下页面布局中两种方法中的一种方法“浮动”,这次我们就利用这三个概念,来制作一款经典的导航条,别看它其貌不扬,可是网上所有的导航条都可以在它的基础上演变而来~,厉害吧~!其实理论都是一样的,只要你能理解并学会这节课的内容,以后再困难的导航条你都可以轻松应对,比如下面的导航条:

      

OK!我们要做的导航条的效果如下:鼠标移动上去背景变黑,并且字体颜色变成白色,


其实做这款导航条很容易的,我引导,你跟着做,这样思路慢慢就形成了~


【第一步】


        我们要先做一个容器(要求:ID为“nav”,宽度为960px,高度为35px,位于页面水平正中,与浏览器顶部的距离是30px;),这个容器就是放置我们的导航的盒子~代码如下:

HTML代码:

  1. <div id="nav">div>

     

CSS代码:

  1. #nav{
    width:960px;
    height:35px;
    background:#CCC;/*为了便于查看区域范围大小,故而加个背景色*/
    margin:0 auto;/*水平居中*/
    margin-top:30px;/*距离顶部30px*/
    }

     

还有一点需要提醒的是,为了页面在浏览器中的兼容性,不要忘记在CSS文件顶部加入标签重置代码~

  1. body,div{padding:0; margin:0;}

     

怎么样,作出来了没有,效果是不是一个灰色条(如下图),位于页面的正中间,并且所有浏览器效果一样呢~



        如果没有做出来只能说明你没有认真看前面的教程~《2天驾驭DIV+CSS》教程本身就属于经验性和技巧性高度整合的集合体,采取一环套一环的逐步引导的方式来教大家,所以要求大家对每节课都要认真去读,每句话都要认真品味,这样做出来的页面才能很好的兼容多种浏览器,并且代码高度精简,页面加载速度也大大提升!

第一步的源代码:  【第四课】导航条 - 经典导航1.rar (1.43 KB, 下载次数: 3972) 




【第二步】

        盒子做好了,我们就要往里面放导航条了,导航条的内容为“W3Cfuns、厘米学院、培训课程、我要充电、前端职业生涯、课程答疑”,如果我们把这些内容(目前有6个),当成酒杯的话,如果直接放到盒子里面的话,肯定会乱,并且还会东倒西歪,一点顺序都没有,但是我们平时会用一个隔板将每个酒杯隔开,这样就使酒杯很有序的放入盒子,并且牢稳而且防震,方便使用!现在我们把这个隔板叫做“无序列表”,起个英文名字叫:ul,里面的每个单元格我们也给起个英文名字叫“li”,大家想想里面的这个ul是不是和盒子里面的空间一样大,小了,酒杯放不进去,大了杯子就会不稳,所以我们定义ul的时候大小一定要和外面的盒子一样大,到这里,应该有点思路了吧~

HTML代码

  1. <div id="nav">
        <ul>
            <li>W3Cfunsli>
            <li>厘米学院li>
            <li>培训课程li>
            <li>我要充电li>
            <li>前端职业生涯li>
            <li>课程答疑li>
        ul>
    div>

     

CSS代码:

  1. #nav ul{
            width:960px;
            height:35px;
    }

     

效果作出来了没有,下面是在IE6和FF中显示效果(其他浏览器效果大家自己测试,总结规律):



        效果不一样,为什么?在IE6中盒子被撑大,FF中却没有,但是我们的“酒杯”却出来了,还有我们不希望我们的酒杯纵向排列,而是横向排列,怎么办呢?给大家一分钟时间想~~~

        时间到!想不出来也没关系,我们一起分析一下,首先ul是什么标签?
        是块状元素吧,ul里面的li标签也是块状元素,所以li也有块状元素的“霸道”,不允许其他元素和自己处于同一行,总共六个

  • ,所以他们六个就像台阶似的纵向排列起来了,如果想让他们横向排列,用浮动Float就可以了,可是让谁浮动呢,当然是
  • 标签喽~代码如下:

    1. #nav ul li{ float:left;}

       

    效果是不是和下面的一样呢





    大家会发现虽然“酒杯”横向排列了,但IE6和FF中的效果还是不一样的
            1)盒子(#nav)高度不一样,
            2) 在FF中“酒杯”前面有个大黑圆点,而IE6中却没有!

    解决上面这两个问题,也很容易,如下:
            1)到目前这步,用到了两个新的标签ul和li,标签ul和li有没有进行重置?只要我们在页面中新写一个标签,就要进行重置,做法是,将ul、li标签加入重置代码中,“body,div,ul,li{padding:0; margin:0;}”
            2)“酒杯”前面的大黑圆点,是FF给li标签定义的默认样式,我们只需要将li的默认样式去掉就是了,在ul标签的CSS属性中加入“list-style:none;”就OK了。

    现在再瞅瞅,两种浏览器的显示效果是不是和下图一样了呢~



    如果你做到这里的效果和我说的不一样,没关系,我把第二步的源代码发出来,对着上面说的再看看,就很容易学会了。

    第二步的源代码:  【第四课】导航条 - 经典导航2.rar (1.59 KB, 下载次数: 1358) 




    【第三步】

            第二步的效果还不是我们想要的,所有的“酒杯”都没有保持“车距”,后面的文字全部贴着前面的文字。
    好~!我们现在就将他们分开!设置

  • 标签的宽度为100像素:

    CSS代码:

    1. #nav ul li{
      width:100px;
      float:left;
      }

       

    为了便于观察我们暂且将

  • 标签的背景设置成红色(设置背景色,是页面布局中一个很重要的方法,便于查看块状元素区域范围)

    CSS代码:

    1. #nav ul li{
      width:100px;
      float:left;
      background:#f00;
      }

       

    效果如下:



            瞧瞧,发现问题了吧,我们的

  • 标签的高度并没有和我们的盒子的高度一样,这就是为什么在布局页面的时候,经常会设置一下背景色,就是这个道理,不然的话,你发现不了隐藏的问题,但是往往这些隐藏的问题就会导致页面浏览器的兼容性大大降低!

            现在暂不把
  • 标签的背景色去掉,当我们把它调成我们需要的效果的时候再去掉!
    继续,我们把li的高度设置成盒子的高度35像素,代码自己写,怎么样,高度一样了吧,但是文字却位于顶端,如何将它设置成居中呢,对喽~设置行距(如果你不会,建议你看看这篇文章《两种方法实现垂直居中》),在
  • CSS代码中再加入下面这句代码:

    1. line-height:35px;

       


    效果是不是和下图一样呢




    好,文字的垂直居中解决了,轮到水平居中了,这个就容易了,直接在

  • 的CSS代码中再加入下面这句代码:

    1. text-align:center;

       

    怎么样,效果有点意思了吧~到这里我再发一次代码,以保证大家每步都能理解学会!
    第三步源代码:  【第四课】导航条 - 经典导航3.rar (1.62 KB, 下载次数: 922) 




    【第四步】

            好~!做到这里,有没有发现一个问题,“前端职业生涯”与左右两边“我要充电”“课程答疑”的距离与“厘米学院”与左右两边“W3Cfuns”“课程培训”的距离是不一样的,如下图:



            这样的效果并不是我们想要的,导航条上的每一个项之间的距离应该是相等的,这才是我们要的,为了寻找原因,我们给li设置一个宽度为1px的右外边距:

          margin-right:1px;

    这样我们就可以看清楚每个li的范围,如下图



            这时候应该发现问题的原因了吧,因为我们的

  • 标签是设置了宽度为100像素,已经限定了它的宽度,如果文字多了它不会自动伸缩自适应的,那这时候我们就需要去掉其宽度,这时候
  • 的宽度就会缩小至文字的宽度,如下图:



            如果我们这时再添加一些文字(把我们的酒杯换成一个大个的),这个

  • 也会跟着变大,大家去掉宽度后试试,是不是这个样子,这样我们的导航条就比较灵活了,不会对“酒杯”的大小有所顾忌了!

    虽然这个宽度自适应解决了,但是给文字的空间太少,视觉上感觉不舒服,那么我们就帮它扩大一下空间,但是又要保证宽度自适应,解决方法很容易,加上左右内边距就ok了,这里设置边距为10px,在
  • 标签的CSS代码内加上下面代码,

           padding:0 10px;


    效果是不是这样



    无论你的“杯子”是增大还是缩小,

  • 不但宽度会随之增大缩小,但是杯子和杯子之间的距离永远不变!怎么样有点意思吧~!

    然后我们再将li的背景色和右外边距去掉,得到的效果如下:




    第四步的源代码 :  【第四课】导航条 - 经典导航4.rar (1.62 KB, 下载次数: 1575) 

    【第四课】导航条(下)



    上节课我们将导航条做成了下面的效果

    因为导航条的每一项是需要点击的,也就是说导航条的每一项都是链接,这个链接放到哪里呢?当然是要放在盒子里,哪个盒子呢?答案是:标签li这个盒子。


    【第五步】
    1)给导航的每一项加上链接;
    2)链接文字大小修改为12px;
    3)并且规定链接样式,鼠标移上去和移出的效果;


    制作方法:
    1)导航加链接,为了使导航更具有真实性,我们这里就用“厘米学院”的真实网址,大家自己练习的时候,链接地址就随意了~
    HTML代码:

    1. <div id="nav">
          <ul>
              <li><a href="http://www.w3cfuns.com">W3Cfunsa>li>
              <li><a href="http://www.w3cstudy.com">厘米学院a>li>
              <li><a href="http://www.w3cstudy.com/course.aspx">培训课程a>li>
              <li><a href="http://www.w3cstudy.com/apply.aspx">我要充电a>li>
              <li><a href="http://www.w3cstudy.com/career.aspx">前端职业生涯a>li>
              <li><a href="http://www.w3cstudy.com/faq.aspx">课程答疑a>li>
          ul>
      div>

       

    2) 文字大小12像素,这里的文字指的是链接a,所以我们对a进行样式设置,

    CSS代码

    1. a{font-size:12px;}

       


    3)鼠标移动上面和移出效果,文字默认状态时黑色无下划线的链接,鼠标移至上方,链接颜色变为白色并带有下划线,鼠标移出后还原为默认状态。

    CSS代码

    1. #nav ul li a{color:#333; text-decoration:none;}
      #nav ul li a:hover{color:#fff; text-decoration:underline;}

       


    注意:在这个例子中,我们可以将(2)和(3)合并

    CSS代码

    1. #nav ul li a{font-size:12px; color:#333; text-decoration:none;}
      #nav ul li a:hover{color:#fff; text-decoration:underline;}

       


    效果是不是和下面一样,鼠标移上去变成白色的有下划线的链接



    第五步源代码:  【第四课】导航条 - 经典导航5.rar (1.73 KB, 下载次数: 939) 

    到这里,基本上一个导航条就出来了~不过为了能让大家技能再提高一个层次,我引导大家继续对导航条进行完善。




    【第六步】
    如果我希望鼠标移上去后,链接的背景变成黑色的,下面是我的步骤
    首先把链接a加上一个背景,以方便看出来链接a的区域

    1. #nav ul li a{font-size:12px; color:#333; text-decoration:none; background:#0FF;}

       

    怎么样,知道a的区域了吧



    从上面可以看出,鼠标移至链接上“箭头”转换为“手”的有效区域就是亮蓝色区域,如果将a的高度设定为35px和盒子一样高度,那么这个有效区域的高度就会变为35px,这样用户体验比较好,现在网页上的导航条基本上都是鼠标移至这个区域“箭头”就会转换为“手”状,于是我给a设置一个高度“height:35px;”,代码如下:

    1. #nav ul li a{height:35px; font-size:12px;  color:#333; text-decoration:none; background:#0FF;}

       

    可是不管我怎么刷新浏览器,高度都没有任何变化,不起作用,这是为什么呢?!

    原因就在于a属于内联元素,内联元素是无法设置宽度和高度的,width和height只是针对块状元素,说到这里,解决办法就出来了,只要我们把内联元素a转化成块状元素就可以了,我们用“display:block;”将内联元素转化成块状元素。大家加上这段代码,先不要刷新预览页面效果,闭上眼想想界面会变成什么样子?

    1. #nav ul li a{display:block; height:35px; font-size:12px; color:#333; text-decoration:none; background:#0FF;}

       

    在FireFox和IE6里面显示的实际效果却是?!?!



            两款浏览器显示效果居然大相径庭,这是在页面布局中经常出现的情况,实际效果与期望的效果不同,这就需要大家在平时多去总结。

            回归问题,IE6中为什么所有链接纵向排列了呢?其实这个也很简单,IE认为a既然转化成块状元素,就拥有块状元素的特性---霸道,它是不允许其他元素和它同一行,再加上也没有对a的宽度进行设定,所以才导致IE6中这么显示,不过FF中为什么不这样呢,和我们想象的一样,那是因为FireFox认为a即使为块状元素,也应该受到外面

  • 元素的影响,所以如此显示。

            究竟以谁为标准?
            因为大家都认为FF是标准浏览器,所以大家可以以FF为标准,不过我认为,不用管谁标准不标准,那都是相对的,大家不要在这个问题上浪费精力,应该将精力用在思考如何提高页面的浏览器兼容性,只要做出来的效果是我们想要的就行!

            如何解决?
            其实解决的方法也很简单,只需要在链接a的CSS代码中加入“float:left;”

    1. #nav ul li a{display:block; height:35px; font-size:12px; color:#333; text-decoration:none; background:#0FF; float:left;}

       

    问题迎刃而解,如果到这里你仍旧不明白为何如此解决,说明你没有真正理解前面的课,特别是第二节的课,怎么做?你应该知道....回去再品品去~

    第六步源代码:  【第四课】导航条 - 经典导航6.rar (1.75 KB, 下载次数: 654) 




    【第七步】

    但是这样你不觉着,每个链接的左边和右边是不是太挤了,紧贴着a区域的左侧和右侧,应该怎么做?还是很简单,只需要再加上一句话“ padding:0 10px;”

    1. #nav ul li a{display:block; height:35px; font-size:12px; color:#333; text-decoration:none; background:#0FF; float:left; padding:0 10px;}

       

    现在再瞅瞅,是不是下面的效果



    这样就不那么挤了吧,看着舒服了吧,但是这离我们想要的效果,只剩下最后一两步了,因为现在看到的连接效果是,鼠标移上去和拿开背景都是蓝色的,我们现在只需要将a链接中的背景去掉,移到a:hover的CSS代码中,并且颜色变成“#000”就ok了~

    1. #nav ul li a{display:block; height:35px; font-size:12px; color:#333; text-decoration:none; float:left; padding:0 10px;}
      #nav ul li a:hover{color:#fff; text-decoration:underline; background:#000;}

       

    怎么样,和下面的效果一样么?



    效果好多了吧,这下是我们想要的效果了吧~

    第七步源代码:  【第四课】导航条 - 经典导航7.rar (1.75 KB, 下载次数: 740) 




    【第八步】
    现在导航条上的每个链接之间不够紧凑,如下图


    这个情况形成的原因在于给li设置了“padding:0 10px;”,解决方法就是将li的CSS样式表里的“padding:0 10px;”删除就可以了,这样每个链接就变得十分紧凑,效果如下图:




    另外,根据实际情况,鼠标移动到链接上后,不需要下划线,那就去掉a:hover里面的“text-decoration:underline;”就可以了。

    OK!导航条搞定!最终效果是:



    第八步源代码:  【第四课】导航条 - 经典导航8.rar (1.75 KB, 下载次数: 1949) 




    【进阶思考】
            在本节的导航条实例中,一开始我们就给导航条外面设置了一个div盒子,并设定id为“nav”,大家可以思考一下,如果不设置这个div盒子,而是将同为块状元素的ul标签作为导航的盒子是否可以呢?如果可以的话,我们的结构就少了一层,代码就更精简了,页面加载速度也就会快些。




    【结束语】
            大家还可以把背景设置成其他颜色,用图片也可以!下面的漂亮的导航条就是咱们最经典的导航条演变而来,有兴趣的可以尝试一下!


    现在大家明白,为什么一开始我说这款导航条可以演变出成千上万的不同特色的导航条了吧~万变不离其宗!

    第四课的思路就是这样的,如果吃透了这节课,那么以后什么样子的导航都能很轻易作出来,如果你再和js很好的结合起来用~你就可以很自信的向老板提出加薪了!!!^_^

     

    【大练习】前四节课大练习之简单页面布局



          为大家设计了一个大练习,用到的知识点,全部是前四节的内容,如果您能够完全理解前四节内容,你可以在一个小时内完成!

            图片已经帮大家切割好了,直接下载就可以,如果想自己切图的话,用到的文字可以去PSD源文件里面复制,PSD源文件也已经发上来了,具体如何制作,怎么制作标准,有哪些技巧,下节课我来引导着大家完成。



    已切分的图片下载:  第四课大练习已切分的图片.rar (254.43 KB, 下载次数: 11212) 
    PSD源文件下载:  第四课大练习PSD源文件.rar (2.93 MB, 下载次数: 15335) 

     

     

    【第五课】浮动布局之结构设计



    《前四节大练习》做的怎么样?有没有遇到困难?如果有,没关系,这节教大家掌握“浮动布局页面技能”。

    这节主要讲讲页面的结构设计,结构设计的好坏直接影响到页面的加载速度,以及搜索引擎的抓取,所以大家要认真对待。



    【第一步】
    首先我们需要对页面进行分析,由几大块组成,从效果图上不难看出,由四大块组成“头部版块、广告版块、内容版块、页底版块”,分别给他们起个名字如下:
            头部版块:header
            广告版块:banner
            内容版块:content
            页底版块:footer



    这样就可以很轻松的将页面第一层结构写出来
    HTML代码:

    复制代码


    第一步源代码: 浮动布局页面1.rar (255.16 KB, 下载次数: 2345) 




    【第二步】
    头部版块有两部分组成,左侧的logo和右侧的导航条
    1)网站logo一般是张图片,而且是可以点击的,点击后回到首页,所以logo部分的结构为:

    1. <div id="logo">
          <a href="http://www.w3cstudy.com">
              <img src="images/logo.png" />
          a>
      div>

       

    2)导航nav我们肯定要用标签ul和li,而li里面内容又是链接,在加上真实的链接信息后,导航条部分的结构如下:

    1. <ul id="nav">
           <li><a href="http://www.w3cstudy.com">首 页a>li>
           <li><a href="http://www.w3cstudy.com/course.aspx">培训课程a>li>
           <li><a href="http://www.w3cstudy.com/students.aspx">优秀学员a>li>
           <li><a href="http://www.w3cstudy.com/faq.aspx">课程疑问a>li>
           <li><a href="http://www.w3cstudy.com/career.aspx">职业生涯a>li>
           <li><a href="http://www.w3cfuns.com/">学员社区a>li>
           <li><a href="http://blog.w3cstudy.com/">官方博客a>li>
           <li><a href="http://www.w3cstudy.com/address.aspx">学院地址a>li>
      ul>

       

    到此,整个头部的结构设计完成,完整的结构如下:

    1. <div id="header">
           <div id="logo">
                <a href="http://www.w3cstudy.com"><img src="images/logo.png" />a>
           div>
           <ul id="nav">
                <li><a href="http://www.w3cstudy.com">首 页a>li>
                <li><a href="http://www.w3cstudy.com/course.aspx">培训课程a>li>
                <li><a href="http://www.w3cstudy.com/students.aspx">优秀学员a>li>
                <li><a href="http://www.w3cstudy.com/faq.aspx">课程疑问a>li>
                <li><a href="http://www.w3cstudy.com/career.aspx">职业生涯a>li>
                <li><a href="http://www.w3cfuns.com/">学员社区a>li>
                <li><a href="http://blog.w3cstudy.com/">官方博客a>li>
                <li><a href="http://www.w3cstudy.com/address.aspx">学院地址a>li>
           ul>
      div>

       

    第二步源代码:  浮动布局页面2.rar (255.36 KB, 下载次数: 1574) 




    【第三步】
    Banner部分在设计中是一款“拉洋片”效果,在布局页面的时候,我们只需要将其中的一个图片放在此处就可以,因为广告也是可以点击的,所以就需要在图片外面加上链接,那么结构代码如下:

    1. <div id="banner">
          <a href="http://www.w3cstudy.com"><img src="images/banner.jpg" />a>
      div>

       

    第三步源代码:  浮动布局页面3.rar (255.37 KB, 下载次数: 871) 




    【第四步】
    内容content版块呢,是有左右两部分组成,左侧我们虽然可以起名为left,右侧为right,但是我们不要这么命名,左侧部分仔细看看其实主要是文章,那么我们就可以考虑给他起个id名为“article”,右侧为资讯信息类的内容,所以id名为“info”,这样会更加语义化一些,更容易让人清楚这个版块的作用,及内容信息。

    当然,我们可以将“left”和“article”组合,用骆驼命名法来命名左侧的版块id为“leftArticle”,右侧的id为“rightInfo”,OK,第二层结构如下:

    1. <div id="content">
         <div id="leftArticle">div>
         <div id="rightInfo">div>
      div>

       

    下面我们开始分析内容content版块的第三层,从左侧的leftArticle开始
    1)左侧的文章版块,分“文章图片,文章标题和文章内容”三部分
    文章图片:从功能上来说文章顶部图片应该是可以点击的,点击后进入文章详情,所以图片外面还是要被链接a包含的;

    1. <a href="http://blog.w3cstudy.com/?p=5"><img src="images/articleBanner.jpg" />a>

       

    文章标题:文章标题就是文章内容的总结,对搜索引擎来说文章标题的权重要比内容要高,怎么才能让搜索引擎知道这里是标题呢,当然是用标题标签h1~h6标签了,这里我们选用h1,还有一点不要忘记标题也是可以点击的,所以也要用a进行包含,

    1. <h1><a href="http://blog.w3cstudy.com/?p=5">Web前端开发工程师好找工作吗?a>h1>

       

    文章内容:既然是内容,肯定就少不了段落标签p了,有几段文字就用几个“

    ”,这样文章部分的结构,就逐渐清晰明朗了,

     

    <p>据09年全国Web前端开发行业调查统计显示,09年大型企业对于Web前端开发人才需求紧缺。 Web前端开发目前是一种新兴职业,专业的前端开发人员绝大部分存在于大型企业中,如腾讯、百度等,换种说法就是:选择从事Web前端开发就等于你的一只脚已经迈进了腾讯、百度等高薪企业。p>
    <p>... ...p>
    <p>... ...p>
    <p>... ...p>

     


     

    复制代码

    leftArticle版块OK!:
    到此步源代码:  浮动布局页面4-1.rar (256.09 KB, 下载次数: 1315) 

    左侧布局完成,那么右侧又如何布局呢,听我细细分解,首先右侧分两个版块“职业生涯”和“好职推荐”,仔细看会发现他们有共同的结构,共同的样式,只要将其中一个做出来,另外一个结构和样式直接复用就可以了。

    那就分析上面的“职业生涯”的结构,首先有个标题,其次下面是标题的一个列表,这样很容易让人想到用“ul+li”的组合,但是我们这里有一个更好方法,用“dl+dt+dd”组合,这种组合在这里是一个很不错的选择,要比“ul+li”要好,很多同学对“dl+dt+dd”组合不熟悉,这里正好练一下,熟悉一下,经过上面的分析我们就可以得出“职业生涯”版块的结构。

    1. <dl>
         <dt>职业生涯dt>
         <dd><a href="http://blog.w3cstudy.com/?p=60">Web前端开发工程师需要掌握哪些核心技能?a>dd>
         <dd><a href="http://blog.w3cstudy.com/?p=51">我是程序员,有必要进行web前端开发的学习吗?a>dd>
         <dd><a href="http://blog.w3cstudy.com/?p=32">我是网站美工,目前发展遇到瓶颈,该如何解决?a>dd>
         <dd><a href="http://blog.w3cstudy.com/?p=22">我适合从事web前端开发行业吗?a>dd>
         <dd><a href="http://blog.w3cstudy.com/?p=15">Web前端工程师如何给自己定位?a>dd>
          <dd><a href="http://blog.w3cstudy.com/?p=5">Web前端开发工程师好找工作吗?a>dd>
      dl>

       

    “职业生涯”下面的“好职推荐”版块就好布局了,换换标题,换换内容就可以了
    rightInfo版块OK!也就是说整个Content版块结构设计完成!
    到此步源代码:  浮动布局页面4-2.rar (256.59 KB, 下载次数: 1600) 




    【第五步】
    关于页底版块的布局,效果图上是有两行文字组成,第一行文字全部为链接,

    1. <p>
      <a href="#">关于W3CStudya> | <a href="#">广告服务a> | <a href="#">提交问题a> | <a href="#">联系我们a> | <a href="#">版权声明a> | <a href="#">关于隐私a> | <a href="#">合作伙伴a>
      p>

       

    第二行左边的是备案号,右侧是版权信息

    1. <p>
        <a href="#">京ICP备10055601号a>  All rights(C)2008-2010 Reserved
      <p>

       

    到这里页底版块结构也出来了

    1. <div id="footer">
      <p>
      <a href="#">关于W3CStudya> | <a 
      href="#">广告服务a> | <a href="#">提交问题a> | <a 
      href="#">联系我们a> | <a href="#">版权声明a> | <a 
      href="#">关于隐私a> | <a href="#">合作伙伴a>
      p>
      <p>
        <a href="#">京ICP备10055601号a>  All rights(C)2008-2010 Reserved
      <p>
      div>

       

    但是这么做并不是最好的,既然文字分两行,那就在第一行的最后加上一个
    就可以了,每个标签都有自己的用途,没有必要每一行都用p标签包含起来,这样做我们的结构是不是又少一层,代码是不是更精简了呢,所以结构就可以精简为:

    1. <div id="footer">
      <a href="#">关于W3CStudya> | <a href="#">广告服务a> | <a href="#">提交问题a> | <a href="#">联系我们a> | <a href="#">版权声明a> | <a href="#">关于隐私a> | <a href="#">合作伙伴a>
      <br/>
      <a href="#">京ICP备10055601号a> All rights(C)2008-2010 Reserved
      div>

       

    OK 了~!
    至此,我们整个页面结构设计完成!怎么样挺简单吧,这节把页面的骨架搭建完成,下节课我们就讲一下样式设计,给页面穿上衣服,成为一个真正的页面!

    本节最终源代码为:  浮动布局页面5.rar (256.71 KB, 下载次数: 3512) 

     

    【第五课】浮动布局之表现设计



    W3C标准建议大家结构和表现相分离,“结构”就是上节课我们搭建的HTML页面框架,“表现”则是这节课的内容,给页面穿上衣服,也就是下面要学的“CSS样式设计”,样式设计的好坏也会直接影响页面的加载速度以及改版的复杂度。我们紧接着上节课

    【第六步】
    为了页面能够具有更好的兼容性,所以在设计表现的时候,首先要对标签重置,不明白的可以去看看[基础二] CSS选择器的通用选择器部分,在上节设计的结构里面,我们用到哪些标签就重置哪些标签,上节课用到“body,div,p,ul,li,dl,dt,dd,h1,a”这么几个标签,所以重置代码为:

    1. body,div,p,ul,li,dl,dt,dd,h1,a{margin:0; padding:0;}

       

    打开效果图,我们先看一下主背景,是一个从上至下由蓝色渐变为白色,且带有云彩的背景,这个无规律的渐变背景我们应该怎么做?

    针对背景的渐变我们好处理,将渐变背景切割为一个宽度为10px的小图,起名为bg,然后水平方向平铺(repeat-x)



    而对于云彩这种无规律的背景,直接切割出来作为背景,起名为clouds,如下图:


    这两张背景图,在每步最后提供的源代码的images文件夹内可以找到,名子分别为bg.gif和clouds.gif。

            这么处理的好处是为了提升网页的用户体验,如果我们不做任何处理直接将页面内的背景整个切割下来,当用户打开页面,会看到背景一片空白,然后瞬间显示背景,给用户的感觉很突兀,而我们的做法是,先加载前面那个10px宽度的小图片,这样背景加载速度快,用户打开网页的时候,先把这种背景图加载上,不至于展现在浏览者前面的是一片空白,然后等云彩背景下载完毕后,再加载在页面内,用户感觉会很舒服,这就是为什么Web前端开发人员还要懂一些用户体验设计方面的知识。

            具体如何实现背景的显示顺序,方法有很多,针对本例,最适用的办法就是设置为不同的盒子的背景,bg.gif就当做html盒子的背景,而clouds.gif就当做body盒子的背景,因为网页会先加载html盒子,然后再加载body盒子,那么CSS代码如下:

     

    html{background:url(../images/bg.gif) repeat-x;}
    body{background:url(../images/clouds.gif) repeat-x;}

    效果是像下面这样,背景加载上了

     



    此时内容有点乱这是肯定的,因为我们还没有对他们定义样式~

    第六步源代码:  浮动布局页面6.rar (256.84 KB, 下载次数: 1676) 



    【第七步】
            页面的宽度为1000px,所以四大板块header、banner、content、footer的宽度也为1000px,且水平居中于浏览器,所以用CSS集体声明的方法,对四大板块的共同样式进行定义:

     

    #header,#banner,#content,#footer{width:1000px;  margin:0 auto;}

    其中“margin:0 auto;”的作用就是将页面元素水平居中,这个很重要,布局页面经常用到需要记住!

     

    现在再看一下效果,四大板块是不是全部水平居中于浏览器了~

            另外效果图中的头部是与上边沿有45px的距离,为实现这个效果,我们采用设置body上内边距的办法,将padding-top加到body的样式内:

    CSS代码

     

    body{background:url(../images/clouds.gif) repeat-x; padding-top:45px;}

    离我们的最后完成页面制作又前进一步~

     


    第七步源代码:  浮动布局页面7.rar (256.9 KB, 下载次数: 891) 



    【第八步】
    注意:第八步细节上的内容多些,有一点做的不到位,就会导致页面兼容性问题,所以大家耐下心来,仔细品味每一句话。

            大家有没有发现一个问题,网页里所有能够点击的链接图片,全部都有一个宽度为2px的紫色边框,不美观并且还会导致后面做出的页面出现兼容性的问题,这个不是我们想要的,所以我们要将这个边框去掉!CSS代码如下所写:

     

    img{border:none;}

    上面这段代码是对img标签边框的重置,所以我们要把它和之前标签内外边距重置的代码放一块,如下:

     

     

    body,div,p,ul,li,dl,dt,dd,h1,a,img{margin:0; padding:0;}
    img{border:none;}

    这样页面上的图片清爽多了,后面我们还有对其他标签的重置,用到的时候,我们再添加到第二条的后面。

     



    上节我们分析过了,头部header包含两部分,左侧的logo和右侧的导航nav。

    先说说左侧logo部分,回忆一下上节课logo部分的结构:
    HTML代码:

     

    <div id="logo">
      <a href="http://www.w3cstudy.com"><img src="images/logo.png" />a>
    div>

    分析一下上面的结构,首先最外层由一个块状元素div构成的盒子,第二层由内联元素a构成,第三层由内联元素img构成,如果对这些常用标签分不清哪些是块状元素哪些是内联元素,就去看看xHTML标签页面。

     


            接着上面,img标签是一个很特别的标签,因为它本身是内联元素,但却体现出块状元素宽高起作用的特性,这是很矛盾的地方,这就为页面布局埋下隐患,要么为内联元素,要么为块状元素,在这里我们更需要它的块状元素的属性,所以我们将身为内联元素的img标签转化为块状元素,用“display:block; ”。

            既然第三层的img转化为块状元素,根据W3C规范,内联元素是不能包含块状元素的,所以我们还必须把第二层的链接a,也要转化为块状元素,还是用“display:block; ”。

            我们希望点击logo图片的任何一个地方都可以回到首页,也就是说第二层a的有效点击区域大小就为图片的大小,而外面的盒子的大小也等于图片的大小。

    那么相应的样式代码如下:
    CSS代码:

     

    #logo{width:220px; height:54px; float:left; background:#991616;}
    #logo a{display:block; width:220px; height:54px;}
    #logo a img{display:block;}

    针对代码中的“#logo a img{}”的写法不清楚的,就去看看[基础二] CSS选择器的选择器的嵌套

     


    代码中的“float:left;”的作用这里不再说了,不明白的同学去看一下[第二课] 浮动

    代码中的“background:#991616;”是一个从logo图片上取下来的红色,目的和前面的设置页面背景一样,为了保证在网速比较慢的情况下,logo图片还未加载完成之时,先显示红色背景,增强用户体验!

    此步源代码:  浮动布局页面8-1.rar (256.98 KB, 下载次数: 729) 


            我们就可以进一步思考,既然a已经设置了宽度和高度,外面的那个id为logo的div,其实就没有存在的必要了,倒不如直接去掉外层的div,并将a的id设置为logo,这样我们的结构就少一层,代码就少一些,这正是我们期望的,所以logo部分的HTML结构就可以变为:

     

    <a id="logo" href="http://www.w3cstudy.com"><img src="images/logo.png" />a>

    CSS代码就可以变为:

     

     

    #logo{display:block; width:220px; height:54px; float:left; background:#991616;}

    而“#logo a img{display:block;}”就要转化为

     

     

    #logo img{display:block;}

    因为现在的#logo已经为a的id了,不再是原来最外层的div的id。

     


    此步源代码:  浮动布局页面8-2.rar (256.97 KB, 下载次数: 814) 


            导航nav这块的CSS代码就不说了,如果CSS代码写不出来,就去回顾一下[第四课] 导航条(上) | 导航条(下)
    这里直接将CSS代码列出来

     

    #nav{width:780px; height:54px; float:left; background:#393838; list-style:none;}
    #nav li{float:left;}
    #nav li a{display:block; width:86px; height:54px;  line-height:54px; text-align:center; font-size:12px; color:#ccc; text-decoration:none; float:left;}
    #nav li a:hover{color:#fff;}

    有一点需要补充,现在我们实现的效果是鼠标移至导航条栏目的上面,文字由灰色变为白色,鼠标移出,文字又转为灰色,而处于激活状态的栏目的背景是一个灰色且两边带有光影的图片,如下图:

     


    激活状态的栏目是不受鼠标的移入和移出影响的,这个应该怎么做呢?我们需要定义一个类选择器,专门加在处于激活状态的栏目上:
    CSS代码

     

    #nav li .navActive{ background:url(../images/navHoverBg.png) no-repeat; color:#fff;}

    如果激活状态的栏目是“首页”,结构代码就这么写

     

    HTML代码

     

    <li><a href="http://www.w3cstudy.com" class="navActive">首 页a>li>

    到这里header的样式定义基本完成

     


    此步源代码:  浮动布局页面8-3.rar (257.12 KB, 下载次数: 1442) 

    注意:一般情况下,很多人会认为header部分的样式定义就完成了,其实没有注意到这里面隐藏着一个潜在危险,就是

    转载于:https://www.cnblogs.com/jinhuazhe2013/p/4621610.html

  • 你可能感兴趣的:(2天驾驭DIV+CSS (实战篇)(转))