HTML/CSS:页面左侧的导航栏

4
我发现创建像这样具有良好语义的布局有些尴尬。
左侧是一个宽约150像素的列,其中包含导航元素。
我想将该站点部分的HTML放在HTML代码的开头,然后有一种简单的方法来强制页面的其余部分不要侵占左侧(150像素列)的领土。
我考虑了一些选项。
1. 将站点其余内容放在显式具有150px左边距的div中。 2. 将nav元素设置为宽度为150px并向左浮动。 其余页面自然换行。
还有其他更适合此任务的选项吗?
以下是缺点。
1. 将nav元素更改为200px现在需要我编辑其他div的左边距为200px。 当然,对于一次性布局更改来说,这并不太糟糕,但是如果我从脚本动态更改了nav元素的宽度怎么办? 我需要让脚本也更改div的边距。 2. 如果将nav元素设置为position:fixed(并使其占据页面的整个左列),则页面的其余部分不会适应其现在的静止行为,并且在滚动页面时看起来很糟糕。 要解决此问题,我需要使nav元素无限高。 我不确定如何正确地做到这一点。 height:9999999px;? 这使我的页面高达1000万像素,滚动条现在无用了。
3个回答

6
创建侧边栏:
<!-- html -->
<nav role="main">
  <a href="link.com">link</a>
</nav>

//css
nav{    
  width: 150px;
  float: left;
  display: inline;
  margin: 0;
  padding: 0;
  margin-right: 10px;
}

然后创建一个容器来装载你的主要内容。
<!-- html -->
<section id="main">
  main content in here
</section>

//css
section#main{
  width: 500;
  float: left;
  margin: 0;
  padding: 0;
  display: inline;     
}

只要在源代码中将nav放在section之前,那么section中的任何内容都会远离左侧列,并且不会在其下方换行。
只需确保重置所有CSS,特别是填充、边距和边框,除非您知道自己在做什么。
祝你好运。

谢谢!我不知道<nav>元素。尽管我在我的帖子中多次提到“nav元素”。 - Steven Lu
2
@Steven Lu - 引起警惕,nav 标签是 HTML5 标签,许多浏览器(IE6、IE7、IE8)不会正确支持。你应该用 div 标签替换 nav 标签,可能带有一个 nav 类,而不是使用 nav。 - Matt Asbury
2
主流浏览器对HTML5的支持非常好。所有主要浏览器都支持它 - 如果在较旧的浏览器中需要添加标签到DOM,可以使用html5shiv - 但是如果您喜欢,也可以使用divs。 - stephenmurdoch
如果你想看一个真实世界的HTML5 Web应用程序的例子,它被数百万人使用,并使用各种浏览器,请访问google.com :) 现在拥抱HTML5,不要等待。 - stephenmurdoch
@stephenmurdoch - 进步和拥抱创新值得赞扬,但作为开发人员,我们必须确保每个人都从我们的工作中受益。HTML 5仍处于工作草案阶段,直到2022年才会被完全采用。IE7和IE8占据了大多数Web用户,因此使用不符合标准的代码(对于这些浏览器而言)是愚蠢的。 - Matt Asbury
显示剩余2条评论

1

我一直使用选项1,不过如果还有其他想法的话,我很乐意听听。


1

关于您的“缺点”的一些建议:

  1. 如果您厌倦了一直更改两个具有相同值的属性,请考虑使用CSS生成工具,如LCSS、SASS。
  2. 如果我没记错的话,与其为左侧边栏设置height: 999999px,还有一些诸如此类的技巧存在:http://www.ejeliot.com/blog/61

链接失效。请更新链接,或者最好在您的回答中解释“技巧”。谢谢。 - Michael Scheper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接