我正在尝试对齐徽标的图片和文字。我不能证明第二行到块的宽度。这是预期的结果:
我试过了:
@import url(http://fonts.googleapis.com/css?family=Ubuntu:300,500);
h1 {
line-height:30px;
font-size:30px;
background:#eee;
color: #333333;
}
h2 {
line-height:10px;
font-size:12px;
background:#eee;
text-transform: uppercase;
color: #434343;
}
img#logo {
margin-right:10px;
margin-top: 0px;
float:left;
}
#logo_text{
font-family: 'Ubuntu', sans-serif;
width: 230px;
}
#logo_text h2{
text-align: justify;
}

<img id="logo" src="http://placehold.it/52x36">
<div id="logo_text">
<h1>Build Home</h1>
<h2>Industrial theme</h2>
</div>
&#13;
答案 0 :(得分:1)
CSS3中有text-align-last
属性has not gained wide adoption in the browsers yet。因此,您也需要设置属性的prefixed versions,并祈祷一切正常。
此外,您的图片不仅强制对齐最后一行,还改变了字距。 CSS3具有text-justify: distribute
以在字间和字母间空间中均匀地分布来自行尾的空间。可悲的是,截至今天(2015年3月),它是almost unimplemented 1 。仅MSIE implements it。目前,您需要采用影响字距调整的常用方法:letter-spacing
属性。设置letter-spacing: 0.5ex
应该可以胜任。
1 我找不到更好的来源,对不起W3Schools链接。 QuirksMode has only a test.
另一个打破榜样的事情是h1
和h2
有边距。您可以设置margin: 0
,或者更好地使用div
,因为文本只具有表现意义。我将h1
替换为div.first
,将h2
替换为div.second
。
图像更好地显示为#logo_text
的背景;您只需要在padding-left
的{{1}}中为其预留足够的空间。由于#logo_text
现在包含图片,因此我会将其重命名为#logo_text
。
最后,为了摆脱脆弱的固定宽度设置,#logo
和#logo
都应该display: inline-block
。如果你不喜欢内联块如何与外部元素交互,你总是可以将它包装在另一个.first
中。
div
@import url(http://fonts.googleapis.com/css?family=Ubuntu:300,500);
#logo {
font-family: 'Ubuntu', sans-serif;
padding-left: 62px;
background: url(http://placehold.it/52x36) 0 50% no-repeat;
}
#logo, #logo .first {
display: inline-block;
}
#logo .first {
line-height: 30px;
font-size: 30px;
background: #eee;
color: #333333;
}
#logo .second {
margin: 0;
line-height: 10px;
font-size: 12px;
background: #eee;
text-transform: uppercase;
color: #434343;
text-align: justify;
-moz-text-align-last: justify;
-webkit-text-align-last: justify;
-ms-text-align-last: justify;
-o-text-align-last: justify;
text-align-last: justify;
-moz-text-justify: distribute;
-webkit-text-justify: distribute;
-ms-text-justify: distribute;
-o-text-justify: distribute;
text-justify: distribute;
letter-spacing: 0.5ex; /* HACK: Remove once text-justify is supported. */
}
.outline {
margin-top: 1em;
}
.outline * {
outline: 1px dotted;
}
.outline #logo .first {
outline-color: red;
}
.outline #logo .second {
outline-color: green;
}
.outline #logo {
outline-color: blue;
}
.outline #logo .first::after, .outline #logo .second::after {
outline: 1px dotted #cad;
}
没有CSS3属性,有一个讨厌的hack 使用空<div id="logo">
<div class="first">Build Home</div>
<div class="second">Industrial theme</div>
</div>
<div class="outline">
<div id="logo">
<div class="first">Build Home</div>
<div class="second">Industrial theme</div>
</div>
</div>
伪元素(在CSS3中称为:after
)与::after
和{ {1}}。它在相应的元素中形成一个新的行,从而避免最初的最后一行被证明是合理的。
问题是你在相应元素的末尾得到一个空行。将此hack应用于真实文本的段落时,这并不重要,因为您通常使用边距来创建空间。在这里,这是一个交易破坏者。
至少有两种解决方法:
display: inline-block
高度:1em`。width: 100%
。对于使用.second. Here
的诀窍和使用word-spacing: -1em
的改进,完全归功于Vjeux:
::after
word-spacing
后来我发现了这个相关的问题:Justify the last line of a div?
答案 1 :(得分:0)
使用此代替对齐
#logo_text h2{
text-align: center;
}
#logo_text h1{
padding: 3px 0px;
}