【问题标题】:Sidebar keeps disappearing when I add content添加内容时侧边栏一直消失
【发布时间】:2015-01-06 21:58:54
【问题描述】:

请耐心等待,因为我对 HTML 还很陌生,

我已经有以下 HTML:

<div class="middle">

    <div class="container">
        <main class="content">
        </main><!-- .content -->
    </div><!-- .container-->
    <aside class="left-sidebar">
        <ul class="nav">
            <li><a href="index.html">HOME</a></li>
            <li><a href="over.html">OVER</a></li>
            <li><a href="reizen.html">REIZEN</a></li>
            <li><a href="afbeeldingen.html">AFBEELDINGEN</a></li>
            <li><a href="boek_nu.html">BOEK NU</a></li>
            <li><a href="forum.html">FORUM</a></li>
        </ul>
    </aside><!-- .left-sidebar -->
    </div><!-- .middle-->
</div><!-- .wrapper -->

CSS:

.wrapper {
    width: 100%;
    margin: 0 auto;
}
.header {
    height: 60px;
    background: black;
    opacity: 0.7;
    margin-top: 1%;
    position: relative;
    color: white;
    font: helvetica
}
.container {
    position: relative;
    width: 100%;
    margin-top: 10%;
}
.content {
    padding: 0 0 0 270px;
}
/* Left Sidebar -----------------------------------------------------------------------------*/
 .left-sidebar {
    position: relative;
    float: left;
    width: 10%;
    height;
    150%;
    margin-left: 7%;
    margin-top: 4%;
    opacity: 0.7;
    font-family:"Montserrat", sans-serif;
    font-size: 20px;
    color: Red;
}

每当我尝试在“内容”区域添加大图片时,整个侧边栏都会消失。 我在 CSS 中有一些代码可以正确定位侧边栏,我很确定这是问题所在。

我的问题是:什么是正确的 CSS 代码可以使侧边栏位于左侧某处,而内容区域位于右侧?

【问题讨论】:

  • 让我们看看 CSS!您可能在 .middle 之类的父元素上设置了 overflow: hidden;
  • 对,那可能会派上用场!
  • .wrapper { 宽度:100%;边距:0 自动; } .header { 高度:60px;背景:黑色;不透明度:0.7;最高保证金:1%;位置:相对;白颜色;字体:helvetica } .container { 位置:相对;宽度:100%;最高保证金:10%; } .content { 填充:0 0 0 270px; } /* 左侧边栏 --------------------------------------------- --------------------------------*/ .left-sidebar { 位置:相对;向左飘浮;宽度:10%;高度; 150%;左边距:7%;最高保证金:4%;不透明度:0.7;字体家族:“蒙特塞拉特”,无衬线;字体大小:20px;红色; }
  • 您的 .container 的宽度为 100%。它正在将其推离页面.. 将其减少到 50% 并努力适应任何填充、边距或边框......宽度采用父级的宽度。所以你的容器是 100% + 你的侧边栏有 10% 宽度为 110% + margin-left 7% = 117%...不能超过 100% 的浏览器开始踢东西为更大的项目腾出空间。
  • 我已将其降低到 50%,但现在侧边栏位于内容下方。任何想法如何使内容在侧边栏的右侧对齐?

标签: html css


【解决方案1】:

你有很多事情对你不利。将.container 设置为 90% 将不起作用,因为它没有浮动。具有设定宽度的块级元素仍将占据整个宽度,所发生的情况是剩余空间被边距填充。浮动会消除该边距,但会带来您需要注意的其他问题。

如果您将.container 浮动到右侧并将其宽度设置为 83%,您将实现您想要的。为什么是 83%? .left-sidebar 的宽度是 10% 加上 7% 的边距 = 总侧边栏宽度的 17%。即使经过这次调整,我担心它可能并不完美,因为 .container 上的 10% 上边距和 .content 上 270 像素的左填充和 .left-sidebar 上 4% 的上边距可能不是你想要的。

.wrapper {
    width: 100%;
    margin: 0 auto;
}
.header {
    height: 60px;
    background: black;
    opacity: 0.7;
    margin-top: 1%;
    position: relative;
    color: white;
    font: helvetica
}
.container {
    float: right;
    width: 83%;
    margin-top: 10%;
}
.content {
    padding: 0 0 0 270px;
}
.left-sidebar {
    position: relative;
    float: left;
    width: 10%;
    height;
    150%;
    margin-left: 7%;
    margin-top: 4%;
    opacity: 0.7;
    font-family: "Montserrat", sans-serif;
    font-size: 20px;
    color: Red;
}
<div class="middle">
    <div class="container">
        <main class="content">
          <img src="http://lorempixel.com/400/400/city">
        </main><!-- .content -->
    </div><!-- .container-->
    <aside class="left-sidebar">
        <ul class="nav">
            <li><a href="index.html">HOME</a></li>
            <li><a href="over.html">OVER</a></li>
            <li><a href="reizen.html">REIZEN</a></li>
            <li><a href="afbeeldingen.html">AFBEELDINGEN</a></li>
            <li><a href="boek_nu.html">BOEK NU</a></li>
            <li><a href="forum.html">FORUM</a></li>
        </ul>
    </aside><!-- .left-sidebar -->
</div><!-- .middle-->

让我借此机会介绍带有border-box 值的CSS 属性box-sizing,它允许您使用不同的盒子模型。

.example {
   width: 100px;
   padding: 0 10px;
}

通常总宽度为 120px = 10px + 100px + 10px

.example {
   box-sizing: border-box;
   width: 100px;
   padding: 0 10px;
}

box-sizing: border-box 的总宽度将是 100px = 10px + 90px + 10px,由 width 属性指定。如果你说某事应该是 XXX 宽度,那将是并且该数量包括填充、边距等。

Should you use box-sizing: border-box?

【讨论】:

  • 我终于解决了,只是删除了我拥有的所有内容 HTML 和 CSS,并添加了一个只包含我想要的图像的新 div。仍然不知道是什么导致了第一次出现问题,但这并不重要。无论如何,非常感谢您的支持!!
【解决方案2】:

真正的问题在于 HTML 布局设计而不是 CSS 您应该将左栏(导航)放在内容之前 类似这样的东西:页眉、导航器、内容、页脚

在 CSS 中将容器的宽度更改为 90% 或更小(左边距为 1%),因为 navigator 是 10% 它们加起来应该是 100%

【讨论】:

  • 建议对 SO 提供正确答案,以提供您向提问者提供的信息的最小示例。此人已识别为 HTML 新手,因此如果没有一些代码上下文,您所解释的内容不太可能显而易见。
  • 不一定,出于 SEO 原因,他们可能希望导航位于 HTML 内容之后。但我确实看到了你的意思,我可以看到 HTML 可以改进的地方。
  • 我按照你说的做了,但现在侧边栏在内容的顶部。它仍然没有正确对齐。关于如何对齐侧边栏右侧的内容有什么想法吗?
  • 还是什么都没有。即使我通过极值更改这些值,容器中的图片甚至都不会移动。我现在最好的猜测是它与我网站的其他一些 CSS/HTML 代码冲突。有没有简单的方法来检查这个?
  • 你在img标签里指定宽高了吗??
猜你喜欢
  • 2018-05-10
  • 2016-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-04
  • 2022-01-19
相关资源
最近更新 更多