css3新增特性

news/2024/10/18 22:35:03/

1. 初始化

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><!-- CSS3现状:1. 新增的CSS3特性有兼容性问题, ie9+才支持;2. 移动端支持由于PC端;3. 不断改进中;4. 应用相对广泛;5. 现阶段主要学习: 新增选择器 和 盒子模型 以及 其他特性;新增选择器:属性选择器, 结构伪类选择器, 伪元素选择器 (参考03_CSS选择器);  -->
</body>
</html>

2. css3盒子模型

2.1 css3盒子模型

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- CSS3中可以通过box-sizing来指定盒模型, 有两个值: content-box, border-box, 这样我们计算盒子大小的方式就发生了改变; 可以分为两种情况:(1) box-sizing: content-box; 盒子大小为: width + padding + border(这是默认的, 我们之前接触的都是这种) (2) box-sizing: border-box;  盒子大小一直是初始指定的width(也即是padding, border是通过消耗自身原有的宽度来进行变化的)--><style>* {margin: 0;padding: 0;}/* 1. 由于此种情况下, border和padding会影响盒子的实际大小, 所以将由 200*200 -> 280 * 280 */div {width: 200px;height: 200px;background-color: red;border: 20px solid green;padding: 20px;box-sizing: content-box;       /* 默认就是此值 */}/* 2. 此种情况下, 添加的border或padding都是通过消耗自身原有的宽度来完成的, 最终盒子大小和初始化时是一样大的! */#test {border-color: yellow;background-color: blue;box-sizing: border-box;}/* 3. p没有指定宽度, 则默认和父亲(body)一样宽; *//* 但是当其指定margin-left: 100px时, 会发现其宽度减少了100px; 因为这是外边距嘛! *//* 此时添加padding-left属性, 按道理应该会撑开盒子, 但是发现并没有撑开盒子, 而是在盒子自身的基础上进行炮制(与box-sizing: content-box/border-box没有关系); */p {height: 100px;background-color: skyblue;margin-left: 100px;padding-left: 300px;}</style>
</head>
<body><!-- <div>HelloWorld</div> --><!-- <div id="test">WorldHello</div> --><p>little find</p>
</body>
</html>

在这里插入图片描述

2.2 盒子模型新发现

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* div2并没有指定宽度, 则默认和父亲(div1)一样宽; *//* 但是当其指定margin-left: 20px时, 会发现其宽度减少了20px, 变成380px, 因为这是外边距嘛! *//* 此时给其添加padding-left属性, 按道理应该会撑开盒子, 但是发现并没有撑开盒子, 而是在盒子自身的基础上进行炮制(与box-sizing: content-box/border-box都没有关系); 好比说这个margin-left: 20px(div2), 就是与父盒子div1之间的距离, 好比说是div1将盒子div2推到了距离自己20px的位置处, 此时div2的宽度由与父亲等宽(400px)变成380px了;而padding-left: 20px(div2), 则是在div2的380px的基础之上消耗自身, 产生了内边距(此后div2仍保持380px,只不过是其含有30px的内边距); *//* 重要结论:如果子盒子没有指定宽度, 则默认和父盒子一样宽;当给子盒子添加margin-left时, 会影响子盒子的宽度;而给子盒子添加padding-left属性时, 是在其自身炮制的, 与box-sizing属性没有一点关系; *//* 此种现象在品优购项目中common.css中体现了:.dropdown .dd ul li {height: 31px;line-height: 31px;margin-left: 2px;padding-left: 10px;} */#div1 {width: 400px;height: 200px;background-color: purple;}.div2 {height: 50px;background-color: red;margin-left: 20px;padding-left: 60px;}</style>
</head><body><div id="div1"><div class="div2">hao</div></div><br><div style="background-color: green;">jkljlk</div>
</body></html>

在这里插入图片描述

3. css3之filter属性

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- 1. filter属性用来将模糊或颜色偏移等图形效果应用于元素; filter:函数();eg: filter: blur(5px);     //blur值越大越模糊2. --><style>img {filter: blur(5px);}img:hover {filter: blur(0);}</style>
</head>
<body><img src="./img.png" alt="">
</body>
</html>

在这里插入图片描述

4. calc函数

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- 1. calc()函数让你在声明CSS属性值时执行一些计算; --><style>.father {width: 300px;height: 200px;background-color: blue;}.son {width: calc(100% - 30px);       /* 表示在父盒子的宽度之上减去30px; */height: 30px;background-color: yellow;}</style>
</head>
<body><div class="father"><div class="son"></div></div>
</body>
</html>

在这里插入图片描述

5. css3之过渡属性

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- CSS3过渡:1. 过渡: 是CSS3中具有颠覆性的特征之一, 我们可以在不适用flash动画或JavaScript的情况下,在元素从一种样式变换为另一种样式时给元素添加效果;2. 过渡动画: 是从一个状态渐渐的过渡到另外一个状态;3. 虽然低版本浏览器不支持(ie9以下版本),但是不会影响页面布局;4. 现在通常和:hover一起搭配使用; 5. transition: 属性 持续时间 曲线 何时开始(延迟触发时间)(时间的单位都是s, 必须写单位);属性:      想要变化的CSS属性, 宽度, 高度 ,背景颜色, 内外边距都可以, 如果所有属性都变化过渡, 写一个all就可以;持续时间:  0.5秒可以简写为.5s; 必须写单位s;运动曲线:  默认是ease; 何时开始:  设置延迟触发时间, 默认是0s; 必须写单位s;--><style>/* 以下案例:当鼠标悬浮时, div的某些属性将发生变化, 初始状态 -> hover时的状态;但是这种状态的切换是单调的(运行可知), 为了对该切换过程进行一个调节,我们可以添加一个过渡给该切换过程, 使其看起来不再像之前那样单调, 而是使其看起来更具动画效果;过渡:就是该某个切换过程添加一个过渡, 使其看起来更加趣味; */div {width: 200px;height: 100px;background-color: green;/* 1. 延迟0.3s后触发 *//* transition: width 1s ease .3s;       *//* 2. 如果想要写多个属性, 中间需用逗号隔开; *//* transition: width .5s, height .5s; *//* 3. 直接写all来得更快; *//* transition: all .5s; */}div:hover {width: 400px;height: 200px;background-color: blue;}</style>
</head>
<body><div></div>
</body>
</html>

请添加图片描述

6. 进度条

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.box {width: 150px;height: 15px;border: 1px solid red;border-radius: 7px;padding: 1px;}.bar {width: 50%;height: 100%;border-radius: 7px;background-color: red;transition: all .7s;}.box:hover .bar {width: 100%;}</style>
</head>
<body><div class="box"><div class="bar"></div></div>
</body>
</html>

请添加图片描述

7. css2-2D转换

7.1 translate

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 语法:transform: translate(x, y);转换是CSS3中具有颠覆性的特征之一, 可以实现元素的位移、旋转、缩放等效果;1. 移动:translate(x,y), translateX(), translateY(), translateZ(), translate3d();(1) translate最大的优点就是:不会影响其他元素的位置; (2) traslate中的百分比单位是相对于自身来说的; (translate(50%, 50%))(3) 对行内标签没有影响; 2. 旋转:rotate()3. 缩放:scale()*/* {margin: 0;padding: 0;}div {width: 200px;height: 200px;background-color: red;/* transform: translate(100px, 100px); *//* transform: translateX(100px); */}/******************** translate特点(1)验证: *********************/div:first-child {transform: translate(30px, 30px);}div:last-child {background-color: purple;}/******************** translate特点(2)验证: *********************/div:last-child {transform: translateX(-50%);     /* 相当沿x轴负向移动自身宽度的50%距离 */}/******************** translate特点(3)验证: *********************/span {transform: translate(300px, 300px);}</style>
</head>
<body><div></div><div></div>
</body>
</html>

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- 定位加合tranlate()实现盒子水平居中:子盒子居中显示在父盒子中; --><style>div {position: relative;width: 500px;height: 500px;background-color: purple;}p {position: absolute;top: 50%;left: 50%;width: 200px;height: 200px;background-color: blue;/* 1. 之前的写法 *//* margin-top: -100px; *//* margin-left: -100px; *//* 2. 现在 */transform: translate(-50%, -50%);}</style>
</head>
<body><div><p></p></div>
</body>
</html>

在这里插入图片描述

7.2 rotate

7.2.1 rotate-1

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 语法: transform: rotate(度数); (1) 单位是deg;[ rotate(deg) ](2) 度数为正 -> 顺时针; 度数为负 -> 逆时针; (3) 旋转中心是点是元素的中心; */img {width: 150px;height: 150px;transform: rotate(45deg);border-radius: 50%;border: 5px solid green;transition: all .3s;}img:hover {transform: rotate(360deg);}</style>
</head>
<body><img src="./pic.jpg" alt="">
</body>
</html>

请添加图片描述

7.2.2 rotate-2

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* transform-origin: x y;设置转换中心点;(1) x, y默认转换的中心点是元素的中心点(50%, 50%); (2) 还可以给x, y设置像素 或者 方位名词(top, bottom, left, right, center); */div {width: 200px;height: 200px;background-color: green;margin: 0 auto;transition: all .5s;/* transform-origin: left bottom; */transform-origin: 50px 50px;}div:hover {transform: rotate(360deg);}</style>
</head>
<body><div></div>
</body>
</html>

请添加图片描述

7.2.3 rotate应用1

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 1. 手动实现下三角 */div {position: relative;width: 250px;height: 35px;border: 1px solid #000;}div::after {content: '';position: absolute;top: 8px;right: 15px;width: 10px;height: 10px;border-right: 1px solid #000;border-bottom: 1px solid #000;transform: rotate(45deg);transition: all .2s;}div:hover::after {transform: rotate(225deg);}</style>
</head>
<body><div></div>
</body>
</html>

请添加图片描述

7.2.4 rotate应用2

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 旋转进入/淡出: */div {float: left;width: 200px;height: 200px;border: 1px solid red;margin: 10px;overflow: hidden;}div:before {content: 'Hello';display: block;width: 100%;height: 100%;background-color: green;transform: rotate(180deg);transform-origin: left bottom;transition: all .5s;}div:hover::before {transform: rotate(0deg);}</style>
</head>
<body><div></div><div></div><div></div>
</body>
</html>

请添加图片描述

7.3 scale

7.3.1 scale

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 语法格式: transform: scale(x, y); 1. scale(1): 只写一个参数, 则第二个参数默认和第一个参数相同; 2. scale最大优势:默认是以中心点缩放, 可以设置中心点, 而且不影响其他盒子; */div {width: 200px;height: 200px;background-color: green;margin: 0 auto;transform-origin: left bottom;}div:hover {transform: scale(2, 2);}</style>
</head>
<body><div></div>
</body>
</html>

请添加图片描述

7.3.2 scale应用1

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 图片放大案例: */div {float: left;border: 2px solid red;margin: 10px;overflow: hidden;}div img:hover {transform: scale(1.1);transition: all .3s;}</style>
</head><body><div><a href="#"><img src="./scale.jpg" alt=""></a></div><div><a href="#"><img src="./scale.jpg" alt=""></a></div><div><a href="#"><img src="./scale.jpg" alt=""></a></div>
</body></html>

请添加图片描述

7.3.3 scale应用2

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 分页按钮案例: */li {float: left;width: 30px;height: 30px;margin: 10px;border: 1px solid green;border-radius: 50%;text-align: center;line-height: 30px;list-style: none;cursor: pointer;transition: all .4s;}li:hover {transform: scale(1.2);}</style>
</head>
<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>
</html>

请添加图片描述

7.4 注意

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 2D转换的连写:如果同时用有位移和其他属性, 那么需要把位移放到最前面; 否则可能与预期结果不一致;  */div {width: 200px;height: 200px;background-color: blue;margin: 0 auto;transition: all .5s;}div:hover {/* transform: rotate(180deg) translate(150px, 50px)  scale(1.2); error*/transform: translate(150px, 50px) rotate(180deg) scale(1.2);}</style>
</head>
<body><div></div>
</body>
</html>

8. css3动画

8.1 init

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 1. 动画:是CSS3中具有颠覆性的特征之一, 可通过设置多个节点来精确控制一个或一组动画, 常用来实现复杂的动画效果;相比较过渡, 动画可以实现更过变化, 更多控制, 连续自动播放等;  2. 使用动画三大步骤:(1) 定义动画:@keyframes 动画名称 { ... };(2) 调用动画: animation-name: 已定义的动画名称; (3) 持续时间:animation-time: 持续时间;  *//* 1. 定义动画 */@keyframes animation1 {0% {transform: translateX(0px);}100% {transform: translateX(1000px);}}div {width: 200px;height: 200px;background-color: green;/* 2. 调用动画 */animation-name: animation1;/* 3. 动画持续时间 */animation-duration: 3s;}</style>
</head>
<body><div></div>
</body>
</html>

请添加图片描述

8.2 动画序列

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- 动画序列:(1) 0%是动画的开始, 100%是动画的完成, 这样的规则就是动画序列; (2) 使用百分比来规定变化发生的时间, 或用关键词"from"和"to", 等同于0% 和 100%;--><style>@keyframes move {0% {transform: translate(0, 0);}25% {transform: translate(1000px, 0);} 50% {transform: translate(1000px, 500px);                }75% {transform: translate(0, 500px);                }100% {transform: translate(0, 0);}}div {width: 200px;height: 200px;background-color: green;animation-name: move;animation-duration: 10s;}</style>
</head>
<body><div></div>
</body>
</html>

请添加图片描述

8.3 动画属性

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- 动画属性:(1)  @keyframes:                规定动画;(2)  animation:                 动画简写属性; (3)  animation-name:            动画名; (必须的)(4)  animation-duration:        动画持续时间; (必须的)(5)  animation-timing-function: 动画速度曲线; (默认是ease)(6)  animation-delay:           动画延迟触发时间; (默认是0)(7)  animation-iteration-count: 动画播放次数; (默认是1, 还有infinite)(8)  animation-direction:       动画是否在下一周期逆向播放; (默认是normal, alternate逆向播放)(9)  animation-play-state:      动画是否正在运行或暂停; (默认是running, 还有pause)(经常hover等其他配合使用)(10) animation-fill-mode:       动画结束后的状态; (停留在结束状态forwards; 回到起始状态backwards(默认的))--><style>@keyframes move {0% {transform: translate(0, 0);}100% {transform: translate(1000px, 0);}}div {width: 200px;height: 200px;background-color: green;animation-name: move;animation-duration: 3s;animation-iteration-count: infinite;/* animation-direction: alternate; */animation-fill-mode: backwards;}/* 鼠标经过时动画暂停 */div:hover {animation-play-state: paused;}</style>
</head><body><div></div>
</body></html>

请添加图片描述

8.4 动画属性简写

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- animation: 动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或结束的状态(fill-mode);  --><style>@keyframes move {0% {transform: translate(0, 0);}100% {transform: translate(1000px, 0);}}div {width: 200px;height: 200px;background-color: green;/* 前两个属性必须写 */animation: move 2s linear 0s infinite  forwards;}</style>
</head><body></body><div></div>
</html>

8.5 案例1

map.png

在这里插入图片描述

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>body {background-color: #333;}.map {position: relative;width: 747px;height: 616px;background: url(./map.png) no-repeat;margin: 0 auto;}.BJ {position: absolute;top: 227px;right: 174px;}.TB {top: 499px;right: 59px;}.GZ {top: 542px;right: 171px;}.dotted {width: 8px;height: 8px;background-color: #09f;border-radius: 50%;}.BJ div[class^="wave"] {                    /* 权重:21 */position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);width: 8px;height: 8px;box-shadow: 0 0 12px #009dfd;border-radius: 50%;animation: wave 1.2s linear infinite;}.BJ div.wave2 {                             /* 权重:21 */animation-delay: 0.4s;}.BJ div.wave3 {                             /* 权重:21, 因为在下面, 所以就替换了上述中的默认0s了 */animation-delay: 0.8s;}@keyframes wave {0% {}70% {width: 40px;height: 40px;opacity: 1;}100% {width: 70px;height: 70px;opacity: 0;}}</style>
</head><body><div class="map"><div class="BJ"><div class="dotted"></div><div class="wave1"></div><div class="wave2"></div><div class="wave3"></div></div><div class="BJ TB"><div class="dotted"></div><div class="wave1"></div><div class="wave2"></div><div class="wave3"></div></div><div class="BJ GZ"><div class="dotted"></div><div class="wave1"></div><div class="wave2"></div><div class="wave3"></div></div></div>
</body></html>

请添加图片描述

8.6 速度调节曲线

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- animation-timing-function: 动画的速度曲线, 默认是"ease" ;值                  描述linear             匀速ease               默认, 低速开始, 然后加快, 在结束前变慢ease-in            动画以低速开始ease-out           动画以低速结束ease-in-out        动画以低速开始和结束steps()            指定了时间函数中的间隔数量(步长)--><style>@keyframes move {0% {width: 0;}100% {width: 200px;}}div {overflow: hidden;font-size: 20px;width: 0;height: 30px;background-color: green;white-space: nowrap;                    /* 让我们的文字强制一行内显示 */animation: move 4s steps(10) forwards;     /* 分10步来完成我们的动画 */}</style>
</head><body><div>中华人民共和国成立了</div>
</body></html>

请添加图片描述

8.7 案例2
bear.png

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>body {background-color: #ccc;}@keyframes bear {0% {background-position: 0 0;}100% {background-position: -1600px 0;}}@keyframes move {0% {left: 0;}100% {left: 50%;/* margin-left: -100px; */transform: translateX(-50%);}}div {position: absolute;width: 200px;height: 100px;background: url(./bear.png) no-repeat;animation: bear 1s steps(8) infinite, move 3s forwards;}</style>
</head>
<body><div></div>
</body>
</html>

请添加图片描述

9. css3-3D转换

9.1 3D移动

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- 3D移动translate3d: 3D移动在2D移动的基础之上增加了一个可移动的方向, 就是z轴方向;transform: translateX(...);transform: translateY(...);transform: translateZ(100px);       (注意:translateZ一般用单位px)transform: translate3d(x, y, z);    透视:透视写在被观察元素的父盒子上面; d: 视距, 就是一个距离人的眼睛到屏幕的距离;z: z轴, 物体距离屏幕的距离, z轴越大(正值), 我们看到的物体就越大;  --><style>body {perspective: 200px;}div {width: 200px;height: 200px;background-color: green;margin: 100px auto;/* transform: translateX(0) translateY(100px) translateZ(100px); *//* transform: translate3d(0, 100px, 100px); */transform: translateZ(100px);}</style>
</head>
<body><div></div>
</body>
</html>

在这里插入图片描述

9.2 3D旋转

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>body {perspective: 300px; }img {display: block;margin: 100px auto;transition: all 1s;}img:hover {/* transform: rotateX(360deg); *//* transform: rotateY(360deg); *//* transform: rotateZ(360deg); */transform: rotate3d(1, 0, 0 ,45deg);    /* 沿x轴旋转 */   transform: rotate3d(1, 1, 0, 45deg);    /* 沿对角线旋转(x, y轴合成方向) */}</style>
</head>
<body><img src="./pig.jpg" alt="">
</body>
</html>

请添加图片描述

9.3 transform-style属性

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><!-- 3D呈现:transform-style:(1) 控制子元素是否开启三维立体环境;(2) transform-style: flat; 子元素不开启3D立体空间(默认的);(3) transform-style: preserve-3d; 子元素开启立体空间; (4) 将此属性写在父级中, 但是控制的是子元素;(5) 这个属性很重要, 后面要用到; --><style>body {perspective: 500px;}.box {position: relative;width: 200px;height: 200px;margin: 100px auto;transition: all 2s;/* 让子元素保持3d立体空间环境 */transform-style: preserve-3d;       }.box:hover {transform: rotateY(60deg);}.box div {position: absolute;top: 0;left: 0;width: 100%;height: 100%;background-color: pink;}.box div:last-child {background-color: purple;transform: rotateX(60deg);}</style>
</head><body><div class="box"><div></div><div></div></div>
</body></html>

请添加图片描述

9.4 案例1

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- 案例:硬币翻转; --><style>body {perspective: 300px;}.box {position: relative;width: 300px;height: 300px;margin: 0 auto;transition: all .6s;transform-style: preserve-3d;}.box:hover {transform: rotateY(180deg);}.front,.back {position: absolute;top: 0;left: 0;width: 100%;height: 100%;border-radius: 50%;font-size: 30px;text-align: center;line-height: 300px;}.front {background-color: red;z-index: 1;}.back {background-color: green;transform: rotateY(180deg);}</style>
</head><body><div class="box"><div class="front">HelloWorld</div><div class="back">你好,世界</div></div>
</body></html>

请添加图片描述

9.5 案例2

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- 案例:3D导航栏--><style>* {margin: 0;padding: 0;}ul {margin: 100px;}ul li {float: left;margin: 0 5px;width: 120px;height: 35px;list-style: none;perspective: 500px;}.box {position: relative;width: 100%;height: 100%;transform-style: preserve-3d;transition: all .3s;}.box:hover {transform: rotateX(90deg);}.front,.bottom {position: absolute;left: 0;top: 0;width: 100%;height: 100%;}.front {background-color: red;transform: translateZ(17.5px);}.bottom {background-color: green;/* 如果存在移动和其他样式, 必须将移动给写到前面; */transform: translateY(17.5px) rotateX(-80deg);}</style>
</head><body><ul><li><div class="box"><div class="front">HelloWorld</div><div class="bottom">你好世界</div></div></li><li><div class="box"><div class="front">HelloWorld</div><div class="bottom">你好世界</div></div></li><li><div class="box"><div class="front">HelloWorld</div><div class="bottom">你好世界</div></div></li><li><div class="box"><div class="front">HelloWorld</div><div class="bottom">你好世界</div></div></li></ul>
</body></html>

请添加图片描述
9.6 案例3

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- 案例:旋转木马--><style>body {perspective: 1000px;}@keyframes rotate {0% {transform: rotateY(0);} 100% {transform:  rotateY(360deg);}}section {position: relative;width: 300px;height: 200px;margin: 100px auto;transform-style: preserve-3d;animation: rotate 3s linear infinite;background: url(./pig.jpg) no-repeat;}section:hover {animation-play-state: paused;}section div {position: absolute;left: 0;top: 0;width: 100%;height: 100%;background: url(./dog.jpg) no-repeat;}section div:nth-child(1) {transform: translateZ(300px);}section div:nth-child(2) {transform: rotateY(60deg) translateZ(300px);    /* 先旋转好再移动 */}section div:nth-child(3) {transform: rotateY(120deg) translateZ(300px);   }section div:nth-child(4) {transform: rotateY(180deg) translateZ(300px);   }section div:nth-child(5) {transform: rotateY(240deg) translateZ(300px);   }section div:nth-child(6) {transform: rotateY(300deg) translateZ(300px);   }</style>
</head><body><section><div></div><div></div><div></div><div></div><div></div><div></div></section>
</body></html>

请添加图片描述

10. 浏览器私有前缀

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- 浏览器私有前缀是为了兼容老版本的写法, 比较新的版本浏览器无需添加; -moz-:          Firefox浏览器的私有属性; -ms-:           IE浏览器的私有属性; -webkit-:       Safari, Chrome的私有属性; -o-:            Opera的私有属性; --><!-- 示例:提倡的写法:-moz-border-radius:     10px;-webkit-border-radius:  10px;-o-border-radius:       10px;border-radius:          10px;-->
</head>
<body></body>
</html>

http://www.ppmy.cn/news/86485.html

相关文章

vue2:elementUI中Form 表单在特定情况下做动态rules添加删除

先看需求&#xff1a;&#xff08;不想看的直接拉到最后&#xff09; 【需求说明】 6、如状态为上架时&#xff0c;库存为必填&#xff0c;下架状态时&#xff0c;库存为可填&#xff0c;前面无星号 实现方法&#xff1a;使用this.$set()和this.$delete() 上代码&#xff1a;…

【Linux】shell编程—awk编辑器

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、awk编辑器1.工作流程3.常用选项 二、awk的基础用法1.输出文件中的某一列2.根据特定条件筛选数据3.按照分隔符进行切割4.在匹配到特定字符串时执行操作5.BEGIN打…

适合ToB企业的网络营销方法和渠道

ToB服务往往项目复杂&#xff0c;交付周期长&#xff0c;其客户采购也需要复杂的审批流程&#xff0c;一些在ToC领域非常好用的推广方法搬过来却收效甚微。ToB&#xff08;或称2B&#xff09;企业的网络营销一直是营销难点&#xff0c;小马识途营销顾问服务过众多2B企业&#x…

SpringBoot --- 运维篇

一、打包与运行 1.1、程序打包与运行&#xff08;Windows版&#xff09; 所谓打包指将程序转换成一个可执行的文件&#xff0c;所谓运行指不依赖开发环境执行打包产生的文件。 SpringBoot程序是基于Maven创建的&#xff0c;在Maven中提供有打包的指令&#xff0c;叫做packag…

macOS上安装和使用nvm

macOS 上安装和使用 nvm nvm&#xff08;Node Version Manager&#xff09;是一款用于管理 Node.js 版本的工具&#xff0c;可以让您在同一台计算机上轻松地切换和管理多个 Node.js 版本。本文将向您介绍如何在 macOS 上安装和使用 nvm。 一、安装 nvm 打开终端应用程序。 使…

车载以太网 - SomeIP - 协议用例 - on-wire

目录 Specification of the SOME/IP on-wire format 1.1、验证Response报文中的源IP地址为Request报文中的目标IP地址

第七章 文件读写

内容框图 7.1 文件读写介绍 文件打开和关闭 用word编写一份简历&#xff0c;应该有哪些流程&#xff1f; 打开word软件&#xff0c;新建一个word文件写入个人简历信息保存文件关闭word软件 同样&#xff0c;编程中操作文件的整体过程类似。 打开文件&#xff0c;或者新建立一个…

【LeetCode】168. Excel表列名称

168. Excel表列名称&#xff08;简单&#xff09; 思路 显然&#xff0c;这是一道从 1 开始的的 26 进制转换题。 对于一般性的进制转换题目&#xff0c;只需要不断地对 columnNumber 进行 % 运算取得最后一位&#xff0c;然后对 columnNumber 进行 / 算&#xff0c;将已经取得…