亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么右邊(right)浮動,不能實現寬度自適應呢? 代碼如下:

<!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>混合布局編程挑戰</title>

<style type="text/css">

body{ margin:0; padding:0; font-size:30px; color:#fff}

.top{width:100%;height:80px;background:#ccc;}

.main{height:600px;background:#f00;margin:0 auto;}

.left{width:200px;height:100%;background:#00f; }

.right{height:100%;background:#0da;float:right;}

.foot{height:50px;background:#f31;}

</style>


</head>


<body>

<div class="top">top</div>

<div class="main">

? ? <div class="right">right</div>

? ? <div class="left">left</div>

</div>

<div class="foot">foot</div>


</body>

</html>


正在回答

5 回答

浮動元素如果不定量設置寬高,則其寬高屬性默認為0值。如果不設定寬高的浮動元素里面有子內容,例如你代碼中的文本right,則浮動元素的寬高由文本right的寬高決定。所以設置了浮動屬性的元素是無法自適應的,必須取消其浮動屬性。

你可以試著把你代碼中的height:100%去掉,就會發現.right這個塊縮到了.main的右上角。

但要注意的是,如果把浮動屬性去掉,那么.right就會是一個子塊,會占滿整個.main塊,因為這個時候你設置的高度是100%,同父級塊,而塊元素是要單獨占一行的。于是.left塊就會被擠出.main塊區域。

這時候就必須要為.left預留足夠邊距,即 margin-left:200px;。想要出現題目中的間隔縫隙,只需把左邊距加大即可。

但這個時候你又會發現,.left塊仍然會被擠到下方。這就是因為.left的設置語句出現在.right后,屬于后加載對象。所以.main依然不會有位置給它。這個時候就要用到絕對定位,把.left固定在.main的左邊。這個絕對定位可以相對于body,也可以相對于.main。如果要相對于.main,則要在.main中加入相對定位,才能保證其子元素的定位是相對于父級定位的。

4 回復 有任何疑惑可以回復我~
#1

慕UI1237056 提問者

嗯嗯,理解啦,非常感謝!
2016-03-30 回復 有任何疑惑可以回復我~

http://img1.sycdn.imooc.com//56f34b5d000131ec19190782.jpg

上面代碼顯示的結果是這樣的。為什么right元素右浮動之后不能自適應寬度呢

0 回復 有任何疑惑可以回復我~

不設置高度能撐開,開發的時候一般不設高度

0 回復 有任何疑惑可以回復我~

left{ width:200px;height:500px;position:absolute;left:0;top:100px;background:blue;}

.right{background:#9C9;height:500px;margin-left:210px;}


0 回復 有任何疑惑可以回復我~
#1

浮生若夢_0023

嗯這樣 對的。 請問下 如果不設置高度的話, 怎么解決 絕對定位元素上下撐不開父級?
2016-03-21 回復 有任何疑惑可以回復我~
#2

慕UI1237056 提問者

margin-left設置的左邊距是距離他的父元素的距離,為什么不是距離其兄弟元素的距離呢?
2016-03-24 回復 有任何疑惑可以回復我~
#3

慕UI1237056 提問者

也就是說,main是right元素需要與left元素的父元素,right和left需要間隔10px,left的寬度為200px。為什么right元素的左外邊距不能設置為10px,必須要設置為210px呢
2016-03-24 回復 有任何疑惑可以回復我~

因為right設置了float,無法撐大main,所以main寬度為200px(只有left撐大main);而main是right的父元素,所以right的寬度等于main元素的寬度。

0 回復 有任何疑惑可以回復我~
#1

慕前端7494772

好像錯了
2016-03-18 回復 有任何疑惑可以回復我~
#2

浮生若夢_0023 回復 慕前端7494772

錯了 他問的是左右 不能自適應
2016-03-21 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
如何用CSS進行網頁布局
  • 參與學習       209565    人
  • 解答問題       1206    個

用最簡潔的案例教你布局的那些知識,這是前端工程師基本技能

進入課程

為什么右邊(right)浮動,不能實現寬度自適應呢? 代碼如下:

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號