设计要求带有可变文本的内联元素具有倾斜边。它足够长,它可能会换行,在这种情况下,边应该应用于最后一行(而不是整个块)。
有没有更好的方法来实现这种效果?
<mark>test text</mark><span class="edge"> </span>
mark {
background: #f00;
padding: 0.1em;
}
mark + span {
border-style:solid;
border-color:#f00 transparent transparent transparent;
border-right-width:10px;
border-bottom-width:0;
border-left-width:0;
position:relative;
pointer-events:none;
}
$(window).load(function() {
$('mark + span').each(function(i,span) {
var $span = $(span);
var $mark = $span.prev('mark');
var markHeight = $span.innerHeight();
var markPaddingTop = Number($mark.css('padding-top').replace(/px/,''));
var markPaddingBottom = Number($mark.css('padding-bottom').replace(/px/,''));
$span.css({
top: markHeight + markPaddingTop,
'border-top-width': markHeight + markPaddingTop + markPaddingBottom
})
});
});
答案 0 :(得分:3)
jQuery对于期望的效果来说太过分了。您可以使用绝对定位和:after
伪类来简化所有内容。
mark {
display: inline-block;
position: relative;
background: #f00;
padding: 0.1em;
min-height: 50px;
box-sizing: border-box;
}
mark:after {
position: absolute;
display: block;
left: 100%;
bottom: 0;
content: '';
width: 0;
height: 0;
border-top: 0 solid transparent;
border-bottom: 50px solid transparent;
border-left: 10px solid #f00;
}
50px
有点武断,所以将其中的所有实例更改为您感兴趣的任何行高。
<强> CodePen 强>