4

就像在标题中一样,我不能在带有 CSS 的 div 附近放置一些垂直居中的文本,我在 google 和 stackoverflow 上进行了搜索,所以我决定在这里提出一个问题。

这是我需要用 Paint 完成的一个例子:

在此处输入图像描述

我尝试了显示表格单元格和框的解决方案,但它只能在没有左上角浮动 div 的情况下工作。

当文本比蓝色 div 长时,它应该在 div 下方,就像带有浮动 div 的普通文本一样。

我正在寻找一个唯一的 CSS 解决方案,它可以完成与否?

4

3 回答 3

2

我不完全确定这是否可能,但这是我最好的尝试,至少适用于前两个示例。

<div class="wrap">
    <div class="invisible"></div>
    <img src="http://placehold.it/140x100">
    <p>Lorem ipsum.</p>
</div>

<div class="wrap">
    <div class="invisible"></div>
    <img src="http://placehold.it/140x100">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur viverra, nibh in molestie sodales, risus turpis vehicula tellus, vitae lobortis ligula tortor in enim.</p>
</div>

<div class="wrap">
    <div class="invisible"></div>
    <img src="http://placehold.it/140x100">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur viverra, nibh in molestie sodales, risus turpis vehicula tellus, vitae lobortis ligula tortor in enim. Proin venenatis arcu id enim rutrum eget condimentum urna venenatis. Suspendisse at tortor nisi, in tempus ligula. Maecenas nisl felis, bibendum ut luctus nec, bibendum sit amet erat.</p>
</div>

CSS:

.wrap {
    width:500px;
    border:1px solid red;
    margin:10px;
}
.wrap:before {
    content:'';
    display:inline-block;
    height:100%;
    vertical-align:middle;
    margin-left:-0.25em; /* adjusts spacing */
}
p {
    display:inline-block;
    vertical-align:middle;
    width:350px;
}
img {
    float:left;
}

.invisible {
    height:100px;
    display:inline-block;
    vertical-align:middle;
}

一把小提琴

于 2012-11-01T23:16:27.597 回答
2

这对于纯 CSS 是可能的。

body {
  background: url("http://img08.deviantart.net/b5aa/i/2015/140/7/c/chalkboard_by_lorelinde-d8u2phm.jpg") no-repeat;
}

.container {
  color: rgba(255, 255, 255, .9);
  font-family: "Chalkduster", "Baskerville";
  font-size: 18px;
  padding: 0 10px;
  width: 550px;
}

#user_portrait {
  border-radius: 13px;
  border: 3px solid rgba(255, 255, 255, .9);
  float: left;
  margin: 0 20px 0 0;
  max-height: 300px;
  max-width: 300px;
  filter: sepia(50%);
}

#overview_text {
  letter-spacing: 1px;
  line-height: 1.3rem;
  padding: 0 0 0 10px;
  white-space: pre-line;
}
<body>
  <p class="container">
    <img id="user_portrait" src="https://pbs.twimg.com/profile_images/704337993293815810/PmkKs6yw.jpg">
    <span id="overview_text">“Never hate your enemies. It affects your judgment.”
    
    “My father held a gun to his head, and my father assured the bandleader that either his signature or his brains would be on the contract.”
    
    “There are many things my father taught me here in this room. He taught me: keep your friends close, but your enemies closer.”
    </span>
  </p>
</body>

关键是将图像和文本都放入非内联父标签并使其浮动。

于 2017-02-20T11:55:58.577 回答
-1

仅使用 css 是不可能的。(我很高兴被证明是错误的。)

于 2012-11-01T22:46:42.527 回答