字体图标/平面转换/属性选择器

207 阅读5分钟

字体图标

简述:字体图标展示出来的是图标,本质是字体,可设置颜色,大小,下划线,倾斜加粗等效果,可以处理一些简单的,颜色单一的图片,不会因放大缩小而失帧

相关网站有 阿里巴巴矢量图库,icommoon,fontawesome

本地引入

通过 link 来引入

1.挑选图标加入购物车

2.添加至项目

3.去到项目中,点击下载代码

4.解压压缩包,更改文件夹的名字为iconfont

5.放在项目文件夹中

6.利用font class的方式去引入

/* 本地引入 */
<link rel="stylesheet" href="./iconfont/iconfont.css">
在线引入

1.挑选图标加入购物车

2.添加至项目

3.复制在线的链接

4.link标签引入在线链接

5.先设置公共的类名iconfont

6.再粘贴图标的类名即可

/* 在线引入 https:超文本传输安全协议*/
<link rel="stylesheet" href="https://at.alicdn.com/t/font_3063662_vo87eppvrfg.css">
/* html结构 */
<body>
<i class="icongont icon-xxx">
</body>

注:字体图标通常由 i / em 标签来书写

多色图标

通过 script 来引入

<script src="http://at.alicdn.com/t/font_3063662_rq0extr1edk.js"></script>
<style type="text/css">
        .icon {
            width: 1em;
            height: 1em;
            vertical-align: -0.15em;
            fill: currentColor;
            overflow: hidden;
        }
</style>
<body>
    <svg class="icon" aria-hidden="true">
        <use xlink:href="#icon-a-10-01"></use>
    </svg>
</body>

平面转换

目的:使元素实现 位移,旋转,缩放等效果

注:行内元素 设置转换无效

位移

属性:transfrom:translate(水平移动距离,垂直移动距离)

2D平移:不脱标 与相对定位类似

.box {
    /* 水平为x轴,垂直为y轴 */
    transfrom:translate(100px,100px);
    /* 只给出一个值的情况,代表x轴移动 */
    transfrom:translate(100px);
    /* 若只想让y轴移动,在translate后加上Y */
    transfrom:translateY(100px);
    /* 百分比写法是参考着位移自身盒子进行移动 */
    transfrom:translate(100%)
}

注:正值为 向右移动,向下移动

负值为 向左移动,向上移动

实现元素水平垂直居中
.fasher {
    /* 父相 */
    position:relative;
}
.son {
    /* 子绝 */
    position:absolute;
    left:50%;
    top:50%;
    /* 往左移动自身一半,往上移动自身一半 */
    transform:translate(-50%,-50%);
}
旋转

属性:transform:rotate(角度 单位“deg”)

取值:正值为顺时针,负值为逆时针

.box {
    transform:rotate(180deg);
}
转换原点

属性:transform-origin

方位名词:left right top bottom

.box {
    /*  更改转换原点为右上角去进行旋转 */
    transform-origin:right top;
    /*  如只写一个值,另一个值默认居中 */
    transform-origin:right;
    /*  具体像素值,从左上角开始(水平,垂直)*/
    transform-origin:100px 100px;
}
多重转换
.box {
    /* 先向右平移600px,再旋转一周,中间用空格分隔 */
    transform:translate(600px) rotate(360deg);
}

注:属性连写时平移一定要在前,不然会改变坐标的方向

缩放

属性:transform:scale(倍数)

取值范围:1以上是放大,1以下是缩小,一般不设置负值 0-2间

.box {
    /* 一个值时,代表水平垂直都放大两倍 */
    transform:scale(2);
    /* 仅让X轴(水平)放大两倍 */
    transform:scaleX(2);
    /* 仅让Y轴(垂直)放大两倍 */
    transform:scaleY(2);
    /* 让水平放大两倍 垂直缩小0.5 */
    transform:scale(2 .5);
}

注:可添加转换原点transform-origin属性,添加在要做变化的大盒子

斜切

属性:transform:skew(角度)

.box{
    /* 不写默认是X轴,左右摇摆 */
    transform:skew(-30deg);
    /* Y轴代表上下摇摆 */ 
    transform:skewY(-30deg);
}
利用斜切来实现某个元素的擦亮效果
.box {
    /* 父相 */
      position: relative;
      width: 300px;
      height: 200px;
      margin: 100px;
      background-color: #000;
}

.box::after {
    /* 子绝 */
     position: absolute;
     left: -120%;
    /* 伪元素必写属性 */ 
     content: "";
     width: 100%;
     height: 100%;
    /* 将子盒子的左右颜色变为透明。中间的白色盒子变为半透明 */
     background-image: linear-gradient(to right,
       transparent, rgba(255, 255, 255, 0.459),transparent);
    /* 根据所需效果更换角度 */
     transform: skew(-30deg);
}

.box:hover::after {
     left: 120%;
     transition: .5s;
}

渐变

渐变是多个颜色逐渐变化的视觉效果

背景渐变的本质是背景图片

属性:background-image : linear-gradient

方向:1.从上到下(默认值) 2.角度 0deg 从下到上

.box {
    /* to right 意味着去到右侧,所以是从左侧开始进行颜色的排序,所有的值均为逗号分隔 */
    background-image:linear-gradient(to right,#6cf,#ff0,#ccf);
    /* to right top 意味着去到右上角,所以是从左下角开始进行颜色的排序 */
    background-image:linear-gradient(to right top,#6cf,#ff0,#ccf);
    /* 角度以时钟为值 90deg时针指向右侧居中,意味着从左侧去到右侧 45deg时针指向右上角,意味着从左下角去到右上角*/
    background-image:linear-gradient(90deg,#6cf,#ff0,#ccf);
}
渐变色文字
.box {
    /* 浮动的块级元素会失去独占一行的特性,默认内容由内容撑开 */
    float:left;
    /* 文字设置大小 */
    font-size:100px;
    /* 让颜色从左侧到右侧序列显示 */
    background-image:linear-gradient(to right,#6cf,#ff0,#0a0,tomato);
    /* 背景裁切,让背景只显示在文字上 */
    background-clip:text;
    /* 目前大部分浏览器并不兼容,需要添加浏览器私有前缀 webkit为谷歌浏览器内核 */
    -webkit-background-clip:text;
    /* 因为文字本身有颜色,背景无法显示,需要将文字设为透明,方可显示背景 */
    color:transparent;
}

属性选择器

在一些极特殊的情景下,可以对我们的代码进行优化

书写在标签名后面以 属性名=“属性值”格式书写的都为标签的属性

属性选择器符号 [ ]

1.指定属性名

/* 选中HTML结构中带有 type 的属性标签 后续设置样式 */
[type] { }
/* 选中HTML结构中带有 type="text" 的属性标签 后续设置样式 */
[type="text"] { }

2.模糊匹配

/* 选中属性值开头带有 red 的属性标签 后续设置样式 */
[class^="red"] { }
/* 选中属性值结尾带有 green 的属性标签 后续设置样式 */
[class$="green"] { }
/* 选中属性值中(不限开头结尾)带有 box 的属性标签 后续设置样式 */
[class*="box"] { }