<style>
/* 定义字体名称和来源 */
@font-face {
/* 定义字体名字 */
font-family: 字体名字;
/* 定义字体来源 */
src: url(字体来源文件1),
…… url(字体来源文件n);
}
/* 引用该字体 */
/* 需要引用的元素 */
p {
font-family: 字体名字;
/* 引用字体 */
}
</style>
<body>
<p>Web design</p>
</body>
目标:使用字体图标技巧实现网页中简洁的图标效果
<link rel="stylesheet" href="./iconfont/iconfont.css">
<span class="iconfont icon-xxx"></span>
<span>  </span>
span {
font-size: 'iconfont';
}
.icon-arrow-down:berfore {
content:'\e665';
}
.iconfont {
font-size: 30px;
} /* 该样式会生效 */
span {
font-size: 30px;
} /* 该样式不会生效,因为标签选择器比类选择器权重低 */
思考:如果图标库没有项目所需的图标怎么办?
答:iconfont网站上传矢量图生成字体图标
iconfont上传矢量图步骤:
工作中:
目标:使用transform属性实现元素的位移、旋转、缩放等效果
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 */
取值(正负均可)
技巧
快速体验
<!-- 移动盒子位置方法:定位 盒子的外边距 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注意点
绝对定位中垂直水平居中案例
/* 需求:让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%);
}
transform: rotate(角度);
注意:角度单位是degtransform: rotate(angle);
/* 样式代码 */
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>
transform-origin: 原点水平位置 原点垂直位置;
transform-origin: x, y;
/* 样式代码 */
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>
transform: scale(x轴缩放倍数, y轴缩放倍数);
transform: scale(x, y);
<!-- 样式代码 -->
<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>
background-image: linear-gradient(
to 渐变方向,
颜色1,
颜色2,
....
);
div {
backround-image: linear-gradient(
to bottom,
transparent,
rgba(0, 0, 0, .6)
);
}