【问题标题】:Align responsive div to the right within container在容器内将响应式 div 对齐到右侧
【发布时间】:2015-04-30 21:40:22
【问题描述】:

我有一个父 div 和两个子 div。我的目标是使一个 div 居中并将另一个 div 向右对齐,并使两者都响应

在这种类型的设置中,我似乎找不到将第二个对齐到右侧的传统方法:

<div id="container">

    <div id="middle">Centered to middle</div>

    <div id="right">I want to be to the right</div>

</div>

CSS:

#container {
    position: relative;
    width: 100%;
}

#middle {
    margin: 0 auto;
    position: relative;
    width: 100%;
    max-width:150px;
    height:300px;
}

#right {
    max-width:150px;
    width:100%;
}

这是jsFiddle。我们如何破解这个难题?

【问题讨论】:

  • 这完全取决于您希望如何分配宽度。目前没有迹象表明这一点。您认为中心在不同时间应该如何定位?
  • 你有照片吗? float:right 右侧的 div 保持正确,当您说响应式时,它们的最大宽度为 150 像素?他们会缩小什么?我错过了什么吗?
  • @DarrenSweeney 150px的大小只是jsfiddle的一个例子,点击链接进行演示。
  • 我确实点击了链接,这是一个小提琴,它们设置为最大 150 像素 - 如果不是这种情况,请更改您的代码并解释问题

标签: html css responsive-design


【解决方案1】:
  1. 设为inline-block,否则第二个div 将始终在第二行

  2. 减少他们width的百分比,使其变为33%

  3. 删除max-width

#container {
    position: relative;
    width: 100%;
    text-align:middle;
}
div{
    display:inline-block;
}
#middle {
    background: #ddd;
    margin: 0 auto;
    position: relative;
    width: 100px;
    margin-left:40%;
    height:300px;
}

#right {
    background:yellow;
    width:33%;
float:right;
}
<div id="container">
    
    <div id="middle">Centered to middle</div>
    
    <div id="right">I want to to be to the right</div>
    
</div>

【讨论】:

  • 谢谢解答,但是有问题。我的中间 div 必须是固定宽度。请看这个小提琴,例如:jsfiddle.net/aoktptuc/1 ---有什么办法可以解决这个问题,中间有一个固定的 div?
  • @Hen 中间div的宽度固定,窗口宽度小的时候右边会掉到另一行,你意识到了吗?
  • @nicael 当然。我正在添加显示:无;当屏幕尺寸太小时,向右 div。那么你有没有办法解决当前的问题?
  • 虽然右 div 向右对齐,但它实际上并不是与中间 div 的右侧对齐,而是与屏幕的右侧对齐。你知道的:)
【解决方案2】:

添加了一个伪元素作为左列,因此布局变为 [left] + [middle] + [right] 并为父设置table,为子设置table-cell

JSFiddle Demo

#container {
    display: table;
    table-layout: fixed;
    width: 100%;
}
#container:before, #middle, #right {
    display: table-cell;
}
#container:before {
    content:"";
}
#middle {
    background: aqua;
    width: 50%;
}
#right {
    background: yellow;
}
<div id="container">
    <div id="middle">Centered to middle</div>
    <div id="right">I want to to be to the right</div>
</div>

还有另一种使用flexbox的方法,可以找到here

【讨论】:

  • 干杯,非常有趣的方法。兼容性怎么样?这种方法是传统的并且应该跨浏览器工作吗?
  • 我相信它适用于所有现代浏览器,因为没有什么花哨的。
  • 啊,发现问题了。正确的 div 没有响应。它有一个最大宽度,但设置了宽度,我已经更新了你的小提琴:jsfiddle.net/aoktptuc/3 添加的 css 代码只是为了使内联块在 ie7 上工作。
  • @HenrikPetterson 我修改了答案,并意识到我也在另一篇文章中回答了它,无论如何这是一种不同的方法,检查一下:)
猜你喜欢
  • 2018-07-29
  • 2022-12-29
  • 1970-01-01
  • 1970-01-01
  • 2018-11-05
  • 1970-01-01
  • 1970-01-01
  • 2016-09-15
  • 2022-01-26
相关资源
最近更新 更多