利用css3新增选择器制作背景切换
之前写css3的时间都是捡项目需要的来用,没有系统的学习过,这几天好好的补了一下css3的知识,真的获益匪浅!觉得新增的那些选择器是有用至极的!今天就来所这几天的所学做一个点击标签切换背景的效果,是纯css制作哦,不依赖js,算是作一个总结吧!
首先呢,前期工作当做是要先建好目录那些的了。
index.html、css文件夹(包含style.css)、img文件夹(包含1.jpg,2.jpg,3.jpg,4.jpg)
最后完成的效果如下(因为本人喜欢篮球,所以搞了几张nba人物卡通作素材),具体实现,请看后面的代码!

index.html,结构比较简单,不多做解释
<div class="box">
<img src="img/2.jpg" alt="" id="player2">
<img src="img/3.jpg" alt="" id="player3">
<img src="img/4.jpg" alt="" id="player4">
<img src="img/1.jpg" alt="" id="player1">
<ul>
<li><a href="#player1">科比</a></li>
<li><a href="#player2">詹姆斯</a></li>
<li><a href="#player3">姚明</a></li>
<li><a href="#player4">纳什</a></li>
</ul>
</div>
css:重点讲解一下
body,ul{margin: 0;padding: 0;list-style: none}
.box{position: relative;width: 400px;height: 400px;padding: 10px;margin: 10px auto;border: 1px solid #f0f0f0;box-shadow: 0 0 3px rgba(0,0,0,0.5);overflow: hidden}
.box img{position: absolute;top: 10px;left: 10px;width: 400px;height: 400px}
.box li{display: inline;position: relative;float: left;width: 90px;height: 90px;color: #fff;text-align: center;text-shadow: 0 0 3px rgba(0,0,0,0.9);margin: 280px 4px 0 4px;border: 1px solid #888;cursor: pointer;z-index: 10}
.box li a{display: block;width: 90px;height: 40px;padding: 50px 0 0;color: #fff;text-decoration: none}
.box li:nth-of-type(1){background: #552F86}
.box li:nth-of-type(2){background: #9C0701}
.box li:nth-of-type(3){background: #FFCA34}
.box li:nth-of-type(4){background: #D2C1A6}
.box li a::after{content: '';position: absolute;top: -20px;left: 25px;width: 40px;height: 40px;border-radius: 40px;border: 2px solid #999}
.box li:nth-of-type(1) a::after{background: url(../img/1.jpg) center;background-size: cover}
.box li:nth-of-type(2) a::after{background: url(../img/2.jpg) center;background-size: cover}
.box li:nth-of-type(3) a::after{background: url(../img/3.jpg) center;background-size: cover}
.box li:nth-of-type(4) a::after{background: url(../img/4.jpg) center;background-size: cover}
.box li a::before{content: '';position: absolute;top: -18px;left: 27px;width: 40px;height: 40px;border-radius: 40px;background:rgba(255,255,255,0.3);z-index: 20}
.box li a:hover::before{opacity: 0}
#player1:target{z-index: 10}
#player2:target{z-index: 10}
#player3:target{z-index: 10}
#player4:target{z-index: 10}
img:not(:target){z-index: 5}
看html代码那么简洁,要怎么实现如图所示的看似复杂的效果呢?
1、给每一个人物的小框定义不同的背景色和头像,用到的是结构伪类选择器:nth-of-type() ,头像使用伪元素::after
.box li:nth-of-type(1){background: #552F86}
.box li:nth-of-type(2){background: #9C0701}
.box li:nth-of-type(3){background: #FFCA34}
.box li:nth-of-type(4){background: #D2C1A6}
利用nth-of-type() 为每一个小框定义了不同的颜色。
.box li a::after{content: '';position: absolute;top: -20px;left: 25px;width: 40px;height: 40px;border-radius: 40px;border: 2px solid #999}
.box li:nth-of-type(1) a::after{background: url(../img/1.jpg) center;background-size: cover}
.box li:nth-of-type(2) a::after{background: url(../img/2.jpg) center;background-size: cover}
.box li:nth-of-type(3) a::after{background: url(../img/3.jpg) center;background-size: cover}
.box li:nth-of-type(4) a::after{background: url(../img/4.jpg) center;background-size: cover}
使用了nth-of-type和伪元素after实现了为每一个缩略图设置不同的图片,并且background-size: cover,实现了图片的缩略,使小圆圈里填充满了整张图的效果!
.box li a::before{content: '';position: absolute;top: -18px;left: 27px;width: 40px;height: 40px;border-radius: 40px;background:rgba(255,255,255,0.3);z-index: 20}
.box li a:hover::before{opacity: 0}
以上这段代码呢,是为元素加了蒙板效果,让鼠标移入元素时有点不一样,增强视觉效果!!!
可能人有会觉得奇怪,li里为什么一定要放一个a标签呢?
这就是今天主题的关键所在了!因为我们需要用到最重要的:target,这玩意儿官方是这么解释的:
:target 定义和用法
URL 带有后面跟有锚名称 #,指向文档内某个具体的元素。这个被链接的元素就是目标元素(target element)。
:target 选择器可用于选取当前活动的目标元素。
例子中,URL 带有后面跟有锚名称 #就是 li里的a标签,目标元素就是对应的img
#player1:target{z-index: 10}
#player2:target{z-index: 10}
#player3:target{z-index: 10}
#player4:target{z-index: 10}
就是当点击某个a的时候对应该的img元素就显示在前面,
img:not(:target){z-index: 5}
:not()选择器,是为了去掉某些元素,意思就是不是某类元素的元素生效,:not(:target)即:把不是目标元素的图片显示的下面z-index小于目标元素!
通过如上,便实现了背景切换效果,这可是纯css制作的效果,并没有使用js!
利用css3新增选择器制作背景切换的更多相关文章
- 认识CSS3新增选择器和样式
前端之HTML5,CSS3(二) CSS3新增选择器和样式 CSS3新增选择器 结构伪类选择器 :first-child:选取父元素中的第一个子元素的指定选择器 :last-child:选取父元素中的 ...
- CSS3 新增选择器
CSS3 新增选择器 结构(位置)伪类选择器(CSS3) :first-child :选取属于其父元素的首个子元素的指定选择器 :last-child :选取属于其父元素的最后一个子元素的指定选择器 ...
- CSS系列:CSS3新增选择器
1. CSS1定义的选择器 选择器 类型 说明 E 类型选择器 选择指定类型的元素 E#id ID选择器 选择匹配E的元素,且匹配元素的id为“id”,E选择符可以省略. E.class 类选择器 选 ...
- CSS选择器及CSS3新增选择器
转自:http://www.cnblogs.com/libingql/p/4375354.html 1. CSS1定义的选择器 选择器 类型 说明 E 类型选择器 选择指定类型的元素 E#id ID选 ...
- css3新增属性-background背景
css3新增属性 边框属性 背景属性 文字属性 颜色属性 背景属性 属性 说明 background-image 添加背景图片 background-size 指定背景图像的大小 background ...
- 一起学HTML基础-利用CSS和JavaScript制作一个切换图片的网页
由于个人原因,不详细写步骤 思路: 一.布局 二.制作图片区和按钮区的div及颜色.边框.背景属性等 三.用PS将四张图片剪切到同一个尺寸,重叠放置在图片切换区,透明度设置为0 四.点击对应按钮时,将 ...
- CSS3新增选择器:伪元素选择器
一. ::first-letter 第一个字 二. ::first-line 第一行(以浏览器为准的第一行) 三. ::selection 被选中的字行(鼠标选中的字段)只能向 ::selectio ...
- 利用jquery.backstretch插件,背景切换
//首页自动更换背景特效开始============================================1.引用文件<script src="jquery.js" ...
- css3新增选择器
1. img[alt]:匹配页面标签中任意一个含有alt属性的标签 2. 匹配开头:img[alt^="film"] 匹配包含内容:img[alt*="film" ...
随机推荐
- Calendar.get()方法--- WEEK_OF_YEAR 、MONTH、
1. WEEK_OF_YEAR 一年中的第几周 由于西方的一周指的是:星期日-星期六,星期日是一周的第一天,星期六是一周的最后一天, 所以,使用 calendar.get(Calendar.WEE ...
- Retrofit 2.0使用
最近在想能不能把之前项目里的网络请求改下 想通过Retrofit重构下,因为Retrofit完美兼容Rxjava后面会用到Rxjava 所以 开个坑写点 由于网上Retrofit 2.0的架构介绍很详 ...
- js中对类和对象的理解
类 :对一群具有相同特征的对象的集合的描述:对象:真实存在的对象个体: **面向对象,而不是面向类. 1.一切皆对象,继承靠原型链,多态靠弱类型,封装--虽然可以靠闭包,但我个人更推崇和python一 ...
- MongoDB搭建Replica Set Shard Cluster步骤
本文记录从头搭建一个MongoDB 副本集分片集群的过程. 我们要创建一个这样子的分布式集群:有两个shard,每个shard都是一个replica set,各有两个副本(实际产品应用中还应加上一个仅 ...
- 利用OVER开窗函数分页
在SQL Server中,利用SQL进行分页的方法也有很多,今天要总结的是SQL Server 2005中引入的OVER开窗口函数,然后利用开窗函数进行分页. 示例代码如下: -- 设置数据库上下文 ...
- iOS开发网络篇—网络编程基础
iOS开发网络篇—网络编程基础 一.为什么要学习网络编程 1.简单说明 在移动互联网时代,移动应用的特征有: (1)几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图 (2)只有通过 ...
- numtoyminterval函数——数字转换函数
numtoyminterval函数——数字转换函数 ----转至51CTO 水滴的博客 语法:NUMTOYMINTERVAL ( n , 'char_expr' ) c ...
- .Net中的加密与解密
加密与解密概述 加密与解密属于数据安全的范畴.在消息传输时,通过对消息进行特殊编码(加密),建立一种安全的交流方式,使得只有发送者所期望的接收者能够理解(解密).这里我们定义一个场景:发送方,接收方, ...
- C# 跨线程操作无效
提示此错误的原因就是控件由主线程创建,在另一个线程进行操作时就会被阻止,防止数据间随意篡改. 如果一定要跨线程作业,如进度条或状态显示等,基本有三种方法解决: 1.Control.CheckForIl ...
- 初学DOM树解析xml文件
做了一次设计模式实验的题目: 某软件公司为新开发的智能手机控制与管理软件提供了一键备份功能,通过该功能可以将原本存储在手机中的通信录.短信.照片.歌曲等资料一次性全部拷贝到移动存储介质(例如MMC卡或 ...