我可以用CSS来完成这个吗?

如果我有这样的元素:

<a href="something">A</a>
<a href="something_else">B</a>
<a href="something">A</a>
<a href="...">C</a>

我知道我可以使用类似的东西

body
{
    counter-reset:section;
}

a:before
{
    counter-increment:section;
    content:counter(section)". ";
}

要得到

1. A
2. B
3. A
4. C

但有没有办法得到以下?

1. A
2. B
1. A
3. C

即。 通过用相同数字前缀文本来唯一标识页面上的所有链接。

注意:对特定网址进行硬编码不是一种选择,我可能会处理数百个链接,并且不会提前知道网址。

我意识到这将很容易/可能与JavaScript,我只对基于CSS的解决方案感兴趣或解释为什么这不可能与CSS。


好吧,我明白你的意思。 只是纯CSS,这是不可能的(至少不是跨平台..)

如果你可以使用JavaScript,你有几种可能性。

我的首选是使用数据属性来保存值,在这个例子中我选择了data-counter 。 如果你这样做,CSS就变得微不足道了:

CSS

a:before
{
   content:attr(data-counter)". ";
}​

如果你有jQuery的话,Javascript会看起来像这样:

JS与jQuery

var linkcounter = {};
var counter = 0;
$("a").each(function() {
    if (!linkcounter.hasOwnProperty($(this).attr("href"))) {
        counter++;
        linkcounter[$(this).attr("href")] = counter;
    }
    $(this).attr("data-counter", linkcounter[$(this).attr("href")]);
});

或者像这样没有jQuery:

香草JS

var linkcounter = {};
var counter = 0;
var anchors = document.getElementsByTagName('a');
for(var i = 0; i < anchors.length; i++) {
    if (!linkcounter.hasOwnProperty(anchors[i].getAttribute("href"))) {
        counter++;
        linkcounter[anchors[i].getAttribute("href")] = counter;
    }
    anchors[i].setAttribute("data-counter", linkcounter[anchors[i].getAttribute("href")]);
}

你可以在这里查看没有jQUery的版本:http://jsfiddle.net/ramsesoriginal/CVW7Y/5

和jQuery版本在这里:http://jsfiddle.net/ramsesoriginal/CVW7Y/4

可悲的是没有CSS唯一的方式来做到这一点(还)。 我希望这有帮助。


我不认为你可以用纯CSS获得这种行为,并且你需要Javascript。 总有这样的例子:

http://google.com/
http://google.com
google.com
google.com/
www.google.com

你明白了。


在jQuery中这是相当微不足道的,所以我建议你使用它。


如果使用jQuery是可以的,可以通过操作:before伪元素的内容来完成:

演示:http://jsfiddle.net/rwMWx/2/

JS

var labels = [
    "1",
    "2",
    "1",
    "3"
    // and so on...    
];

// OR maybe put in some algo for this sequence

$('a').each(function(i) {
    $(this).attr('data-label', labels[i] + '. ');
});

CSS

a:before {
    content: attr(data-label);
    color: red;
    text-align: left;
    padding-right: 10px;
    font-size: 11px;
    display: inline;
}
链接地址: http://www.djcxy.com/p/10973.html

上一篇: Can I accomplish this with CSS?

下一篇: pdf is not rendering header