【问题标题】:Another centering issue with a div that can change size可以更改大小的 div 的另一个居中问题
【发布时间】:2015-11-26 23:10:21
【问题描述】:

我正在尝试将 div 中的 2 个项目居中对齐。第一个输入框工作正常,因为我可以硬编码宽度。第二个是下拉菜单,将根据内容更改其宽度,因此我无法对宽度进行硬编码。 Text-align 也会使标签居中, display:inline 会破坏居中,我不想对 JS 进行更改,但我确实意识到这是一个选项。

http://jsfiddle.net/56cgcudb/2/

<div class="col-xs-6 col-sm-6 col-md-6 col-lg-6">
    <div style="width: 160px; margin: 0 auto; border: solid;">
        <label for="Search" style="">Search</label>
        <input type="text" name="Search" id="Search" placeholder="Search" style="width: 125px" />
        <a class="icon-btn" href="#" style="">
            <i class="icon-magnifier-dark" style=""></i>
        </a>
    </div>
</div>

<div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 " style="">
    <div style=" display: inline-block; margin: 0 auto; border: solid;">
        <label for="dropdownMenu2">Drop Down</label>
        <div class="dropdown" style="">
            <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" style="">
                option 1
                <span class="caret" style=""></span>
            </button>

            <ul class="dropdown-menu" aria-labelledby="dropdownMenu2" style="">
                <li>
                    <a href="#">Option 1 asdasdasd</a>
                </li>
                <li>
                    <a href="#">Option 2</a>
                </li>
                <li>
                    <a href="#">Option 3</a>
                </li>
                <li>
                    <a href="#">Option 4</a>
                </li>
            </ul>
        </div>
    </div>
</div>

【问题讨论】:

    标签: css twitter-bootstrap centering


    【解决方案1】:

    这是我为水平居中内容所做的工作。创建一个 CSS 类:

    // Classes
    .center-block {
      margin-left: auto;
      margin-right: auto;
      width: 100%; // IMPORTANT: width has to be set to something or centering will not work. You can use ems, but percentages gives you responsive sizing 
    }
    

    那么 text-align 呢?我更喜欢这种方法而不是简单的 text-align,因为这种结构将使 div 中的所有对象居中,而不仅仅是文本。

    在你的代码示例中

    <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 center-block">
    

    或者,您需要在 &lt;div&gt; 中居中放置内容


    更新:居中对齐内容和左对齐文本

     // Classes
        .center-block-left-text {
          margin-left: auto;
          margin-right: auto;
          width: 100%; 
          text-align: left !important;
        }
    

    这是一个很好的官方CCS reference,关于各种居中。

    【讨论】:

    • 除非我遗漏了一些东西,否则它会一直工作到下拉大小发生变化。它仍然保持原始居中而不是移动以补偿它更长或更短。由于它是一个 js 下拉菜单,而不是常规的 HTML 下拉菜单,它会根据所选内容改变大小。
    • 您是否要水平居中?这就是它的作用。
    • 正确,但是当内容大小动态变化时它不会改变居中。我在这里实现了你的风格。 jsfiddle.net/56cgcudb/4如果将下拉菜单更改为长1,则不再居中。
    • 放置 center-block 类的位置取决于您的需要。我更新了答案,现在我看到了你想要做什么。
    • 太棒了。我很高兴你和我一起解决了这个问题。经常使用 CSS,有很多选项和交互,这通常是一个解决方案的理论问题,然后测试排列,直到你一针见血。
    猜你喜欢
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 2019-04-21
    相关资源
    最近更新 更多