CSS3

CSS3

CSS3 选择器

1、属性选择器

选择符:
  E[att]   选择具有att属性的E元素
  E[att = "val"]   选择具有att属性且属性值等于val的E元素
  E[att ^= "val']  匹配具有att属性、且值以val开头的E元素
  E[att $= "val']  匹配具有att属性、且值以val结尾的E元素
  Elatt *= "val"]  匹配具有att属性、且值中含有val的E元素
  • 类选择器、属性选择器、伪类选择器,权重为10

2、结构伪类选择器

E:first-child  	匹配父元素中的第一个子元素E
E:last-child	匹配父元素中最后一个E元素
E:nth-child(n)	匹配父元素中的第n个子元素E
E:first-of-type	指定类型E的第一个
E:last-of-type	指定类型E的最后个
E:nth-of-type(n)指定类型E的第n个
  • nth-child( n )
    • n可以是数字、关键字和公式
    • n如果是数字 就是选择第几个
    • 常见的关键词有 even 偶数odd 奇数
    • 常见的公式如下(如果n是公式,则从0开始计算)
    • 但是 第0个元素或者超出了元素的个数会被忽略)

3、伪元素选择器

::before  在元素内部的前面插入内容
::after   在元素内部的后面插入内容
  • 注意:
    • before和after必须有content属性
    • before在内容的前面,after在内容的后面
    • before和after创建一个元素,但是属于行内元素
    • 因为在dom里面看不见刚才创建的元素,所以我们称为伪元素
    • 伪元素和标签选择器一样,权重为1
  • 案例:伪元素字体图标
	<style>
        @font-face {
            font-family: 'icomoon';
            src: url('fonts/icomoon.eot?67yly4');
            src: url('fonts/icomoon.eot?67yly4#iefix') format('embedded-opentype'), url('fonts/icomoon.ttf?67yly4') format('truetype'), url('fonts/icomoon.woff?67yly4') format('woff'), url('fonts/icomoon.svg?67yly4#icomoon') format('svg');
            font-weight: normal;
            font-style: normal;
            font-display: block;
        }  
        div,
        p {
            position: relative;
            width: 250px;
            height: 35px;
            border: 1px solid red;
        }  
        span {
            font-family: 'icomoon';
            position: absolute;
            top: 10px;
            right: 10px;
        }
        /* p::after {
            content: '';
            position: absolute;
            top: 10px;
            right: 10px;
            font-family: 'icomoon';
            color: gray;
        } */   
        p::after {
            content: '\e900';
            position: absolute;
            top: 10px;
            right: 10px;
            font-family: 'icomoon';
            /* color: gray; */
        }
    </style>
	<body>
	    <div>
	        <span></span>
	    </div>
	    <p></p>
	</body>

CSS3 2D转换

  • 转换 transform 是CSS3 中具有颠覆性的特征之一,可以实现元素的位移、旋转、缩放等效果。
  • 转换可以理解为变形。
    • 移动:translate
    • 旋转:rotate
    • 缩放:scale

1、二维坐标系

  • 2D转换是改变标签在二维平面上的位置和形状的一种技术。

2、2D转换之移动 translate

  • 2D移动 可以改变元素在页面中的位置,类似定位。

  • 语法

      transform: translate(x,y);
      transform: translateX(n);
      transform: translateY(n);
    

    移动盒子的位置:定位 盒子外边距 2D转换移动translate

  • 重点:

    • 定义2D转换中的移动,沿着X轴和Y轴移动元素
    • translate最大的优点:不会影响到其他元素的位置
    • translate中的百分比单位是相对于自身元素的translate:(50%,50%);
    • 对行内标签没有效果

3、2D转换之旋转 rotate

  • 2D旋转 是让元素在2维平面内顺时针旋转或逆时针旋转。

  • 语法 :transform: rotate(度数)

  • 重点:

    • 度数的单位:deg 如:rotate(45deg);
    • 角度为正是顺时针,负为逆时针
    • 默认旋转的中心点是元素的中心点
  • 案例:三角

	<title>10-CSS3书写三角</title>
    <style>
        div {
            position: relative;
            width: 250px;
            height: 35px;
            border: 1px solid red;
        }        
        div::after {
            content: "";
            position: absolute;
            top: 25%;
            right: 15px;
            width: 10px;
            height: 10px;
            /* border: 1px solid #000; */
            border-right: 1px solid #000;
            border-bottom: 1px solid #000;
            transform: rotate(45deg);
            /* 过渡 */
            transition: all 0.2s;
        }
        /* 鼠标经过div 里面的三角旋转*/       
        div:hover::after {
            transform: rotate(225deg);
        }
    </style>
	<body>
	    <div></div>
	</body>

4、2D转换中心点 transform-origin

  • 可以设置元素转换的中心点
  • 语法: transform-origin: x y;
  • 重点:
    • 参数x 和y 用空格隔开
    • x y 默认旋转的中心点是元素的中心点(50% 50%)
    • 可以给x y 设置像素 或者 方位名词(top bottom left right center)

5、2D转换之缩放 scale

  • 给元素添加上该属性 就能控制它放大放小。
  • 语法 :transform:scale(x,y);
  • 注意:
    • x 和y用逗号隔开
    • transform:scale(1,1) 宽高都放大一倍,相当于没有放大
    • transform:scale(2,2) 宽高都放大了2倍
    • transform:scale(2) 只写一个参数,第二个参数则和第一个参数一样,相当于scale(2,2)
    • transform:scale(0.5,0.5) 缩小
    • scale缩放最大的优势:可以设置转换中心点缩放,默认以中心点缩放,而且不影响其他盒子

6、2D转换综合写法

  • 注意:
    • 1.同时使用多个转换,其格式为:transform:translate() rotate() scale()…等
    • 2.其顺序会影响转换的效果。(先旋转会改变坐标轴方向)
    • 3.当我们同时有移位和其他属性的时候,记得要将移位放到最前面

CSS3 动画

  • 动画(animation)可通过设置多个节点来精确控制一个或一组动画,常用来实现复制的动画效果。
  • 相比较过渡,动画可以实现更多变化,更多控制,连续自动播放等效果。

1、动画的基本使用

制作动画的步骤: 1.先定义动画 2.再使用(调用)动画

  • 1.用keyframes定义动画(类似定义类选择器)

      @keyframes 动画名称{
      	0% { width: 100px; }
      	100% { width: 200px; }
      }
    
  • 动画序列

    • 0%是动画的开始,100%是动画的完成。这样的规则就是动画系列。
    • 在@keyframes中规定某项CSS样式,就能创建由当前样式逐渐改为新样式的动画效果。
    • 动画是使元素从一种样式逐渐变化为另一种样式的效果。可以改变任意多的样式任意多的次数。
    • 用百分比来规定变化发生的事件,或用关键词"from"和"to",等同于0%和100%。
  • 2.元素使用动画

      div {
      	width: 200px;
          height: 200px;
          background-color: olive;	
      	margin: 100px auto;
      	/* 调用动画 */
      	animation-name: 动画名称;
      	 /* 持续时间 */
      	animation-duration: 持续时间;
      }
    

2、动画常用属性

@keyframes  规定动画。
animation  所有动画属性的简写属性,除了animation play state属性。
animation-name  规定@keyframes动画的名称。( 必须的)
animation-duration  规定动画完成一个周期所花费的秒或毫秒,默认是0。(必须的)
animation-timing-function  规定动画的速度曲线,默认是"ease" 。
animation-delay  规定动画何时开始,默认是0。
animation-iteration-count  规定动画被播放的次数,默认是1, 还有infinite
animation-direction  规定动画是否在下一周期逆向播放。默认是"normal " ,alternate逆播放
animation-play-state  规定动画是否正在运行或暂停。默认是'running",还有 "paused".
animation-fill-mode  规定动画结束后状态,保持forwards 回到起始backwards

3、动画简写属性

  • animation: 动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或者结束的状态;

      animation: move 2s linear 1s 1 alternate forwards;
    
  • 简写属性里面不包含animation-play-state

  • 暂停动画:animation-play-state:pause;经常和鼠标经过等其他配合使用

  • 想要动画走回来,而不是直接跳回来:animation-direction:alternate

  • 盒子动画结束后,停在结束位置:animation-fill-mode:forwards

4、速度曲线细节

  • animation-timing-function:规定动画的速度曲线,默认使“ease”。
    • linear 动画从头到尾的速度是相同的。匀速。
    • ease 默认。动画以低速开始,然后加快,在结束前变慢。
    • ease-in 动画以低速开始。
    • ease-out 动画以低速结束。
    • ease-in-out 动画以低速开始和结束。
    • steps() 指定了时间函数中的间隔数量(步长)。

CSS3 3D转换

1、三维坐标系

  • 三维坐标系其实就是立体空间,立体空间是由3个轴共同组成。
    • x轴:水平向右 右正左负
    • y轴:垂直向下 下正上负
    • z轴:垂直屏幕 外正里负

2、3D位移 translate3d

  • transform:translateX(100px):仅仅在x轴上移动
  • transform:translateY(100px):仅仅在y轴上移动
  • transform:translateZ(100px):仅仅在z轴上移动(translateZ 一般用px单位)
  • transform:translate3d(x,y,z):其中x,y,z分别指要移动的轴的方向的距离

3、透视 perspective

在2D平面产生近大远小视觉立体,但是只是效果二维的

- 如果想要在网页产生3D效果需要透视(理解成3D物体投影在2D平面内)。
- 模拟人类的视觉位置,可认为安排一只眼睛去看
- 适视我们也称为视距: 视距d就是人的眼睛到屏幕的距离
- 距离视觉点越近的在电脑平面成像越大 ,越远成像越小
- 透视的单位是像素
  • 透视写在被观察元素的父盒子上面的

    • d :就是视距,视距就是一个距离人的眼睛到屏幕的距离。
    • z:就是z轴,物体距离屏幕的距离,z轴越大(正值)我们看到的物体就越大。

4、translateZ

  • transform:translateZ(100px):仅仅在Z轴上移动。
  • 要有透视prespective ,才能看到translateZ 引起的变化。

5、3D旋转 rotate3d

  • 3D旋转 是可以让元素在三位平面内沿着x轴,y轴,z轴或自定义轴进行旋转。

  • 语法:

    • transform:rotateX(45deg):沿着x轴正方向旋转45度
    • transform:rotateY(45deg):沿着y轴正方向旋转45度
    • transform:rotateZ(45deg):沿着z轴正方向旋转45度
    • transform:rotate3d(x,y,z,deg):沿着自定义轴旋转 deg为角度
      • xzy表示旋转轴的矢量,标示是否希望沿着该轴旋转,最后一个标示旋转的角度。
  • 左手准则(对于元素旋转的方向的判断)

    • 左手的拇指指向x轴(或y轴 或z轴)的正方向。
    • 其余手指的弯曲方向 就是该元素沿着x轴(或y轴 或z轴)旋转的方向(正值)。

6、3D呈现 transform-style

  • 控制子元素是否开启三维立体环境。
  • transform-style:flat; 子元素不开启3d立体空间,默认的。
  • transform-style:preserve-3d; 子元素开启3d立体空间。
  • 代码写给父级元素,但是影响的是子盒子。

7、案例:两面翻转的盒子

  • 1.搭建HTML结构

      <div class="box">
      	<div class="front">前</div>
      	<div class="back">后</div>
      </div>
    
    • box父盒子 中包含前后两个子盒子
    • box是翻转的盒子 , front是前面的盒子,back是后面的盒子
  • 2.CSS样式

    • box指定大小,要添加3d呈现
    • back盒子沿着Y轴翻转180度
    • 最后鼠标经过box沿着Y轴旋转180deg

8、案例:3D导航栏

  • 1.搭建HTML结构

      <ul>
      	<li>
      		<div class="box">
      			<div class="front">前</div>
      			<div class="bottom">后</div>
      		</div>		
      	</li>
      </ul>	
    
    • li做导航栏
    • .box是翻转的盒子 front是前面的盒子,bottom是后面的盒子
  • 2.CSS样式

    • box指定大小,要添加3d呈现
    • bottom 盒子先沿着X轴翻转-90deg,然后沿着Y轴向下移动盒子自身高度的一半
    • 最后鼠标经过box沿着X轴旋转90deg

4、H5C3 综合案例

旋转木马

  • 1.搭建HTML结构

      <section>
      	<div></div>
      	<div></div>
      	<div></div>
      	<div></div>
      	<div></div>
      	<div></div>
      </section>
    
  • 2.CSS样式

    • section 指定大小,要添加3d呈现,旋转动画效果
    • div盒子加上背景图并定位。
    • 对每个div设置摆放的位置(先沿着Y轴旋转好了,再沿着Z轴移动)

5、浏览器私有前缀

  • 浏览器前缀 是为了兼容老版本的写法。

1、私有前缀

  • -moz-:代表Firefox浏览器私有属性
  • -ms-:代表IE浏览器私有属性
  • -webkit-:代表safari、chrome私有属性
  • -o-:代表Opera私有属性

2、提倡写法

-moz-border-radius:10px;
-webkit-border-radius:10px;
-o-border-radius:10px;
border-radius:10px;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值