​博学谷学习记录 | 学习总结,用心分享 | 前端学习基础之CSS扩展​

1 精灵图

(1)定义:项目中将多张小图片,合并成一张大图片,这张大图片称之为精灵图。

(2)优点:减少服务器发送次数,减轻服务器的压力,提高页面加载速度。

(3)使用步骤:

        ①创建一个盒子,盒子的标签用行内标签 span/b/i 等

        ②设置盒子大小为图片大小

        ③设置精灵图为盒子的背景图片

        ④用background-position属性移动精灵图,使想要显示的图片正确地显示在盒子里

选取其中一个logo
精灵图

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        span {
            display: inline-block;
            width: 18px;
            height: 24px;
            background-color: pink;
            background-image: url(./images/xxx.png);
            background-position: -3px 0;
        }

    </style>
</head>
<body>
    <span></span>
</body>
</html>

2 背景图大小

属性名:background-size,属性值如下

用数字+px或百分比的时候如果只写一个数,那么就是在控制图片的宽,而高度自适应,如果写两个数就是同时控制图片的宽高。而contain是保证背景图片在不变形、不超出盒子的情况下尽可能地占满整个盒子,因此有可能会留下空白位置,cover是保证背景图片在不变形的情况下以最低的缩放比占满整个盒子,因此有可能会出现图片显示不全的情况

300px
300px 100px 
50%
50% 10%
contain
cover

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box {
            width: 400px;
            height:300px;
            background-color: pink;
            background-image: url(./images/1.jpg);
            background-repeat: no-repeat;
            /* background-size: 300px; */
            /* background-size: 300px 100px; */
            /* background-size: 50%; */

            background-size: contain;
            /* background-size: cover; */
        }
    </style>
</head>
<body>
    <div class="box"></div>
</body>
</html>

3 字体图标

字体图标在人眼里是图标(图片),但浏览器会把它当做字体来渲染,本质上还是字体。

1.优点

(1)灵活性:灵活地修改样式,例如:尺寸、颜色等。

(2)轻量级:体积小、渲染快、降低服务器请求次数

(3)兼容性:几乎兼容所有主流浏览器

(4)使用方便:①下载字体包 ②使用字体图标

2.使用方式

(1)Unicode编码引入

        ①引入样式表:iconfont.css
        ②复制粘贴图标对应的Unicode编码
        ③设置文字字体

<link rel="stylesheet" href="./iconfont/iconfont.css">

        span{
            font-family: 'iconfont';
        }

(2) 类名引入 

        ①引入字体图标样式表
        ②调用图标对应的类名,必须调用2个类名。一个是iconfont类,基本样式,包含字体的使用等;另一个是icon-xxx,图标对应的类名。

<link rel="stylesheet" href="./iconfont/iconfont.css">
<span class="iconfont icon-cart-Empty-fill orange"></span>

如果想要修改字体样式,那么只需要对 .iconfont 类或者是 .icon-xxx 类进行修改即可。

        .iconfont{
            font-size: 200px;
        }

        .icon-cart-Empty-fill{
            font-size: 100px;
        }

 4 平面转换

平面转换是指使用 transform 属性在二维的平面内实现对元素的位移、旋转和缩放等效果。

1.元素的位移

要实现元素的位移就要用到 translate(x,y); ,x/y分别是在水平方向和竖直方向上的位移,可以是像素(px)也可以是百分比(参照物为元素自身尺寸)。translate的括号内只写一个数字的话,则表示沿x轴方向移动。如果想要单独设置水平方向或者垂直方向的话,使用 translateX()/translateY()。 

移动时的参考系如下,原点为元素左上角。

2.元素的旋转 

使用 rotate(角度); 实现元素的旋转,角度的单位为deg,数值可正可负,取正表示顺时针旋转,取负表示逆时针旋转,旋转时的圆心默认是元素的中心点。如果想要改变圆心的位置,则可以使用transform-origin 属性。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>转换原点</title>
    <style>
        img {
            margin: 200px 400px;
            width: 250px;
            border: 1px solid #000;
            transition: all 2s;
            /* 类型一 方位名词*/
            /* 以左边中点为圆心 */
            transform-origin: left;
            /* 以右下角为圆心 */
            transform-origin: right bottom;

            /* 类型二 数值+px */
            /* 原点(0,0)在元素的左上角,水平向右为正,垂直向下为正 */
            transform-origin: 100px 800px ;

            /* 类型三 百分比 */
            /* 原点(0,0)在元素的左上角,水平向右为正,垂直向下为正 */
            /* 以元素自身宽高为参考 */
            transform-origin: 50% 100%;
        }
        
        img:hover {
            transform: rotate(360deg);
        }
    </style>
</head>
<body>
    <img src="./images/rotate.png" alt="">
</body>
</html>

3.改变元素的尺寸

使用 transform: scale(x轴缩放倍数, y轴缩放倍数); 来改变元素的尺寸,x和y分别为元素宽和高的缩放倍数,大于1为放大,小于1为缩小,但一般情况下, 只会为scale设置一个值, 表示x轴和y轴等比例缩放(transform:scale(缩放倍数);)。

5 空间转换

1.元素的位移

代码:

        transform: translate3d(x, y, z);
        transform: translateX(值);
        transform: translateY(值);
        transform: translateZ(值); 

取值(正负均可):①像素单位数值 ②百分比

2.元素的旋转

代码:

        transform: rotateZ(值);
        transform: rotateX(值);
        transform: rotateY(值);

判断旋转方向: 左手握住旋转轴, 拇指指向正值方向, 手指弯曲方向为旋转正值方向。

3.元素的缩放

代码:

        transform: scaleX(倍数);
        transform: scaleY(倍数);
        transform: scaleZ(倍数);
        transform: scale3d(x, y, z);

4.透视

透视简单来说就是在空间转换时,呈现出近大远小、近实远虚的视觉效果。此时需要给父级元素添加perspective属性,属性取值为像素单位数值,一般在800 – 1200。
透视距离也称为视距,所谓的视距就是人的眼睛到屏幕的距离。

5.立体呈现

perspective属性不能使子元素处于真正的三维空间内,如果想要子元素呈现出立体的效果,就要给父元素加上transform-style: preserve-3d属性。具体步骤为:①盒子父元素添加transform-style: preserve-3d;②按需求设置子盒子的位置(位移或旋转)。
注意:空间内,转换元素都有自已独立的坐标轴,互不干扰

6 动画效果

一个好看的网页少不了动态效果,而 transition 和 animation 就是CSS里用来制作动画效果的属性。一般来说,transition是过渡属性,它只有两个关键帧(开始--结束),需要触发一个事件才执行动画;而animation是动画属性,它可以有多个关键帧,在执行时不需要触发事件,而是在设定好时间之后自动执行,并且可以循环执行。

transition有以下属性,可与animation属性作对比。 


transition-property: 动画展示哪些属性,可以使用all关键字;

transition-duration: 持续时间;

transition-timing-function: 动画速度曲线linear, ease, ease-in, ease-out, ease-in-out;

transition-delay: 动画延迟执行时间;

1.定义动画

        定义动画的关键就是定义关键帧。关键帧通俗来讲就是被描绘对象在某一刻的状态,将这些状态连在一起就实现了动画效果。

        /* from--开始状态 to--结束状态 */
        @keyframes change {
            from {
                width: 200px;
            }
            to {
                width: 600px;
            }
        }        
 

        /* 百分比指的是动画总时长的占比 */
        @keyframes change {
            0% {
                width: 200px;
            }
            50% {
                width: 500px;
                height: 300px;
            }
            100% {
                width: 800px;
                height: 500px;
            }
        }

2.调用动画

        调用动画需要用到 animation 属性,其后可以跟多个属性值,分别是动画名称动画时长速度曲线延迟时间重复次数动画方向执行完毕状态。这些属性值不分先后顺序,但动画名称动画时长必须赋值,如果有两个时间,则第一个表示动画时长,第二个表示延迟时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值