【问题标题】:CSS - How to match class (one dynamic and one static) between two elementsCSS - 如何在两个元素之间匹配类(一个动态和一个静态)
【发布时间】:2011-12-16 00:48:44
【问题描述】:

我试图在我的 body 和后续的 div 元素之间绑定一个 css 规则。使用 wordpress,我的 body 元素根据加载的页面定义了自己的类。我正在尝试实现一种样式,该样式基本上将检查类作者是否存在(body.author-<*>),然后找到具有相同类名的 div 并实现特定样式。

我不能使用任何内部 wordpress 函数,因为包含上述 div(作者列表)的列表是在我的代码中动态设置的。

另外,我希望避免使用 javascript,因为我希望尽可能将此更改的范围限制为 CSS。

此外,由于我的列表中列出了许多用户,因此为每个用户指定一个静态 css 规则,例如 body.author-user1 div.author-user1{}... 维护起来会很烦人,因为以后可能会添加新作者,我想限制任何未来的代码改成纯html。

仅使用 css 可以吗?

【问题讨论】:

    标签: php javascript html css wordpress


    【解决方案1】:

    您可以使用高级 CSS 选择器

    正文[class^="author"] { }

    查找类以作者开头的所有主体,然后对 div 执行相同操作

    正文[class^="author"] div[class^="author"] { }

    但是我不知道 ie 对低于​​ ie8 的兼容性。

    【讨论】:

    • 高级css选择器的问题是我不仅需要检查两个元素都有一个以author或author-开头的类,而且每个作者div都有一个唯一的类名,例如author-user1 , author-user2... 太糟糕了,没有办法在 css 中两个元素之间的两个属性之间进行逻辑检查...
    • 真的。您可以使用一些 jQuery 来找到其类等于 body 的 div 并向其添加一个“活动”类。只会是一条线左右。如果这是一个选项,它看起来像var bodyClass= $(body).attr('class'); jQuery(div[class^="author-"]).filter('.'+bodyClass).addClass('active'); 可能需要稍微调整一下,因为我还没有测试过。
    • 是的,非常正确。我只是担心渲染时会出现延迟......可能很小,但值得检查。
    • 通过拉入类仅以作者开头的 div 并从那里过滤,我试图最大限度地减少所需的时间。除非用于渲染网站的计算机非常老旧,否则渲染延迟不会很明显
    • bodyClass= $(body).attr('class'); 这行基本上不是提取所有类吗?通过这样做,您的第二行将过滤所有类,尽管语法不正确(因为它是“。”和数组之间的连接)?
    【解决方案2】:

    我不确定您为什么要将 body 类和 inside 类都设置为 author-#。似乎最有意义的做法是向其中一个添加编号 ID(考虑到它的值的独特性),然后直接通过 CSS 控制该元素。

    我不确定这是否仍然与您的问题有关,但是要进行“检查”以查看 author- 前缀是否在您的班级中,只需像这样使用attribute selector

    body[class|=author] { ... }
    

    【讨论】:

    • 在 body 和 user div 中定义类的重要性在于,当用户在 wordpress 中访问作者的页面(列出他或她的所有帖子)时,我希望这个用户名或个人资料是从列表中突出显示。我使用用户名与用户 id 的原因是 wordpress 已经有一个内置函数,该函数已经定义了一个基于用户名(而不是用户 id)的类。如果基于作者的用户名而不是任意数字,将新作者添加到列表中会更加全面。
    • 啊,我现在明白你在找什么了。您无法使用 CSS 真正实现您想要的,您可能会更好地操作 PHP 以在您想要突出显示的 <div> 上分配一个额外的类。
    • 哦,好点!从来没有想过研究PHP。将 .highlight 类直接设置到 div 可能更简单,只要通过 wordpress php 页面的范围允许它。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    相关资源
    最近更新 更多