CSS3选择器详解

CSS3选择器详解一、CSS3选择器分类1.基本选择器2.层次选择器3.伪类选择器1)动态伪类选择器2)目标伪类选择器3)语言伪类选择器4)UI元素状态伪类选择器5)结构伪类选择器6)否定伪类选择器4.伪元素5.属性选择器二、基本选择器语法这里着重说一下群组选择器(selector1,selector2,…,selec

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、CSS3选择器分类
1.基本选择器
2.层次选择器
3.伪类选择器
1)动态伪类选择器
2)目标伪类选择器
3)语言伪类选择器
4)UI元素状态伪类选择器
5)结构伪类选择器
6)否定伪类选择器
4.伪元素
5.属性选择器

二、基本选择器语法
这里写图片描述
这里着重说一下群组选择器(selector1,selector2,…,selectorN),是将有相同样式的元素分组在一起,每个选择器之间用逗号隔开,表示规则中包含多个不同的选择器,省去逗号的话就变成了后代选择器。

三、层次选择器语法
这里写图片描述

1.后代选择器(E F)
也称包含选择器,作用是选择元素E的所有后代元素F,F不管是E的子元素,孙辈元素,或更深层次关系,都被选中。
实例:
效果如图:
这里写图片描述
代码如下:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<style type="text/css"> 
*{margin:0;
padding:0;}
body{
	width:300px;
	margin:0 auto;
}
div{
	margin:5px;
	padding:5px;
	border:1px solid #ccc;
}
div div{
	background:orange;
}
</style>
</head>

<body>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4
	<div>5</div>
	<div>7</div>
</div>
<div>7
	<div>8
		<div>9
			<div>10</div>
		</div>
	</div>
</div>
</body>
</html>

2.子选择器(E>F)
只能选择某元素的子元素。
实例:
样式表中增加一条:

body>div{
	background: green;
}

效果如图:
这里写图片描述

3.相邻兄弟选择器(E+F)
效果如图:
这里写图片描述
代码如下:

<style type="text/css"> 
*{margin:0;
padding:0;}
body{
	width:300px;
	margin:0 auto;
}
div{
	margin:5px;
	padding:5px;
	border:1px solid #ccc;
}
div div{
	background:orange;
}
body>div{
	background: green;
}

.active + div{
	background:red;
}
</style>
</head>

<body>
<div class="active">1</div><!--为了说明相邻兄弟选择器,在此处添加一类名active -->
<div>2</div>
<div>3</div>
<div>4
	<div>5</div>
	<div>7</div>
</div>
<div>7
	<div>8
		<div>9
			<div>10</div>
		</div>
	</div>
</div>
</body>

4、通用兄弟选择器(E~F)
效果如图:
这里写图片描述
添加如下样式代码:

.active ~ div{
	background:yellow;
}

三、伪类选择器
1.动态伪类选择器:
动态伪类并不存在与html中,只有当用户和网站交互的时候才体现出来。
动态伪类包含两种:一种是在链接中常看到的锚点伪类,
另一种是用户行为伪类。
详细说明如下所示:
这里写图片描述
实战:美化按钮
效果如图:正常,悬浮和点击状态的变化
这里写图片描述
代码如下:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<style type="text/css"> 
.download-info{
	text-align:center;
}
/*默认状态下按钮效果*/
.btn{
	background-color:#0074cc;
	*background-color:#0055cc; /*css hack 写法,用于特定浏览器识别*/
	/*CSS#渐变制作背景图片*/
	background-image: -ms-linear-gradient(top;#0088cc,#0055cc);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#0088cc),to(#0055cc));
	background-image: -webkit-linear-gradient(top,#0088cc,#0055cc);
	background-image: -o-linear-gradient(top,#0088cc,#0055cc);
	background-image: -moz-linear-gradient(top,#0088cc,#0055cc);
	background-image: linear-gradient(top,#0088cc,#0055cc);
	background-repeat:repeat-x;
	display:inline-block;
	*display:inline;
	border:1px solid #cccccc;
	*border:0;
	border-color:#ccc;

	/*CSS3的色彩模块*/
	border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
	border-radius:6px;
	color:#ffffff;
	cursor:pointer;/*cursor规则是设定网页浏览时用户鼠标指针的样式,也就是鼠标的图形形状*/
	font-size:20px;
	font-weight:normal;
	filter: progid:dximagetransform.microsoft.gradient(startColorstr='#0088cc',endColorstr='#0055cc',GradientType=0);/*这一句代码是ie自带滤镜的渐变效果,渐变开始的颜色是#ffffff,结束的颜色是#ECE9D8,gradientType=0表示纵向淅变,如果把它改成1就是横向渐变~~*/
	filter: progid:dximagetransform.microsoft.gradient(enable=false);
	line-height:normal;
	padding:14px 24px;
	text-align:center;

	/*CSS3文字阴影特性*/
	text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
	text-decoration:none;
	vertical-align:middle;
	*zoom:1;/*css中的zoom的作用
1、检查页面的标签是否闭合
不要小看这条,也许折腾了你两天都没有解决的 CSS BUG 问题,却仅仅源于这里。毕竟页面的模板一般都是由开发来嵌套的,而他们很容易犯此类问题。
快捷提示:可以用 Dreamweaver 打开文件检查,一般没有闭合的标签,会黄色背景高亮。

  2、样式排除法
有些复杂的页面也许加载了 N 个外链 CSS 文件,那么逐个删除 CSS 文件,找到 BUG 触发的具体 CSS 文件,缩小锁定的范围。

  对于刚才锁定的问题 CSS 样式文件,逐行删除具体的样式定义,定位到具体的触发样式定义,甚至是具体的触发样式属性。

  3、模块确认法
有时候我们也可以从页面的 HTML 元素出发。删除页面中不同的 HTML 模块,寻找到触发问题的 HTML 模块。

  4、检查是否清除浮动
其实有不少的 CSS BUG 问题是因为没有清除浮动造成的。养成良好的清除浮动的习惯是必要的,推荐使用 无额外 HTML 标签的清除浮动的方法(尽量避免使用 overflow:hidden;zoom:1 的类似方法来清除浮动,会有太多的限制性)。

  5、检查 IE 下是否触发 haslayout
很多的 IE 下复杂 CSS BUG 都与 IE 特有的 haslayout 息息相关。熟悉和理解 haslayout 对于处理复杂的 CSS BUG 会事半功倍。推荐阅读 old9 翻译的 《On having layout》(如果无法翻越穿越伟大的 GFW,可阅读 蓝色上的转帖 )
快捷提示:如果触发了 haslayout,IE 的调试工具 IE Developer Toolbar 中的属性中将会显示 haslayout 值为 -1。

  6、边框背景调试法
故名思议就是给元素设置显眼的边框或者背景(一般黑色或红色),进行调试。此方法是最常用的调试 CSS BUG 的方法之一,对于复杂 BUG 依旧适用。经济实惠还环保^^
最后想强调一点的是,养成良好的书写习惯,减少额外标签,尽量语义,符合标准,其实可以为我们减少很多额外的复杂 CSS BUG,更多的时候其实是我们自己给自己制造了麻烦*/

}

/*悬浮状态下按钮效果*/
.btn:hover{
	background-position: 0 -15px;
	background-color: #0055cc;
	*background-color:#004ab3;
	color:#ffffff;
	text-decoration:none;/*这个属性允许对文本设置某种效果,如加下划线。*/
	text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);

	/*css3动画效果*/
	-webkit-transition: background-position 0.1s linear;
	-moz-transition: background-position 0.1s linear;
	-ms-transition: background-position 0.1s linear;
	-o-transition: background-position 0.1s linear;
	transition: background-position 0.1s linear;
}

/*点击时效果*/
.btn:active{
	background-color: #0055cc;
	*background-color: #004ab3;
	background-color:#004099 \9;
	background-image: none;
	outline:0;/*outline (轮廓)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用*/
	/*盒子阴影特性*/
	box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15);
	color:rgba(255, 255, 255, 0.75);
}

/*获得焦点按钮效果*/
.btn:focus{
	outline:thin dotted #333;
	outline:5px auto -webkit-focus-ring-color;/*作用使得外边框发光*/
	outline-offset: -2px;/*outline-offset 属性对轮廓进行偏移,并在边框边缘进行绘制*/
}


</style>
</head>

<body>
<div class="download-info"><a href="#" class="btn">View project on GitHub</a></div>
</body>
</html>

这里有有关于css hack 写法的详细说明。

2.目标伪类:
语法:
这里写图片描述
实战:手风琴效果:
这里是详细介绍

3.语言伪类选择器:
根据元素的语言编码匹配元素。这种语言信息必须包含在文档中,或与文档关联,不能从CSS指定。为文档指定语言,有两种方法可以表示:

<!DOCTYPE HTML>
<html lang="en-US">

另一种方法是手工在文档中指定lang属性,并设置对应的语言值:

<body lang="fr">

在Twitter上有对不同语言的处理,一下代码片段是来自https://twitter.com/的一段对于不同语言处理的代码:

<ul id="supported_languages">
            <li><a href="?lang=zh-tw" data-lang-code="zh-tw" title="繁体中文" class="js-language-link js-tooltip">繁體中文</a></li>
            <li><a href="?lang=ja" data-lang-code="ja" title="日文" class="js-language-link js-tooltip">日本語</a></li>
            <li><a href="?lang=id" data-lang-code="id" title="印度尼西亚文" class="js-language-link js-tooltip">Bahasa Indonesia</a></li>
            <li><a href="?lang=msa" data-lang-code="msa" title="马来文" class="js-language-link js-tooltip">Bahasa Melayu</a></li>
            <li><a href="?lang=cs" data-lang-code="cs" title="捷克文" class="js-language-link js-tooltip">Čeština</a></li>
            <li><a href="?lang=da" data-lang-code="da" title="丹麦文" class="js-language-link js-tooltip">Dansk</a></li>
            <li><a href="?lang=de" data-lang-code="de" title="德文" class="js-language-link js-tooltip">Deutsch</a></li>
            <li><a href="?lang=en" data-lang-code="en" title="英文" class="js-language-link js-tooltip">English</a></li>
            <li><a href="?lang=en-gb" data-lang-code="en-gb" title="英式英文" class="js-language-link js-tooltip">English UK</a></li>
            <li><a href="?lang=es" data-lang-code="es" title="西班牙文" class="js-language-link js-tooltip">Español</a></li>
            <li><a href="?lang=fil" data-lang-code="fil" title="菲律宾文" class="js-language-link js-tooltip">Filipino</a></li>
            <li><a href="?lang=fr" data-lang-code="fr" title="法文" class="js-language-link js-tooltip">Français</a></li>
            <li><a href="?lang=it" data-lang-code="it" title="意大利文" class="js-language-link js-tooltip">Italiano</a></li>
            <li><a href="?lang=hu" data-lang-code="hu" title="匈牙利文" class="js-language-link js-tooltip">Magyar</a></li>
            <li><a href="?lang=nl" data-lang-code="nl" title="荷兰文" class="js-language-link js-tooltip">Nederlands</a></li>
            <li><a href="?lang=no" data-lang-code="no" title="挪威文" class="js-language-link js-tooltip">Norsk</a></li>
            <li><a href="?lang=pl" data-lang-code="pl" title="波兰文" class="js-language-link js-tooltip">Polski</a></li>
            <li><a href="?lang=pt" data-lang-code="pt" title="葡萄牙文" class="js-language-link js-tooltip">Português</a></li>
            <li><a href="?lang=ro" data-lang-code="ro" title="罗马尼亚文" class="js-language-link js-tooltip">Română</a></li>
            <li><a href="?lang=fi" data-lang-code="fi" title="芬兰文" class="js-language-link js-tooltip">Suomi</a></li>
            <li><a href="?lang=sv" data-lang-code="sv" title="瑞典文" class="js-language-link js-tooltip">Svenska</a></li>
            <li><a href="?lang=vi" data-lang-code="vi" title="越南文" class="js-language-link js-tooltip">Tiếng Việt</a></li>
            <li><a href="?lang=tr" data-lang-code="tr" title="土耳其文" class="js-language-link js-tooltip">Türkçe</a></li>
            <li><a href="?lang=el" data-lang-code="el" title="希腊文" class="js-language-link js-tooltip">Ελληνικά</a></li>
            <li><a href="?lang=ru" data-lang-code="ru" title="俄文" class="js-language-link js-tooltip">Русский</a></li>
            <li><a href="?lang=uk" data-lang-code="uk" title="乌克兰文" class="js-language-link js-tooltip">Українська мова</a></li>
            <li><a href="?lang=he" data-lang-code="he" title="希伯来文" class="js-language-link js-tooltip">עִבְרִית</a></li>
            <li><a href="?lang=ar" data-lang-code="ar" title="阿拉伯文" class="js-language-link js-tooltip">العربية</a></li>
            <li><a href="?lang=fa" data-lang-code="fa" title="波斯文" class="js-language-link js-tooltip">فارسی</a></li>
            <li><a href="?lang=mr" data-lang-code="mr" title="马拉地文" class="js-language-link js-tooltip">मराठी</a></li>
            <li><a href="?lang=hi" data-lang-code="hi" title="印地文" class="js-language-link js-tooltip">हिन्दी</a></li>
            <li><a href="?lang=bn" data-lang-code="bn" title="孟加拉文" class="js-language-link js-tooltip">বাংলা</a></li>
            <li><a href="?lang=gu" data-lang-code="gu" title="古吉拉特文" class="js-language-link js-tooltip">ગુજરાતી</a></li>
            <li><a href="?lang=ta" data-lang-code="ta" title="泰米尔文" class="js-language-link js-tooltip">தமிழ்</a></li>
            <li><a href="?lang=kn" data-lang-code="kn" title="卡纳达文" class="js-language-link js-tooltip">ಕನ್ನಡ</a></li>
            <li><a href="?lang=th" data-lang-code="th" title="泰文" class="js-language-link js-tooltip">ภาษาไทย</a></li>
            <li><a href="?lang=ko" data-lang-code="ko" title="韩文" class="js-language-link js-tooltip">한국어</a></li>
        </ul>

4.UI元素状态伪类选择器
主要用于form表单元素上,以提高网页人机交互,操作逻辑以及页面整体美观
UI元素状态一般包括:启用、禁用、选中、未选中、获得焦点、失去焦点、锁定和待机等。如表单中文本输入框,html元素选中和未选中状态,这几种状态是CSS3种常用状态伪类选择器;详细语法如下:
这里写图片描述
对于IE6~8使用UI元素伪类选择器需要使用特别的方法处理。
使用js库,选用内置已兼容UI元素伪类选择器的js库或框架,任何在代码中引入它们并完成想要的效果,由Keith Clark 编写的Selectivizr脚本是一个不错的选择。先将该脚本引入页面中,再从7个js库选择一个引入,UI状态伪类选择器就能工作在IE上了。
除使用js库外,还可用用原始的做法,使用类名处理,即给元素设置class属性处理,例如禁用按钮效果,可用在HTML元素添加class=“disable”,然后为此添加样式。

<style type=text/css>
.btn.disabled, /*等效于.btn:disabled,用于兼容IE低版本浏览器*/
.btn:disabled{
		...
	}
</style>

5.结构伪类选择器
有4个伪类选择器接受参数n

  • :nth-child(n)
  • :nth-last-child(n)
  • :nth-of-type(n)
  • :nth-last-of-type(n)
    参数n可用是正数(1、2、3、4)、关键字(odd、even),还可以是公式(2n+1、-n+5),参数n起始值始终是1,而不是0。当参数n 为0时,选择器将匹配不到任何元素。

4.1 :first-child
4.2 :last-child
4.3.1 :nth-child()
如:ul>li:nth-child(3) 如果第三个子院不是li,则没有任何元素被选中;
4.3.2 :nth-child(n) 参数n是一个简单的表达式,取值从0开始计算的,到什么时候结束不知道,如果在实际应用中直接这样使用,将会选中父元素中所有子元素。
ul>li:nth-child(3){ background-color:orange;}
4.4 :nth-last-child
从父元素最后一个子元素开始计算选择特定元素
4.5 :nth-of-type
只计算父元素中指定某类型子元素。

在web应用中”:nth-of-type”在以下场景中可以使用。

  • 营造一种有随意感的界面,如改变每张图片的旋转角度;
  • 使文章中的图片交替向左向右浮动;
  • 为一篇文章的头一段设置不同的样式,如首字下沉;
  • 为一个定义列表的条上使用交替样式;
  • 制作图表。
    4.6 :only-child的使用
    表示一个元素是它父元素的唯一子元素
    4.7 :only-of-type的使用
    选择一个元素是它父元素唯一一个相同类型的子元素。
    4.8 :empty的使用
    选择没有任何内容的元素,哪怕是一个空格。这个选择器用例处理动态输出内容非常方便。例如想高粱提示出用户搜索出来的结果为空时:
#results:empty{background-color:#fcc;}

实战代码如下:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<style type="text/css"> 
*{
	margin:0;
	padding:0;
}

ul{
margin:50px auto;
width:400px;
list-style:none outside none;
}
li{
	display:inline-block;
	margin:5px;
	padding:5px;
	width:50px;
	height:50px;
	font:bold 30px/50px arial;
	background:#000;
	color:#fff;
	border-radius:50px;
	text-align:center;
}
ul>li:first-child{
	background-color: green;
}
ul>li:nth-child(3){
	background-color:yellowgreen;
}
/*ul>li:nth-child(n){
	background-color:orange;
}*/
/*ul>li:nth-child(2n){ //选中偶数
	background-color:orange;
}*/
/*ul>li:nth-child(even){
	background-color:orange;
}*/
/*ul>li:nth-child(n+5){
	background-color:blue;
}*/
ul>li:nth-last-child(4){/*从后数第四个*/
	background-color:blue;
}
ul>li:nth-child(odd){

	/*选中的是奇数项*/
}

ul>li:nth-last-child(even){
	/*选中的也是偶数*/
}


</style>
</head>

<body>
<ul>
	<li>1</li>
	<li>2</li>
	<li>3</li>
	<li>4</li>
	<li>5</li>
	<li>6</li>
	<li>7</li>
	<li>8</li>
	<li>9</li>
	<li>10</li>
	<li>11</li>
	<li>12</li>
	<li>13</li>
	<li>14</li>
	<li>15</li>
	<li>16</li>
	<li>17</li>
	<li>18</li>
	<li>19</li>
	<li>20</li>
	
</ul>
</body>
</html>

6.否定伪类选择器
主要用来定位不匹配该选择器的元素。
实例效果如图:
图1

图2

代码:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<style type="text/css"> 
*{
	margin:0;
	padding:0;
}

ul{
	width:690px;
	margin:20px auto;
	letter-spacing:-4px;/*letter-spacing 属性增加或减少字符间的空白(字符间距)*/
	word-spacing:-4px;/*word-spacing 属性增加或减少单词间的空白(即字间隔)*/
	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;/*http://www.w3school.com.cn/cssref/pr_list-style.asp*/
	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(20px) grayscale(1);
	opacity:.7;
}
</style>
</head>



<body>
<ul class="gallery">
	
	<li><img src="http://www.w3cplus.com/sites/default/files/filter.jpg" alt=""></li>

	<li><img src="http://www.w3cplus.com/sites/default/files/filter.jpg" alt=""></li>
	<li><img src="http://www.w3cplus.com/sites/default/files/filter.jpg" alt=""></li>
	<li><img src="http://www.w3cplus.com/sites/default/files/filter.jpg" alt=""></li>
	<li><img src="http://www.w3cplus.com/sites/default/files/filter.jpg" alt=""></li>

	<li><img src="http://www.w3cplus.com/sites/default/files/filter.jpg" alt=""></li>

	<li><img src="http://www.w3cplus.com/sites/default/files/filter.jpg" alt=""></li>
	<li><img src="http://www.w3cplus.com/sites/default/files/filter.jpg" alt=""></li>
	<li><img src="http://www.w3cplus.com/sites/default/files/filter.jpg" alt=""></li>
	<li><img src="http://www.w3cplus.com/sites/default/files/filter.jpg" alt=""></li>

</ul>

</body>
</html>

四、伪元素
除了伪类,CSS3还支持访问伪元素。
伪元素可用于定位文档中包含的文本,但无法在文档树种定位。伪类一般反映无法在CSS中轻松或可靠的检测到某个元素属性或状态;伪元素表示DOM外部的某种文档结构。
伪元素在CSS一直存在,如:first-line、:first-letter、:before、:after。CSS3对伪元素做了调整——多加了一个冒号,即变为::first-line、::first-letter、::before、::after,增加了一个::selection。
对于IE6~8仅支持单冒号,现代浏览器同时支持这两种表示法。另外一个区别是,双冒号和单冒号在CSS3中用来区分伪类与伪元素。

1.::first-letter
用来选择文本块的第一个字母,通常用于给文本元素添加排版细节,如下沉字母或首字母。
实例:

效果如图:
这里写图片描述
代码:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
<style type="text/css"> 
p:first-child::first-letter{
	float:left;
	color:#903;
	padding:4px 8px 0 3px;
	font:75px/60px Georgia;
}


</style>
</head>

<body>
<p> Pellentesque habitant morbi tristique senectus et netus malesuada fames acturpis
egestas. Vestibulum tortor quam, feugiat vitae,ultricies eget,tempor sitamet,ante.Donec eu
libero sit amet quam egestasseper.Aenean ultricies mi vitac est.Mauris placerat elsifend leo. </p>
</body>
</html>

2.伪元素::first-line
用于匹配元素第一行文本,可应用一些特殊样式,给文本添加一些细微区别。匹配block、inline-block、table-caption、table-cell等级别元素第一行。
实例:效果如图:
这里写图片描述
代码:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
<style type="text/css"> 
p:first-child::first-line{
	font:italic 16px/18px Georgia;
	color:#903;
}


</style>
</head>

<body>
<p> Pellentesque habitant morbi tristique senectus et netus malesuada fames acturpis
egestas. Vestibulum tortor quam, feugiat vitae,ultricies eget,tempor sitamet,ante.Donec eu
libero sit amet quam egestasseper.Aenean ultricies mi vitac est.Mauris placerat elsifend leo. </p>
</body>
</html>

3.伪元素::before和::after
不是指存在于标记中的内容,而是可以插入额外内容的位置,尽管生成的内容不会成为DOM的一部分,但同样可以设置样式。
要为伪元素生成内容,需要配合content属性。例如,假设在页面上所有外部链接之后的括号中附加它们指向的URL,无需将URL硬编码到标记中,可结合使用一个属性选择器和::after伪元素。

a[herf^=http]::after{
	content:"("attr(herf)")";
}

如今在CSS3 中使用这两个伪元素越来越多见,例如给链接添加ICON的效果。
4.伪元素::selection
用来匹配突出显示的文本,默认网站文本是深蓝的背景,白色的字体。
有的设计需要一个与众不同的效果,此时这个伪元素就非常实用,不过IE系列仅IE-9支持,Firefox需要加上私有属性-moz。webkit内核浏览器都支持。
伪元素::selection仅接受两个属性,一个是blackground,另一个是color。
默认样式:
这里写图片描述
修改的样式:
这里写图片描述
代码:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
<style type="text/css"> 
::selection{
	background:red;
	color:#fff;
}

::-moz-selection{
	background:red;
	color:#fff;
}
</style>
</head>

<body>
<p> Pellentesque habitant morbi tristique senectus et netus malesuada fames acturpis
egestas. Vestibulum tortor quam, feugiat vitae,ultricies eget,tempor sitamet,ante.Donec eu
libero sit amet quam egestasseper.Aenean ultricies mi vitac est.Mauris placerat elsifend leo. </p>
</body>
</html>

五、属性选择器
CSS3新增了3个属性选择器,可以对标签进行过滤,更容易定位HTML标签。
下面是CSS3的属性列表。
这里写图片描述这里写图片描述

CSS3遵循了惯用的编码规则,通配符的使用提高样式表的书写效率
常见通配符如下:
这里写图片描述

属性选择器方法详解

创建简单的HTML结构,设置默认样式:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
<style type="text/css"> 
.demo{
	width:300px;
	border:1px solid #ccc;
	padding:10px;
	overflow:hidden;
	margin:20px auto;
}
.demo a{

	float:left;
	display:block;
	height:50px;
	width:50px;
	border-radius:10px;
	text-align:center;
	background:#aac;
	color:blue;
	font:bold 20px/50px Arial;
	margin-right:5px;
	text-decoration:none;
	margin:5px;
}

</style>
</head>

<body>
<div class="demo">
	<a href="http://www.w3cplus.com" target="_blank" class="links item first" id="first" title="w3cplus">1</a>
	<a href="" class="links active item" title="test website" target="_blank" lang="zh" >2</a>
	<a href="sites/file/test.html" class="links item" title="this is a link" lang="zh-cn">3</a>
	<a href="sites/file/test.png" class="links item" target="_blank" lang="zh-tw">4</a>
	<a href="sites/file/image.jpg" class="links item" title="zh-cn">5</a>
	<a href="mailto:w3cplus@hotmail" class="links item" title="website link" lang="zh">6</a>
	<a href="/a.pdf" class="links item" title="open the website" lang="cn">7</a>
	<a href="/abc.pdf" class="links item" title="close the website" lang="en-zh">8</a>
	<a href="abcdef.doc" class="links item" title="http://www.sina.com">9</a>
	<a href="abd.doc" class="linksitem last" id="last">10</a>


</div>
</body>
</html>

默认样式如图:
这里写图片描述

1.E[attr]
选择有某个属性的元素,而不管这个属性的值是什么。
效果如图:

CSS3选择器详解

也可以使用多属性进行选择元素:

a[id][title]{ background-color:red; }

这里写图片描述

2.E[attr=val]
选择元素E设置了属性attr,并且属性值为val,进一步精确需要选择的元素。
效果如图:

这里写图片描述

注意:此选择器中,属性和属性值必须完全匹配,特别对于属性值是词列表的形式,例如:

<a href="#" class="links item"></a>

其中a[class=“links”]{…}是找不到匹配元素,a[class=“links item”]{…}才匹配。

3.E[attr|=val]
选择attr属性值等于val或以val-开头的所有字符串属性元素。
效果如图:

这里写图片描述
代码:

a[lang|=zh]{background-color:hotpink;}

4.E[attr~=val]
匹配元素某个属性有一个或多个属性值。
效果如图:

这里写图片描述

代码:

a[title~=website]{background-color:goldenrod;}

5.E[attr*=val]
只要所选择的属性中有val字符,都将被匹配。与E[attr~=val]不同之处是:如
a[title~=links]属性值中links是一个单词,而a[title*=links]中links不一定是一个单词,如上面实例可以是“linksitem”。

效果如图:

这里写图片描述

代码:

a[class*=links]{background-color:greenyellow;}

6.E[attr^=val]
匹配以”val”开头的所有元素

效果如图:

这里写图片描述

代码:

a[href^=http]{background-color:yellowgreen;}

7.E[attr$=val]
匹配以”val”结尾的所有元素。
效果如图:

这里写图片描述

代码:

a[href$=png]{background-color:lavender;}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/157648.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号