2011-05-26 61 views
6

我對編碼和CSS這個世界很陌生,這是我所做過的第一個要求我使用負值的頁面。我記得前些時候在某處讀過,最好不要使用負值。我不確定爲什麼,因爲我似乎無法再找到那篇文章。在CSS中使用負值是否可以接受?

我想感謝您對我的代碼中使用負值的反饋。我避免使用任何框架或類似的東西,以便我能夠理解CSS編碼的全部內容。

此外,我已經使用了一個內部樣式表,以便我可以快速修改我的代碼,而不是在兩個不同的文件之間交換。在開發真實世界頁面時,我肯定會考慮使用外部樣式表。其次,這是我第一次使用導入來使用重置樣式表。

CODE

<!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"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <meta http-equiv="Content-Language" content="en-us" /> 

    <meta name="keywords" content="" /> 
    <meta name="description" content="" /> 
    <meta name="author" content="" /> 

    <title>Sample</title> 


    <link rel="icon" type="image/png" href="" /> 

    <link rel="stylesheet" type="text/css" href="" /> 

    <style type="text/css" media="all"> 

    @import url('http://meyerweb.com/eric/tools/css/reset/reset.css'); 

    body { 

     font-family: Georgia; 
     font-size: 1em; 

    } 

    #wrapper { 

     /* background-color: #FAEBD7; */ 
     width: 960px; 
     margin: 0px auto; 

    } 

    #innerwrapper { 

     /* background-color: #CDC0B0; */ 
     overflow: auto; 

    } 

    #header { 

     /* background-color: #8B8378; */ 

    } 

    #logo { 

     background-color: #000000; 
     float: left; 
     width: 100px; 
     height: 70px; 
     color: #ffffff; 
     text-align: center; 
     padding-top: 30px; 

    } 

    #topnav { 

     /* background-color: #8B8970; */ 
     float: right; 
     margin-top: 50px; 
     width: 300px; 
     text-align: right; 


    } 

    #status { 

     /* background-color: #808080; */ 
     width: 100px; 
     position: relative; 
     top: -80px; 
     left: 800px; 
     text-align: center; 
    } 

    #topnav ul { 

     word-spacing: 5px; 

    } 

    #topnav ul li { 

     display: inline; 

    } 

    #separator { 

     border-bottom: 1px dashed gray; 
     margin-top: 20px; 

    } 

    #content { 

     /* background-color: #68838B; */ 
     overflow: hidden; 
     margin-top: 60px; 

    } 

    #innercontent { 

     /* background-color: #778899; */ 
     float: left; 
     width: 600px; 

    } 

    #rightcol { 

     /* background-color: #CDCDB4; */ 
     float: right; 
     width: 300px; 

    } 

    #rightcol p + p { 

     margin-top: 1em; 

    } 

    #footer { 

     /* background-color: #CDB7B5; */ 
     margin-top: 20px; 

    } 

    </style> 
</head> 

<body> 
    <div id="wrapper"> 
     <div id="innerwrapper"> 
      <div id="header"> 

       <div id="logo">logo</div> 

       <div id="topnav"> 
        <ul> 
         <li>about</li> 
         <li>browse</li> 
         <li>join</li> 

         <li>faq</li> 
         <li>contact</li> 
        </ul> 
       </div> 

       <div id="status">login</div> 

      </div> 
     </div> 

     <div id="separator"></div> 


     <div id="content"> 
      <div id="innercontent"> 
       Lorem ipsum dolor sit amet, at elementum neque vestibulum sollicitudin semper neque, vitae metus. Nibh ligula mi. Faucibus rutrum elit turpis, nec congue quam ipsum felis neque et, wisi amet, architecto eros congue. Maecenas suspendisse tellus arcu eget pharetra, rhoncus aenean sapien morbi nec arcu, vivamus aliquet lorem amet at, vestibulum purus sociis varius id. Imperdiet id magnis turpis beatae aliquet, vestibulum dolor nec eget eu cras lobortis, vel rerum, risus sed et, libero et non eros commodo. Taciti eu leo sollicitudin malesuada, nibh duis amet aenean, odio aptent ultrices. Tristique morbi nunc ullamcorper ut curabitur. Et a in ut sem varius, sem rutrum vehicula sem sed, at diam amet erat vel. Et sit in ante felis vitae sit. 

       Quam eget sed elit natoque velit, enim mauris mauris urna, integer amet tellus illo ipsum, dolor fermentum cursus enim mollis tristique porttitor. Non dignissim. Sit ligula leo tincidunt, justo ut ut placerat quisque non, risus nonummy. Ultrices mauris congue aliquam aliquam felis, at placerat, amet vestibulum dictumst pellentesque iaculis risus. Sem sed impedit nullam ultrices lorem aliquam, nulla tellus consequatur in ornare magna. Viverra amet pede in in ornare eu, id arcu. Justo mus suspendisse praesent et, amet mattis convallis ullamcorper felis, fermentum nibh at ac, ullamcorper ipsum auctor et maecenas, aliquam molestiae in qui. Massa elit suspendisse penatibus molestie libero dolor, non leo vitae, sollicitudin a, platea tristique iaculis, tortor augue non est. Ante rutrum quis pellentesque lacinia convallis non, vestibulum nibh nunc luctus nibh a, in amet, iaculis dui ornare pede laoreet eu. Cursus integer vehicula quis, justo eget purus mattis donec vestibulum nunc, nunc vel eros lectus. 
      </div> 


      <div id="rightcol"> 
       <p>paragraph1</p> 
       <p>paragraph2</p> 
      </div> 


     </div> 

     <div id="footer">footer</div> 

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

編輯 - 每WDM的建議更新代碼,只要正確使用

<!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"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <meta http-equiv="Content-Language" content="en-us" /> 

    <meta name="keywords" content="" /> 
    <meta name="description" content="" /> 
    <meta name="author" content="" /> 

    <title>Sample</title> 

    <link rel="icon" type="image/png" href="" /> 

    <link rel="stylesheet" type="text/css" href="" /> 

    <style type="text/css" media="all"> 

    @import url('http://meyerweb.com/eric/tools/css/reset/reset.css'); 

    body { 

     font-family: Georgia; 
     font-size: 1em; 

    } 

    #wrapper { 

     /* background-color: #FAEBD7; */ 
     width: 960px; 
     margin: 0px auto; 

    } 

    #innerwrapper { 

     /* background-color: #CDC0B0; */ 
     overflow: auto; 

    } 

    #header { 

     /* background-color: #8B8378; */ 

    } 

    #logo { 

     background-color: #000000; 
     float: left; 
     width: 100px; 
     height: 70px; 
     color: #ffffff; 
     text-align: center; 
     padding-top: 30px; 

    } 

    #status { 

     /* background-color: #808080; */ 
     position: relative; 
     top: -85px; 
     left: 780px; 
     width: 100px; 
     text-align: center; 

    } 

    #topnav { 

     /* background-color: #8B8970; */ 
     float: right; 
     width: 300px; 
     margin-top: -70px; 
     text-align: right; 


    } 

    #topnav ul { 

     word-spacing: 5px; 

    } 

    #topnav ul li { 

     display: inline; 

    } 

    #separator { 

     border-bottom: 1px dashed gray; 
     margin-top: 20px; 

    } 

    #content { 

     /* background-color: #68838B; */ 
     overflow: hidden; 
     margin-top: 60px; 

    } 

    #innercontent { 

     /* background-color: #778899; */ 
     float: left; 
     width: 600px; 

    } 

    #rightcol { 

     /* background-color: #CDCDB4; */ 
     float: right; 
     width: 300px; 

    } 

    #rightcol p + p { 

     margin-top: 1em; 

    } 

    #footer { 

     /* background-color: #CDB7B5; */ 
     margin-top: 20px; 

    } 

    </style> 
</head> 

<body> 
    <div id="wrapper"> 
     <div id="innerwrapper"> 
      <div id="header"> 
       <div id="logo">logo</div> 

       <div id="status">Logged in</div> 

       <div id="topnav"> 
        <ul> 
         <li>about</li> 
         <li>browse</li> 
         <li>join</li> 
         <li>faq</li> 
         <li>contact</li> 
        </ul> 
       </div> 

      </div> 
     </div> 

     <div id="separator"></div> 

     <div id="content"> 
      <div id="innercontent"> 
       Lorem ipsum dolor sit amet, at elementum neque vestibulum sollicitudin semper neque, vitae metus. Nibh ligula mi. Faucibus rutrum elit turpis, nec congue quam ipsum felis neque et, wisi amet, architecto eros congue. Maecenas suspendisse tellus arcu eget pharetra, rhoncus aenean sapien morbi nec arcu, vivamus aliquet lorem amet at, vestibulum purus sociis varius id. Imperdiet id magnis turpis beatae aliquet, vestibulum dolor nec eget eu cras lobortis, vel rerum, risus sed et, libero et non eros commodo. Taciti eu leo sollicitudin malesuada, nibh duis amet aenean, odio aptent ultrices. Tristique morbi nunc ullamcorper ut curabitur. Et a in ut sem varius, sem rutrum vehicula sem sed, at diam amet erat vel. Et sit in ante felis vitae sit. 

       Quam eget sed elit natoque velit, enim mauris mauris urna, integer amet tellus illo ipsum, dolor fermentum cursus enim mollis tristique porttitor. Non dignissim. Sit ligula leo tincidunt, justo ut ut placerat quisque non, risus nonummy. Ultrices mauris congue aliquam aliquam felis, at placerat, amet vestibulum dictumst pellentesque iaculis risus. Sem sed impedit nullam ultrices lorem aliquam, nulla tellus consequatur in ornare magna. Viverra amet pede in in ornare eu, id arcu. Justo mus suspendisse praesent et, amet mattis convallis ullamcorper felis, fermentum nibh at ac, ullamcorper ipsum auctor et maecenas, aliquam molestiae in qui. Massa elit suspendisse penatibus molestie libero dolor, non leo vitae, sollicitudin a, platea tristique iaculis, tortor augue non est. Ante rutrum quis pellentesque lacinia convallis non, vestibulum nibh nunc luctus nibh a, in amet, iaculis dui ornare pede laoreet eu. Cursus integer vehicula quis, justo eget purus mattis donec vestibulum nunc, nunc vel eros lectus. 
      </div> 

      <div id="rightcol"> 
       <p>paragraph 1</p> 
       <p>paragraph 2</p> 
      </div> 

     </div> 

     <div id="footer">footer</div> 
    </div> 
</body> 
</html> 
+0

負值是完全可以接受的,但我會謹慎使用它們。它們在某些情況下非常有用。 – wdm 2011-05-26 05:58:48

+1

@wdm - 他們有什麼用處?我的負值使用是否可以接受? – PeanutsMonkey 2011-05-26 08:45:04

+0

http://stackoverflow.com/questions/1623163/is-negative-margin-or-padding-invalid-css-according-to-w3c可能的重複? – 2011-05-26 05:53:05

回答

2

讓我在這裏整理我的意見到一個答案。

第一:負值是完全可以接受的,但我會謹慎使用它們。它們在某些情況下絕對有用

HTML標記應該遵循頁面的視覺流程。我不會以您原先預期的方式使用負值保證金。一種常見用途是覆蓋元素時。例如:http://jsfiddle.net/wdm954/jwBzv

我該如何解決您的頂級菜單代碼?我想包#status和你UL#topnav這樣的...

<div id="topnav"> 
    <div id="status">Logged in</div> 
    <ul> 
     <li>about</li> 
     <li>browse</li> 
     <li>join</li> 
     <li>faq</li> 
     <li>contact</li> 
    </ul> 
</div> 

並使用沿着這些線路的CSS東西...

#topnav { 
    float: right; 
} 
#topnav #status { 
    text-align: center; 
    margin-bottom: 15px; 
} 
#topnav li { 
    display: inline; 
    margin-left: 15px; 
} 

以下是演示:http://jsfiddle.net/wdm954/RwEWN/3/

希望這可以幫助!

+0

謝謝。爲什麼我沒有想到這個?這無疑幫助我思考我應該編碼的方式。然而,我希望你能詳細闡述何時負值有用以及何時使用它們? – PeanutsMonkey 2011-05-27 03:38:27

+0

@PananutsMonkey我只傾向於在必要時使用負邊距。我認爲最好避免使用它們,直到遇到負面利潤率是唯一合理解決方案的問題。至少我是這麼想的。爲方便編碼優雅拍攝。 – wdm 2011-05-27 03:45:58

+0

感謝您的幫助和建議。 – PeanutsMonkey 2011-05-27 04:03:02

3

負值可以非常強大。使用負值沒有問題。

+0

謝謝。在我的例子中使用負值是否合適?還有在其他什麼情況下他們可以接受? – PeanutsMonkey 2011-05-26 08:44:29

+0

@PananutsMonkey:沒關係。使用負值基本上總是可以接受的。不要擔心這一點。 – Marcin 2011-05-26 10:20:48

+0

@Marcin - 根據W3C制定的指導方針,似乎使用負值填充是不可接受的。 – PeanutsMonkey 2011-05-27 02:33:35

0

我會遠離使用負邊距,因爲它們可能會令人困惑並且難以理解,但是使用負值進行定位(就像您所做的那樣)是常見且完全可以接受的!

您不能使用負值填充。

+0

謝謝。當你說「他們可能會混淆而難以理解」時,你的意思是什麼?所以我認爲屬性'position','margin'和'padding'是彼此唯一的,即''position'與'margin'或'padding'不一樣? – PeanutsMonkey 2011-05-27 03:02:54

+1

當您從現在開始幾周/幾個月/幾年重訪代碼時,可能很難看出您爲什麼使用負邊距以及它們如何使您的元素相互交互。負邊際*是*有效的,但我認爲通常有更好的,更清潔的方式來完成同樣的事情。如果您確實使用了它們,請記住在您編寫代碼時解釋您的想法。是的,'position','margin'和'padding'都是不同的,獨立的東西。 – jordanstephens 2011-05-27 03:17:20

+0

謝謝。這是一個有用的提示,爲我的代碼評論我爲什麼這麼做。 – PeanutsMonkey 2011-05-27 03:42:33

0

如果它給你你正在尋找的結果,當然,負值沒有問題。對他們來說沒有什麼天生的壞處。他們可以使定位更容易。

+0

謝謝。雖然它們使定位更容易,但是建議還是不鼓勵?如果後者爲什麼是這樣? – PeanutsMonkey 2011-05-27 03:03:37

+0

@PananutsMonkey:對此並沒有什麼全面的,最終的規則,我從來沒有聽說過它被阻止。如果你能找到令人信服的證據來爭辯,請分享,但在此期間,如果我認爲有必要,我會繼續使用它們。 – 2011-05-27 04:11:03

相關問題