前端CSSHTMLwebCSS 学习笔记(八):移动 Web 开发之平面转换与渐变效果
woodfish使用位移、缩放、旋转、渐变效果
01-平面转换
简介
作用:为元素添加动态效果,一般与过渡配合使用
概念:改变盒子在平面内的形态(位移、旋转、缩放、倾斜)

平面转换也叫 2D 转换,属性是 transform
平移
1
| transform: translate(X轴移动距离, Y轴移动距离);
|
- 取值
- 像素单位数值
- 百分比(参照盒子自身尺寸计算结果)
- 正负均可
- 技巧
- translate() 只写一个值,表示沿着 X 轴移动
- 单独设置 X 或 Y 轴移动距离:translateX() 或 translateY()
定位居中


案例-双开门

1 2 3 4
| <div class="father"> <div class="left"></div> <div class="right"></div> </div>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| * { margin: 0; padding: 0; }
.father { display: flex; margin: 0 auto; width: 1366px; height: 600px; background-image: url(./images/bg.jpg);
overflow: hidden; }
.father .left, .father .right { width: 50%; height: 600px; background-image: url(./images/fm.jpg);
transition: all .5s; }
.father .right { background-position: right 0; }
.father:hover .left { transform: translate(-100%); }
.father:hover .right { transform: translateX(100%); }
|
旋转
1
| transform: rotate(旋转角度);
|
- 取值:角度单位是 deg
- 技巧
- 取值正负均可
- 取值为正,顺时针旋转
- 取值为负,逆时针旋转
转换原点
默认情况下,转换原点是盒子中心点
1
| transform-origin: 水平原点位置 垂直原点位置;
|
取值:
- 方位名词(left、top、right、bottom、center)
- 像素单位数值
- 百分比
案例-时钟

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| .hour { width: 6px; height: 50px; background-color: #333; margin-left: -3px; transform: rotate(15deg); transform-origin: center bottom; }
.minute { width: 5px; height: 65px; background-color: #333; margin-left: -3px; transform: rotate(90deg); transform-origin: center bottom; }
.second { width: 4px; height: 80px; background-color: red; margin-left: -2px; transform: rotate(240deg); transform-origin: center bottom; }
|
多重转换
多重转换技巧:先平移再旋转
1
| transform: translate() rotate();
|
- 多重转换原理:以第一种转换方式坐标轴为准转换形态
- 旋转会改变网页元素的坐标轴向
- 先写旋转,则后面的转换效果的轴向以旋转后的轴向为准,会影响转换结果
缩放
1 2
| transform: scale(缩放倍数); transform: scale(X轴缩放倍数, Y轴缩放倍数);
|
- 技巧
- 通常,只为 scale() 设置一个值,表示 X 轴和 Y 轴等比例缩放
- 取值大于1表示放大,取值小于1表示缩小
案例-播放特效

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| .box li { overflow: hidden; }
.pic { position: relative; }
.pic::after { position: absolute; left: 50%; top: 50%;
content: ''; width: 58px; height: 58px; background-image: url(./images/play.png); transform: translate(-50%, -50%) scale(5); opacity: 0;
transition: all .5s; }
.box li:hover .pic::after { transform: translate(-50%, -50%) scale(1); opacity: 1; }
|
倾斜
取值:角度度数 deg
02-渐变
渐变是多个颜色逐渐变化的效果,一般用于设置盒子背景
分类:


线性渐变
1 2 3 4 5 6
| background-image: linear-gradient( 渐变方向, 颜色1 终点位置, 颜色2 终点位置, ...... );
|
取值:
案例-产品展示


1 2 3 4 5
| <div class="box"> <img src="./images/product.jpeg" alt="" /> <div class="title">OceanStor Pacific 海量存储斩获2021 Interop金奖</div> <div class="mask"></div> </div>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| .mask { position: absolute; left: 0; top: 0; width: 100%; height: 100%; background-image: linear-gradient( transparent, rgba(0,0,0,0.5) ); opacity: 0;
transition: all .5s; }
.box:hover .mask { opacity: 1; }
|
径向渐变
1 2 3 4 5 6
| background-image: radial-gradient( 半径 at 圆心位置, 颜色1 终点位置, 颜色2 终点位置, ...... );
|
取值:
- 半径可以是2条,则为椭圆
- 圆心位置取值:像素单位数值 / 百分比 / 方位名词
03-综合案例

导航-频道
箭头旋转
1 2 3
| .x-header-nav .nav-item:hover .icon-down { transform: rotate(-180deg); }
|
频道列表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| .channel-layer { position: absolute; top: 60px; left: 50%; z-index: -2; width: 1080px; height: 120px; padding: 10px; margin-left: -540px; color: #72727b; background-color: #f5f5f5; border: 1px solid #e4e4e4; border-top: none; transition: all 0.5s; transform: translateY(-120px); }
.x-header-nav .nav-item:hover .channel-layer { transform: translateY(0); }
|
渐变按钮
搜索按钮
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| .x-header-search form .btn { position: absolute; top: 0; right: 0; width: 60px; height: 40px; line-height: 40px; text-align: center; background-color: #f86442; border-top-right-radius: 20px; border-bottom-right-radius: 20px; background-image: linear-gradient( to right, rgba(255, 255, 255, 0.3), #f86442 ); }
|
登录按钮
1 2 3 4 5 6 7 8 9 10 11 12 13
| .card .card-info .login { padding: 3px 34px; color: #fff; background-color: #ff7251; border-radius: 30px; box-shadow: 0 4px 8px 0 rgb(252 88 50 / 50%); background-image: linear-gradient( to right, rgba(255, 255, 255, 0.2), #ff7251 ); }
|
客户端按钮
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| .download .dl .dl-btn { width: 68px; height: 34px; line-height: 34px; color: #fff; text-align: center; border-radius: 4px; background-image: radial-gradient( 50px at 10px 10px, rgba(255, 255, 255, 0.5), transparent ); }
|
轮播图
1 2 3 4 5 6 7 8 9 10 11 12
| .banner .banner-list .banner-item.left { z-index: 0; transform: translate(-160px) scale(0.8); transform-origin: left center; }
.banner .banner-list .banner-item.right { z-index: 0; transform: translate(160px) scale(0.8); transform-origin: right center; }
|
猜你喜欢
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| .album-item .album-item-box::after { position: absolute; left: 0; top: 0; content: ''; width: 100%; height: 100%; background: rgba(0,0,0,.5) url(../assets/play.png) no-repeat center / 20px; opacity: 0; transition: all .5s; }
.album-item .album-item-box:hover::after { opacity: 1; background-size: 50px; }
.album-item .album-item-box:hover img { transform: scale(1.1); }
|