“固定”具有灵活水平位置的菜单

发布于 2024-11-17 02:15:59 字数 347 浏览 3 评论 0原文

我正在尝试制作一个像这样的固定样式菜单:

http://www.w3。 org/Style/Examples/007/menus

但我希望水平定位更加灵活。

我知道我可以在“right:”中使用百分比值而不是常量,但我希望菜单能够作为侧边栏紧贴在居中的博客布局中,这意味着当调整页面大小时,侧边栏应该“ t 覆盖内容。同样,如果我使页面更大,该框不应该远离内容。

有什么方法可以只使用 css 来做到这一点吗?如果没有,也许有一个简单的 JavaScript 解决方案?

I am trying to make a pinned down style menu like this:

http://www.w3.org/Style/Examples/007/menus

Except I want the horizontal positioning to be more flexible.

I know that I can do that having a percentage value in "right:" instead of a constant, but i want the menu to fit snugly in a centered blog layout as the sidebar, which means when the page is resized, the sidebar shouldn't cover the content. Similarly, the box shouldn't spread away from the content if i make the page bigger.

Any way to do this with only css? If not, perhaps an easy javascript solution?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

紧拥背影 2024-11-24 02:15:59

以下是使用一些通用代码执行此操作的一种方法:

HTML:

<div id="container">
  <div id="content"></div>
  <div id="sidebar"></div>
</div>

CSS:

在容器和内容上设置显式宽度,为容器中的侧边栏留出空间。将容器水平居中。

#container {
  width: 200px;
  margin: 0 auto;
}

#content {
  width: 150px;
}

现在我们要position:fix侧边栏相对于页面的中心而不是相对于页面的右边缘。将其设置为容器中剩余空间的宽度,并给它一个 margin-left (或 padding-left),具体取决于您可能想用它做的其他事情) 等于内容的宽度。然后将 right: 50% (对于右侧边栏,将这些值切换为 left 对于左侧边栏)并将 margin-right 设置为负二分之一容器宽度:

#sidebar {
  width: 50px;
  margin-left: 150px;
  position: fixed;
  right: 50%;
  margin-right: -100px;
  /* other styles such as "top", etc. */
}

调整窗口大小,使其紧贴内容并垂直放置在任何位置。

这是一个小提琴(为了视觉清晰度有一些额外的样式): http://jsfiddle.net/blineberry/UkEkS/< /a>

Here's one way to do this with some generic code:

HTML:

<div id="container">
  <div id="content"></div>
  <div id="sidebar"></div>
</div>

CSS:

Set an explicit width on the container and the content, leaving room for the sidebar in the container. Horizontally center the container.

#container {
  width: 200px;
  margin: 0 auto;
}

#content {
  width: 150px;
}

Now we're going to position: fix the sidebar relative to the center of the page instead of relative to the right edge of the page. Make it the width of the left over space in the container and give it a margin-left (or padding-left, depending on other things you may want to do with it) equal to the width of the content. Then set right: 50% (for a right sidebar, switch these values to left for left sidebar) and margin-right to negative one half the container width:

#sidebar {
  width: 50px;
  margin-left: 150px;
  position: fixed;
  right: 50%;
  margin-right: -100px;
  /* other styles such as "top", etc. */
}

Resize the window and it stays snug to the content and vertically positioned wherever you place it.

Here's a fiddle (with some extra styles for visual clarity): http://jsfiddle.net/blineberry/UkEkS/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文