在 CSS 或 HTML 中规定换行位置
Prescribing line break positions in CSS or HTML
我网站的顶部需要居中对齐 'message stripe',并包含以下重要信息:"Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatem voluptates, obcaecati atque adipisci eligendi esse eum omnis quibusdam illum a eius quia facilis ex, deserunt, molestiae hic recusandae in unde!"
但是,当用户将 window 变窄时,我不希望 unde!
自己落在一条线上。相反,我希望 eum omnis
之后的所有内容都对齐到第二行。当它变得更窄时,我想在 elit.
之后和 illum a eius
之后休息。
我想这会调用@media 查询,但我不确定该怎么做。
http://codepen.io/pgblu/pen/xGagpR
CSS:
#msgStripe {
padding: 8px 0;
background: #11dd44;
line-height: 28px;
text-align: center;
}
HTML:
<div id="msgStripe">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatem voluptates, obcaecati atque adipisci eligendi esse eum omnis quibusdam illum a eius quia facilis ex, deserunt, molestiae hic recusandae in unde!</div>
CSS 有一些东西 - 例如使用白色 space。但正如您所指的浏览器 'narrowing',您可以使用媒体查询来控制每个媒体查询的文本宽度。例如:
http://codepen.io/anon/pen/GJXrwX
@media screen and (max-width: 767px) {
#msgStripe p{
width: 600px;
margin: 0 auto;
line-height: 1.5em;
}
}
关键是在文本中放置换行符(<br>
标签),然后用媒体查询操作所述<br>
标签的显示属性。
例如,您可以像这样将 <br>
标签和 类 放在一起:
Lorem ipsum <br class="md" /> dolor sit <br class="sm" /> amet
并使用媒体查询来启用它们
br {display:none;/*Initially disable line breaks*/}
@media(max-width:1200px) {
br.md {display:inline;/*Enable br tags in screen width<=1200*/}
}
@media(max-width:767px) {
br.sm {display:inline;/*Enable br tags in screen width<=767*/}
}
您必须手动找到放置 <br>
标签的最佳位置。 (通过模拟所有媒体查询断点)但是你明白了。
一种选择是将文本分成多个内联块范围。
#msgStripe {
padding: 8px 0;
background: #11dd44;
line-height: 28px;
text-align: center;
}
span {
display: inline-block;
vertical-align: top;
}
<div id="msgStripe">
<span>Lorem ipsum dolor sit amet,</span>
<span> consectetur adipisicing elit.</span>
<span>Voluptatem voluptates, obcaecati atque adipisci eligendi esse eum omnis</span>
<span>
<span> quibusdam illum a eius</span>
<span> quia facilis ex, deserunt, molestiae hic recusandae in unde!</span>
</span>
</div>
通过对跨度进行分层,您几乎可以在任何需要的地方放置休息点。
您可以将消息的每个 "chunk" 放入 <span>
并将这些跨度设置为 white-space: nowrap;
结果是当跨度适合时,跨度将在同一行上彼此相邻,但当太窄时,整个跨度将一起移动到下一行,而不是拆分文本的那部分。
.header-message {
font-size: 8px;
text-align: center;
border: 1px solid black;
padding: 8px;
}
.header-message span {
white-space: nowrap;
}
<div class="header-message">
<span>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</span> <span>Voluptatem voluptates, obcaecati atque adipisci eligendi esse eum omnis quibusdam illum a eius</span> <span>quia facilis ex, deserunt, molestiae hic recusandae in unde!</span>
</div>
(运行 上述代码片段处于 "full page" 模式,您将能够调整浏览器的大小 window 以查看其工作原理)
我网站的顶部需要居中对齐 'message stripe',并包含以下重要信息:"Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatem voluptates, obcaecati atque adipisci eligendi esse eum omnis quibusdam illum a eius quia facilis ex, deserunt, molestiae hic recusandae in unde!"
但是,当用户将 window 变窄时,我不希望 unde!
自己落在一条线上。相反,我希望 eum omnis
之后的所有内容都对齐到第二行。当它变得更窄时,我想在 elit.
之后和 illum a eius
之后休息。
我想这会调用@media 查询,但我不确定该怎么做。
http://codepen.io/pgblu/pen/xGagpR
CSS:
#msgStripe {
padding: 8px 0;
background: #11dd44;
line-height: 28px;
text-align: center;
}
HTML:
<div id="msgStripe">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatem voluptates, obcaecati atque adipisci eligendi esse eum omnis quibusdam illum a eius quia facilis ex, deserunt, molestiae hic recusandae in unde!</div>
CSS 有一些东西 - 例如使用白色 space。但正如您所指的浏览器 'narrowing',您可以使用媒体查询来控制每个媒体查询的文本宽度。例如:
http://codepen.io/anon/pen/GJXrwX
@media screen and (max-width: 767px) {
#msgStripe p{
width: 600px;
margin: 0 auto;
line-height: 1.5em;
}
}
关键是在文本中放置换行符(<br>
标签),然后用媒体查询操作所述<br>
标签的显示属性。
例如,您可以像这样将 <br>
标签和 类 放在一起:
Lorem ipsum <br class="md" /> dolor sit <br class="sm" /> amet
并使用媒体查询来启用它们
br {display:none;/*Initially disable line breaks*/}
@media(max-width:1200px) {
br.md {display:inline;/*Enable br tags in screen width<=1200*/}
}
@media(max-width:767px) {
br.sm {display:inline;/*Enable br tags in screen width<=767*/}
}
您必须手动找到放置 <br>
标签的最佳位置。 (通过模拟所有媒体查询断点)但是你明白了。
一种选择是将文本分成多个内联块范围。
#msgStripe {
padding: 8px 0;
background: #11dd44;
line-height: 28px;
text-align: center;
}
span {
display: inline-block;
vertical-align: top;
}
<div id="msgStripe">
<span>Lorem ipsum dolor sit amet,</span>
<span> consectetur adipisicing elit.</span>
<span>Voluptatem voluptates, obcaecati atque adipisci eligendi esse eum omnis</span>
<span>
<span> quibusdam illum a eius</span>
<span> quia facilis ex, deserunt, molestiae hic recusandae in unde!</span>
</span>
</div>
通过对跨度进行分层,您几乎可以在任何需要的地方放置休息点。
您可以将消息的每个 "chunk" 放入 <span>
并将这些跨度设置为 white-space: nowrap;
结果是当跨度适合时,跨度将在同一行上彼此相邻,但当太窄时,整个跨度将一起移动到下一行,而不是拆分文本的那部分。
.header-message {
font-size: 8px;
text-align: center;
border: 1px solid black;
padding: 8px;
}
.header-message span {
white-space: nowrap;
}
<div class="header-message">
<span>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</span> <span>Voluptatem voluptates, obcaecati atque adipisci eligendi esse eum omnis quibusdam illum a eius</span> <span>quia facilis ex, deserunt, molestiae hic recusandae in unde!</span>
</div>
(运行 上述代码片段处于 "full page" 模式,您将能够调整浏览器的大小 window 以查看其工作原理)