<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    京山游俠

    專(zhuān)注技術(shù),拒絕扯淡
    posts - 50, comments - 868, trackbacks - 0, articles - 0
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    這篇隨筆不是專(zhuān)門(mén)針對(duì)SpringSide,卻只得每個(gè)程序員一看。

    還記得胡戈調(diào)侃《無(wú)極》中的王城布局為“圈圈套圈圈”娛樂(lè)城,也還記得我剛開(kāi)始做Web開(kāi)發(fā)時(shí)“表格套表格”的頁(yè)面布局。在大部分的程序員中,可能還在使用表格進(jìn)行布局,使用表格進(jìn)行布局的巨大缺點(diǎn)就是當(dāng)頁(yè)面進(jìn)行一點(diǎn)點(diǎn)修改的時(shí)候,都有可能完全打亂頁(yè)面的外觀,而且非常不利于和美工的配合。當(dāng)然了,很多美工人員也在使用表格進(jìn)行布局,他們?cè)趫D形軟件中設(shè)計(jì)好頁(yè)面,然后使用切片工具一切就完事,卻給我們需要在網(wǎng)頁(yè)網(wǎng)頁(yè)中動(dòng)態(tài)增加內(nèi)容的程序員帶來(lái)了麻煩。在CSS盛行的今天,我們?cè)缇驮撟尡砀裰蛔鏊谋痉止ぷ髁恕?br />
    網(wǎng)上也有不少使用div + css進(jìn)行布局的教程,卻存在很多缺陷,一是對(duì)css的布局模型講解不清楚,讓人很難理解相對(duì)定位、浮動(dòng)等概念;二是雖然避免了“表格套表格”的缺點(diǎn),卻帶來(lái)了“div 套 div”的缺點(diǎn),過(guò)量使用div標(biāo)簽;三是class過(guò)多,造成class災(zāi)難。

    要正確使用css,對(duì)css的基本只是就不能夠不了解。既然是漫談,我這里就只講四個(gè)方面,最后給出xkland項(xiàng)目作為實(shí)例。

    一、CSS中的塊模型

    在CSS的定義中,有的html標(biāo)簽被瀏覽器當(dāng)成一個(gè)塊來(lái)顯示,比如div、table、p、ul等等,我們稱(chēng)之為塊元素;有的html標(biāo)簽被瀏覽器顯示在文本行之類(lèi),如a、span、font等等,我們稱(chēng)之為行內(nèi)元素。行內(nèi)元素我這里就不講了,只講講塊元素的模型。

    每一個(gè)塊元素都可以分為context、padding、boder和margin幾個(gè)部分,我們常說(shuō)的寬和高,指的只是context的寬和高,padding代表內(nèi)容和邊框之間的填充,margin代表邊框之外的空白,如下圖:
    22.JPG

    這幾個(gè)部分都是可以通過(guò)CSS進(jìn)行指定的,當(dāng)然,CSS還可以控制背景,因此,我們可以通過(guò)CSS來(lái)靈活控制我們頁(yè)面的外觀。

    二、CSS中的文檔流模型

    所有的塊元素在html文檔中是按照它們出現(xiàn)在文檔中的先后順序排列的(當(dāng)然,嵌套不在此列),每一個(gè)塊都會(huì)另起一行。如下圖:
    23.JPG

    他們對(duì)應(yīng)的html如下:
    <div?id="div1">div1</div>
    <div?id="div2">div2</div>
    <div?id="div3">div3</div>

    為了定義他們的寬度、高度還有邊框,我們定義如下的CSS:
    #div1?{
    ????border
    :?1px?solid?#000099;
    ????height
    :?60px;
    ????width
    :?200px;
    ????margin
    :2px;
    }

    #div2?
    {
    ????border
    :?1px?solid?#000099;
    ????height
    :?60px;
    ????width
    :?200px;
    ????margin
    :2px;
    }

    #div3?
    {
    ????border
    :?1px?solid?#000099;
    ????height
    :?60px;
    ????width
    :?200px;
    ????margin
    :2px;
    }

    三、CSS中的相對(duì)定位和絕對(duì)定位模型

    在文檔流中,每個(gè)塊元素都會(huì)被安排到流中的一個(gè)位置,我們可以通過(guò)CSS中的定位屬性來(lái)重新安排它的位置。定位分為相對(duì)定位和絕對(duì)定位,相對(duì)定位是相對(duì)于該塊元素在文檔流中的位置的,比如,我們可以使用相對(duì)定位把div2放到div1的右側(cè),CSS代碼如下:
    #div1?{
    ????border
    :?1px?solid?#000099;
    ????height
    :?60px;
    ????width
    :?200px;
    ????margin
    :2px;
    }

    #div2?
    {
    ????border
    :?1px?solid?#000099;
    ????height
    :?60px;
    ????width
    :?200px;
    ????margin
    :2px;
    ????position
    :?relative;
    ????top
    :?-64px;
    ????left
    :?204px;
    }

    #div3?
    {
    ????border
    :?1px?solid?#000099;
    ????height
    :?60px;
    ????width
    :?200px;
    ????margin
    :2px;
    }

    下面是效果:
    24.JPG

    可以看到一個(gè)有趣的現(xiàn)象,那就是雖然我們把div2移走了,但是div1和div3中間還是有一個(gè)空間,說(shuō)明相對(duì)定位的元素是會(huì)占據(jù)文檔流空間的,這里的div2就是典型的“站著茅坑不拉屎”。

    使用絕對(duì)定位也是可以把div2擺到div1的右邊的,而且絕對(duì)定位是不會(huì)占據(jù)文檔流空間的,如下圖,div1和div3之間沒(méi)有空白:
    25.JPG

    div2的CSS代碼:
    #div2?{
    ????border
    :?1px?solid?#000099;
    ????height
    :?60px;
    ????width
    :?200px;
    ????margin
    :2px;
    ????position
    :?absolute;
    ????top
    :?15px;
    ????left
    :?214px;
    }


    絕對(duì)定位是個(gè)好東西,可以把內(nèi)容顯示到頁(yè)面上的任何位置,但是對(duì)于我們程序員來(lái)說(shuō),卻不能使用太多的絕對(duì)定位,因?yàn)槭褂贸绦騽?dòng)態(tài)向div中添加內(nèi)容,div的大小是不可知的,無(wú)法將每一個(gè)div的位置都定死。

    四、CSS中的浮動(dòng)和清除模型

    在CSS中,最讓人不好理解的應(yīng)該算是float和clear意義了。float可以達(dá)到這樣一個(gè)效果,就是本來(lái)應(yīng)該一行一個(gè)的塊元素,如果定義了float屬性,則只要行的空間足夠,它會(huì)跑別的float元素的屁股后面,而不再會(huì)單獨(dú)占用一行,如下圖:
    26.JPG

    這里把div2和div3都定義了為浮動(dòng),代碼如下:

    #div2?{
    ????border
    :?1px?solid?#000099;
    ????height
    :?60px;
    ????width
    :?200px;
    ????margin
    :2px;
    ????float
    :left;
    }

    #div3?
    {
    ????border
    :?1px?solid?#000099;
    ????height
    :?60px;
    ????width
    :?200px;
    ????margin
    :2px;
    ????float
    :left;
    }

    那什么情況下需要clear呢?這是因?yàn)閒loat的元素和絕對(duì)定位的元素一樣,也是不占用文檔空間的,因此,如果我們把div2和div3都嵌套在div1中,并且把div2和div3都定義為浮動(dòng),那么由于它們不占用文檔空間,所以作為父元素的div1不知道自動(dòng)擴(kuò)展大小,以至于顯示出來(lái)div2和div3會(huì)跑到div1的外面,如下圖:
    27.JPG

    下面是它們的html代碼:
    <div?id="div1">div1
    <div?id="div2">div2</div>
    <div?id="div3">div3</div>
    </div>

    下面是它們的css代碼:
    #div1?{
    ????border
    :?1px?solid?#000099;
    ????height
    :?60px;
    ????width
    :?450px;
    ????margin
    :2px;
    }

    #div2?
    {
    ????border
    :?1px?solid?#000099;
    ????height
    :?60px;
    ????width
    :?200px;
    ????margin
    :2px;
    ????float
    :left;
    }

    #div3?
    {
    ????border
    :?1px?solid?#000099;
    ????height
    :?60px;
    ????width
    :?200px;
    ????margin
    :2px;
    ????float
    :left;
    }

    因?yàn)閒loat的元素不占用文檔流空間,有時(shí)候被的元素還會(huì)重疊到float元素上,這里我就不舉例了。

    為了解決上面的問(wèn)題,就需要在float之后的元素上面使用clear,在此例中,我們?cè)赿iv3后面加入一個(gè)空段落,并設(shè)置其為clear,如下:
    <div?id="div1">div1
    <div?id="div2">div2</div>
    <div?id="div3">div3</div>
    <p?class="clear"></p>
    </div>

    下面是新增加的空段落的CSS代碼:
    .clear{
    ????clear
    :left;
    }

    效果圖:
    28.JPG

    還是以我的xkland項(xiàng)目為例,來(lái)設(shè)計(jì)一個(gè)完整的頁(yè)面吧。下面是我的welcome.jsp頁(yè)面的布局圖:
    20.JPG

    在這個(gè)頁(yè)面中,我完全擺脫了“表格套表格”的模式,而且除了最上面一行在一個(gè)div里面顯示logo、advertisment和appendix的div外,其它的地方?jīng)]有div嵌套。盡量減少div嵌套的有力武器是理解div的意義,div代表division,是部分的意思,也就是說(shuō)只有在確實(shí)沒(méi)有標(biāo)簽?zāi)軌蜃鳛橐粋€(gè)部分的根元素的時(shí)候才需要div。在上面的例子中,菜單條就沒(méi)有使用div。菜單條是使用列表實(shí)現(xiàn)的,因?yàn)榱斜淼亩及趗l標(biāo)簽中,因此沒(méi)有必要使用div。下面是上圖的html代碼:
    <body>
    <div?id="header">
    ??
    <div?id="logo">此處顯示?id?"logo"?的內(nèi)容</div>
    ??
    <div?id="appendix">此處顯示?id?"appendix"?的內(nèi)容</div>
    ??
    <div?id="advertisment">此處顯示?id?"advertisment"?的內(nèi)容</div>
    </div>
    <ul?id="menu">
    ??
    <li>菜單項(xiàng)一</li>
    ??
    <li>菜單項(xiàng)二</li>
    ??
    <li>菜單項(xiàng)三</li>
    ??
    <li?class="lastMenuItem">最后一個(gè)菜單項(xiàng)</li>
    </ul>
    <div?id="loginView">此處顯示?id?"loginView"?的內(nèi)容</div>
    <div?id="catalog">此處顯示?id?"catalog"?的內(nèi)容</div>
    <div?id="search">此處顯示?id?"search"?的內(nèi)容</div>
    <div?id="newTopics">此處顯示?id?"newTopics"?的內(nèi)容</div>
    <div?id="newReply">此處顯示?id?"newReply"?的內(nèi)容</div>
    <div?id="hotTopics">此處顯示?id?"hotTopics"?的內(nèi)容</div>
    <div?id="statistics">此處顯示?id?"statistics"?的內(nèi)容</div>
    <div?id="hotGroups">此處顯示?id?"hotGroups"?的內(nèi)容</div>
    <div?id="hotUsers">此處顯示?id?"hotUsers"?的內(nèi)容</div>
    <div?id="footer">此處顯示?id?"footer"?的內(nèi)容</div>
    </body>

    是不是很簡(jiǎn)潔?

    而關(guān)于頁(yè)面美化和布局的內(nèi)容,全部轉(zhuǎn)移到了CSS中。先來(lái)說(shuō)說(shuō)菜單項(xiàng),菜單項(xiàng)是使用列表實(shí)現(xiàn)的,而列表常規(guī)的顯示樣式是下面這樣的:
    19.JPG

    怎么樣才能讓它們顯示到一行呢?那就是我前面講到的float屬性。我們給id為menu的ul定義如下樣式,來(lái)顯示邊框:
    #menu?{
    ????border
    :?1px?solid?#0F54C3;
    ????padding
    :5px;
    ????margin
    :0px;
    ????width
    :804px;
    ????margin
    :1px?0px;
    ????height
    :?12px;
    }

    為了避免前面講到的float元素跑到邊框之外,我這里沒(méi)有使用clear,而是將menu的height屬性定義為12px,和頁(yè)面上的字體等高,而菜單只有一行,因此不會(huì)跑到邊框之外。menu中的每一個(gè)菜單項(xiàng)都是一個(gè)li,我們可以通過(guò)#menu li { }來(lái)定義它的樣式,這種方式叫做后代選擇器,充分使用這種選擇器,是避免使用過(guò)多的類(lèi)的有力武器,從前面的html代碼中可以看出,我只對(duì)最后一個(gè)菜單項(xiàng)定義了類(lèi),因?yàn)槲也幌胱詈笠粋€(gè)菜單后面還跟一個(gè)小豎線(xiàn),菜單項(xiàng)之間的小豎線(xiàn)是通過(guò)定義li的右邊框樣式做到的,其css代碼如下:
    #menu?li?{
    ????float
    :left;
    ????padding-left
    :10px;
    ????padding-right
    :10px;
    ????border-right-width
    :?1px;
    ????border-right-style
    :?solid;
    ????border-right-color
    :?#0F54C3;
    }

    #menu?.lastMenuItem?
    {
    ????border-right-style
    :none;
    }


    對(duì)于下面那么多的框框,除了#netTopics我使用絕對(duì)定位把它擺到了右邊作為主要內(nèi)容區(qū)之外,其它的都是順著文檔流擺下來(lái)的,只定義了寬度,而不需要定義位置。

    如果我們要美化頁(yè)面,比如添加網(wǎng)站特有的圖片,我們可以修改#logo、#advertisment、#appendix的css代碼,甚至當(dāng)以后別人美化我的網(wǎng)站時(shí),可以把這三個(gè)div的visible設(shè)置為false,而直接定義#header的樣式。在這里,我們只簡(jiǎn)單的把#logo的背景設(shè)置為logo圖片,并去掉邊框。下面是css代碼:

    #logo?{
    ????float
    :left;
    ????height
    :?60px;
    ????width
    :?200px;
    ????background
    :url(../images/xkland_logo.gif)?no-repeat?left?top;
    }


    對(duì)于其他的div,我們還需要為它們添加內(nèi)容,#loginView這個(gè)稍微特殊一點(diǎn),需要添加標(biāo)題和表單,而其他的div就簡(jiǎn)單得多,只需要標(biāo)題和列表就夠了。這里我們以#loginView為例,下面是添加內(nèi)容之后的效果:
    21.JPG

    別看這里面布局也挺復(fù)雜的,我也完全沒(méi)有使用表格。下面是html代碼:

    <div?id="loginView">
    ??
    <h3>用戶(hù)登錄</h3>
    <form?name="form1"?id="form1"?method="post"?action="">
    ??
    <p>用戶(hù)名:
    ??????
    <input?class="textInput"?name="userName"?type="text"?id="userName"?/>
    ??
    </p>
    ??
    <p>密 碼:?
    ????
    <input?class="textInput"?name="password"?type="password"?id="password"?/>
    ??
    </p>
    ??
    <ul>
    ??????
    <li>忘記密碼?</li>
    ??????
    <li>新用戶(hù)注冊(cè)</li>
    ??????
    <li><input?type="checkbox"?name="checkbox"?value="checkbox"?/>記住我</li>
    ??
    </ul>
    ??
    <p?class="clear">
    ??
    <input?type="submit"?name="Submit"?value="登 錄"?/>
    ??
    </p>
    </form>
    </div>

    可以看到,我使用的h3標(biāo)簽來(lái)作為標(biāo)題,這樣避免了為標(biāo)題另外嵌套一個(gè)div,對(duì)輸入文本框定義了類(lèi)textInput來(lái)定義它們的樣式,而其他的文本內(nèi)容,我都是使用了p標(biāo)簽和ul、li標(biāo)簽,從上面的效果圖就可以看出CSS的強(qiáng)大。下面是它們的css代碼:
    #loginView?{
    ????border
    :?1px?solid?#0F54C3;
    ????width
    :?280px;
    ????margin
    :1px?0px;
    }

    h3?
    {
    ????border-bottom-width
    :?2px;
    ????border-bottom-style
    :?solid;
    ????border-bottom-color
    :?#0F54C3;
    ????padding-top
    :?5px;
    ????padding-right
    :?5px;
    ????padding-bottom
    :?5px;
    ????padding-left
    :?15px;
    ????margin
    :?0px;
    ????font-size
    :?10.5pt;
    }

    #loginView?p?
    {
    ????margin
    :3px;
    ????text-align
    :center;
    }

    #loginView?form?
    {
    ????margin
    :0px;
    }

    .textInput?
    {
    ????border
    :?1px?solid?#CCCCCC;
    ????width
    :?15em;
    ????height
    :12px;
    }

    #loginView?ul?
    {
    ????margin
    :8px?10px?3px?10px;
    }

    #loginView?ul?li?
    {
    ????float
    :?left;
    ????width
    :?130px;
    ????height
    :18px;
    }

    .clear?
    {
    ????clear
    :?left;
    }

    總之,使用CSS將程序和美工分離是絕對(duì)的真理,我們程序員只要能夠在框框內(nèi)輸出正確的數(shù)據(jù)就夠了,這樣能夠盡量減少程序的bug,美化頁(yè)面的事就讓界面設(shè)計(jì)師去做吧。當(dāng)然,我們程序員還是要能夠在html中設(shè)計(jì)正確的division劃分和嵌套,讓界面設(shè)計(jì)師在設(shè)計(jì)界面的時(shí)候能夠找到定義CSS的錨點(diǎn)。

    最后提一下,如果你的公司附近有幾所大學(xué)的話(huà),那么恭喜你,你只需要設(shè)置少量的獎(jiǎng)金舉辦一個(gè)什么CSS設(shè)計(jì)大賽,那么你的網(wǎng)站就有成十上百的界面可用,何樂(lè)而不為呢?


    評(píng)論

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2006-12-26 17:03 by dev4java-one
    頂!!!!!

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2006-12-26 17:19 by chenzijun
    不錯(cuò),通俗易懂,還有圖,看的明白...

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2006-12-26 21:18 by xuyo
    好,收藏之

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2006-12-27 09:29 by kongjia
    中國(guó)人看的明白

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2006-12-27 09:45 by tory
    想看一下完整的css代碼,呵呵

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2006-12-27 09:45 by tory
    想看一下完整的css代碼,呵呵

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2006-12-27 09:45 by tory
    想看一下完整的css代碼,呵呵

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2006-12-27 10:10 by 竹十一[匿名]
    太絕對(duì)了,從一個(gè)坑跳到另一個(gè)坑。

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2006-12-27 11:13 by 海邊沫沫
    完整的CSS代碼如下:
    body,td,th {
    font-size: 12px;
    color: #0f54c3;
    }
    body {
    margin-left: 5px;
    margin-top: 10px;
    margin-right: 10px;
    margin-bottom: 5px;
    }
    a:link {
    color: #0f54c3;
    text-decoration: none;
    }
    a:visited {
    text-decoration: none;
    color: #CC0000;
    }
    a:hover {
    text-decoration: underline;
    color: #FF00FF;
    }
    a:active {
    text-decoration: none;
    color: #3366FF;
    }

    #header {
    height: 60px;
    width: 814px;
    border: 1px solid #0f54c3;
    }

    #logo {
    float:left;
    height: 60px;
    width: 200px;
    background:url(../images/xkland_logo.gif) no-repeat left top;
    }
    #advertisment {
    float: left;
    height: 56px;
    width: 500px;
    margin:1px;
    border: 1px solid #0f54c3;
    }
    #appendix {
    width:100px;
    height:60px;
    float: right;
    text-align:right;
    }
    #appendix p {
    margin:3px;
    }
    #menu {
    border: 1px solid #0F54C3;
    padding:5px;
    margin:0px;
    width:804px;
    margin:1px 0px;
    height: 12px;
    }
    #menu li {
    float:left;
    padding-left:10px;
    padding-right:10px;
    border-right-width: 1px;
    border-right-style: solid;
    border-right-color: #0F54C3;
    }
    #menu .lastMenuItem {
    border-right-style:none;
    }
    #loginView {
    border: 1px solid #0F54C3;
    width: 280px;
    margin:1px 0px;
    }
    #catalog {
    border: 1px solid #0F54C3;
    width:280px;
    margin:1px 0px;
    }
    #search {
    width: 280px;
    border: 1px solid #0F54C3;
    margin:1px 0px;
    }
    #newReply {
    width: 280px;
    border: 1px solid #0F54C3;
    margin:1px 0px;
    }
    #hotTopics {
    width: 280px;
    border: 1px solid #0F54C3;
    margin:1px 0px;
    }
    #statistics {
    width: 280px;
    border: 1px solid #0F54C3;
    margin:1px 0px;
    }
    #hotGroups {
    width: 280px;
    border: 1px solid #0F54C3;
    margin:1px 0px;
    }
    #hotUsers {
    border: 1px solid #0F54C3;
    width: 280px;
    margin:1px 0px;
    }
    #footer {
    width: 814px;
    border: 1px solid #0F54C3;
    margin:1px 0px;
    }
    #newTopics {
    position: absolute;
    height: 279px;
    width: 531px;
    left: 288px;
    top: 100px;
    border: 1px solid #0F54C3;
    }
    h3 {
    border-bottom-width: 2px;
    border-bottom-style: solid;
    border-bottom-color: #0F54C3;
    padding-top: 5px;
    padding-right: 5px;
    padding-bottom: 5px;
    padding-left: 15px;
    margin: 0px;
    font-size: 10.5pt;
    }
    #loginView p {
    margin:3px;
    text-align:center;
    }
    #loginView form {
    margin:0px;
    }
    .textInput {
    border: 1px solid #CCCCCC;
    width: 15em;
    height:12px;
    }
    #loginView ul {
    margin:8px 10px 3px 10px;
    }
    #loginView ul li {
    float: left;
    width: 130px;
    height:18px;
    }
    .clear {
    clear: left;
    }


    完整的HTML代碼如下:
    <%@ page contentType="text/html; charset=utf-8" %>
    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>歡迎來(lái)到俠客Land</title>
    <link href="styles/default.css" rel="stylesheet" type="text/css" />
    </head>

    <body>
    <div id="header">
    <div id="logo"></div>
    <div id="advertisment">此處顯示 id "advertisment" 的內(nèi)容</div>
    <div id="appendix">
    <p>收藏本站</p>
    <p>全站下載</p>
    <p>聯(lián)系作者</p>
    </div>
    </div>
    <ul id="menu">
    <li>菜單項(xiàng)一</li>
    <li>菜單項(xiàng)二</li>
    <li>菜單項(xiàng)三</li>
    <li class="lastMenuItem">最后一個(gè)菜單項(xiàng)</li>
    </ul>
    <div id="loginView">
    <h3>用戶(hù)登錄</h3>
    <form name="form1" id="form1" method="post" action="">
    <p>用戶(hù)名:
    <input class="textInput" name="userName" type="text" id="userName" />
    </p>
    <p>密 碼:
    <input class="textInput" name="password" type="password" id="password" />
    </p>
    <ul>
    <li>忘記密碼?</li>
    <li>新用戶(hù)注冊(cè)</li>
    <li><input type="checkbox" name="checkbox" value="checkbox" />記住我</li>
    </ul>
    <p class="clear">
    <input type="submit" name="Submit" value="登 錄" />
    </p>
    </form>
    </div>
    <div id="catalog">此處顯示 id "catalog" 的內(nèi)容</div>
    <div id="search">此處顯示 id "search" 的內(nèi)容</div>
    <div id="newTopics">此處顯示 id "newTopics" 的內(nèi)容</div>
    <div id="newReply">此處顯示 id "newReply" 的內(nèi)容</div>
    <div id="hotTopics">此處顯示 id "hotTopics" 的內(nèi)容</div>
    <div id="statistics">此處顯示 id "statistics" 的內(nèi)容</div>
    <div id="hotGroups">此處顯示 id "hotGroups" 的內(nèi)容</div>
    <div id="hotUsers">此處顯示 id "hotUsers" 的內(nèi)容</div>
    <div id="footer">此處顯示 id "footer" 的內(nèi)容</div>
    </body>
    </html>

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2006-12-27 14:19 by 中東
    你提到了,塊無(wú)素的margin、height等的關(guān)系,那么“行內(nèi)”元素,這幾個(gè)之間的關(guān)系是什么呢?input、button他們有沒(méi)有有一統(tǒng)一的規(guī)則啊

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2006-12-27 17:51 by liyg
    不錯(cuò),正好用上,非常感謝,支持你一下

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2006-12-28 10:54 by weide
    支持

    不過(guò)美工好像對(duì)這種方式不甚贊同,仍然喜歡畫(huà)圖,切片:(

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2006-12-28 11:03 by weide
    #newTopics {
    position: absolute;
    height: 279px;
    width: 531px;
    left: 288px;
    top: 100px;
    border: 1px solid #0F54C3;
    }

    另外從這個(gè)定義看,如果設(shè)定了height和width那么豈不是不會(huì)根據(jù)div中的內(nèi)容自動(dòng)拉伸了?似乎把左側(cè)的所有div都嵌到一個(gè)div中,然后float:left不是更好?

    有沒(méi)有一本書(shū)比較全面的講解這些內(nèi)容?總是斷章取義看了一些介紹,不夠用啊

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2006-12-28 17:26 by 海邊沫沫
    樓上的說(shuō)得非常有道理。

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2006-12-28 19:44 by 海邊沫沫
    行內(nèi)元素和塊元素的不同,在于行內(nèi)元素不用單獨(dú)作為一行,而且設(shè)置行內(nèi)元素上方和下方的margin和padding不會(huì)增加兩行之間的距離,如果要讓兩行之間隔得開(kāi)一點(diǎn),可以設(shè)置line-height。

    如果要行內(nèi)元素按照塊元素顯示,可以使用display:block;
    如果要塊元素按照行內(nèi)元素來(lái)顯示,可以使用display:inline;

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2007-01-13 21:04 by 綠色使者、綠色心情
    對(duì)css和div的介紹挺淺顯易懂而又很到位的,不得不佩服

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2007-03-16 13:11 by yegucheng
    不錯(cuò),配合好的工具,定義確實(shí)很方便啊

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2007-03-29 16:32 by popoer
    講的很清楚!支持!

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2007-04-06 14:50 by itspy
    有時(shí)候被的元素還會(huì)重疊到float元素上

    寫(xiě)的太好了,上面有一個(gè)筆誤。

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2007-04-06 16:05 by itspy
    樓主在回復(fù)中給出的源碼,在不同的平臺(tái)下好像有不同的表現(xiàn)。

    在FF與IE下顯示的不太一樣。

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2007-05-23 15:47 by joesun
    發(fā)現(xiàn)一個(gè)比較惡心的問(wèn)題。ie6是支持在relative定位時(shí)使用left和top屬性的,但是frontpage2003里在編輯狀態(tài)下left和top是不起作用的。。。

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2007-06-14 09:39 by qocop
    在中文編碼下 正常,
    其他編碼下, 亂

    # re: SpringSide開(kāi)發(fā)實(shí)戰(zhàn)(三):漫談CSS和頁(yè)面布局  回復(fù)  更多評(píng)論   

    2008-02-21 17:37 by d34
    訪(fǎng)問(wèn)公司屏蔽網(wǎng)站的方法
    可以使用代理,推薦兩個(gè)代理網(wǎng)站
    http://www.tgod.com.cn 代理解決方案
    http://www.proxy163.com 代理163
    進(jìn)入后點(diǎn)擊在線(xiàn)web代理.
    主站蜘蛛池模板: 亚洲国产精品日韩专区AV| 亚洲av无码乱码国产精品| 麻豆亚洲av熟女国产一区二| 亚洲精品无码你懂的| 国产免费无码一区二区| 成人人免费夜夜视频观看| 亚洲春色在线视频| 亚洲国产精品嫩草影院| 午夜影院免费观看| 人人狠狠综合久久亚洲高清| 337p日本欧洲亚洲大胆精品555588| 国内免费高清在线观看| 亚洲国产成人五月综合网| 久久精品亚洲一区二区三区浴池| 中文字幕亚洲日本岛国片| 久久狠狠爱亚洲综合影院| 99精品免费视频| 午夜免费福利网站| 亚洲无删减国产精品一区| 美女视频免费看一区二区| 91免费国产在线观看| 精品国产日韩亚洲一区| 国产亚洲福利在线视频| 无码精品人妻一区二区三区免费看| 99国产精品免费视频观看| 久久久久亚洲精品中文字幕 | 182tv免费观看在线视频| 国产精品免费小视频| 亚洲制服中文字幕第一区| caoporm碰最新免费公开视频| 久久午夜免费鲁丝片| 大香人蕉免费视频75| 久久狠狠爱亚洲综合影院| 很黄很黄的网站免费的| 午夜亚洲AV日韩AV无码大全| 大地资源在线资源免费观看 | 在线看片人成视频免费无遮挡| 亚洲视频一区二区| 日本免费精品一区二区三区| 四虎影视精品永久免费| 亚洲av无码有乱码在线观看|