Html 使用CSS:not()以元素中选定的内容为目标
我有一个Html 使用CSS:not()以元素中选定的内容为目标,html,css,css-selectors,pseudo-class,Html,Css,Css Selectors,Pseudo Class,我有一个.headerdiv,其中有一个spanmain域和一个divotherdomains: <div class="header"><span class="maindomain">LatestFooty.co.uk</span> is currently available for sale, along with: <div class="otherdomains"> LatestFootie.com<br> Late
.header
div,其中有一个spanmain域
和一个divotherdomains
:
<div class="header"><span class="maindomain">LatestFooty.co.uk</span> is currently available for sale, along with:
<div class="otherdomains">
LatestFootie.com<br>
LatestFootie.co.uk
</div>
</div>
据我所知,语法是正确的,我不认为这是一个特殊性问题,因为!重要信息
没有什么区别。我做错了什么
我试图将“当前可供出售”与“:”作为目标,而不涉及.main域
或其他域
的内容
在CSS中不能以匿名元素为目标
CSS规则需要在HTML中附加一个“钩子”。这个钩子是一个HTML标记。没有标签,CSS就没有目标。这一概念适用于各种盒子模型
发件人:
当没有用于匿名框的HTML元素时,将创建匿名框。例如,当您在父元素上声明display:flex
,并且直接在另一个元素中不包含一行文本时,就会发生这种情况。为了修复框树,将围绕该文本运行创建一个匿名框。然后,它将表现为一个灵活的项目,但是,它不能像常规框那样被定位和样式化,因为没有要定位的元素
(强调矿山)
我试图将“当前可供出售”与“:”作为目标,而不涉及.main域
或其他域
的内容
在CSS中不能以匿名元素为目标
CSS规则需要在HTML中附加一个“钩子”。这个钩子是一个HTML标记。没有标签,CSS就没有目标。这一概念适用于各种盒子模型
发件人:
当没有用于匿名框的HTML元素时,将创建匿名框。例如,当您在父元素上声明display:flex
,并且直接在另一个元素中不包含一行文本时,就会发生这种情况。为了修复框树,将围绕该文本运行创建一个匿名框。然后,它将表现为一个灵活的项目,但是,它不能像常规框那样被定位和样式化,因为没有要定位的元素
(emphasis mine).header:not(.maindomain):not(.otherdomain)
仅针对具有.header
类且不具有.maindomain
和/或.otherdomain
类本身的元素
你目前的规则是:
是目标
不是目标
不是目标
不是目标
但这显然不是你想在这里做的
您不能将规则应用于.header
类,这取决于仅使用CSS的子类
您的问题有一个经过批准的答案,它可能会引导您走向正确的方向(在这种情况下使用JavaScript或jQuery)。.header:not(.maindomain):not(.otherdomains)
仅针对具有.header
类且自身不具有.main域
和/或其他域
类的元素
你目前的规则是:
是目标
不是目标
不是目标
不是目标
但这显然不是你想在这里做的
您不能将规则应用于.header
类,这取决于仅使用CSS的子类
您的问题有一个经过批准的答案,它可能会引导您走向正确的方向(在这种情况下使用JavaScript或jQuery)。您需要两个选择器:
.header{
字体:斜体;
}
.header.otherdomains,
.header.main域{
字体风格:首字母;
}
/*或
.标题*{
字体风格:首字母;
}
*/
LatestFooty.co.uk目前可供出售,包括:
LatestFootie.com
LatestFootie.co.uk
您需要两个选择器:
.header{
字体:斜体;
}
.header.otherdomains,
.header.main域{
字体风格:首字母;
}
/*或
.标题*{
字体风格:首字母;
}
*/
LatestFooty.co.uk目前可供出售,包括:
LatestFootie.com
LatestFootie.co.uk
一切都在演示中,JavaScript用于演示目的
演示
constlnx=[…document.links];
forEach(lnk=>lnk.addEventListener('click',viewHTML));
函数视图HTML(e){
const link=e.target;
const headers=document.querySelectorAll('.'+this.dataset.tag);
headers.forEach(hdr=>{
如果(!hdr.matches('.hide')){
link.className='off';
设str=hdr.outerHTML;
设txt=document.createElement('div');
txt.className='txt';
hdr.insertAdjacentElement('afterend',txt);
hdr.nextElementSibling.insertAdjacentText('beforeend',str);
hdr.classList.add('hide');
}否则{
link.className='';
hdr.classList.remove('hide');
hdr.nextElementSibling.remove();
}
});
}
正文{
字体:400 2.5vw/1.5控制台
}
[类别^=标题]{
字体系列:Arial;
}
/*标题(OP)
选择器失败--:not()前缀不正确
.标题:。。。意思是。标题是目标
.标题:。。。表示目标为.header的后代
没有.header.A、.header.B,也没有.header.A.B
因此,不带.A和/或.B的.header将以斜体显示所有内容
*/
.header:not(.A):not(.B){
字体:斜体;
}
/*标题1
没有额外HTML标记的最佳解决方案:
指定字体样式:普通。。。
直接(.C1,.D1)
或按类别(.N)
*/
.校长1{
字体:斜体;
}
.C1,
.D1,
.N{
字体风格:普通;
}
/*标题2
使用:not()需要额外的HTML标记:
在内联或内联块标记中换行第二个textnode
作为子体标记的内容,文本可以作为目标
*/
.header2*:非(.E):非(.F){
字体:斜体;
}
/*标题3
具有额外HTML标记的智能解决方案:
在或中换行第二个textnode
*/
H
@media (min-width:300px) and (max-width:450px) {
.header:not(.maindomain):not(.otherdomains) {
font-style: italic;
}
}