最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

CSS邊距屬性定義是用margin還是用padding的兩者對(duì)比

  發(fā)布時(shí)間:2012-06-12 09:23:16   作者:佚名   我要評(píng)論
用CSS做網(wǎng)頁時(shí).邊距用哪個(gè)屬于好呢?是margin屬性還是padding屬性呢.
CSS邊距屬性定義元素周圍的空間。通過使用單獨(dú)的屬性,可以對(duì)上、右、下、左的外邊距進(jìn)行設(shè)置。也可以使用簡(jiǎn)寫的外邊距屬性同時(shí)改變所有的外邊距。——W3School
邊界(margin):元素周圍生成額外的空白區(qū)。“空白區(qū)”通常是指其他元素不能出現(xiàn)且父元素背景可見的區(qū)域。——CSS權(quán)威指南
padding稱呼為內(nèi)邊距,其判斷的依據(jù)即邊框離內(nèi)容正文的距離,而我喜歡CSS權(quán)威指南解釋的“補(bǔ)白”(或者叫“留白”),因?yàn)樗苄蜗?。補(bǔ)白(padding):補(bǔ)白位于元素框的邊界與內(nèi)容區(qū)之間。很自然,用于影響這個(gè)區(qū)域的屬性是padding。——CSS權(quán)威指南
關(guān)于什么時(shí)候用margin什么時(shí)候用padding,網(wǎng)上有許許多多的討論,大多數(shù)似乎討論到點(diǎn)上面,卻又有些隔靴搔癢的感覺,總是答不到點(diǎn)上。而且margin和padding在許多地方往往效果都是一模一樣,而且你也不能說這個(gè)一定得用margin那個(gè)一定要用padding,因?yàn)閷?shí)際的效果都一樣,你說margin用起來好他說padding用起來會(huì)更好,但往往爭(zhēng)論無果。根據(jù)網(wǎng)上的總結(jié)歸納大致發(fā)現(xiàn)這幾條還是比較靠譜的:
何時(shí)應(yīng)當(dāng)使用margin:
需要在border外側(cè)添加空白時(shí)。
空白處不需要背景(色)時(shí)。

上下相連的兩個(gè)盒子之間的空白,需要相互抵消時(shí)。如15px + 20px的margin,將得到20px的空白。
何時(shí)應(yīng)當(dāng)時(shí)用padding:
需要在border內(nèi)測(cè)添加空白時(shí)。
空白處需要背景(色)時(shí)。

上下相連的兩個(gè)盒子之間的空白,希望等于兩者之和時(shí)。如15px + 20px的padding,將得到35px的空白。
個(gè)人認(rèn)為:margin是用來隔開元素與元素的間距;padding是用來隔開元素與內(nèi)容的間隔。margin用于布局分開元素使元素與元素互不相干;padding用于元素與內(nèi)容之間的間隔,讓內(nèi)容(文字)與(包裹)元素之間有一段“呼吸距離”。

復(fù)制代碼
代碼如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>用Margin還是用Padding</title>
<style>
.top{width:160px; height:50px; background:#ccf;}
.middle{width:160px; background:#cfc; border-top:1px solid #ccc;}
.middle .firstChild{margin-top:20px;}
.middle .secondChild{margin-top:15px;}
</style>
</head>
<body>
<div class="top"></div>
<div class="middle">
<div class="firstChild">我是firstChild,我只是想和我的父元素隔開點(diǎn)距離,這樣看起來舒服。</div>
<div class="secondChild">我要和樓上隔開點(diǎn)的距離。恩,能與底邊有點(diǎn)呼吸距離就更好了。</div>
</div>
</body>
</html>

上面這個(gè)效果看起來很不錯(cuò),達(dá)到了我們需要實(shí)現(xiàn)的目標(biāo)。然而,我們細(xì)細(xì)查看下這個(gè)代碼,對(duì)照下我們上文所說的規(guī)則,firstChild用了margin-top:20px來隔開父元素與他的距離,secondChild也用margin-top:15來隔開他與firstChild的距離,咋看之下挺符合我們所說的margin是用來隔開元素與元素的間距。但是他符合我們所說的margin用于布局分開元素使元素與元素互不相干嗎?
這里我想說的是NO,firstChild同middle屬于一種父子元素關(guān)系,又是一種包裹元素與內(nèi)容的關(guān)系,他們之間從擬人化的角度來講,不應(yīng)該是老死不相干的局面。我們?cè)賮砜次覀優(yōu)槭裁匆宖irstChild與他的父元素隔開的距離,從表現(xiàn)的角度上來看,文字與邊靠的太近,肯定不好看。讓文字與元素邊隔開的距離,既美觀,又使得文字有了足夠的“呼吸空間”,方便閱讀,這恰恰符合padding用于元素與內(nèi)容之間的間隔讓內(nèi)容(文字)與(包裹)元素之間有個(gè)“呼吸距離”。
我們?cè)賮砜?,firstChild使用margin-top引發(fā)了垂直外邊距合并的隱患,middle如果不加一個(gè)類似border-top:1px solid #ccc的話標(biāo)準(zhǔn)瀏覽器下就會(huì)呈現(xiàn)子元素頂了父元素margin隱患可見這個(gè)時(shí)候margin顯然不是很好的選擇。
我們?cè)囍@樣來修改:

復(fù)制代碼
代碼如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>用Margin還是用Padding</title>
<style>
.top{width:160px; height:50px; background:#ccf;}
.middle_2{width:160px; background:#cfc; padding:20px 0px;}
.middle_2 .firstChild{}
.middle_2 .secondChild{margin-top:15px;}
</style>
</head>
<body>
<div class="top"></div>
<div class="middle_2">
<div class="firstChild">我是firstChild,我只是想和我的父元素隔開點(diǎn)距離,這樣看起來舒服</div>
<div class="secondChild">我是secondChild,我要和樓上隔開點(diǎn)的距離。恩,能與底邊有點(diǎn)呼吸距離就更好了。</div>
</div>
</body>
</html>

我們來看看這么寫的好處吧:
1.外觀依舊良好,結(jié)構(gòu)清晰也沒有破壞布局。
2.不會(huì)產(chǎn)生垂直外邊距合并這樣的問題。
3.書寫規(guī)范、代碼量減少、重用性好。
我們可以看到在middle_2中去除了不需要的border-top,改為更為實(shí)用的padding:20px 0,讓middle_2中的內(nèi)容有了足夠的“呼吸空間”,以后還可以隨時(shí)隨地修改這個(gè)padding,讓內(nèi)容文字的“呼吸空間”增大或者縮小,隨時(shí)隨地只修改一個(gè)middle_2的padding就能搞定所有包裹元素與內(nèi)部?jī)?nèi)容的規(guī)劃。
請(qǐng)注意這里是父元素應(yīng)用padding,使得與其內(nèi)容產(chǎn)生間隙,這是符合我們翻譯為“補(bǔ)白”精髓(所以我一直喜歡稱padding為“補(bǔ)白”而不是內(nèi)邊距),而padding也恰恰是在這兒最能體檢他的價(jià)值。這個(gè)例子把第一個(gè)元素的margin-top去除,在父元素中應(yīng)用padding。反過來,你會(huì)想,既然margin-top不好用,那么我第一個(gè)元素用padding-top不是也能達(dá)到效果么。恭喜你,你已經(jīng)前進(jìn)了一步了,的確使用padding-top即讓第一元素與外包裹元素產(chǎn)生了呼吸距離,而且也不會(huì)出現(xiàn)所謂的垂直外邊距重疊問題, 但是我依舊不推薦你這么做。為什么呢?我們來設(shè)想這么一個(gè)情況吧,假如有一天,你這個(gè)模塊要產(chǎn)生變動(dòng),新需求要?jiǎng)h除這個(gè)firstChild,替換為otherChild,會(huì)怎么樣呢?
新的需求要求我們新加一個(gè)otherChild,替換原來的firstChild:

復(fù)制代碼
代碼如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>用Margin還是用Padding</title>
<style>
.top{width:160px; height:50px; background:#ccf;}
.middle_3{width:160px; background:#cfc;}
.middle_3 .otherChild{font-weight:bold; font-style: italic;}
.middle_3 .secondChild{margin-top:10px;}
</style>
</head>
<body>
<div class="top"></div>
<div class="middle_3">
<div class="otherChild">我是新來的otherChild,我也想和我的父元素隔開點(diǎn)距離,這樣看起來舒服,咦?!為什么我是在頂部?</div>
<div class="secondChild">我是secondChild,我要和樓上隔開點(diǎn)的距離。恩,能與底邊有點(diǎn)呼吸距離就更好了。</div>
</div>
</body>
</html>

發(fā)現(xiàn)問題了么?如果你把原先的firstChild給刪除掉了,新來的元素根本就沒有定義上邊距或者上補(bǔ)白,那么他就會(huì)自然頂在頭部,不是理想的效果。的確,你可以為了他新寫一個(gè)css來讓他距離頭部多一點(diǎn)空隙,但是你該怎么寫?直接改otherChild嗎?如果其他頁面里面也有otherChild那么你會(huì)把其他地方的otherChild布局打亂。恩,那么我用.middle_3 .otherChild{padding-top:10px;}怎么樣可以吧。恩,可以可以,可是你不覺得這么累嗎?每次修改,都要增加這一個(gè)多余的代碼就為了簡(jiǎn)簡(jiǎn)單單的隔開點(diǎn)距離,久而久之,你的css文件代碼會(huì)臃腫不堪,可移植性大大削弱。
每次開發(fā)的時(shí)候我一直對(duì)自己講,你寫的代碼總有一天會(huì)被別的開發(fā)人員所替換、修改、更新。而一個(gè)優(yōu)秀的前端寫出的css不但在現(xiàn)在結(jié)構(gòu)堅(jiān)固并且還能為日后的開發(fā)人員提供方便。修改我的代碼,改前改后的式樣位置都一樣,讓之后的開發(fā)人員根本上避免接觸到再次“修復(fù)”開發(fā)的機(jī)會(huì),那才是一名真正前端的追求。這里你把包裹的div類似“封裝”好一個(gè)環(huán)境,而且這個(gè)div內(nèi)已經(jīng)留有足夠的內(nèi)容的“呼吸空間”,你只需要改內(nèi)容,內(nèi)容所要考慮到得位置邊距問題,外包的div元素早已經(jīng)幫你預(yù)留好了,你用起來方便,今后改起來也方便,直接找到middle修改padding即可。
To margin or to be padding, that is the question.
所謂大道萬千,運(yùn)用之妙存乎一心。該用margin的時(shí)候就大膽的用他,該用padding也不用退縮不前,實(shí)戰(zhàn)中累積出來的經(jīng)驗(yàn)往往是最有用的,而當(dāng)你不確定是用margin好還是用padding,請(qǐng)?jiān)诳纯催@個(gè)原則吧,或許你會(huì)有一個(gè)自己的答案。

相關(guān)文章

  • css行內(nèi)元素padding,margin,width,height沒有變化

    這篇文章主要介紹了css行內(nèi)元素設(shè)置padding,margin,width,height沒有變化的解決方法,需要的朋友可以參考下
    2014-05-07
  • css中padding和margin的異同點(diǎn)介紹

    本文從語法結(jié)構(gòu)、可能取的值、瀏覽器兼容問題等方面為大家介紹下padding和margin的異同點(diǎn)另附截圖,有想學(xué)習(xí)的朋友可以參考下哈,希望對(duì)大家有所幫助
    2013-07-28
  • PHPWind7.0風(fēng)格css樣式詳解

    關(guān)鍵字描述:詳解 樣式 風(fēng)格 solid 必要   修改 padding:0 margin:0 body{font-size:9pt; background:url($imgpath/$stylepath/bodybg.gif) repeat-x ; font-famil
    2009-06-06
  • Z-BLOG模板CSS默認(rèn)樣式注釋大全

    關(guān)鍵字描述:注釋 大全 樣式 默認(rèn) 模板 定義 margin:0 10px padding:0 下面這個(gè)是默認(rèn)的ZBLOG CSS樣式表 里面附帶有最全的CSS注釋 讓你一看就理解了。如果您覺得麻煩
    2009-06-06
  • 簡(jiǎn)化的CSS Reset:15套CSS重設(shè)實(shí)例

    網(wǎng)頁制作Webjx文章簡(jiǎn)介:CSS重設(shè)就是由于各種瀏覽器解釋CSS樣式的初始值有所不同,導(dǎo)致設(shè)計(jì)師在沒有定義某個(gè)CSS屬性時(shí),不同的瀏覽器會(huì)按照自己的默認(rèn)值來為沒有定義的樣式
    2009-04-02
  • Css Reset(復(fù)位)的簡(jiǎn)單介紹-CSS教程-網(wǎng)頁制作-網(wǎng)頁教學(xué)網(wǎng)

    Css Reset是什么? 有些同行叫 "css復(fù)位",有些可能叫 "默認(rèn)css"..... 相信看完全文您會(huì)對(duì)Css Reset有個(gè)重新的認(rèn)識(shí) 原文地址: http://perishablepre
    2008-10-17
  • CSS中margin和padding的區(qū)別淺析

    在CSS中margin是指從自身邊框到另一個(gè)容器邊框之間的距離,就是容器外距離。在CSS中padding是指自身邊框到自身內(nèi)部另一個(gè)容器邊框之間的距離,就是容器內(nèi)距離。下面講解 pa
    2017-06-26

最新評(píng)論

徐汇区| 阿克陶县| 叙永县| 梁河县| 沧源| 徐闻县| 正定县| 余姚市| 武宣县| 天峨县| 尉犁县| 铅山县| 赞皇县| 波密县| 崇阳县| 韶山市| 柳林县| 和林格尔县| 绥棱县| 黎平县| 奉贤区| 扶沟县| 农安县| 鹤庆县| 涞水县| 罗平县| 平武县| 望江县| 黄山市| 右玉县| 格尔木市| 信阳市| 博湖县| 余江县| 苍山县| 铜川市| 天等县| 酒泉市| 惠东县| 营口市| 和田市|