html - 当文本分成两行时,Flexbox 用空白填充 div

标签 html css flexbox

我有一个包含 2 个元素的 flex 容器 div - 一个标题和一个垂直居中并显示在标题右侧的“类似”svg 图像。

当标题太长无法在一行中显示时,似乎会在右侧用额外的空间填充标题div,因此图像不会立即显示在拆分文本的右侧。

这是 HTML 的样子:

.like-container {
  display: flex;
  align-items: center;
}

.like-div {
	font-size: 10px;
	margin-left: 20px;
	order: 1;
}

.title {
	font-size: 40px;
}
    <div class="like-container">
      <div class="like-div">
        <svg xmlns:x="http://ns.adobe.com/Extensibility/1.0/" xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/" xmlns:graph="http://ns.adobe.com/Graphs/1.0/" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" x="0px" y="0px"
				viewBox="0 0 283.46 283.46" enable-background="new 0 0 283.46 283.46" xml:space="preserve">
				  <metadata>
					  <sfw xmlns="http://ns.adobe.com/SaveForWeb/1.0/">
						  <slices/>
						  <sliceSourceBounds x="12.691" y="27.241" width="269.84" height="254.219" bottomLeftOrigin="true"/>
					  </sfw>
				  </metadata>
				  <path d="M12.691,251.967c0,2.349,1.904,4.252,4.252,4.252h38.293c2.348,0,4.252-1.903,4.252-4.252V131.653  c0-2.348-1.904-4.252-4.252-4.252H16.943c-2.348,0-4.252,1.904-4.252,4.252V251.967z"/>
				  <path d="M278.918,147.336c-8.606-14.737,11.983-21.831-5.778-35.607c-22.375-17.355-20.925-14.647-69.32-15.194  c-7.65-0.086-17.099,0.772-14.633-15.114c9.885-63.703-6.41-75.53-17.217-78.504c-22.753-6.26,4.787,19.854-23.702,68.758  c-2.513,4.313-10.086,9.271-15.194,17.567c-10.544,17.125-20.681,44.156-29.436,44.156c-6.252,0-22.42,0-36.091,0v108.504  c20.458-1.617,49.586-3.924,56.862-4.523c11.514-0.949,21.01,6.97,38.104,6.97c15.194,0,24.823,9.421,76.594,1.481  c7.314-1.121,20.896-15.174,18.194-26.576c-2.084-8.804,22.768-15.721,17.405-31.809  C268.403,168.538,290.992,168.011,278.918,147.336z"/>
			  </svg>
        <span>Like</span>
      </div>
      <div class="title">
        This is the very longish Title!
      </div>
    </div>

我创建了一个 plnkr,以便您明白我的意思:http://plnkr.co/edit/cPMp4sjIUTbX3ohMW4aI

有什么想法吗?

最佳答案

您要查找的通常称为 shrink-to-fitshrink-wrapping ,其中一个容器整齐地包裹着它的内容,没有留下额外的空间。

CSS3 确实为 widthheight 提供了一个名为 min-content 的新关键字, 这使得盒子紧贴内容,但是 browser support is still very weak .

这是您可能要考虑的一种替代方法:使用 ::after pseudo-element .

从 HTML 中删除“like”图像(至少对于这个演示)并将其添加到您的 CSS 中:

.title::after {
    display: inline-block;
    content: "";
    height: 40px;
    width: 40px;
    background: url('http://i.imgur.com/99oDJSA.png') no-repeat;
    vertical-align: baseline;
}

演示:http://jsfiddle.net/hjkh3dy1/

关于html - 当文本分成两行时,Flexbox 用空白填充 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33322548/

相关文章:

javascript - 为什么这个 jQuery 不起作用?图像淡入淡出

jQuery .show() 只适用于一瞬间

html - 导航栏中的垂直居中文本

javascript - 禁用或更改 Firefox 的元素/图像高亮颜色

javascript - 比较 2 个 imageData 对象

javascript - 幻影 : take screenshot of the current page?

jquery - CSS 3 - 缩放 CSS 过渡

html - Flexbox 元素不会与 flex-end 对齐

html - 在嵌套容器中如何使 flexbox 元素正确收缩?

javascript - jQuery removeProp 不起作用