“固定”具有灵活水平位置的菜单
我正在尝试制作一个像这样的固定样式菜单:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
以下是使用一些通用代码执行此操作的一种方法:
HTML:
CSS:
在容器和内容上设置显式宽度,为容器中的侧边栏留出空间。将容器水平居中。
现在我们要
position:fix
侧边栏相对于页面的中心而不是相对于页面的右边缘。将其设置为容器中剩余空间的宽度,并给它一个margin-left
(或padding-left
),具体取决于您可能想用它做的其他事情) 等于内容的宽度。然后将right: 50%
(对于右侧边栏,将这些值切换为left
对于左侧边栏)并将margin-right
设置为负二分之一容器宽度:调整窗口大小,使其紧贴内容并垂直放置在任何位置。
这是一个小提琴(为了视觉清晰度有一些额外的样式): http://jsfiddle.net/blineberry/UkEkS/< /a>
Here's one way to do this with some generic code:
HTML:
CSS:
Set an explicit width on the container and the content, leaving room for the sidebar in the container. Horizontally center the container.
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 amargin-left
(orpadding-left
, depending on other things you may want to do with it) equal to the width of the content. Then setright: 50%
(for a right sidebar, switch these values toleft
for left sidebar) andmargin-right
to negative one half the container width: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/