2011-05-26 59 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

相关问题