css – parent:在具有子alt属性作为内容的伪元素之前

前端之家收集整理的这篇文章主要介绍了css – parent:在具有子alt属性作为内容的伪元素之前前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

包含在单独div元素中的一系列ul元素不仅需要在其前面的伪元素中具有正确的内容,而且还要使粗体标记标题与列表相邻.

此外,如果有问题的div中没有​​列表,则不应出现任何内容.这就是为什么我在寻找CSS作为解决方案的原因,因为如果我在div中对标题进行硬编码,那么如果没有列表存在则会出现.

我无法预测这个唯一div的哪些实例会提前提供ul – 我们的应用程序根据用户输入从下拉菜单生成内容,因此如果从未使用过菜单,则不会创建ul.

我无法使用任何类型的JavaScript进行此标记过程.

这是我想看到的:

Foo项目

列表一
    
        > aaaa
        > bbbbb
        > cccc
    
    清单二
    
        > defdefdef
        > ghighighi
    

酒吧项目

列表一
    
        > xxx
        > yyy
    
    清单二
    
        > zzzzzzz
        > aaaabbbbccc
    

目前我正在尝试使用ul的alt属性来填充div:before area.希望有一种方法来定义CSS,它表示“对于包含.exam类元素的每个div,将ul的attr(alt)放在div:before元素之前”.

这就是我尝试过的:

和CSS一起去:

div > .exam:first-of-type:before {
    content:attr(alt);
    font-style:italic;
}
ul {
    margin:0 0 1em 1em;
    padding:0;
}
li {
    margin-left:2em;
}

请在这里查看jsfiddle链接https://jsfiddle.net/f6gwyvuu/

我意识到这有点令人费解但不幸的是,这是解决应用程序生成内容的方式的结果.我真的无法控制它,我只能对它创建的元素进行风格化.

提前致谢.

最佳答案
首先,ul元素不能具有alt属性.您可以使用自定义数据 – *属性.

并且在每个ul中重复相同的数据没有多大意义.相反,只将它添加到div.

然后,你可以使用

div:not(:empty):before {
  content: attr(data-alt);
  display: block;
}
div:not(:empty):before {
  content: attr(data-alt);
  display: block;
  font-style: italic;
}
ul {
  margin: 0 1em;
  padding: 0;
}
li {
  margin-left: 2em;
}

猜你在找的CSS相关文章