开发者社区> 问答> 正文

CSS的position定位布局问题

HTML部分

<header class="header">
    <div class="container">
        <div class="logo">
            <a href="#"><img src="img/logo.svg" alt="logo"></a>
        </div>
        <div class="menu"></div>
    </div>
</header>

CSS部分

.container {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
}

.header {
    background: rgba(255,255,255,.5);
    width: 100%;
    height: 100px;
    line-height: 100px;
    font-size: 20px;
    position: fixed;
    overflow: hidden;
    z-index: 99;
}

.logo,
.menu {
    position: absolute;
    top: 50%;
    -webkit-transform: translate(0,-50%);
       -moz-transform: translate(0,-50%);
        -ms-transform: translate(0,-50%);
         -o-transform: translate(0,-50%);
            transform: translate(0,-50%);
}

.logo {
    width: 90px;
    height: 60px;
}

.logo img {
    width: 100%;
    position: absolute;
    top: 0;
}

.menu {
    right: 0;
    background: #45b29a;
    width: 60px;
    height: 60px;
    border-radius: 50%;
}

这是实际效果:

展开
收起
杨冬芳 2016-06-01 18:49:35 2286 0
1 条回答
写回答
取消 提交回答
  • IT从业

    screenshot
    首先 header position fixed 这个前提不能改变, header 的高度是 100px,logo menu 的高度都是 40px ,我想让它们垂直居中于 header ,所以我给他们加了 position: absolute;top: 50%;transform: translate(0,-50%); 不用 margin 的原因是因为我想让它自适应 header 的高度来垂直居中,因为 header 在移动端的高度会变成 60px,logo menu 的高度也会变成 ,而如果用 margin 的话,在移动端还得重新设置一下 margin ,这样就不能自动适应垂直居中了,然后问题来了,我用 positoin 定位后,再分别对 logo menu 使用 left: 0; right: 0; 后,它们会脱离contaier 的束缚,直接跑到 header` 的两端(上图中的 logo 并没有跑到最左侧是因为没有给它加上 left: 0;)。

    我一开始是这么想的,给这个 container 加上 position: relative; ,然并卵,它们的 top: 50%; 没用了:
    screenshot
    screenshot
    screenshot


    你给container加个height:100%,然后如同你说的那样,设置container的position:relative

    2019-07-17 19:23:41
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
零基础CSS入门教程 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载