网页上的标题问题

时间:2019-02-24 23:28:56

标签: html css

我正在创建一个网站,并且遇到一些标题/导航问题。我已将网站居中(工作正常),并且标题从页面应在页面的起始位置开始,但是当我在标题中添加边框底部时,标题应从页面的起始位置开始,但继续到页面右侧。我的导航栏(它是一个浮点数:右)也从网页的最右侧开始。 HTML和CSS。我知道这可能很明显,但是我很茫然。

html,
body {
  padding: 0;
  margin: 0;
}

html {
  background-color: #FFF;
  max-width: 100%;
}

body {
  margin-left: auto;
  margin-right: auto;
  width: 1024px;
  background-color: #FFF;
  font-family: 'Merriweather', serif;
  font-family: 'Playfair Display', serif;
}

header {
  height: 6em;
  border-bottom: 1px solid #00529C;
  position: fixed;
  display: block;
  overflow: hidden;
  width: 100% !important;
  z-index: 1;
}

nav {
  max-width: 50%;
}

.hdrmenu ul {
  margin-right: 1em;
  padding-top: 1.5em;
}

.hdrmenu li {
  float: left;
  list-style: none;
  /*margin: auto;*/
}

.hdrmenu li a {
  text-align: center;
  text-decoration: none;
  padding: 0em 2em;
  /*list-style: none;*/
  overflow: hidden;
  color: #00529C;
}
<header class="bg transition">
  <nav class="hdrmenu">
    <a href="index.html"><img src="_images/1280_AcYxdW7KNtA0.png" class="logo"></a>
    <ul style="float: right;">
      <li><a href="ardvark.html" class="slide-left-right">Ardvark</a></li>
      <li><a href="beaver.html" class="slide-left-right">Beaver</a></li>
      <li><a href="cougar.html" class="slide-left-right">Cougar</a></li>
      <li><a href="dinosaur.html" class="slide-left-right">Dinosaur</a></li>
      <li><a href="elephant.html" class="slide-left-right">Elephant</a></li>
    </ul>
  </nav>
</header>

<section class="mainContent">
  <h1>Animals</h1>
  <p>Blah, Blah</p>
</section>

3 个答案:

答案 0 :(得分:0)

您在这里:

html,
body {
  padding: 0;
  margin: 0;
}

body {
  font-family: 'Merriweather', serif;
  font-family: 'Playfair Display', serif;
}

header, 
.mainContent {
  width: 1024px;
}

.mainContent {
  margin: 120px auto 0;
}

header {
  height: 6em;
  border-bottom: 1px solid #00529C;
  position: fixed;
  z-index: 1;
  background-color: #FFFFFF;
  margin: 0 50%;
  transform: translateX(-50%);
  top: 0;
  left: 0;
}

.hdrmenu ul {
  margin-right: 1em;
  padding-top: 1.5em;
}

.hdrmenu li {
  float: left;
  list-style: none;
}

.hdrmenu li a {
  text-align: center;
  text-decoration: none;
  padding: 0em 2em;
  overflow: hidden;
  color: #00529C;
}

答案 1 :(得分:0)

要修复边框,您需要确保<header>元素不会占用太多空间。问题在于它具有position: fixed,因此width将相对于其当前position适用。我假设您希望它集中在页面的三分之二处。这可以通过简单地从元素中减去右侧空间(使用width: calc(100% / 3 * 2))来实现。并且不要像您的示例中那样为此设置!important规则; !important通常被认为是不良做法。您应该改为阅读specificity

您还将希望删除在<html><body>上设置的规则,并使用名为.container的类或类似的类。这些是文档标签,实际上不应应用定位规则。将规则转移到.container之后,不要使用硬编码的width: 1024px,而应使用 max-width 允许元素在必要时缩小。

然后,如果要将导航栏链接到floatright,则需要从max-width: 50%中删除nav

这可以在下面看到:

html,
body {
  padding: 0;
  margin: 0;
}

.container {
  margin-left: auto;
  margin-right: auto;
  max-width: calc(100% / 3 * 2);
  background-color: #FFF;
  font-family: 'Merriweather', serif;
  font-family: 'Playfair Display', serif;
}

header {
  height: 6em;
  border-bottom: 1px solid #00529C;
  position: fixed;
  display: block;
  overflow: hidden;
  width: calc(100% / 3 * 2);
  z-index: 1;
}

.hdrmenu ul {
  margin-right: 1em;
  padding-top: 1.5em;
}

.hdrmenu li {
  float: left;
  list-style: none;
  /*margin: auto;*/
}

.hdrmenu li a {
  text-align: center;
  text-decoration: none;
  padding: 0em 2em;
  /*list-style: none;*/
  overflow: hidden;
  color: #00529C;
}
<div class="container">

  <header class="bg transition">
    <nav class="hdrmenu">
      <a href="index.html"><img src="_images/1280_AcYxdW7KNtA0.png" class="logo"></a>
      <ul style="float: right;">
        <li><a href="ardvark.html" class="slide-left-right">Ardvark</a></li>
        <li><a href="beaver.html" class="slide-left-right">Beaver</a></li>
        <li><a href="cougar.html" class="slide-left-right">Cougar</a></li>
        <li><a href="dinosaur.html" class="slide-left-right">Dinosaur</a></li>
        <li><a href="elephant.html" class="slide-left-right">Elephant</a></li>
      </ul>
    </nav>
  </header>

  <section class="mainContent">
    <h1>Animals</h1>
    <p>Blah, Blah</p>
  </section>
</div>

请注意,您可能还希望media query切换到移动设备上的“更宽广”的视图。

答案 2 :(得分:0)

如果要的话,您可以在此处检查代码段

https://jsfiddle.net/qu9hg84o/7/

正如@ obsidian-age所说,问题是position: fixedposition:fixed将使内容从正常流中移出,因此主体不能包含标题,因此边界将一直流到结尾。因为对于position: fixed,容器将是viewport。检查positioncontaining_block的位置和包含的块。

此外,您可能要删除导航上的width: 50%,它将导航项笨拙地定位在页面中间。

而且,如果这也是您所期望的,那么删除列表项float: left上的li会堆积在您右边的列表项。