javascript - 在 <br> 之后缩进文本

标签 javascript html css text-indent

我有一个呈现流动文本的网页,换行符 (br) 散布在 span 标记内。我希望 br 之后的每个 span 都有一个缩进。是否可以用纯 CSS 做到这一点?我宁愿在不操纵文本本身的情况下这样做。 (这是可能的,但很困惑)请注意,br 标记位于 span 标记内。

这是一些示例代码,我尝试用纯 CSS 实现。

.text + br {
  text-indent: 1.5em;
}
.text > br + .text {
  text-indent: 1.5em;
}
<span class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span>
<span class="text">Donec accumsan tortor at maximus vehicula.<br></span>
<span class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span>
<span class="text">Donec accumsan tortor at maximus vehicula.<br></span>

更新:这在纯 CSS 中可能是不可能做到的。我的元素使用 jQuery,因此可以接受使用 jQuery 的解决方案。

更新 2:CSS 中的 text-indent 仅支持 block 元素。在 span 标签上使用 display: block 可以使缩进有效,但随后需要在 span 标签之间合并内容,以防止任何不需要的 block 元素换行。另一种方法是插入多个   而不是设置 CSS 类。

最佳答案

我不相信有任何 css 选择器可以让您定位父元素 如果它包含给定的子元素。您可能被迫使用 JavaScript(除非您愿意以允许您使用 css 选择器实现所需格式的方式处理数据)。

一个 jQuery 解决方案如下所示:

$( ".text:has(br)" ).next(".text").addClass( "indent" );
span {
    display:block;
}
.indent {
    text-indent: 1.5em;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<span class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span>
<span class="text">Donec accumsan tortor at maximus vehicula.<br></span>
<span class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span>
<span class="text">Donec accumsan tortor at maximus vehicula. asdfasdfasdf a<br></span>

关于javascript - 在 <br> 之后缩进文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27446141/

相关文章:

javascript - 页面滚动末尾的 jQuery 回调

javascript - Bootstrap 按钮; javascript

javascript - 旋转瓷砖;悬停后如何延迟过渡

jquery mobile - JS 未在多 HTML 应用程序的第二页上执行

android - 钛合金createWebView加载html

html - 2 乘 2 响应表

javascript - 根据 WooCommerce 订单接收页面中应用的优惠券创建重定向

javascript - TypeError this.props.addNode 不是函数

php - 我想存储来自 html5 input type = "date"元素的值,并希望在数据库中存储完全相同的值

javascript - 对加载的对象使用 WireframeHelper