前端学习之旅第二弹

94 阅读5分钟

CSS三大属性、选择器和CSS动画

(一) CSS中的选择器

(二) CSS三大属性

(三) CSS动画

一、CSS中的选择器

  • 后代选择器
元素1 元素2{ 样式声明 }

1、元素1和元素2中间用空格隔开
2、元素1是父级,元素2是子级,最终选择的是元素2(选中的是子级)
3、元素2只要是元素1的后代即可,即对元素2的子元素也起作用
4、元素1和2可以是任意基础选择器(不局限于标签选择器)

  • 子选择器
元素1>元素2{样式声明}

1、元素1和2中间用大于号隔开
2、元素1是父级,元素2是子级,最终选择的是元素2
3、元素2是元素1的最近一级的子元素,即对元素2的子元素不起作用,只对元素2起作用

  • 并集选择器
元素1,元素2{样式声明}

1、元素1和2中间用逗号隔开
2、任何形式的选择器都可以作为并集选择器的一部分
3、通常用于集体声明

  • 链接伪类选择器
a:link //选择所有未被访问过的链接
a:visited //选择所有已被访问过的链接
a:hover //选择鼠标指针位于其上的链接,最常用
a:active //选择活动的链接(鼠标按下未弹起的链接)

为了确保生效,按照link visited hover active 的顺序声明

  • focus伪类选择器

用于选取获得焦点的表单元素,一般情况类表单元素才能获取

input:focus {
        background-color:yellow;
            }
  • 伪元素选择器
元素::before {
        content:"";
        }//插入元素内部的前面

1、before和after创建一个元素,但属于行内元素
2、新创建的元素在文档中是找不到的,所以称为伪元素
3、before和after必须有content属性
4、伪元素选择器的权重是1

  • 属性选择器 权重为10 即 (0,0,1,0)
<style>
        input[value] {
            color:red;
            }//选中1
        input[type=password] {
            color:blue;
            }//选中3
        div[class^=icon] {
            color:green;
            }//选择的是div然后有class属性,并且属性值是icon开头
        div[class$=date] {
            color:gray;
            }//选中以date结尾的
</style>
<body>
        <input type="text" value="请输入">//1
        <input type="text">//2
        <input type="password">//3
        <div class="icon1">a</div>
        <div class="icon2">b</div>
        <div class="icon3">c</div>
        <div>d</div>
        <div class="icon1-date">x</div>
        <div class="icon2-date">y</div>
        <div class="icon3">z</div>
        
</body>
  • 结构伪类选择器
<style>
    ul li:first-child {
            color:red;
            }//选中1
    ul li:last-child {
            color:green;
            }//选中6
    ul li:nth-child(3) {
            color:gray;
            }//选中第3个
    ul li:nth-child(even) {
            color:skyblue;
            }//选中偶数项,如果括号里是n,则选中所有元素 
            //如果是3n,则选中的是第3,6个
            //n+5是从第5个到最后
            //-n+5是选中前5个

</style>
<body>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
    </ul>
</body>

二、CSS三大属性

1、层叠性

相同的选择器设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式

  • 样式冲突时,遵循就近原则(后来者居上)
  • 样式不冲突时,不会层叠
2、继承性

子标签会继承父标签的某些样式,如文本颜色和字号
text-,font-,line-这些元素开头的属性(字体、文字相关)可以继承,以及color属性
补充:行高的继承

body{
       font:12px/1.5 'Microsoft YaHei';
     }
div{
       font-size:14px;//子元素继承了父元素body的行高的1.51.5就是当前元素文字大小的1.5倍
    }
3、优先级
选择器选择器权重
继承、通配符选择器*0,0,0,0
元素(div等)选择器0,0,0,1
类选择器和伪类选择器0,0,1,0
ID选择器0,1,0,0
行内样式style=""1,0,0,0
!important无穷大

注意点:

  1. 权重是有四组数字组成的,不会有进位
  2. 可以理解为类选择器永远大于元素选择器,id选择器永远大于类选择器
  3. 等级判断是从左到右的,如果某一位数值相同,则判断下一位
  4. 继承的权重为0
  5. 复合选择器会进行权重叠加

三、CSS动画

  • 过渡

一般配合:hover使用

transition:要过渡的属性 花费时间 运动曲线 何时开始;

1、属性即想要变化的css属性,如果所有属性都要变化过渡,写一个all即可
2、花费时间:单位是秒(不可省)
3、运动曲线:默认是ease(可以省)
4、何时开始:单位是秒,可以延迟,默认是0(可以省)
5、谁做过渡给谁加

  • 2D转换之translate

1、不影响其他的元素
2、其中的百分比单位是相对于自身元素而言的
3、对行内标签没有效果

transform:translate(x,y);
transform:translateX(n);
transform:translateY(n);
  • 2D转换之rotate
transform:rotate(度数);

1、度数的单位是deg
2、角度为正时,顺时针;为负时,逆时针
3、默认的旋转中心是元素的中心点

  • 设置旋转中心
transform-origin:x y;

1、参数是用空格隔开的
2、x y默认的中心点是元素的中心点(50% 50%)
3、可以给x y设置像素值或者是方位名词(top bottom left right center)

  • 2D转换之scale
transform:scale(x,y);

1、其中x y是用逗号隔开的
2、transform;scale(2,2);宽和高都扩大为原来的两倍
3、如果只写一个参数,第二个参数和第一个参数的值是一样的
4、如果其中的值小于1,则表示缩小
5、优势:可以设置转换中心点缩放,默认以中心点进行缩放的,不影响其他的盒子

  • 动画

先定义动画再使用动画

//定义动画
@keyframes 动画名称 {
    0%{//相当于from
        width:100px;
      }
   100%{//相当于to
        width:200px;
       }
  }//可以设置多个状态
  //调用动画
div {
animation-name:动画名称;//必须有
animation-duration:持续时间;//必须有
}

动画常见属性

@keyframes  定义动画
animation-name 动画的名称
animation-duration  动画完成一个周期所花的时间
animation-timing-function  规定动画的速度曲线
animation-delay  规定动画何时开始
animation-iteration-count 规定动画的播放次数
animation-play-state 规定动画是否正在运行或暂停
animation-fill-mode  规定动画结束后的状态 保持forwards回到起始backwards
animation  简写属性 animation-play-state除外