伪类,动画效果

### 结构伪类选择器

- CSS中伪类选择器,比如`:link`、`:visited`、`:hover`、`:active`、`:focus`。

#### 1、

- `E:first-child`、`E:last-child`: 匹配父元素的第一个\最后一个 子元素E。

- `E:nth-child(odd)` 匹配奇数(odd就表示奇数)、- `E:nth-child(even)` 匹配偶数

- `E:nth-last-child(n)` 匹配父元素的倒数第n个子元素E。

- `E:nth-child(n)` 匹配父元素的第n个子元素E。**注意**,盒子的编号是从`1`开始算起,不是从`0`开始算起。

    - `li:nth-child(-n+5)`,则表示**前5个** li。

    - `li:nth-last-child(-n+5)`,则表示**最后5个** li。

    - `li:nth-child(n+3)`,则表示从第三个开始


 

#### 2、先在同级里找到所有的E类型,然后根据 n 进行匹配。

- `E:first-of-type`、`E:last-of-type` 匹配同类型中的第一个\最后一个 同级兄弟元素E。

- `E:nth-of-type(n)` 匹配同类型中的第n个同级兄弟元素E。

- `E:nth-last-of-type(n)` 匹配同类型中的倒数第n个同级兄弟元素E。


 

#### 3、

- `E:empty` 匹配没有任何子节点(包括空格等text节点)的元素E。

- `E:target` 匹配相关URL指向的E元素。要配合锚点使用。

```css

/* 第一行的前三个 span 标红 */

    dt:first-child span:nth-of-type(-n+3) {

        color: red;

    }

```


 

### 伪元素选择器

#### 1. `E::before` 、`E::after` : 是通过 css 模拟出的html标签的效果

```css

      /* 伪元素和伪类:一个是位置,一个是状态 */

        span{

            color: red;

        }

        span::after{    

            /* 在内容后面添加东西,最关键的是content:" "

             */

           content:" ";

           border: 10px solid black;

           background-color: green;

        }

        .one::first-letter{

            color: blue;

        }

        span::before{

            content:"天天向上"

        }

```

#### 2.

- `E::first-letter` 设置元素 E 里面的**第一个字符**的样式。

- `E::first-line` 设置元素 E 里面的**第一行**的样式。

- `E::selection` 设置元素 E 里面被鼠标选中的区域的样式(一般设置颜色和背景色)。

```html

        span{  

            <!-- ::first-letter 只适用于块级元素(如 p, div, h1 等),而 <span> 是一个内联元素,需要将 <span> 元素更改为块级元素 -->

            display: block;

        }

        .s1::first-letter{

            color: red;

            font-size: 50px;

        }

        p::selection{

            <!-- 需要在网页上托拉拽才有效果 -->

            background-color: green;

        }

    <span class="s1">1123456</span>

    <p>2222222222222222</p>

```


 

### 文本

### text-shadow:设置文本的阴影

```javascript

// 参数解释:水平位移 垂直位移 模糊程度 阴影颜色

    text-shadow: 20px 27px 22px pink;

```

### 举例:凹凸文字效果

```css

        /* 凹进去:给左上角放黑色的阴影,右下角放白色的阴影 */

        .ao {

            text-shadow: -1px -1px 1px #000, 1px 1px 1px #fff;

        }

        /* 凸出来 */

        .tu {

            text-shadow: -1px -1px 1px #fff, 1px 1px 1px #000;

        }

```

## 盒模型中的 box-sizing 属性:没有继承性,继承性有应用场景

```javascript

// 1. 外加模式:是盒子的总宽高发生变化

    box-sizing: content-box;

// 2. 内减模式:改变内容的宽高,盒子的总宽高不变

    box-sizing: border-box;

```

## 边框

### 边框圆角:`border-radius` 属性

- 圆有**水平半径**和**垂直半径**:如果二者相等,就是圆;如果二者不等, 就是椭圆。

- 属性的写法:

    ```css

        border-radius: 60px; 或者  border-radius: 50%;      四个角的半径都相同时

        border-top-left-radius: 60px 120px;          参数解释:水平半径  垂直半径

        border-radius: 60px/120px;             //参数:水平半径/垂直半径

        border-radius: 20px 60px 100px 140px;  //从左上开始,顺时针赋值。如果当前角没有值,取对角的值

    ```

    ```html

                border-radius: 100px 0 0 0;  扇形

           

                border-radius: 100px/50px;

           

                border-radius: 10%;   正方形

                border-radius: 0 100px;  树叶

       

        <div class="box">1</div>

    ```


 

### 边框阴影:`box-shadow` 属性

```javascript

    // box-shadow: 水平偏移:正值向右 负值向左。 垂直偏移:正值向下 负值向上。 模糊程度 阴影大小 阴影颜色

    border: 1px solid black;

    // inset属性,表示内阴影。如果不写,则默认表示外阴影。

    box-shadow:0px 217px 17px 5px black inset ;

```

### 边框图片

```javascript

    /* 边框图片的路径*/

    border-image-source: url("images/border.png");

    /* 图片边框的裁剪*/

    border-image-slice: 27;

    /*图片边框的宽度*/

    border-image-width: 27px;

    /*边框图片的平铺*/

    /* repeat :正常平铺 但是可能会显示不完整*/

    /*round: 平铺 但是保证 图片完整*/

    /*stretch: 拉伸显示*/

    border-image-repeat: stretch;

综合属性:border-image: url("images/border.png") 27/20px round;

```

1. 九宫格:进行平铺。四个角位置、形状保持不变,中心位置和水平垂直向两个方向平铺:

![](http://img.smyhvae.com/20180207_2050.png)

![](http://img.smyhvae.com/20180207_2051.png)



 

### 动画效果

#### 过渡:transition

- 补间动画:自动完成从起始状态到终止状态的的过渡。不用管中间的状态。

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

transition 属性:

1. `transition-property: all;`  如果希望所有的属性都发生过渡,就使用all。

    - 设置 `transition-property: width`,只让盒子的宽度在变化时进行过渡

2. `transition-duration: 1s;` 过渡的持续时间。

3. `transition-timing-function: linear;`  运动曲线。属性值是:`linear` 线性、`ease`  减速、`ease-in` 加速、`ease-out` 减速、`ease-in-out`  先加速后减速


 

**综合属性**:

```javascript

    // transition: 让哪些属性进行过度 过渡的持续时间 运动曲线 延迟时间;

       transition: all 3s linear 0s;

```

### 2D 转换:、缩放、移动、旋转

#### 1、缩放:`scale`:(取值:大于1表示放大,小于1表示缩小。不能为百分比)

```javascript

    // transform: scale(x, y);  x:水平方向的缩放倍数。y:表示垂直。只写一个值就是等比例缩放。

       transform: scale(2, 0.5);

```

### 2、位移:translate(参数为百分比,相对于自身移动)

```javascript

    // transform: translate(水平位移, 垂直位移);  正值:向右和向下。 负值:向左和向上。如果只写一个值,则表示水平移动。

       transform: translate(-50%, -50%);

```

2. 举例:方块页面水平垂直居中

```css

    div{

        width: 600px;

        height: 60px;

        position: absolute;  绝对定位的盒子

        left: 50%;           首先,让左边线居中

        top: 0;

    }

    /* 第一种方法 */

    div {

        margin-left: -300px;  然后,向左移动宽度(600px)的一半

    }

    /* 第二种方法 */

    div {

        transform: translate(-50%);    然后,利用translate,往左走自己宽度的一半

    }

```

### 3、旋转:rotate:正值 顺时针;负值:逆时针

```javascript

    // transform: rotate(角度);

    transform: rotate(45deg);

```

```css

        .box{

            width: 200px;

            height: 200px;

            background-color: black;

            transition: all 1s;

        }

        .box:hover{

            transform: rotate(3600deg);

        }

```

### 4. `transform-origin`:改变旋转的坐标原点

- rotate 旋转时,默认是以盒子的正中心为坐标原点的

```javascript

    transform-origin: 50px 50px; // transform-origin: 水平坐标 垂直坐标;

    transform-origin: center bottom;   //旋转时,以盒子底部的中心为坐标原点

```


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值