【问题标题】:Centering a div both horizontally and vertically at all times on a responsive parent在响应式父级上始终将 div 水平和垂直居中
【发布时间】:2014-03-23 05:37:31
【问题描述】:

我有一个标题,我想在父图像 div 中始终保持水平和垂直居中 当父 div 没有固定的宽度和高度,而是具有响应式宽度和高度 使用 Twitter Bootstrap 3.1 的响应式列。

HTML:

<div id ="firstholder" class= " col-sm-4 col-md-4 col-lg-4">
    <a href="home.html" title="Home" class="imglink"> 
        <div class="item1"><h1 class="slickfont1" >Home</h1>
        </div><img src="/images/slide2.JPG" alt="City Lights Image"  class="img-responsive" >
    </a>
</div>


#firstholder {
    display:inline-block;
    float:left;
    margin:0;
    padding:0;
    height:auto;
    position:relative;
}


a.imglink  {
    background:  #fff;
    display: inline-block;
    width:100%;
    height:auto;
    position:relative;
}

.item1 {
    height:150px;
    width: 150px;
    margin: 0 auto;
    position:absolute;
    z-index:100;
    vertical-align:middle;
}

.slickfont1 {
    z-index:10;
    color: #fff;
    position:absolute;
    font-family: 'Bowlby One SC', cursive;
    font-size: 37px;
    font-weight:lighter;  
    position: absolute;
    text-shadow:0 0 0 transparent, -2px 2px 2px  #1542bd;
}

谢谢:)

【问题讨论】:

  • 你能提供一个小提琴
  • 嗨@SULTAN 这是我制作的小提琴的链接jsfiddle.net/W2DfT 我只是不知道如何在那里获取图像......
  • stackoverflow.com/questions/22575851/… 重复,或至少非常相似。
  • @David 我试图确保 div 始终水平和垂直居中....不确定这是重复的
  • 您希望哪个 div (ID) 始终居中?我很难弄清楚你到底想要什么居中。

标签: css html responsive-design


【解决方案1】:

您可以使用 CSS Tricks 的 Chris Coyier 提供的这个不错的方法,他使用百分比和 CSS3 的 transform:translate 来实现您所需要的。 Centering Percentage Width/Height Elements
现在,当您使用 Bootstrap 时,您需要自己调整它。

来自 Chris Coyier 的代码:

.center {
  position: absolute;
  left: 50%;
  top: 50%;

  transform: translate(-50%, -50%);

  width: 40%;
  height: 50%;
}

最好去 CSSTricks(使用上面的链接)并研究整个帖子(您还会发现使用它的原因以及为什么它比其他居中方法更好)。 我希望这对你有所帮助。

【讨论】:

    【解决方案2】:

    我不确定我是否理解正确,但让我们从这里开始:

    CSS:

    div.center {
      display: table-cell;
      width: 200px;
      height: 200px;
      vertical-align: middle;
      text-align: center;
        border: 1px solid #000;
        background-color: #ccc;
    }
    
    div.inner {
        margin: 0 auto;
    }
    

    HTML:

    <div class="center">
        <div class="inner">
            <div class="title">
                Title Here
            </div>
        </div>
    </div>
    

    这是你想要做的吗?假设灰色背景是图像? SAMPLE HERE

    【讨论】:

    • 是的,这正是我想要做的,但我的 div.center (#firstholder) 的宽度和高度是可变的,不是固定的。
    • 从我上面的 HTML 中,宽度是 col-sm-4 col-md-4 col-lg-4(twitter bootstraps 响应列),高度根据你所在的屏幕宽度而变化
    • @whatIsperfect 好的,那很好。只需在div.center 中添加width:auto; height:auto; - 并为div.inner 添加填充 - 这是更新的小提琴:jsfiddle.net/fYcE2/1
    • @whatIsperfect此外,您当然可以从 .div.center 中删除 width 和 height
    • 非常感谢您的帮助...当我输入 width:auto 时,我的图片尺寸会变形,因为我已经使用 Twitter Bootstrap 的预定义列宽指定了宽度。然后我尝试不在 div.center 上指定宽度或高度,但仍然没有运气:(
    猜你喜欢
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 2013-07-23
    • 2014-08-09
    • 2011-10-25
    • 1970-01-01
    • 2017-12-29
    • 2013-07-05
    相关资源
    最近更新 更多