2016-10-04 42 views
0

我目前正在为某个网站开发一个标题。这个头由两种不同的设计:CSS代码结构决定

浮动/水平标头:

+-------------------------------------------------------------------------+ 
|  +--------------+      +--------------------+  | 
|  |  LOGO  |      | Menu | Menu | Menu |  | 
|  +--------------+      +--------------------+  | 
+-------------------------------------------------------------------------+ 

居中头:

+-------------------------------------------------------------------------+ 
|       +--------------------+       | 
|       |  LOGO  |       | 
|       | Menu | Menu | Menu |       |    
|       +--------------------+       | 
+-------------------------------------------------------------------------+ 

居中头应用,浏览器时宽度小于某个断点值。否则,水平标题。这可以通过CSS media-queries来实现。我的问题是更好的代码组织会是怎样的header.css文件:

  1. 只有两个媒体查询(font-familycontainer-width: 100%等)一起使用这两种设计的代码交叉。

伪代码:

/* Code necessary for both designs */ 

@media-query (width < breakpoint) { 
    /* upgrade code to centered header */ 
} 

@media-query (width >= breakpoint) { 
/* upgrade code to floating header */ 
} 
  • 始终使用居中头+ media-query覆盖必要的部分:
  • 伪代码:

    /* Code necessary for centered designs */ 
    
    @media-query (width >= breakpoint) { 
    /* Overwrite centered header code */ 
    /* Insert floating header code */ 
    } 
    

    我的问题是什么专业人员/缺点这两个css结构?代码重复如何。第一个总是使用media-query来显示有用的东西。第二个需要覆盖一些中心的头文件功能。

    我希望这不会被关闭,因为它太主观。我只要求利弊/利弊到选择什么样的设计或哪一个更好...

    回答

    1

    我绝对不会建议你的第一个例子中,基于可读性和只是一般CSS原则。同时使用greater thanless than的想法是多余的,有点令人困惑 - 它相当于为一种情况做两个if语句。

    以降序或升序排列媒体查询,将您的默认样式保留为最大或最小的屏幕。

    就我个人而言,我定义了任何媒体查询之外的所有全宽样式,然后在遍历样式表时使用max-width,定义越来越小的屏幕大小。话虽如此,相反也是完全可以接受的和常见的,你可以在任何媒体查询之外定义你的手机大小,并向下遍历的大小增加(使用min-width)。这两种方法都创建了一个易于遵循的示例 - 如果我要在此之后处理此文件,那么我将确切知道在哪里可以找到要查找的更改。

    我会说,应该在虽然同意的是,使用min-widthmax-width@media查询是不是一个好主意一两件事。

    +0

    谢谢你的回应。我实际上正在考虑用[SASS](http://sass-lang.com)编写标题。在SASS中,我可以使用类似函数的功能在两个'media-queries'中使用类似'upgrade_to_centered()'/'upgrade_to_floating'的东西(我认为这更清晰)。最终的CSS看起来像上面的第一个例子。你还会用第二种方法吗?我只是觉得,在将'new'设置为'media-query'之前,首先重置* default *设计会有点痛苦。这不会发生两个媒体查询.. – Herickson

    +0

    两个媒体查询只是额外的工作,通常是多余的。如果你做'#myDiv {color:red; } @media唯一的屏幕和(最大宽度:500px){#myDiv {color:blue; }},这与'@media唯一屏幕和(min-width:501px){#myDiv {color:red; }} @media唯一的屏幕和(最大宽度:500px){#myDiv {color:blue; }}'这是额外的不必要的标记,并且*可读性较低,这与您在外部文件中包含的内容相反。 – Santi

    +0

    你说得对。我只有像'#myDiv {display:inline-block; font-size:10px; } @media(max-width:500px){#myDiv {display:block; font-size:12px; }}''''@media(min-width:501px){#myDiv {display:inline-block; font-size:10px; }} @media(max-width:500px){#myDiv {font-size:12px; (少一行,但这加起来......)。 – Herickson