图解css3:核心技术与案例实战. 2.9 否定伪类选择器
2.9 否定伪类选择器
否定选择器“:not()”是CSS3的新选择器,类似jQuery中的“:not()”选择器,主要用来定位不匹配该选择器的元素。
2.9.1 否定伪类选择器语法
“:not()”是一个非常有用的选择器,可以起到过滤内容的作用。语法如表2-16所示。
否定选择器作用非常大,例如以下选择器表示选择页面中所有元素,除了“footer”元素之外。
:not(footer){...}
有时候常在表单元素中使用,举个实例,给表单中所有input定义样式,除了submit按钮之外,此时就可以使用否定选择器。
input:not([type=submit]){...}
类似这样的选择器在移动端使用也是常见的,例如在Web移动页面中,给表单中的input定义样式,除了单选择按钮之外,代码如下所示。
fieldset input:not([type=radio] {
margin:0;
width:265px;
font-size: 18px;
border-radius: 0;
border-bottom: 0;
border-color: #999;
padding: 8px 10px;
}
2.9.2 浏览器兼容性
浏览器兼容性如表2-17所示。
2.9.3 实战体验:改变图片效果
本节的实例是通过否定选择器来改变图片墙中图片,用来区分悬浮状态下的效果。
这个实例中采用两种技术,一种是图片的过滤效果(CSS3中的新特性,现在仅Webkit内核浏览器支持,本例子中不详细介绍),第二种技术就是前面介绍的否定选择器“:not”。
当鼠标悬浮在整个图片墙上时,所有图片通过自定义的过滤特性,变成黑白模糊的效果,当鼠标移动到一张图片上时,图片恢复到默认效果,而其他图片保持黑白模糊效果,如图2-47所示。
图2-47 否定选择器制作图片墙
制作原理非常简单,接下来一起来看看如何实现。
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>:not选择器使用</title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
ul {
width: 690px;
margin: 20px auto;
letter-spacing: -4px;
word-spacing: -4px;
font-size: 0;
}
li {
font-size: 16px;
letter-spacing: normal;
word-spacing: normal;
display:inline-block;
*display: inline;
zoom:1;
list-style: none outside none;
margin: 5px;
}
img {
width: 128px;
height: 128px;
}
.gallery li:nth-child(2){
-webkit-filter:grayscale(1);
}
.gallery li:nth-child(3){
-webkit-filter:sepia(1);
}
.gallery li:nth-child(4){
-webkit-filter:saturate(0.5);
}
.gallery li:nth-child(5){
-webkit-filter:hue-rotate(90deg);
}
.gallery li:nth-child(6){
-webkit-filter:invert(1);
}
.gallery li:nth-child(7){
-webkit-filter:opacity(0.2);
}
.gallery li:nth-child(8){
-webkit-filter:blur(3px);
}
.gallery li:nth-child(9){
-webkit-filter:drop-shadow(5px 5px 5px #ccc);
}
.gallery li:nth-child(10){
-webkit-filter: saturate(6) hue-rotate(361deg) brightness(.09);
}
.gallery:hover li:not(:hover){
-webkit-filter: blur(2px) grayscale(1);
opacity: .7;
}
</style>
</head>
<body>
<ul class="gallery">
<li>
<img alt="" src="http://www.w3cplus.com/sites/default/files/filter.jpg" />
</li>
...
<li>
<img alt="" src="http://www.w3cplus.com/sites/default/files/filter.jpg" />
</li>
</ul>
</body>
</html>
整个案例中,通过“:nth-child()”给每个图片设置filter效果,关键部分是使用“:not()”过滤了除悬浮状态“(:hover)”的图片,其他都变成黑白模糊透明度为70%的效果。
.gallery:hover li:not(:hover){
-webkit-filter: blur(2px) grayscale(1);
opacity: .7;
}
不过在写本书时,仅有Webkit内核的浏览器支持filter属性。当浏览器不支持filter,但支持“:not()”,能看到除悬浮状态图片以外的所有图片透明度变成70%;如果对否定选择器也不支持,将看不到任何的效果。
相关文章
- 在 2021 年,AWS 连续第 11 年在云基础设施和平台服务 Gartner 魔力象限 (CIPS) 被评为领导者
- 如何在亚马逊云科技Marketplace海外区上线SaaS产品
- 关于Amazon EKS基于Gitlab的CICD实践一 Gitlab的部署和配置篇
- python gRPC(一)
- 使用Amazon Step Functions Data Science SDK构建从AWS Glue Crawler到Glue Job的工作流程
- 基于rclone构建Cross Border Data Transfer服务
- java sendmessage_Java SendMessageToWX.Resp方法代码示例
- java radiogroup_Java RadioGroup.setLayoutParams方法代码示例
- 使用 Simple Replay 实用程序简化 Amazon Redshift RA3 迁移评估
- java getui()_Java JTabbedPane.getUI方法代码示例
- java getservername_Java ServletRequest.getServerName方法代码示例
- EC2-Classic 即将停用 – 以下是相关的准备工作
- groovy java8_从Groovy到Java 8
- 推出 Amazon Route 53 应用程序恢复控制器
- 搭建云原生配置中心的技术选型和落地实践
- 智能安防监控视频中的AI技术集成
- 使用Teleport在亚马逊云科技上构建安全高可用的云原生堡垒机
- EKS集群弹性伸缩和不可变基础设施最佳实践
- Amazon 联系中心日 – 2021 年 7 月
- 带有 Amazon EC2 R5b 实例的 Amazon EBS io2 Block Express 卷现已正式发布