张孝祥专栏

以平常心工作,远离忧虑,除了让自己快乐,也要让别人快乐!

张孝祥ID:zhangxiaoxiang
540631次访问,排名68好友4人,关注者48
zhangxiaoxiang的文章
原创 129 篇
翻译 0 篇
转载 2 篇
评论 300 篇
张孝祥的公告
《深入体验Java Web开发内幕——高级特性》已经出版。 传智播客开展:先培训,就业后再还款活。详细信息查询:http://www.itcast.cn/goodnews.htm
最近评论
ypf20062008:顶!顶!张老师加油!
yangfion171:那些人动不动就是 什么“数学第一”
没办法,当年我连名都上不了。。。
jakcysun:一看就是乱说,很不符合现实的!
zou_wei_forever:期待张老师的hibernate和spring系列类的书的出版,希望张老师继续发扬通俗易懂,对知识的深入剖析这一写作风格---永远支持你!!!!
GXZheng1985:很认真看完张老师的文章 ,看得出 您是一个非常尽心尽责的好老师 ,十分之佩服~~
但我感觉您的课程有些乏味,,基础很重要,不错,要让人接受好的东西,首先要让人感觉有意思,自然大家都会去学习~
文章分类
收藏
    相册
    传智播客原创教材展示
    培训
    《深入体验javaweb开发内幕——高级特性》出版啦!
    培训就业后还款计划正式启航
    良少的blog
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 div布局的一些特性收藏

    新一篇: 在水平下拉菜单和垂直下拉菜单之间随意切换的网页换肤程序 | 旧一篇: 用css实现了一个精致的纵向导航菜单

     div的布局还真有些不容易掌握,其规律还摸不透,先死记硬背一些现象再说吧.
    div是一个块级元素,默认情况下,默认情况下将占满父级容器的整行,同级的其他对象将在下一行显示。但是将某个div设置为float后,这个div本身会根据其中内容的需要而调整为内容需要的大小,其后的块级对象将浮动在它旁边显示,运行下面的html代码就可以看到效果。

    <!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" xml:lang="en" lang="en">
    <head>
    <style type="text/css">
     #menu {
        background-color:red;
       float:left;
       /*clear:both;*/
      }
     #content{
      background-color:green;

     }
     #submenu {
      /*background-color:blue;*/
     
     }
    </style>
    </head>
    <body>
    <div id="menu">
     <div id="submenu">菜单区</div>
    </div>
    <div id="content">
     内容区
    </div>
    </body>
    </html>

    为了让content区能够在下一样显示,在浮动的div中设置了clear:both属性,显示结果没有任何变化,再试着将clear:both属性加入到表示content的div中,content区就在下一行显示了.看来,对于已经设置了float特性的对象不能再设置clear特性了.

    如果我不是设置menu区的float属性,而是设置menu区内部的div区的float属性,其结果与直接设置外部的menu区的效果完全一样,这就令我非常困惑了,按理说,如果我没设置外部的menu区的float属性,这个menu区自己应该占满一行,其内部的div区再按float属性漂浮在menu区内部,可现在却不是这样的!我接着明确设置了menu区的宽度,这时在ie下看到了我期望的效果,即menu区占据了规定的宽度,其内部的div区按float属性漂浮在了menu区内部,并且content区换行显示了,但是,在firefox下运行的效果却很怪,我就不想在继续追究下去了,这应该是firefox的bug了。实验代码如下:

    <!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" xml:lang="en" lang="en">
    <head>
    <style type="text/css">
     #menu {
              width:200px;
        background-color:red;
      
      }
     #content{
     background-color:green;
     /*clear:both;*/ 
     }
     #submenu {
      background-color:blue;
     float:right;
     }
    </style>
    </head>
    <body>
    <div id="menu">
     <div id="submenu">菜单区</div>
    </div>
    <div id="content">
     内容区

    </div>
    </body>
    </html>

    发表于 @ 2007年10月13日 17:32:00|评论(loading...)|编辑

    新一篇: 在水平下拉菜单和垂直下拉菜单之间随意切换的网页换肤程序 | 旧一篇: 用css实现了一个精致的纵向导航菜单

    评论

    #superleolx 发表于2007-10-17 17:55:18  IP: 210.51.52.*
    nice
    #ddcatlee 发表于2007-10-22 11:21:38  IP: 221.220.205.*
    1,clear是清除 浮动 的元素,content没有浮动,所以对menu设定clear后,没有效果,你可以试试将content也浮动,看看会怎么样。

    2,menu内的唯一的div浮动了,则对于menu来说,它内部没有不浮动的元素,则它不具有高度,因此下面的content层占据了menu的位置,而menu内浮动的div还是浮动的。
    你可以为menu增加一些不浮动的文字(或者高度)来看看,会有什么效果。
    这个不是ff的bug,用opera也会是这样的效果。
    ie会为浮动的元素计算高度,两边解释方式不同。
    #pzhuyy 发表于2007-10-22 13:58:01  IP: 219.135.242.*
    顶.
    #zhangxiaoxiang 发表于2007-10-22 17:56:40  IP: 123.116.97.*
    非常感谢ddcatlee朋友的解答,令我茅塞顿开,真诚希望与您交给朋友,如不嫌弃,请通过这个blog给我发封邮件,我会立即与您联系.谢谢!
    #a38809972 发表于2007-10-23 15:41:53  IP: 221.237.20.*
    #beyondjay 发表于2007-10-24 10:23:11  IP: 61.129.97.*
    ff和ie比我绝对相信ff
    #ddcatlee 发表于2007-10-24 11:03:37  IP: 221.220.192.*
    发了邮件不知收到没有?
    #zhangxiaoxiang 发表于2007-10-26 22:09:26  IP: 123.118.14.*
    ddcatlee,你好!我已经给您的tom的邮箱发过了三封邮件,不见回复,不知道收到了没有。
    #ddcatlee 发表于2007-10-29 11:48:51  IP: 221.220.210.*
    给你qq留言了。呵呵
    #lfelfe33 发表于2007-11-01 11:06:08  IP: 219.143.87.*
    按照标准来解释,浮动的元素在文档中是脱离正常文档流的位置的
    即如果容器层没有浮动,而它的内部元素浮动的话,它是没有高度的,因为它内部元素脱离的文档流,所以容器层的高度是不会被撑开的。


    <div id="content" style="border: solid 1px black">
    <div id="subcontent" style="float:left;height:500px;width:500px;background:red;">&nbsp;</div>
    &nbsp;
    </div>

    解决这种问题的办法:
    1.可以在容器层的最后添加一个额外的清除层。即加入“<div style="clear:both"></div>”

    <div id="content" style="border: solid 1px black">
    <div id="subcontent" style="float:left;height:500px;width:500px;background:red;">&nbsp;</div>
    &nbsp;
    <div style="clear:both"></div>
    </div>

    2.让容器层也浮动

    <div id="content" style="float:left;border: solid 1px black">
    <div id="subcontent" style="float:left;height:500px;width:500px;background:red;">&nbsp;</div>
    &nbsp;
    </div>


    不知道我说这些能不能帮助张老师您~~!,呵呵


    #zhangxiaoxiang 发表于2007-11-01 13:19:10  IP: 222.35.175.*
    先谢谢大家了。最近一段时间又特忙起来了,看到大家这么热心地帮助我,又激发了我对这个问题继续钻研和试验的兴趣,先忙里偷闲回复ddcatlee第一个解答:
    将menu区和content区都设置为float:left后,在menu区中clear:both没有看到换行的效果,在content区进行设置后就看到了换行的效果,与你说的“clear是清除 浮动 的元素,content没有浮动,所以对menu设定clear后,没有效果,你可以试试将content也浮动”的想法似乎不太一致,实验代码如下:
    <!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" xml:lang="en" lang="en">
    <head>
    <style type="text/css">
    #menu {
    background-color:red;
    float:left;
    clear:both;
    }
    #content{
    /*clear:both;*/
    background-color:green;
    float:left;
    }
    #submenu {
    /*background-color:blue;*/
    }
    </style>
    </head>
    <body>
    <div id="menu">
    <div id="submenu">菜单区</div>
    </div>
    <div id="content">
    内容区
    </div>
    </body>
    </html>
    #zhangxiaoxiang 发表于2007-11-01 13:27:31  IP: 222.35.168.*
    lfelfe33的例子太有说服力了,我参照这个例子实验了一把后,更加清楚地理解了ddcatlee为我解答的第二个问题。谢谢两位了!
    #zhangxiaoxiang 发表于2007-11-01 13:40:07  IP: 222.35.168.*
    “将menu区和content区都设置为float:left后,在menu区中clear:both没有看到换行的效果,在content区进行设置后就看到了换行的效果”,对于这一现象,我只能先从现象推结论了,先记住clear只能清除前面的float元素,不能清除后面的float元素,至于是否如此,还需要去查阅w3c的官方文档
    #ddcatlee 发表于2007-11-05 20:31:29  IP: 221.220.212.*
    看到你的测试,我查了一下css 2的规范,确实是:

    'clear'
    值: none | left | right | both | inherit
    初始值: none
    适用于: 块类元素
    可否继承: 否
    百分比: N/A
    媒介: 图形

    该属性表明一个元素的框的哪一边不可以和一个 先前的浮动框 相邻。

    就目前实际应用方面来说,clear 主要的作用就如同lfelfe33所说的1,让元素具有高度
    #ennsyunn 发表于2008-02-24 23:52:01  IP: 59.138.14.*
    顶,张老师!
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 张孝祥