图解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%;如果对否定选择器也不支持,将看不到任何的效果。

相关文章
|
2天前
|
前端开发 开发者 容器
探索现代Web开发中的CSS Grid布局技术
【8月更文挑战第29天】在数字时代的浪潮中,网页设计不断进化以适应日新月异的用户需求。CSS Grid布局技术作为一项革新性的前端工具,为设计师和开发者提供了前所未有的布局能力。本文旨在通过深入浅出的方式介绍CSS Grid的核心概念、基本用法以及在实际项目中的应用,帮助读者快速掌握这一强大的网页布局工具。
20 3
|
5天前
|
编解码 前端开发 开发者
【前端设计达人必备】揭秘CSS尺寸单位的魔力:从基础到实战,打造灵动响应式网页!
【8月更文挑战第26天】本文深入探讨了CSS中常用的尺寸单位,包括像素(px)、百分比(%)、视窗单位(vw/vh/vmin/vmax)、可伸缩相对单位(em/rem)以及Flexbox和Grid中的fr单位。通过具体案例展示了每种单位的特点及其适用场景。像素适用于固定尺寸元素;百分比和em/rem利于构建响应式布局;视窗单位适合全屏设计;fr单位则能有效管理复杂网格布局的空间分配。掌握这些单位有助于开发者设计出更加灵活、高质量的网页布局。
24 4
|
10天前
|
前端开发
CSS中的层级选择器&伪类选择器和伪元素选择器
CSS中的层级选择器&伪类选择器和伪元素选择器
|
18天前
|
前端开发
CSS——通过伪类来自定义四个角边框
CSS——通过伪类来自定义四个角边框
44 3
|
19天前
|
存储 前端开发 安全
【海贼王航海日志:前端技术探索】CSS你了解多少?(三)
【海贼王航海日志:前端技术探索】CSS你了解多少?(三)
24 2
|
19天前
|
Web App开发 前端开发
【海贼王航海日志:前端技术探索】CSS你了解多少?(二)
【海贼王航海日志:前端技术探索】CSS你了解多少?(二)
16 2
|
19天前
|
缓存 前端开发 JavaScript
【海贼王航海日志:前端技术探索】CSS你了解多少?(一)
【海贼王航海日志:前端技术探索】CSS你了解多少?(一)
16 2
|
16天前
|
移动开发 JavaScript 前端开发
基于CSS3、原生JS、Vue3.0技术各自实现序列帧动画效果
这篇文章展示了如何使用纯CSS3、原生JavaScript以及Vue 3.0技术来实现序列帧动画效果,并通过代码示例和动画效果展示了每种方法的实现过程和最终效果。
30 0
|
17天前
|
XML 前端开发 安全
如何使用 CSS 中的 :root 伪类选择器
如何使用 CSS 中的 :root 伪类选择器
23 0
|
2月前
|
编解码 前端开发 容器
CSS Flex布局实战案例:构建响应式卡片组件
【7月更文挑战第17天】通过上述步骤,我们成功地使用CSS Flex布局构建了一个响应式的卡片组件。Flexbox不仅简化了布局代码,还让我们能够轻松实现复杂的布局效果,如响应式设计。在实战中,掌握Flexbox将大大提高前端开发的效率和网页布局的质量。希望这个案例能够帮助你更好地理解和应用Flexbox布局。
下一篇
云函数