【问题标题】:is CSS-only, full-width sidebar background possible?CSS-only,全宽侧边栏背景可能吗?
【发布时间】:2012-10-14 00:23:52
【问题描述】:

我正在构建一个固定宽度的网站(使用带有 margin:auto 的经典包装器),但我希望侧边栏 背景 延伸到屏幕的右端。

到目前为止,我已经完成了:

HTML

<div id="wrapper">
    <div id="left">Content area</div>
        <div id="right">
            <div id="actual-sidebar">
                Sidebar
            <span class="clearme"></span>
        </div>
    </div>
</div>

CSS

body {
    background: #333;
    color: #fff;
    overflow-x: hidden;
}

#wrapper {
    width: 500px;
    height: 1200px;
    margin: auto;
    border: 2px dashed #fff;
}

#left {
    width: 300px;
    height: 500px;
    float: left;
}

#right {
    width: 175px;
    height: 500px;
    margin-left: 325px;
    margin-right: -9999px;
    padding-right: 9999px;
    background: #777;
}

#actual-sidebar {
    width: 100%;
    height: 100%;
    border: 2px dotted #f0f;
}

​ 你可以在这里看到它的实际效果:
http://jsfiddle.net/knjDV/
http://www.spazionegativo.it/layout-test/

仅使用 css 是否可以实现这种“全角侧边栏”?

在上面的例子中,实际侧边栏宽度被粉红色边框突出显示,其余全部为填充和负边距;在 chrome 中工作,但 IE 破坏了它,所以我添加了 overflow-x: hidden 来修复它。

问题是,即使没有任何内容可供选择,向右单击拖动也会滚动视图,最终隐藏内容。我似乎无法解决这个问题。

是否有解决“拖动-n-滚动”问题的方法,或者有完全不同的方法来解决这个问题?

【问题讨论】:

  • 我很难弄清楚您在这里要解决什么问题,即拖动-n-滚动问题,它的行为似乎完全符合其应有的行为。
  • 对不起,我不是很清楚。我的意思是,如果您单击并向右拖动,您将水平滚动视图并最终隐藏内容,这不是我想要实现的行为。
  • 这似乎是一个jsfiddle故障,你有可以链接到的网站吗?
  • 我已经上传到这里了:spazionegativo.it/layout-test
  • 我认为你应该带着这个去上学。创建一个 2000 像素宽和 1 像素高的图像。用你想要的颜色填充右边的 1000px。现在将此图像设置为您的背景并重复-y。如果您需要它停在某个高度,您可以将图像放在绝对定位的 div 上并以此方式限制其高度。

标签: html css width sidebar


【解决方案1】:

使用 CSS3 渐变作为主体的背景(与侧边栏颜色相同)以创建延伸到屏幕边缘的错觉。

.sidebar {
  background: salmon;
}

body {
  background: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(50%, #fa8072), color-stop(50%, #ffffff));
  background: -webkit-linear-gradient(right, #fa8072 50%, #ffffff 50%);
  background: -moz-linear-gradient(right, #fa8072 50%, #ffffff 50%);
  background: -o-linear-gradient(right, #fa8072 50%, #ffffff 50%);
  background: linear-gradient(right, #fa8072 50%, #ffffff 50%);
}​

Demo

【讨论】:

  • 我不得不说我喜欢你的解决方案,它很有创意!太糟糕了,它不允许侧边栏有背景图像(例如图案)。感谢您的回答。
【解决方案2】:

如果您添加到#right{ position: fixed;},这将摆脱水平滚动条。这可以接受吗?

【讨论】:

  • 你知道,我认为这是错误的。相反,我已经尝试过了,它的效果非常好......我不得不将实际的侧边栏从#right div中取出,以避免也将其固定。到目前为止,这是我所能得到的。谢谢!最终结果:link
猜你喜欢
  • 2021-03-11
  • 2016-04-17
  • 1970-01-01
  • 2011-10-18
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多