【问题标题】:Align one child element to the left when parent aligns all child elements to the center当父元素将所有子元素居中对齐时,将一个子元素左对齐
【发布时间】:2014-12-20 12:04:28
【问题描述】:

我有一个 DIV 集以将所有子元素 CENTER 与 text-align: center; 对齐,但我希望其中一个子元素向左对齐,同时保持其余元素居中。

我怎样才能做到这一点?

我试图让那个元素向左浮动,但它搞砸了我的设计,因为我根本没有使用浮动。

.parent {
    text-align: center;
    margin-bottom: 15px;
    margin-top: 8px;
}
.child (I want to align this one left) {
    display: inline-block;
    font-family: 'Source Sans Bold', Helvetica neue, verdana, arial;
    font-size: 16px;
    background-color: #5a8da3;
    padding: 4px;
}

【问题讨论】:

  • 将该子 div 的类设置为“child left”,并在 css 中将样式指定为 .child.left{//style}
  • A -1 应该包含解释原因的注释。这个问题很正经

标签: html css alignment center


【解决方案1】:

有多种方法可以做到这一点。但是在与未来的代码集成时,试图用这个需求来可视化你未来的一些问题。最好的方法是使用不同的位置。

您希望父元素的所有 div 元素都居中,而不是一个特定的元素。如果您不给想要向左的一个 div 提供显示属性,它将遵守父级的 CSS 规则:text-align:center;

我在所有想要居中的 div 元素上使用了 display 属性,但我将 CSS 规则:position:relative; 设置为父元素。这将强制所有具有 position:absolute; 的子 div 受父级约束。因此,我可以将属性 top 和 left 设置为要放在左侧的子 div,这些属性将根据父宽度而不是浏览器的窗口计算。

这是最好的解决方案,因为绝对定位的子 div 不会影响结构化模板,因此当您将来添加更多时,不会将居中的 div 推离父级的中心。

这是你的例子:

http://jsfiddle.net/77wc17yo/

您现在可以使用 CSS 属性移动左 div:上、左、下、右。

.parent {
  background:#fefefe;
  padding:5px;
  border:1px solid black;
  text-align:center;
  position:relative;
}

.centerd {
   border:1px solid green;
  background:gold;
  padding:90px;
  display:inline-block;
}

.left {
  padding:40px;
  border:1px solid red;
  background:orange;
  width:40px;
  position:absolute;
  left:0;
  top:20px;

}

【讨论】:

  • 谢谢。我不知道为什么,但是当我认为它非常合法时,我得到了一个-1 的问题。当我将您的答案设置为正确时,我会很感激 +1
【解决方案2】:

工作示例:

http://jsfiddle.net/852ewccc/2/

我在左侧 div 中使用了 float: left,并在另一个 div 中使用了 margin: 0 auto;

HTML:

<div id="parent">
    <div id="left">

    </div>
    <div id="center">
    </div>
</div>

CSS:

#parent{
    width: 500px;
    height: 100px;
    background: blue;
}
#center{
    margin: 0 auto;
    width: 200px;
    height: 50px;
    background: green;
}
#left{
    width: 100px;
    background: orange;
    height: 30px;
}

【讨论】:

  • 因为它们自然左对齐,所以您不需要将 float:left 添加到您想要向左浮动的元素的 css 中,并且通过删除 float:left,居中将位于左侧 div 的下方
  • @samyb8 - 已更新。公平地说,您没有在问题中提到这一点。
【解决方案3】:

JSFiddle:http://jsfiddle.net/wafoyyLz/

浮动本来是最好的选择,您应该考虑让其他元素浮动,但如果您只想将文本对齐到一个特定元素:

HTML:
<div class="parent">
    <div class="children"> Child 1 </div>
    <div class="children"> Child 2 </div>
    <div class="children alignLeft"> Child 3 </div>
    <div class="children"> Child 4 </div>
    <div class="children"> Child 5 </div>
</div>

CSS:
.parent {
    border: 1px solid #000;
    text-align: center;
    margin-bottom: 15px;
    margin-top: 8px;
}
.alignLeft {
    background-color: #5a8da3;
    text-align: left;
}

这样做允许您通过硬编码或使用 JQuery 的添加/删除类将类添加到其他孩子。

请记住,这不适用于所有类型的元素。

【讨论】:

  • 这只适用于 .alignLeft div 的宽度为 100% 的情况,如果它们的宽度较小,则 div 将居中对齐,其中的文本向左对齐,这无济于事,因为我需要整个 .alignLeft div向左
  • 因此你应该浮动你的 div。另外,当您没有提供足够的详细信息(例如,显示您的 html 或实时页面)时,不要期望得到比这更好的答案...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-18
  • 2014-08-10
  • 1970-01-01
  • 1970-01-01
  • 2017-09-07
  • 1970-01-01
  • 2015-04-26
相关资源
最近更新 更多