1.引入样式表
2.引入内容
<link rel="stylesheet" href="./iconfont/iconfont.css">
<style>
/* .iconfont {
font-size: 60px;
} */
style>
<body>
<i class="iconfont icon-favorites-fill">i>
body>
<body>
<div class="nav">
<ul>
<li>
<a href="#">
<span class="iconfont icon-cart-Empty-fill orange">span>
<span>购物车span>
<span class="iconfont icon-arrow-down">span>
a>
li>
ul>
div>
body>
1.与设计沟通,得到svg格式矢量图
2.在iconfont网站上传图标,下载使用
.son {
position: absolute;
left: 50%;
top: 50%;
margin-left: -100px;
margin-top: -50px;
width: 200px;
height: 100px;
background-color: pink;
}
.son {
position: absolute;
left: 50%;
top: 50%;
/* margin-left: -100px;
margin-top: -50px; */
transform: translate(-50%, -50%);
width: 200px;
height: 100px;
background-color: pink;
}
<style>
* {
margin: 0;
padding: 0;
}
.box {
width: 1366px;
height: 600px;
margin: 0 auto;
background: url('./images/bg.jpg');
overflow: hidden;(超出父级的部分隐藏)
}
/* 伪元素是行内,设置宽高不生效 */
.box::before,
.box::after {
float: left;
content: '';
width: 50%;
height: 600px;
background-image: url(./images/fm.jpg);
transition: all 2s;(设置渐变效果)
}
.box::after {
background-position: right 0;
}
/* 鼠标移入的时候的位置改变的效果 */
(注意css选择器的写法,一开始做就因为没有写对导致没有效果)
.box:hover::before {
transform: translateX(-100%);
}
.box:hover::after {
transform: translateX(100%);
}
style>
<body>
<div class="box">
div>
body>
.box:hover img {
/* 边走边转 */
transform: translate(600px) rotate(720deg);
/* 旋转可以改变坐标轴向 */
/* transform: rotate(720deg) translate(600px); */
/* taransform具有层叠性 */
/* transform: translate(600px);
transform: rotate(720px); */
}
.box .pic::after {
/* 播放按钮居中显示 */
position: absolute;
top: 50%;
left: 50%;
/* transform: translate(-50%, -50%); */
margin-left: -29px;
margin-top: -29px;
content: '';
width: 58px;
height: 58px;
background-image: url(./images/play.png);
/* 缩放原来的五倍 */
transform: scale(5);
transition: all 0.5s;
opacity: 0;
}
.box .pic::after {
/* 播放按钮居中显示 */
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) scale(5);注意这里
/* margin-left: -29px;
margin-top: -29px; */
content: '';
width: 58px;
height: 58px;
background-image: url(./images/play.png);
/* 缩放原来的五倍 */
/* transform: scale(5); */
transition: all 0.5s;
opacity: 0;
}
.box li:hover .pic::after {
transform: translate(-50%, -50%) scale(1);注意这里
opacity: 1;
}
.box li:hover .pic::after {
transform: scale(1);
opacity: 1;
}
background-image: linear-gradient( transparent, rgba(0, 0, 0, .6));
(transparent用来指定透明色)
.box:hover {
/* transform: translate3d(50px, 100px, 200px); */
transform: translateX(100px);
transform: translateY(100px);
transform: translateZ(100px);
}
<head>
<meta charset="UTF-8">
<title>透视效果title>
<style>
body {
perspective: 1000px;(要注意这个属性是添加给效果盒子的父级的!)
}
.box {
width: 200px;
height: 200px;
margin: 100px auto;
background-color: pink;
transition: all 0.5s;
}
.box:hover {
transform: translateZ(200px);
}
style>
head>
<body>
<div class="box">div>
body>
.box {
/* 透视效果:近大远小,近实远虚 */
perspective: 1000px;
}
.box img:hover {
transform: rotateZ(360deg);
}
.box img:hover {
transform: rotateX(60deg);
transform: rotateX(-120deg);
}
.box img:hover {
transform: rotateY(60deg);
}
.cube {
position: relative;
width: 200px;
height: 200px;
margin: 100px auto;
/* background-color: pink; */
transition: all 2s;
transform-style: preserve-3d;(呈现3D效果)(要注意这个属性是添加给效果盒子的父级的!)
}
.cube:hover {
transform: rotateY(180deg);
}
<style>
ul {
margin: 0;
padding: 0;
list-style: none;
}
.navs {
width: 300px;
height: 40px;
margin: 50px auto;
}
.navs li {
position: relative;
float: left;
width: 100px;
height: 40px;
line-height: 40px;
transition: all .5s;
transform-style: preserve-3d;
/* 旋转: 让大家在写代码的过程中看到立体盒子 */
/* transform: rotateX(-20deg) rotateY(30deg); */
/* 测试缩放效果 */
/* transform: scale3d(0.5, 1.1, 2); */
}
.navs li a {
position: absolute;
top: 0;
left: 0;
display: block;
width: 100%;
height: 100%;
text-align: center;
text-decoration: none;
color: #fff;
}
.navs li a:first-child {
background-color: green;
transform: translateZ(20px);
}
.navs li a:last-child {
background-color: orange;
/* 躺平x轴旋转 立方体的顶部,位移z(确保看到这个盒子) */
transform: rotateX(90deg) translateZ(20px);
}
/* li:hover 立方体旋转 */
.navs li:hover {
transform: rotateX(-90deg);
}
style>
<body>
<div class="navs">
<ul>
<li>
<a href="#">首页a>
<a href="#">Indexa>
li>
<li>
<a href="#">登录a>
<a href="#">Logina>
li>
<li>
<a href="#">注册a>
<a href="#">Registera>
li>
ul>
div>
body>
transform: scale3d(0.5, 1.1, 2);
1.定义动画:
(第一种)
@keyframes 动画名称{
form{}
to{}
}
(第二种)
@keyframes 动画名称{
0%{}
10%{}
15%{}
100%{}
}
@keyframes change {
form {
width: 200px;
}
to {
width: 600px;
}
}
@keyframes change {
0% {
width: 200px;
}
50% {
width: 500px;
height: 300px;
}
100% {
width: 800px;
height: 500px;
}
}
/* 百分比指的是动画总时长的占比 */
2.使用动画
anomation: 动画名称 动画花费时长;
.box {
width: 200px;
height: 100px;
background-color: pink;
/* 使用动画 */
animation: change 1s;
}
/* animation: change 1s linear; */
animation: change 1s steps(3) 1s(延迟时间) 3(重复次数);
/* 无限循环 */
animation: change 1s infinite;
/* 反复执行状态 */
/* animation: change 1s infinite alternate(反复执行属性); */
/* 默认值, 动画停留在最初的状态 */
/* animation: change 1s backwards(默认值); */
/* 动画停留在结束状态 */
/* animation: change 1s forwards; */
属性 | 作用 | 取值 |
---|---|---|
animation-name | 动画名称 | |
animation-duration | 动画时长 | |
animation-delay | 延迟时间 | |
animation-fill-mode | 动画执行完毕时状态 | forwords:最后一帧状态 backwards:第一阵状态 |
animation-timing-function | 速度曲线 | steps(数字):逐帧动画 |
animation-iteration-count | 重复次数 | infinite为无限循环 |
animation-direction | 动画执行方向 | alternate为反向 |
animation-play-state | 暂停动画 | paused为暂停,通常配合:hover使用 |
animation: move 1s steps(12) infinite, run 1s forwards;(多个动画效果可以用逗号隔开)
<head>
<meta charset="UTF-8">
<title>精灵动画title>
<style>
.box {
/* 1680/12 : 保证显示区域的尺寸和一个精灵小图的尺寸相同 */
width: 140px;
height: 140px;
/* border: 1px solid #000; */
background-image: url(./images/bg.png);
/* 12: 精灵小图的个数 */
animation: move 1s steps(12) infinite, run 1s forwards;
}
@keyframes move {
form {
background-position: 0 0;
}
to {
/* 1680整个精灵图的宽度 */
background-position: -1680px;
}
}
/* 定义一个盒子移动的动画 */
@keyframes run {
/* 如果动画的初始状态和盒子的默认状态相同可以省略开始状态的代码 */
form {
transform: translateX(0);
}
to {
transform: translate(800px);
}
}
style>
head>
<body>
<div class="box">div>
body>
"box">
1
2
3
属性值 | 作用 |
---|---|
row | 行,水平(默认) |
column | 列,垂直(重点) |
row-reverse | 行,从右向左 |
column-reverse | 列,从上向下 |
.box li {
display: flex;
/* 1. 先确定主轴方向; 2. 再选择对应的属性实现主轴或侧轴的对齐方式 */
/* 修改主轴方向: 列 */
flex-direction: column;
/* 视觉效果: 实现盒子水平居中 */
align-items: center;
/* 视觉效果: 垂直居中 */
justify-content: center;
width: 80px;
height: 80px;
border: 1px solid #ccc;
}
.box {
display: flex;
/* 默认值,不换行 */
/* flex-wrap: nowrap; */
/* 弹性盒子换行 */
flex-wrap: wrap;(案例中是加在父级上的)
height: 500px;
border: 1px solid #000;
}
.orders li .goods {
display: flex;
flex: 1;
padding: 17px 0 14px 12px;
align-items: center;
margin-right: 120px;
}
.orders .goods .txt {
flex: 1;
/* 溢出的时候显示省略号 */
/* 弹性盒子的尺寸可以被内容撑开,不换行的文字撑开 */
width: 0;
}
.orders .goods .txt h5 {
text-overflow: ellipsis;
white-space: nowrap;(不换行)
overflow: hidden;(溢出隐藏)
}
.box {
/* width: 10px; */
width: 5rem;
height: 5rem;
background-color: pink;
}
/* 1rem = 1html标签字号大小 */
html {
font-size: 12px;
}
.box {
width: 5rem;
height: 3rem;
background-color: pink;
font-size: 12rem;
}
目标:能够使用媒体查询设置差异化的css样式
/* 1. 不同的视口, HTML标签字号不同, 字号是视口宽度的1/10 */
@media (width:320px) {
html {
font-size: 32px;
}
}
@media (width:375px) {
html {
font-size: 37.5px;
}
}
@media (width:414px) {
html {
font-size: 41.4px;
}
.father {
color: red;
width: 1.81333333rem;
}
.father .son {
background-color: pink;
}
// 单行注释
/*
块注释
第二行
第三行
*/
.box {
width: 100 + 10px;
width: 100 - 20px;
width: 100 * 2px;
// 除法
// 68 > rem
width: (68 / 37.5rem);
// height: 29 ./ 37.5rem;
height: 29 / 37.5rem;
}
.father {
width: 100px;
.son {
color: pink;
// & 表示当前选择器
&:hover {
color: green;
}
}
&:hover {
color: orange;
}
}
// .father:hover {}(方便代码迁移)
.father {
width: 100px;
}
.father .son {
color: pink;
}
.father .son:hover {
color: green;
}
// 1. 定义. 2.使用
@colors:blue;
.box{
color: @color;
}
.father{
background-color: @colors;
}
.aa{
color: @colors;
}
.box {
color: blue;
}
.father {
background-color: blue;
}
.aa {
color: blue;
}
@import './01-体验less.less';(import后面加空格,后面加分号)
@import './02-注释';(如果引入的是less文件,则可以不用写.less后缀)
// out: ./qqq/daqiu.css
// out: ./abc/
.box {
color: red;
}
// out: ./
//68 * 29 --vw
.box {
width: (68/3.75vw);
height: (29/3.75vw);
background-color: pink;
}
.box2{
//vh
width: (68/6.67vh);
height: (27/6.67vh);
background-color: green;
}
// 不允许宽高混用,避免全面屏的影响
.box {
// 68 vw * 29 vh
width: (68 / 3.75vw);
height: (29 / 6.67vh);
background-color: pink;
}
@media 关键词 媒体类型 and (媒体属性) { css代码 }
类型名称 | 值 | 描述 |
---|---|---|
屏幕 | screen | 带屏幕的设备 |
打印预览 | 打印预览模式 | |
阅读器 | speech | 屏幕阅读模式 |
不区分类型 | all | 默认值,包括以上3种类型 |
特性名称 | 属性 | 值 |
---|---|---|
视口的宽高 | width,height | 数值 |
视口最大宽或者高 | max-width,max-height | 数值 |
视口最小宽或者高 | min-width,min-height | 数值 |
屏幕方向 | orientation | portrait:竖屏;landscape横屏 |
<link rel="stylesheet" href="./one.css" media="(min-width: 992px)">
<link rel="stylesheet" href="./two.css" media="(min-width: 1200px)">
<link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css">
超小屏幕 | 小屏幕 | 中等屏幕 | 大屏幕 | |
---|---|---|---|---|
响应断点 | <768px | >=768px | >=992px | >=1200px |
别名 | xs | sm | md | lg |
容器宽度 | 100% | 750% | 970% | 1170% |
类前缀 | col-xs- | col-sm- | col-md- | col-lg- |
列数 | 12 | 12 | 12 | 12 |
列间隙 | 30px | 30px | 30px | 30px |
<body>
<div class="container">1div>
<div class="container">
<div class="row">2div>
div>
<div class="container-fluid">3div>
body>
<script src="./js/jquery.js">script>
<script src="./bootstrap-3.4.1-dist/js/bootstrap.min.js">script>