首页 > 其他分享 >CSS结构伪类选择器之否定伪类:not

CSS结构伪类选择器之否定伪类:not

时间:2023-12-05 14:56:24浏览次数:28  
标签:伪类 100% grayscale filter child 选择器 CSS

结构伪类选择器是针对 HTML 层级结构的伪类选择器。

常用的结构化伪类选择器有:

:root选择器、:not选择器、:only-child选择器、:first-child选择器、:last-child选择器、

:nth-child选择器、:nth-child(n)选择器、:nth-last-child(n)选择器、:nth-of-type(n)选择器、

:empty选择器、:target选择器。

这些基本上都很常用,今天着重说下:否定伪类:not()

否定伪类特别有用,在css中, :not选择器 用于匹配非指定元素/选择器的每个元素,语法格式:

:not(selector)

比如:假设我想选择所有 div,除了 id 为 的那个 container。下面代码:

div:not(#container) {
 color: blue;
}

否定伪类:not()的几个特点:

  1. :not()的优先级是 0,因为它的优先级是由括号里面的参数来定的;
  2. :not()伪类可以同时判断多个选择器,比如input:not(:disabled):not(:read-only) {},表示匹配不属于禁用状态同时也不处于只读状态的 input 元素;
  3. not()支持多个表达式,比如:.cs-li:not(li, dd) {},还有另外一种写法:.cs-li:not(li):not(dd) {}。但是这两种写法,要考虑兼容性问题;
  4. :not()也支持选择符,比如:input:not(.a > .b) { border: red solid; };

今天遇到一个问题,想把首页除了logo之外的其他元素变黑白,但是用否定伪类却出现很奇怪的问题,其他有部分元素还是彩色的,代码如下:

.hywzhome div:not(.logo)
 {
     -webkit-filter: grayscale(100%); 
     -moz-filter: grayscale(100%); 
     -ms-filter: grayscale(100%); 
     -o-filter: grayscale(100%); 
     filter: grayscale(100%);
     filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);  
     _filter:none; 
     filter: gray;
}

然后改为:效果一样

.hywzhome div:not(.header > .logo)
 {
     -webkit-filter: grayscale(100%); 
     -moz-filter: grayscale(100%); 
     -ms-filter: grayscale(100%); 
     -o-filter: grayscale(100%); 
     filter: grayscale(100%);
     filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);  
     _filter:none; 
     filter: gray;
}

后来换成另一种写法却可以,代码如下:

.hywzhome div:not(.header):not(.logo)
 {
        -webkit-filter: grayscale(100%); 
        -moz-filter: grayscale(100%); 
        -ms-filter: grayscale(100%); 
        -o-filter: grayscale(100%); 
        filter: grayscale(100%);
        filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);  
        _filter:none; 
        filter: gray;
}

后来试验了一下,多少层级关系就要写多少个:not(),例如:

<div class="header">
  <div class="box">
    <div class="logo"></div>
  </div>
</div>

就要写为:

.hywzhome  div:not(.header):not(.box):not(.logo)

 

标签:伪类,100%,grayscale,filter,child,选择器,CSS
From: https://www.cnblogs.com/joe235/p/17877192.html

相关文章

  • CSS按钮样式之button标签与input type=button的区别
    原文链接:1、https://www.cnblogs.com/weihanli/p/5162828.html         2、https://www.cnblogs.com/smile6542/p/11968175.html   如果想要在页面上表示一个显示文本的按钮推荐input[type=”button”]方式,如果想要呈现一个图片内容或内容更丰富的按钮推......
  • CSS简介及常用样式
    一、CSS简介CSS:层叠样式表(英文全称:CascadingStyleSheets):是一种用来表现HTML样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。二、CSS选择器2.1基本选择器(三种)1.标签选择器<style>p{font-size:20px;......
  • 02.css
    1.标准的CSS盒子模型及其和低版本的IE盒子模型的区别?标准(W3C)盒子模型:width =内容宽度(content)+border+padding+margin低版本IE盒子模型: width =内容宽度(content+border+padding)+margin区别:标准盒子模型盒子的height和width是content(内容)的宽高,而IE盒子模型盒子......
  • vue3使用::v-deep深度选择器不生效
    会出现 ::v-deepusageasacombinatorhasbeendeprecated.Use:deep(<inner-selector>)insteadof::v-deep<inner-selector>.的报错::v-depth用作组合子已被弃用。使用:deep(<内部选择器>)而不是::v-deep<内部选择器>。需要改成:deep(class),示例代码如下:deep(.el-checkbo......
  • 纯CSS实现炫酷背景霓虹灯文字效果
    如图所示,这是一个很炫酷的霓虹灯文字效果且背景炫酷,就像很多个灯光闪烁着不同的颜色。本次文章将解析如何用CSS代码实现这个效果,根据上面的动图分析出我们要实现的几个主要功能点:整个背景中有平均分布的小点衬托中心区域文字闪烁效果如同霓虹灯一样文字背景呈多个平均分布的......
  • vue3中css使用js中的变量
    <scriptsetuplang="ts">import{SoundOutlined}from'@ant-design/icons-vue'constprops=defineProps({title:{type:String,default:''},color:{type:String,default:'#000'}......
  • streamlit 展示自定义 html 以及 css
    目前探索出来的有效方法:style="""<style>.memo-box{border:1pxsolid#ccc;padding:10px;margin-bottom:20px;}.tag{font-size:12px;color:#88......
  • 防御式CSS—设置组件间距
    我们开发人员需要考虑不同的内容长度。这意味着,应该向组件添加间距,即使它看起来不需要。在这个例子中,我们在右侧有一个章节标题和一个操作按钮。目前,它看起来不错。但是让我们看看当标题更长时会发生什么。注意到文本离操作按钮太近了吗?你可能会想到多行包装,但我会在另一节谈......
  • 防御式CSS—网格布局中的列自动分配
    当使用CSSgridminmax()函数时,重要的是要决定使用auto-fit或auto-fill关键字。如果使用不当,可能会导致意想不到的结果。当使用minmax()函数时,auto-fit关键字将扩展网格项以填充可用空间。而auto-fill将保留可用空间,而不改变网格项的宽度。也就是说,使用auto-fit......
  • 防御式CSS—长文本省略
    这是一份名单,现在看起来很完美。然而,由于这是用户生成的内容,我们需要小心如何保护布局,以防内容过长。如下图所示:在这种布局中,一致性很重要。为了实现这一点,我们可以简单地使用text-overflow及其朋友来截断名称。.username{white-space:nowrap;overflow:hidden;......