我正在尝试将CSS添加到XML rss feed中的部分文本中(我无法更改它)。 那么使用Javascript呢?
问题在于我希望它在右对齐时更小。
我所说的文字部分是“此优惠有效,直到## / ## / ##”。
问题在于:
.itemContent br {
text-align:right;
font-size: 0.5em;
}
答案 0 :(得分:1)
仅使用CSS是不可能的,div
元素中的所有文本都是散布有br
元素的字符数据(CDATA)。使用CSS,您只能定位整个元素及其整个内容。如果您无法更改或重写HTML,则无法重新设置单个元素的CDATA子集。
使用Javascript很难,因为你有无法选择整个元素的相同限制。您必须按照任意条件开始拆分内容,例如希望总是有相同数量的<br>
元素。解决方案本质上是不稳定的。
答案 1 :(得分:1)
如果您愿意放弃隐藏<br>
,那么 只能使用CSS而不使用Javascript。也就是说,不要隐藏div中的所有<br>
,只隐藏最后一个。
li > div > br:last-child {
display:none;
}
.itemContent {font-size:.5em}
.itemContent::first-line {font-size:2em}
诀窍是将整个div的字体大小减半,然后将div的第一部分(直到第一个br)恢复到原始大小。
答案 2 :(得分:1)
问题是JavaScript是异步处理的。在your code中,jQuery将首先查找任何.itemContent元素(但不会找到任何元素)。然后FeedEk加载RSS文件并将其内容插入DOM。这就是为什么你的代码不起作用的原因,你过早地寻找元素。
在jQuery完成加载和处理RSS之后,您只能访问.itemContent
元素。不幸的是,FeedEk没有提供回调方法,所以你不知道它何时完成。使用jQuery的ajaxSetup时有一个解决方法。 FeedEk在内部使用jQuery的Ajax函数,它提供了一种在Ajax请求之后调用函数并完成处理的方法。
我使用您提供的代码对此进行了测试,这对我有用。只需替换您自己的FeedEk电话:
$(document).ready(function () {
jQuery.ajaxSetup({
complete: function () {
$('.itemContent').each(function(i, element) {
$($(element).find('br')[0].nextSibling)
.wrap('<div class="offervalid"/>')
.before('<br><br><br><br><br>'); // if you really need <br>s
});
}
});
$('#divRss').FeedEk({
FeedUrl: 'http://dimmituquando.blogspot.com/feeds/posts/default',
MaxCount: 10
});
});
答案 3 :(得分:0)
尝试使用内联样式标记:
<span style="text-align:right; font-size: 0.5em;">This offer is valid till ##/##/##</span>
答案 4 :(得分:0)
使用javascript,您需要修改feed的html以将该段文本包装在div中,以便您可以设置样式。
$(".itemContent").html(function(i,html){
return html.replace(/(offerta valida fino al \d+\/\d+\/\d+)/i,"<div class='offervalid'>$1</div>");
});
的CSS:
.itemContent .offervalid {
float:right;
font-size: 0.5em;
}
注意,我认为您的示例代码中存在拼写错误。优惠有效期至2031年?