为了解释我的问题,我试图使div足够宽以容纳动态生成的标题而不包装它,但div也有其他内容,我想包装。
换句话说:
CSS:
.box {
min-width:170px;
}
.box span.title {
font-size:24px;
white-space: nowrap;
}
.box span.text{
font-size:10px;
white-space: normal;
}
HTML:
<div class="box">
<span class="title">Title on one line</span><br />
<span class="text">This is the main body of text which I want to wrap as
required and have no effect on the width of the div.</span>
</div>
然而,这导致div扩展到足够宽以包含一行的主体文本,我想要包装。我已经尝试过各种各样的CSS安排,并将它们全部放在容器div等中,但我似乎无法让盒子足够宽,只包含标题而不包装(但不小于最小宽度)
有没有办法在CSS中做到这一点?注意我不想设置最大宽度,因为这只会使它再次成为静态大小,因为文本的主体总是足以达到最大宽度。我也不能手动打破身体,因为它是动态生成的。
答案 0 :(得分:27)
this (jsFiddle)你想要完成什么?
我刚刚将display: table;
添加到.box的CSS中。这会将主div扩展为标题范围的宽度,但会包装文本范围。
注意:您还可以设置恒定宽度以防止div扩展到窗口的宽度。这样,如果它大于你的恒定宽度,它仍将扩展到标题的宽度,但如果用户拖出窗口,它将不会增长。在我的示例中,我添加了width: 100px;
来演示。
答案 1 :(得分:3)
答案 2 :(得分:2)
对于标题,您应该使用<hN>
代码(<h1>
,<h2>
等)。
没有文字换行:
white-space: nowrap;
在你不想包装的文本元素上。
<强> Working Example on jsFiddle 强>
答案 3 :(得分:1)
如果我理解你的正确,你可以使用JS或jQuery轻松地为你的文本设置相同的宽度,例如:
$('.text').width($('.title').width())
并在jQuery(document).ready或者事件中运行它,如果你动态添加它
答案 4 :(得分:0)
如果没有在div上设置max-width,则不太可能使用纯CSS解决方案。
CSS上的指针:
tag.class
),因为您必须将该标签与该类一起使用。只需使用.class
,您就可以更轻松地更改标记(如果需要),并使您的类可以将其用途扩展到多个标记。