【Web前端开发基础】CSS3之Web字体、字体图标、平面转换、渐变

CSS3之Web字体、字体图标、平面转换、渐变

目录

  • CSS3之Web字体、字体图标、平面转换、渐变
    • 一、Web字体
      • 1.1 Web字体概述
      • 1.2 字体文件
      • 1.3 @font-face 规则
    • 二、字体图标
      • 2.1 字体图标
      • 2.2 字体图标的优点
      • 2.3 图标库
      • 2.4 下载字体包
      • 2.5 字体图标的使用步骤
      • 2.6 字体图标使用注意点
      • 2.7 上传矢量图
    • 三、平面转换
      • 3.1 平面转换介绍
      • 3.2 2D转换 :translate(位移)
      • 3.3 2D转换 :rotate(旋转)
      • 3.4 2D转换:transform-origin(转换中心点)
      • 3.5 2D转换:scale(缩放)
      • 3.6 transform 的综合写法
      • 3.7 2D转换transform总结
    • 四、渐变

一、Web字体

1.1 Web字体概述

  • 每种字体都对应着相应的字体文件,没有 @font-face 规则之前,客户端是否能够正确显示 fontfamily 规定的字体,是由该字体的文件是否预装在客户端决定的。而 @font-face 规则可以将字体文件存放在服务器端,渲染页面时客户端请求从服务器端下载改字体文件进行使用

1.2 字体文件

  • 不同浏览器支持的不同字体文件格式,如下表所示,在应用Web字体前,需要生成同一种字体的不同格式文件
    在这里插入图片描述

1.3 @font-face 规则

  • Web 字体首先用 @font-face 规则定义字体名和称来源,然后再用 font-family 引用该字体,语法
    格式如下:
    <style>/* 定义字体名称和来源 */@font-face {/* 定义字体名字 */font-family: 字体名字;/* 定义字体来源 */src: url(字体来源文件1),…… url(字体来源文件n);}/* 引用该字体 *//* 需要引用的元素 */p {font-family: 字体名字;/* 引用字体 */}
    </style>
    <body><p>Web design</p>
    </body>
    

二、字体图标

目标:使用字体图标技巧实现网页中简洁的图标效果

2.1 字体图标

  • 字体图标展示的是图标,本质是字体
  • 处理简单的、颜色单一的小图标
    在这里插入图片描述

2.2 字体图标的优点

  • 灵活性:灵活地修改样式,例如:尺寸、颜色等
  • 轻量级:体积小、渲染快、降低服务器请求次数
  • 兼容性:几乎兼容所有主流浏览器
  • 使用方便

2.3 图标库

  • iconfont :https://www.iconfont.cn/ 阿里巴巴字体库(常用)
    在这里插入图片描述

2.4 下载字体包

  • 登录(新浪微博) → 选择图标库 → 选择图标,加入购物车 → 购物车 → 添加至项目 → 下载至本地
    在这里插入图片描述

2.5 字体图标的使用步骤

  • 步骤1:复制相关文件到本地目录,在引入字体图标css文件
    在这里插入图片描述
  • 步骤2:标签使用字体图标
    1. 使用字体图标 – 类名:
      • 引入字体图标样式表
        <link rel="stylesheet" href="./iconfont/iconfont.css">
        
      • 调用图标对应的类名,必须调用2个类名
        ① iconfont类:基本样式,包含字体的使用等
        ② icon-xxx类:图标对应的类名
        <span class="iconfont icon-xxx"></span>
        
    2. 使用字体图标 – unicode编码:
      • HTML
        <span> &#xe6eb; </span>
        
      • CSS
        span {font-size: 'iconfont';
        }
        
    3. 使用字体图标 – 伪元素:
      • 通过查看iconfont.css文件
        .icon-arrow-down:berfore {content:'\e665';
        }
        

2.6 字体图标使用注意点

  • 可以使用问文本标签修改字体图标,但是要注意选择器的权重问题
  • 若要修改字体图标的大小,注意要在iconfont类中修改
    .iconfont {font-size: 30px;
    } /* 该样式会生效 */
    span {font-size: 30px;
    } /* 该样式不会生效,因为标签选择器比类选择器权重低 */
    

2.7 上传矢量图

  • 思考:如果图标库没有项目所需的图标怎么办?

  • 答:iconfont网站上传矢量图生成字体图标

    1. 与设计师沟通,得到SVG矢量图
    2. iconfont网站上传图标,下载使用
  • iconfont上传矢量图步骤:

    1. 上传 → 上传SVG图标
    2. 浏览本地图标 → 去除颜色提交
    3. 加入购物车 → 添加到项目 → 下载使用
      在这里插入图片描述
  • 工作中:

    • 这部分都是UI美工给我们上传,并生成,并且很贴心的给我们选好了字体图标
    • 正式开发中,都是UI美工,把字体图标都设置好,建好项目,拉我们前端人员进入,我们直接下载使用即可
      在这里插入图片描述

三、平面转换

目标:使用transform属性实现元素的位移、旋转、缩放等效果

3.1 平面转换介绍

  • 平面转换
    • 改变盒子在平面内的形态(位移、旋转、缩放)
    • 2D转换
  • 平面转换属性
    • transform
      在这里插入图片描述

3.2 2D转换 :translate(位移)

  • 2D位移是2D转换里面的一种功能,可以改变元素在页面种的位置,类似定位

  • 语法: transform: translate(水平移动距离, 垂直移动距离);

    transform: translate(x, y); /* 沿 X 轴移动 x px, 沿 Y 轴移动 y px */
    transform: translateX(n); /* 沿 X 轴移动 n px */
    transform: translateY(n); /* 沿 Y 轴移动 n px */
    
  • 取值(正负均可)

    • ① 数字 + px
    • ② 百分比(参照物为盒子自身尺寸)
    • 注意:X轴正向为右,Y轴正向为下
  • 技巧

    • translate()如果只给出一个值, 表示x轴方向移动距离
    • 单独设置某个方向的移动距离:translateX() & translateY()
  • 快速体验

    • <!-- 移动盒子位置方法:定位 盒子的外边距 2d转换移动 -->
      <style>.father {width: 600px;height: 300px;margin: 100px auto;border: 1px solid #000;}.son {width: 200px;height: 100px;background-color: pink;transition: all 0.3s;}.father:hover .son {width: 200px;height: 100px;background-color: pink;/* 2D转换移动 *//* x 就是 X 轴上移动的位置,y 就是 Y 轴上移动的位置 *//* transform: translate(x, y) */transform: translate(100px, 100px);/* 我们如果只移动x坐标,有三种写法 */transform: translate(100px, 0);transform: translate(100px);/* 只给出一个值,表示向X轴移动 */transform: translateX(100px);/* 我们如果只移动y坐标,也有两种写法 */transform: translate(0, 100px);transform: translateY(100px);/* 我们translate的参数的单位也可以是百分比(%)的形式 *//* 使用百分比的形式是相对于自身元素的(宽度或者高度) */transform: translate(50%, 50%);}
      </style>
      <body><div class="father"><div class="son"></div></div>
      </body>
      
  • translate注意点

    • 定义2D转换中的位移,是沿着X和Y轴移动元素
    • 移动盒子位置的方法有:定位、盒子的外边距、2d转换translate
    • 但translate最大的优点是:不会影响到其他元素的位置
    • translate中的百分比单位是相对于自身元素的(宽度或者高度)
    • translate对行内元素没有效果
  • 绝对定位中垂直水平居中案例

    /* 需求:让p标签在div盒子内垂直水平居中 */
    /* 1.可以使用定位 + margin的方式 */
    /* 2.也可以使用定位 + translate的方式 */
    /* 定位使用子绝父相 */
    div {position: relative;width: 500px;height: 500px;background-color: pink;
    }
    p {position: absolute;top: 50%;left: 50%;width: 200px;height: 200px;background-color: purple;/* 1.使用margin相对于自己向上移动自己的50%(200px * 0.5 = 100px),
    向左移动自己的50%(200px * 0.5 = 100px)即可 */margin-top: -100px;margin-left: -100px;/* 2.使用translate,也是相对于自身在X和Y移动,故使用百分号形式 */transform: translate(-50%, -50%);
    }
    

在这里插入图片描述

3.3 2D转换 :rotate(旋转)

  • 2D旋转指的是让元素在二维平面内顺时针或者逆时针旋转
  • 语法: transform: rotate(角度); 注意:角度单位是deg
    transform: rotate(angle);
    
  • 取值(正负均可)
    ① 取值为正, 则顺时针旋转
    ② 取值为负, 则逆时针旋转
  • rotate注意点
    rotate里面的参数单位是deg,比如rotate(45deg)
    角度为正时,顺时针旋转;角度为负时,逆时针旋转
    默认旋转中心是元素的中心点
  • 三角形旋转案例
    /* 样式代码 */
    div {position: relative;width: 249px;height: 35px;border: 1px solid #000;
    }
    /* 添加伪元素 */
    div::after {content: "";/* 使用定位,让伪元素布局在盒子右侧 */position: absolute;top: 8px;right: 15px;/* 伪元素默认是行内元素,使用定位后可以设置其大小 */width: 10px;height: 10px;/* 用边框绘制三角型 */border-right: 1px solid #333;border-bottom: 1px solid #333;/* 对伪元素进行旋转 *//* ① 设置伪元素旋转中心 */transform-origin: 50% 75%;/* ② 设置伪元素旋转度数 */transform: rotate(45deg);/* 添加过渡效果 */transition: all 0.2s;
    }
    /* 鼠标经过盒子时三角形旋转 */
    div:hover::after {transform: rotate(225deg);
    }
    
    <!-- 结构代码 -->
    <div></div>
    
    在这里插入图片描述

3.4 2D转换:transform-origin(转换中心点)

  • 2D转换中心点可以设置元素的转换中心点
  • 语法: transform-origin: 原点水平位置 原点垂直位置;
    transform-origin: x, y;
    
  • 取值:
    方位名词(left、top、right、bottom、center)
    ② 数字 + px
    ③ 百分比(参照盒子自身尺寸计算)
  • transform-origin注意点
    • 注意后面的参数 x 和 y 用空格隔开
    • x y 默认转换中心是元素的中心点(50% 50%)
    • 还可以给 x y 设置 像素 或者 方位名词(top、bottom、left、right、center)
  • 旋转案例
    /* 样式代码 */
    ul {display: flex;justify-content: center;margin-top: 200px;
    }
    ul li {/* float: left; */overflow: hidden;margin-right: 10px;width: 199px;height: 290px;border: 1px solid hotpink;list-style: none;background: url("./images/10.jpg") no-repeat;background-size: contain;
    }
    ul li:nth-child(2) {background-image: url("./images/2.jpg");
    }
    ul li:last-child {background-image: url("./images/3.jpg");
    }
    ul li::after {content: "猜猜我是谁?";display: block;width: 100%;height: 100%;background-color: pink;transform-origin: 0% 100%;transform: rotate(0deg);transition: all 0.3s;text-align: center;line-height: 292px;font-size: 20px;color: hotpink;
    }
    ul li:hover::after {transform: rotate(90deg);
    }
    
    <!-- 结构代码 -->
    <ul><li></li><li></li><li></li>
    </ul>
    
    在这里插入图片描述

3.5 2D转换:scale(缩放)

  • 缩放,顾名思义,可以放大或缩小。只要给元素添加这个属性就能控制他放大还是缩小
  • 语法: transform: scale(x轴缩放倍数, y轴缩放倍数);
    transform: scale(x, y);
    
  • 注意点:
    • 注意其中的 x 和 y 用逗号隔开
    • transform: scale(1, 1) : 宽和高都放大1倍,相对于没有放大
    • transform: scale(2, 2) : 宽和高都放大了2倍
    • transform: scale(2) : 只写一个参数,第二个参数则和第一个参数一样,相当于 scale(2, 2)
    • transform: scale(0.5, 0.5) : 缩小
    • scale缩放最大的优势 : 可以设置转换中心缩放点,默认以中心点缩放的,而且不会影响其他盒子
  • 鼠标经过图片放大案例
    <!-- 样式代码 -->
    <style>div {overflow: hidden;width: 240px;float: left;margin: 10px;}div img {width: 100%;transition: all 0.2s ease;}div img:hover {transform: scale(1.1);}
    </style>
    
    <!-- 结构代码 -->
    <div><a href="#"><img src="./images/brand_goods_1.jpg" alt=""></a></div>
    <div><a href="#"><img src="./images/brand_goods_2.jpg" alt=""></a></div>
    <div><a href="#"><img src="./images/brand_goods_3.jpg" alt=""></a></div>
    <div><a href="#"><img src="./images/brand_goods_4.jpg" alt=""></a></div>
    
    在这里插入图片描述
  • 分页案例
    <!-- 样式代码 -->
    <style>ul li {float: left;width: 30px;height: 30px;border: 1px solid green;border-radius: 50%;margin: 10px;list-style: none;text-align: center;line-height: 30px;cursor: pointer;transition: all .2s ease;}ul li:hover {transform: scale(1.1);}
    </style>
    <!-- 结构代码 -->
    <body><ul><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul>
    </body>
    
    在这里插入图片描述
  • 和平精英-缩放案例
<!-- 样式代码 -->
<style>* {margin: 0;padding: 0;}.box {overflow: hidden;width: 249px;height: 210px;margin: 100px auto;}li {list-style: none;}img {width: 100%;}.box p {color: #3b3b3b;padding: 10px 10px 0 10px;}.box .pic {position: relative;}.box .pic::after {position: absolute;top: 50%;left: 50%;content: "";width: 58px;height: 58px;/* 直接使用margin比较简单,代码注释部分为margin做法 *//* margin-top: -29px;
margin-left: -29px; */background: url("./images/play.png");/* transform: scale(5); *//* 使用transform时要注意CSS的层迭性 */transform: translate(-50%, -50%) scale(5);opacity: 0;/* 透明度 */transition: all .5s;}.box li:hover .pic::after {/* transform: scale(1); */transform: translate(-50%, -50%) scale(1);opacity: 1;}
</style>
<!-- 结构代码 -->
<div class="box"><ul><li><div class="pic"><img src="./images/party.jpeg"></div><p>【和平精英】“初火”音乐概念片:四圣觉醒......</p></li></ul>
</div>

在这里插入图片描述

3.6 transform 的综合写法

  • 注意
    1. 同时使用多个转换,其格式为:transform: translate() rotate() scale()
    2. 若将多个转换单独写开,则只有写在最下面的转换会生效,因为CSS具有层叠性
    3. 其顺序会影响转换的效果(先旋转会改变坐标轴方向)h
    4. 当我们同时有位移和其他属性的时候,记得要将位移放在最前面

3.7 2D转换transform总结

  • 2D转换通过 transform 属性对元素进行位移(translate)、旋转(rotate)、缩放(scale)、倾斜(skew)
    在这里插入图片描述
  • 转换 transform 我们简单的理解就是变形,有2D 和 3D之分
  • 我们暂且学了三个分别是位移、旋转和缩放
  • 2D 移动translate(x, y) 最大的优势是不影响其他盒子,里面的参数如果使用%,则是相对于自身的
  • 宽和高来计算的
  • 2D 移动translate 可以分开写,translateX(x) translateY(y)
  • 2D 旋转rotate(度数) 可以实现旋转元素,度数的单位是deg
  • 2D 缩放scale(x, y) 里面的参数是数字不跟单位 可以是小数,表示缩小,最大的优势是不影响其它盒子
  • 设置旋转中心点transform-origin: x y; 参数可以是百分比、像素或者是方位名词
  • 当我们进行综合写法,同时有位移和其他属性的时候,记得要将位移放在最前面

四、渐变

  • 渐变是多个颜色逐渐变化的视觉效果
  • 一般用于设置盒子的背景
  • 语法:
    background-image: linear-gradient(to 渐变方向,颜色1,颜色2,....
    );
    
  • 取值:
    ① 第一个参数可以设置方向:to + 方位名词
    ② 颜色的取值:关键字、rgb(x,x,x)、rgba(x,x,x,x)、transparent(透明)
  • 实现:
div {backround-image: linear-gradient(to bottom,transparent,rgba(0, 0, 0, .6));
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/644927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「 典型安全漏洞系列 」06.路径遍历(Path Traversal)详解

引言&#xff1a;什么是路径遍历&#xff1f;如何进行路径遍历攻击并规避常见防御&#xff1f;如何防止路径遍历漏洞。 1. 简介 路径遍历&#xff08;Path Traversal&#xff09;是一种安全漏洞&#xff0c;也被称为目录遍历或目录穿越、文件路径遍历。它发生在应用程序未正确…

mysql生成最近24小时整点/最近30天/最近12个月时间临时表

文章目录 生成最近24小时整点生成最近30天生成最近12个月 生成最近24小时整点 SELECT-- 每向下推1行, i比上次减去1b.*, i.*,DATE_FORMAT( DATE_SUB( NOW(), INTERVAL ( -( i : i - 1 ) ) HOUR ), %Y-%m-%d %H:00 ) AS time FROM-- 目的是生成12行数据( SELECTa FROM( SELECT…

在浏览器输入一个url,浏览器会发生什么?

文章目录 在浏览器输入一个URL后&#xff0c;浏览器会经历以下主要的步骤&#xff1a; 1、URL解析&#xff1a; 浏览器首先会解析输入的URL&#xff0c;包括协议&#xff08;比如http&#xff09;、域名、端口、路径和查询参数等。 2、DNS解析&#xff1a; 如果输入的是域名而…

创作活动(九十三)———ChatGPT 和文心一言哪个更好用?

#ChatGPT 和文心一言哪个更好用&#xff1f;# 根据提供的搜索结果&#xff0c;ChatGPT和文心一言各有特点和优势&#xff0c;选择哪一个更好用取决于具体的应用场景和个人需求。以下是两者的对比&#xff1a; ChatGPT&#xff1a; 适用场景&#xff1a;适合需要生成大量知识性…

搭建《幻兽帕鲁》服务器需要怎样配置的云服务器?

随着《幻兽帕鲁》这款游戏的日益流行&#xff0c;越来越多的玩家希望能够在自己的服务器上体验这款游戏。然而&#xff0c;搭建一个稳定、高效的游戏服务器需要仔细的规划和配置。本文将分享搭建《幻兽帕鲁》服务器所需的配置及搭建步骤&#xff0c;助力大家获得更加畅快的游戏…

搭建k8s集群实战(一)系统设置

1、架构及服务 Kubernetes作为容器集群系统&#xff0c;通过健康检查重启策略实现了Pod故障自我修复能力&#xff0c;通过调度算法实现将Pod分布式部署&#xff0c;并保持预期副本数&#xff0c;根据Node失效状态自动在其他Node拉起Pod&#xff0c;实现了应用层的高可用性。 …

树的学习day01

树的理解 树是一种递归形式的调用 树是由于多个结点组成的有限集合T 树中有且仅有一个结点称为根 当结点大于1的时候&#xff0c;往往其余的结点为m个互不相交的有限个集合T1,…,Tm&#xff0c;每个互不相交的有限集合本身右是一棵树&#xff0c;称为这个根的子树 空树也是树 关…

【Docker】Docker学习② - Docker安装及基础命令介绍

【Docker】Docker学习② - Docker安装及基础命令介绍 一、Docker简介二、Docker安装及基础命令介绍1. Docker安装验证2. Docker存储引擎3 Docker服务进程4. Docker镜像加速配置 三、Docker镜像管理四、Docker镜像与制作五、Docker数据管理六、网络部分七、Docker仓库之单机Dokc…

kafka乱序消费可能的原因和解决方案

Kafka乱序消费可能的原因有以下几个&#xff1a; 分区顺序&#xff1a;Kafka中的消息按照分区进行存储和分发&#xff0c;每个分区内的消息是有序的&#xff0c;但不同分区之间的消息顺序是无法保证的。如果消费者在多个分区上进行并行消费&#xff0c;并且不处理消息的顺序&am…

选现货白银投资划不划算?

可以肯定的是选择现货白银投资是划算的&#xff0c;但投资者需要有足够的知识和经验&#xff0c;以及对市场的敏锐观察力。只有这样&#xff0c;投资者才能在现货白银投资中获取收益。在投资市场上&#xff0c;白银作为一种特殊的投资品种&#xff0c;一直以来都备受投资者们的…

javaweb总览

javaweb需要学习哪些技术 前端web开发&#xff1a; 技术描述HTML用于构建网站的基础结构的css用于美化页面的&#xff0c;作用和化妆或者整容作用一样JavaScript实现网页和用户的交互Vue主要用于将数据填充到html页面上的Element主要提供了一些非常美观的组件Nginx一款web服务…

JUC-CAS

1. CAS概述 CAS(Compare ans swap/set) 比较并交换&#xff0c;实现并发的一种底层技术。它将预期的值和内存中的值比较&#xff0c;如果相同&#xff0c;就更新内存中的值。如果不匹配&#xff0c;一直重试&#xff08;自旋&#xff09;。Java.util.concurrent.atomic包下的原…

Redis - redis.windows.conf配置文件及RDB和AOF数据持久化方案

Redis - redis.windows.conf配置文件及RDB和AOF数据持久化方案 Redis的高性能是由于其将所有数据都存储在了内存中&#xff0c;为了使Redis在重启之后仍能保证数据不丢失&#xff0c;需要将数据从内存中同步到硬盘中&#xff0c;这一过程就是持久化。 Redis支持两种方式的持久化…

【51单片机】点亮第一个LED灯

目录 点亮第一个LED灯单片机 GPIO 介绍GPIO 概念GPIO 结构 LED简介软件设计点亮D1指示灯LED流水灯 橙色 点亮第一个LED灯 单片机 GPIO 介绍 GPIO 概念 GPIO&#xff08;general purpose intput output&#xff09; 是通用输入输出端口的简称&#xff0c; 可以通过软件来控制…

我的2023年总结:旅行见天地,读书明事理,工作合行知

我的2023年总结 呵,时间过得真快啊! 有多快呢? 像烟花,一瞬间。 一瞬间 就在一瞬间 一场梦 梦了一千年 一转眼 只是一转眼 梦已醒 却过了一千年这是写年总结以来的第四年, 2023年往事回首三个字可概括:恍,荒,慌。 文章目录 我的2023年总结1、往年总结2、旅行如书2.1、…

数据库查询练习

数据准备 #建学生信息表student create table student ( sno varchar(20) not null primary key, sname varchar(20) not null, ssex varchar(20) not null, sbirthday datetime, class varchar(20) ); #建立教师表 create table teacher ( tno varchar(20) not null primary…

仿真机器人-深度学习CV和激光雷达感知(项目2)day04【简单例程】

文章目录 前言简单例程运行小海龟仿真启动节点查看计算图发布 Topic调用 Serviece 用 Python 发布和接收 Topic创建工作空间创建功能包&#xff0c;编译编写 Topic Publisher 节点编写 Topic Subscriber 节点运行节点 自定义消息类型用 Python 注册和调用 Serviece新建功能包在…

系统架构设计师教程(十四)云原生架构设计理论与实践

云原生架构设计理论与实践 14.1 云原生架构产生背景14.2 云原生架构内涵14.2.1 云原生架构定义14.2.2 云原生架构原则14.2.3 主要架构模式14.2.4 典型的云原生架构反模式14.3 云原生架构相关技术14.3.1 容器技术14.3.2 云原生微服务14.3.3 无服务器技术14.3.4 服务网格14.4 云原…

【Docker】Dokcer学习① - 简介

【Docker】Docker学习① - 简介 一、Docker简介1. Docker是什么2. Docker组成3. Docker对比虚拟机4. Linux Namespace技术5. Linux control groups6. 容器管理工具 二、Docker安装及基础命令介绍三、Docker镜像管理四、Docker镜像与制作五、Docker数据管理六、网络部分七、Dock…

分类预测 | Matlab实现LSTM-Attention-Adaboost基于长短期记忆网络融合注意力机制的Adaboost数据分类预测/故障识别

分类预测 | Matlab实现LSTM-Attention-Adaboost基于长短期记忆网络融合注意力机制的Adaboost数据分类预测/故障识别 目录 分类预测 | Matlab实现LSTM-Attention-Adaboost基于长短期记忆网络融合注意力机制的Adaboost数据分类预测/故障识别分类效果基本描述程序设计参考资料 分类…