【问题标题】:How to vertical align tag in a div如何垂直对齐div中的标签
【发布时间】:2018-05-25 20:38:16
【问题描述】:

我有这个 HTML 代码:

<div class="news_item">    
    <div class="featured_leftpart">
        <img src="" width="48" height="48" />
    </div>
    <div class="featured_rightpart">
        <div class="news_content">
            <h2 class="entry-title"><a href="" >TEXT </a></h2>
        </div>
    </div>
</div>

并使用这个 CSS:

.news_item
{
    width:300px;
    position:relative;
    padding:10px;
    height:100px;
    margin:10px;
    border:1px solid #e8e8e8;
}

div.featured_leftpart
{
    position:relative;
    float:left;
    width:64px;
    height:100%;
}

div.featured_leftpart img{
    position:absolute;
    background-color:#ff00ff;
    top:0;
    bottom:0;
    left:0;
    right:0;
    margin:auto;
}

div.featured_rightpart
{
    background-color:#ff0000;    
    float:left;
    width:180px;
    padding-left:10px;
    height:100%;
}

.news_content
{
    background-color:#00ff00;
    position:relative;
}

.news_content h2
{
    vertical-align:middle;
}

我要做的是垂直对齐 h2 标签。这个标签将包含一个帖子标题,所以有时它是单行的,有时是多行的。 此外,&lt;div class="news_content"&gt; 只是我试图让它发挥作用。如果有没有这个div的解决方案,我可以轻松删除它。

这是上面代码的jsFiddle链接。

【问题讨论】:

  • 您是否尝试将文本顶部与.featured_leftpart img 对齐?
  • 我希望 h2 位于“.featured_rightpart div”的垂直中间,就像 img 标签位于“.featured_leftpart div”中间一样
  • 我也尝试让 h2 显示:内联,但也没有用。
  • jsfiddle.net/cJaSL/17 喜欢这个?
  • 这个问题的问题看起来和这个问题很相似stackoverflow.com/questions/7084100/…

标签: css


【解决方案1】:

从评论扩展:

无需额外添加.news_content,只需告诉浏览器一行多高,vertical-align 即可:

http://jsfiddle.net/cJaSL/17/

<div class="featured_rightpart">
    <h2 class="entry-title"><a href="" >TEXT </a></h2>
</div>
div.featured_rightpart
{
    line-height:100px; /* calculated from .news_item */
}
.featured_rightpart h2
{
    vertical-align:middle;
    margin-top:0px; /* need this to clear the default margin */
    margin-bottom:0px;
}

但请注意,此解决方案仅适用于标题中只有一行的情况。

编辑

如果多行无法避免,包装器似乎也无法避免:

http://jsfiddle.net/cJaSL/18/

<div class="featured_rightpart">
    <div class="title_wrapper">
        <h2 class="entry-title"><a href="" >TEXT<br />multi<br />line </a></h2>
    </div>
</div>
div.title_wrapper {
    display:inline-block;
    vertical-align:middle;
    line-height:1.25em; /* can adjust to look nice */
}

【讨论】:

  • 我想知道为什么它在我的开发站点上不起作用。这是因为每个标题都是多行的:)
  • @user850010 已更新为多行解决方案:)
  • 这不会超过 3 行,也不会在只有 1 行时缩小。有什么办法可以制作高度标尺?
  • @Trickery .news_item 设置为固定在100px 高度,这是 OP 定义的,所以我认为它不应该“收缩”或“伸展”。
  • @Passerby 是的,我只是假设他这样做是为了使其垂直居中。你的解决方案比我的更优雅。
猜你喜欢
  • 1970-01-01
  • 2019-11-18
  • 2012-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多