是否有一个选择器指定CSS仅在匹配特定URL或URL的一部分时应用?
例如,下面是我的CSS样式表:
p {
color: green;
}
url("home.html") {
color: blue;
}
url("about.html") {
color: yellow;
}
path("/path/index*") {
color: indigo;
}
当用户访问home.html时,我希望应用home.html选择器。当我在about.html URL上时,我希望应用about.html。
CSS媒体查询允许您在视图宽度更改时切换到不同的样式集。它还允许您在用户要在屏幕上查看或将其发送到打印机时指定一组不同的样式。
我的问题是,“是否有可能根据URL或URL中的值指定一组不同的样式。”所以这不是一个如何做的问题,而是一个是否可能的问题。
我使用的是CMS,它有一个主题,允许您添加自己的CSS。有一种风格。就这样。不是两个而是一个。
我有一个页面,有特定的CSS到该页面,只有该页面。这就是这个问题的由来。可能有一千种变通方法,但我的问题不是关于变通方法。
然而,既然这个问题已经得到了回答,我不介意变通一下与这个问题相关的答案。
6条答案
按热度按时间8fsztsew1#
看起来
@document
规则只是针对这种情况提出的,但它已从CSS3规范中删除,并计划用于CSS 4。从我的测试来看,它似乎不受支持,而且在本文发布时也没有在caniuse上列出。其语法如下:
使用**
@media
**查询进行比较的测试代码:结果如下:
测试代码测试**
@document
**规则:结果如下:
关于@document感谢@BoltClock
更多info
dwbf0jvd2#
您可以在HTML中或使用JavaScript将
data-url
自定义属性附加到元素的祖先,然后在CSS中查询该数据的值。下面是一个工作示例,其中data-url
属性位于body
元素上:不知道这样的解决方案会有多好用。
lawou6xi3#
可悲的是,没有伪类来选择基于URL的元素。唯一的方法是将class添加到body标签或特定元素,然后覆盖CSS。
ecr0jaav4#
如果只是HTML,使用jQuery
如果使用WordPress:
添加主题function.php
mwecs4sa5#
目前,
:has()
有相当广泛的支持,但可能还没有高到可以无条件推出的程度。希望Firefox很快就能支持它,并且v105之前的Chrome的使用率会下降。参见Can I use...和https://bugzilla.mozilla.org/show_bug.cgi?id=418039。不是所有的网页都会有这个,但在
<head>
中包含URL的东西是相当常见的,例如:<link rel="canonical" href>
<meta property="og:url" content>
<meta itemprop="url" content>
<meta name="twitter:url" content>
把其中一个和
:has()
放在一起,你可以写这样的选择器:$=
和*=
:attribute selectors+
:next-sibling combinatorkknvjkwl6#
太棒了!
对于我的用例,这可以通过:target css伪类实现
https://www.w3schools.com/cssref/sel_target.php
但是对于您的使用情况,您需要在您的URL中添加以下内容:About.html#关于家.html#家