如何将固定元素放置在居中容器旁边

时间:2012-11-16 19:16:03

标签: css css-position

我想将我的固定菜单栏放在我的居中容器旁边,但它的位置是相对于视口而不是容器,所以我在将它放在容器旁边时遇到了问题。

将固定元素放在容器旁边的最简单/最简洁的方法是什么?

这是我的测试:https://dl.dropbox.com/u/10378684/index.html

HTML:

<div id="container">
    <header>
        <hgroup>
            <h3>TIA1</h3>
            <h1>Contreformes</h1>
        </hgroup>

    </header>
    <nav>
        <ol>
            <li><a href="#">Grilles</a></li>
            <li><a href="#">Contreformes</a></li>
            <li><a href="#">Ligne de base</a></li>
        </ol>
    </nav>

    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Esse veritatis non autem blanditiis quo rerum sint quasi architecto quibusdam rem. Quibusdam dolores aliquid eum qui impedit architecto ipsum repellendus illum!</p>    

</div>

CSS:

* {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    -ms-box-sizing: border-box;
    box-sizing: border-box;
}

body {
    background: black;
    color: white;
    font-size: 100%;
    font-family: "adelle", Helvetica, serif;
}

a {
    color: white;
    text-decoration: none;
    display: block;
    width: 100%;
    margin-bottom: 0px;
    font-size: 16px;
    text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.8);
    padding:  8px ;
    border-bottom: 2px solid black;
    -webkit-transition: all 0.1s ease-out;
    -moz-transition: all 0.1s ease-out;
    -o-transition: all 0.1s ease-out;
    -ms-transition: all 0.1s ease-out;
    transition: all 0.1s ease-out;
}

a:hover {
    background: rgba(223, 207, 191, 0.4);
    padding-left: 10px;
}

ol {
    color: rgba(223, 207, 191, 0.8);
    position: relative;
    list-style-position: inside;
    padding: 0px;
    width: 139px;
    font-size: 14px;
    background: rgba(223, 207, 191, 0.15);
    position: relative;
    float: left;

}

#container {
    position: relative;
    margin: 0 auto;
    width: 960px;
    background: rgba(34, 34, 34, 1.0);
    height: 900px;
}

h1, h3 {
    text-align: center;
    font-weight: normal;
    margin: 0px;
}

h3 {
    padding-top: 15px;
}

h1 {
    padding-bottom: 35px;
}

1 个答案:

答案 0 :(得分:2)

这实际上很容易做到。您需要做的就是使用nav元素定位的一些数学运算。现场演示:http://jsfiddle.net/3suYg/embedded/result/

nav{
    width: 139px;
    position: fixed;
    left: 50%;
    margin-left: -619px; /* 480(half width of 960px container) + 139(width of nav) */
}

显然,虽然您的布局选择会导致较小屏幕出现问题,因为导航可能部分或全部隐藏在视野之外。