热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CSS3选择器的使用方法详解,提高Web开发效率和精准度

本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。

《CSS3 入门详解(一)》

前言

如同人类的的进化一样,
CSS3
CSS2的“进化”版本,在
CSS2基础上,增强或新增了许多特性,弥补了
CSS2的众多不足之处,使得
Web开发变得更为高效和便捷。

1.选择器

CSS3新增了许多灵活查找元素的方法,极大的提高了查找元素的效率和精准度。
CSS3选择器与
jQuery中所提供的绝大部分选择器兼容。

1.1 属性选择器

属性选择器就是通过属性来选择元素。

选择器含义
[attr]存在attr属性即可
[attr=val]属性值完全等于val
[attr*=val]属性值里包含val字符并且在“任意”位置
[attr^=val]属性值里包含val字符并且在“开始”位置
[attr$=val]属性值里包含val字符并且在“结束”位置

1、[attr]

2、[attr=val]

3、[attr*=val]

4、[attr^=val]

5、[attr$=val]

1.2 伪类选择器

除了以前介绍的的
:link
:active
:visited
:hover
CSS3又新增了其它的伪类选择器。

1、结构(位置)伪类

选择器含义
:first-child其父元素的第1个子元素
:last-child其父元素的最后1个子元素
:nth-child(n)其父元素的第n个子元素
:nth-last-child(n)其父元素的第n个子元素(倒着数)

2、空伪类

:empty选中没有任何子节点的元素



阿斯蒂芬






3、目标伪类

:target结合锚点进行使用,处于当前锚点的元素会被选中;


找笑脸去

阿斯顿发撒旦法撒打发放大法的撒双方都


阿斯顿发撒旦法撒打发放大法的撒双方都


阿斯顿发撒旦法撒打发放大法的撒双方都


阿斯顿发撒旦法撒打发放大法的撒双方都


阿斯顿发撒旦法撒打发放大法的撒双方都


阿斯顿发撒旦法撒打发放大法的撒双方都


阿斯顿发撒旦法撒打发放大法的撒双方都


阿斯顿发撒旦法撒打发放大法的撒双方都


阿斯顿发撒旦法撒打发放大法的撒双方都


阿斯顿发撒旦法撒打发放大法的撒双方都


阿斯顿发撒旦法撒打发放大法的撒双方都


阿斯顿发撒旦法撒打发放大法的撒双方都


阿斯顿发撒旦法撒打发放大法的撒双方都

4、排除伪类

:not(selector)
selector(任意选择器)外的元素会被选中;







1.3 伪元素选择器

  • 1、::first-letter文本的第一个单词或字(如中文、日文、韩文等)
  • 2、::first-line 文本第一行;
  • 3、::selection 可改变选中文本的样式;
  • 4、::before::after

示例代码:伪元素实现横竖分割线












效果图:

《CSS3 入门详解(一)》

:after
:before在旧版本里是伪元素,
CSS3的规范里“
:”用来表示伪类,“
::”用来表示伪元素,但是在高版本浏览器下
:after
:before会被自动识别为
::after
::before,这样做的目的是用来做兼容处理。

2. 颜色

新增了
RGBA
HSLA模式,其中的
A表示透明度,即可以设置颜色值的透明度,相较
opacity,它们不具有继承性,即不会影响子元素的透明度。

2.1 RGBA

Red
Green
Blue
Alpha
RGBA
R
G
B取值范围
0~255


2.2 HSLA

  • H 色调 取值范围0~3600/360表示红色、120表示绿色、240表示蓝色
  • S 饱和度 取值范围0%~100%
  • L 亮度 取值范围0%~100%
  • A 透明度 取值范围0~1


2.3 关于 CSS 的透明度

Alpha
opacity的区别主要就是,
opacity具有继承性,父盒子设置该属性,下面所有的子元素都会继承该属性。

transparent不可调节透明度,始终完全透明。

3. 文本阴影

text-shadow,可分别设置偏移量、模糊度、颜色(可设透明度)。

如:

text-shadow: 2px 2px 2px #CCC;

  • 1、水平偏移量 正值向右 负值向左;
  • 2、垂直偏移量 正值向下 负值向上;
  • 3、模糊度是不能为负值;
  • 4、阴影颜色。

示例代码:文字浮雕


我是凸起文字

我是凹下去的文字

效果图:

《CSS3 入门详解(一)》

4. 盒模型

CSS3中可以通过
box-sizing来指定盒模型,即可指定为
content-box
border-box,这样我们计算盒子大小的方式就发生了改变。

可以分成两种情况:

  • 1、box-sizing: border-box盒子大小为width
  • 2、box-sizing: content-box盒子大小为width + padding + border

注:上面的标注的width指的是CSS属性里设置的width: lengthcontent的值是会自动调整的。

示例代码:







效果图:

《CSS3 入门详解(一)》

可以看出通过设置盒子模型后,虽然.box设置了边框,但是整个box的盒子大小没有改变。

5. 边框

边框中的边框圆角、边框阴影属性,应用十分广泛,兼容性也相对较好,具有符合渐进增强原则的特征。

5.1 边框圆角

通过
border-radius属性,设置边框圆角,圆角处理时,脑中要形成圆、圆心、横轴、纵轴的概念,正圆是椭圆的一种特殊情况。

《CSS3 入门详解(一)》

为了方便表述,我们将四个角标记成1234,如2代表右上角,CSS里提供了border-radius来设置这些角横纵轴半径值。

分别设置横纵轴半径,以“/”进行分隔,遵循“1234”规则,“/”前面的1~4个用来设置横轴半径(分别对应横轴1234位置),“/”后面1~4个参数用来设置纵轴半径(分别对应纵轴1234位置 )。


效果图:

一般情况下,我们用不到这么复杂的,除非特殊需求的时候。

《CSS3 入门详解(一)》

支持简写模式,具体如下:

  • 1、border-radius: 10px;表示四个角的横纵轴半径都为10px
  • 2、border-radius: 10px 5px;表示13角横纵轴半径都为10px24角横纵轴半径为5px
  • 3、border-radius: 10px 5px 8px;表示1角模纵轴半径都为10px24角横纵轴半径都为8px3角的横纵轴半径都为8px
  • 4、border-radius: 10px 8px 6px 4px;表示1角横纵轴半径都为10px,表示2角横纵轴半径都为8px,表示3角横纵轴半径都为6px,表示4角横纵轴半径都为6px

椭圆的画法:


《CSS3 入门详解(一)》

如果不想计算,直接设百分比:“50%”。

正圆的画法:


《CSS3 入门详解(一)》

示例代码:边框圆角合集













效果图:

《CSS3 入门详解(一)》

5.2 边框阴影

box-shadow,与文字阴影类似,可分别设置盒子阴影偏移量、模糊度、颜色(可设透明度)。

如:

box-shadow: 5px 5px 5px #CCC

  • 1、水平偏移量 正值向右 负值向左;
  • 2、垂直偏移量 正值向下 负值向上;
  • 3、模糊度是不能为负值;
  • 4、inset可以设置内阴影;

注:设置边框阴影不会改变盒子的大小,即不会影响其兄弟元素的布局。可以设置多重边框阴影,实现更好的效果,增强立体感,符合渐进增强,实际开发中可以大胆使用。

示例代码:


效果图:

《CSS3 入门详解(一)》

我们通过上图可以看到,虚线是盒子的位置,粉色阴影是inset属性设置的,所以是内阴影,浅蓝色是直接设置的外阴影,效果一目了然。

6. 背景

背景在
CSS3中也得到很大程度的增强,比如背景图片尺寸、背景裁切区域、背景定位参照点、多重背景等。

6.1 background-size

通过
background-size设置背景图片的尺寸,就像我们设置
img的尺寸一样,在移动
Web开发中做屏幕适配应用非常广泛。

其参数设置如下:

  • 可以设置长度单位(px)或百分比(设置百分比时,参照盒子的宽高)
  • 设置为cover时,会自动调整缩放比例,保证图片始终填充满背景区域,如有溢出部分则会被隐藏。
  • 设置为contain会自动调整缩放比例,保证图片始终完整显示在背景区域。

6.2 background-origin

通过
background-origin可以设置背景图片定位(
background-position)的参照原点。

其参数设置如下:

  • border-box以边框做为参考原点;
  • padding-box以内边距做为参考原点;
  • content-box以内容区做为参考点;

示例代码:




效果图:

《CSS3 入门详解(一)》

6.3 background-clip

通过
background-clip,可以设置对背景区域进行裁切,即改变背景区域的大小。

其参数设置如下:

  • border-box裁切边框以内为背景区域;
  • padding-box裁切内边距以内为背景区域;
  • content-box裁切内容区做为背景区域;

《CSS3 入门详解(一)》

6.4 多背景

以逗号分隔可以设置多背景,可用于自适应布局。在一个盒子里可以设置多个背景图片,通过背景定位的功能将两张图片组装起来。

示例代码:


效果图:

《CSS3 入门详解(一)》

从效果图中我们可以看到,在盒子里面设置了两张背景图,分别是上面一部分,下面一部分。这里故意给盒子高度拉长了一点,并且设置了一个灰色的背景,为的就是大家能够清楚的看到上下两部分的背景图。

7. 渐变

渐变是
CSS3当中比较丰富多彩的一个特性,通过渐变我们可以实现许多炫丽的效果,有效的减少图片的使用数量,并且具有很强的适应性和可扩展性。

7.1 线性渐变

linear-gradient线性渐变指沿着某条直线朝一个方向产生渐变效果。

1、必要的元素:

借助
Photoshop总结得出线性渐变的必要元素

  • a、方向
  • b、起始色
  • c、终止色
  • d、渐变距离

2、关于方向

通过具体的方位词指定

  • to left
  • to right
  • to top
  • to bottom

通过角度改变渐变的方向

  • ,从下往上渐变
  • 90°,从左向右渐变

示例代码:


效果图:

《CSS3 入门详解(一)》

3、渐变范围

如果不设置范围,默认渐变的范围是父盒子的宽度,如果通过
background-size设置宽度的话,渐变范围即为设置的宽度。


效果图:

《CSS3 入门详解(一)》

7.2 径向渐变

radial-gradient径向渐变指从一个中心点开始沿着四周产生渐变效果。

1、必要的元素:

  • a、辐射范围即圆半径
  • b、中心点 即圆的中心
  • c、渐变起始色
  • d、渐变终止色
  • e、渐变范围

2、关于中心点

中心位置参照的是盒子的左上角,例如:


《CSS3 入门详解(一)》

示例代码:镜像渐变画个球


效果图:

《CSS3 入门详解(一)》

8. 过渡

过渡是
CSS3中具有颠覆性的特征之一,可以实现元素不同状态间的平滑过渡(补间动画),经常用来制作动画效果。

8.1 帧动画

通过一帧一帧的画面按照固定顺序和速度播放,如电影胶片。

《CSS3 入门详解(一)》

示例代码:




效果图:

《CSS3 入门详解(一)》

这里不做详细了解,主要是为了区分与补间动画的区别。

8.2 补间动画

自动完成从起始状态到终止状态的的过渡。

语法:transition

当前元素只要有“属性”发生变化时,可以平滑的进行过渡,并不仅仅局限于
hover状态。

  • transition-property设置过渡属性

/*设置哪些属性要参加到动画效果中*/
transition-property: all;

  • transition-duration设置动画过渡执行时间

transition-duration: 2s;

  • transition-timing-function设置过渡速度类型

transition-timing-function:linear;
/* ease| ease-in | ease-out | ease-in-out | linear; */

  • transition-delay设置过渡延时

/*1s后,过渡动画开始过渡*/
transition-delay: 1s;

连写:

/* 属性 执行时间 延时时间 过渡类型*/
transition: all 2s 1s linear;

示例代码:


效果图:

《CSS3 入门详解(一)》

我们可以看到,触发hover事件的时候延迟1s后开始执行动画。

示例代码:过渡的实际应用










效果图:

《CSS3 入门详解(一)》

9. 2D转换

转换(
transform)是
CSS3中具有颠覆性的特征之一,可以实现元素的位移、旋转、变形、缩放,甚至支持矩阵方式,配合即将学习的过渡和动画知识,可以取代大量之前只能靠
Flash才可以实现的效果。

9.1 位移

CSS3中,通过
translate属性对元素进行位移。

移动translate(x, y)可以改变元素的位置,xy可为负值;

  • a、移动位置相当于自身原来位置
  • b、y轴正方向朝下
  • c、除了可以像素值,也可以是百分比,相对于自身的宽度或高度

transform: translate(100px, 30px);

示例代码




效果图:

《CSS3 入门详解(一)》

我们可以看到,鼠标移上去之后,蓝色盒子,分别向左和向下移动了一段距离。

9.2 缩放

缩放
scale(x, y)可以对元素进行水平和垂直方向的缩放,
x
y的取值可为小数;

/*宽和高都放大1倍*/
transform: scale(1.5);

示例代码:


效果图:

《CSS3 入门详解(一)》

9.3 旋转

旋转
rotate(
deg)可以对元素进行旋转,正值为顺时针,负值为逆时针;

  • a、当元素旋转以后,坐标轴也跟着发生的转变
  • b、调整顺序可以解决,把旋转放到最后

/* 顺时针旋转 90度 */
transform: rotate(90deg);

示例代码:


效果图:

《CSS3 入门详解(一)》

旋转原点:

默认情况下,旋转是按照元素的中心点旋转的,但是我们可以手动设置元素旋转的中心点。

transform-origin: 30px 40px;

示例代码:


效果图:

《CSS3 入门详解(一)》

示例代码:扑克牌









效果图:

《CSS3 入门详解(一)》

9.4 倾斜

倾斜
skew(deg, deg)可以使元素按一定的角度进行倾斜,可为负值,第二个参数不写默认为
0

transform: skew(30deg,30deg);

示例代码:


效果图:

《CSS3 入门详解(一)》

9.5 矩阵

矩阵
matrix()把所有的
2D转换组合到一起,需要
6个参数。
transform-origin可以调整元素转换的原点,但是对于
transform: translate(x,y)没有影响。我们可以同时使用多个转换,其格式为:
transform: translate() rotate() scale() …等,其顺序会影转换的效果。

详细可参见

10. 3D 转换

10.1 3D 坐标轴


X
Y
Z分别表示空间的
3个维度,三条轴互相垂直。如下图:

《CSS3 入门详解(一)》

网格状的正方形,可以想象成是我们的电脑桌面2D平面。

在 3D 转换中,前面 2D 转换的属性在这都可以使用:

  • 位移

transform:translate(100px,100px,100px);

  • 旋转

transform:rotate(30deg,30deg,30deg);

  • 缩放

transform:scale(2,0.5,0.5);

  • 倾斜

transform:skew(30deg,30deg,30deg);

3D转换中,一定要加上一个透视属性,才能在电脑2D平面中显示出3D的效果,透视属性请看下章。

10.2 透视(perspective)

电脑显示屏是一个
2D平面,图像之所以具有立体感(
3D效果),其实只是一种视觉呈现,通过透视可以实现此目的。
perspective通过透视产生的
3D效果,只是视觉呈现而已,并不是真正的
3d立体的盒子;就是
近大远小的效果。

透视的概念其实很简单,就是“近大远小”。

《CSS3 入门详解(一)》

举个例子:


2D转换的时候,我们知道一个
translate属性,他分别可以设置向左向右或者向上向下平移,但是却不能向里面或外面平移。






效果图:

《CSS3 入门详解(一)》

没有加透视属性的时候,因为z轴是垂直电脑平面射出来的,translateZ是看不出效果的。

如何设置透视属性?

给当前元素的直接父元素添加
perspective: 800px;透视属性,注意这个值可以是随意的,但是最佳展现距离是
600px~1000px






效果图:

《CSS3 入门详解(一)》

如图所示,在ul加上透视属性后,第三个盒子向着z轴的负方向移动了100px

透视可以将一个2D平面,在转换的过程当中,呈现3D效果。(没有perspective,便“没有”Z轴)并非任何情况下都需要透视效果。

10.3 3D呈现(transform-style)

什么是
3D呈现呢?不要与前面的透视搞混,透视只能使一个物体呈现近大远小的状态,不能呈现出一个立体感的东西,比如我在页面上用六个面组成一个正方形,通过透视你可能只能改变他的远近距离,并不能让他看起来像个立体的盒子,所以这里需要用到另一个属性:
transform-style

transform-style: preserve-3d | flat

  • flat:所有子元素在2D平面呈现
  • preserve-3d:保留3D空间

必须设置在父元素身上并且父元素有转换(就是有变形)并且子元素也得有转换(变形)才能看得到效果。

1、示例代码:正方体









效果图:

《CSS3 入门详解(一)》

2、示例代码:3D 导航


效果图:

《CSS3 入门详解(一)》

10.4 3D呈现案例:3D轮播图

1、普通版 3D 轮播图

实现思路:

  • 通过CSS3transform-style: preserve-3d的概念,将视图设置成3D展示模式;
  • 四张图片,分别设置其绕着X轴旋转的角度,分别对应四个立体面;
  • 将旋转好的图片沿着Z轴平移盒子宽度的一半;
  • 定义一个全局变量num,用来记录按钮点击的次数,当当按动按钮的时候,让ul旋转num*90°

示例代码:














效果图:

《CSS3 入门详解(一)》

2、切割版 3D 轮播图

实现思路:

  • 结构上将之前定义好的ul重复四次;
  • 设定延时,整个动画执行时间是0.8s,设定每一个ul延迟执行0.2s,即第一个延时0s,第二个延时0.2s,第三个延时0.4s,第四个延时0.6s
  • 其余步骤同上,着重强调的是,相对于上面的案例,本案例给按钮加了限制,监听第一次所有的ul旋转结束之后,按钮才能再一次被点击。

示例代码:
































效果图:

《CSS3 入门详解(一)》

10.5 backface-visibility

backface-visibility属性定义当元素不面向屏幕时是否可见。

如果在旋转元素不希望看到其背面时,该属性很有用。有两个属性:

  • 1、visible背面是可见的
  • 2、hidden背面是不可见的

推荐阅读
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 本文介绍了如何在Jquery中通过元素的样式值获取元素,并将其赋值给一个变量。提供了5种解决方案供参考。 ... [详细]
  • 基于移动平台的会展导游系统APP设计与实现的技术介绍与需求分析
    本文介绍了基于移动平台的会展导游系统APP的设计与实现过程。首先,对会展经济和移动互联网的概念进行了简要介绍,并阐述了将会展引入移动互联网的意义。接着,对基础技术进行了介绍,包括百度云开发环境、安卓系统和近场通讯技术。然后,进行了用户需求分析和系统需求分析,并提出了系统界面运行流畅和第三方授权等需求。最后,对系统的概要设计进行了详细阐述,包括系统前端设计和交互与原型设计。本文对基于移动平台的会展导游系统APP的设计与实现提供了技术支持和需求分析。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
author-avatar
攻玉是我_944
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有