0


前端练手3D爱心

文章目录

盒子模型常用属性(认识)

overflow: hidden;定义盒子不随浮动
margin-left: 50px:使盒子距离外边距左(右上下)50px
margin: 100px auto:使盒子距离外边距上下左右100px
margin: 使盒子距离外边距上右下左为50px 0 0 50px;
margin: 20px 30px:使盒子距离外边距上下20px,左右30px
margin: 10px:使盒子距离外边距上下左右都是10px
border: 5px solid red:定义盒子边框(5px 单实线 红色) {dotted点double双实线}
border-radius: 50px:使盒子边角变圆
border-radius: 50%(1-8个值,顺时针):使盒子变圆
border-top-left-radius: 50%:使盒子左上角变圆
display: inline-block:将块级元素div盒子等放到一行

效果一 爱心半边

  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>爱心半圆</title><style type="text/css">
  2. * {
  3. margin: 0;
  4. padding: 0;}
  5. div {
  6. /*宽*/
  7. width: 100px;
  8. /*高*/
  9. height: 170px;
  10. /*边款颜色*/
  11. border: 2px solid red;
  12. /*盒子居中*/
  13. margin: 100px auto;
  14. /*盒子变圆:border-radius: 50%; */
  15. /*border-radius: 左上角 中间线 右上角;*/
  16. border-radius: 50% 50% 0/40% 50% 0;
  17. /* border-radius: 50%; */
  18. /* 去掉下面多余的线 */
  19. border-left: 0;
  20. border-bottom: 0;
  21. /* y坐标45°倾斜左边 */
  22. transform: rotateZ(45deg);}</style></head><body><div></div></body></html>

效果:
在这里插入图片描述

效果二 爱心整合生成

js将半爱心旋转一周生成爱心

  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>整合一个爱心</title><style type="text/css">
  2. /* 清空值 */
  3. * {
  4. margin: 0;
  5. padding: 0;}
  6. /* 背景修改为黑色 */
  7. body {
  8. background: #000;}
  9. /* 引用div内的love3d元素*/
  10. .love3d {
  11. position: relative;
  12. width: 100px;
  13. height: 170px;
  14. margin: 100px auto;}
  15. /* 引用script内的heart */
  16. .heart {
  17. /* 相对于love3d 定位 */
  18. position: absolute;
  19. /* 定位坐标 36个半爱心的位置 0会重叠为一个半圆 */
  20. left: 0;
  21. top: 0;
  22. width: 100px;
  23. height: 170px;
  24. border: 2px solid red;
  25. border-radius: 50% 50% 0/40% 50% 0;
  26. border-left: 0;
  27. border-bottom: 0;}</style></head><body><!-- div类名love3d --><div class="love3d"></div><script type="text/javascript">
  28. //在document文档下通过ClassName获取Elements元素
  29. //类数组长度为1
  30. var love3d = document.getElementsByClassName("love3d")[0];for(var i =0; i <36; i++){
  31. // 创建一个元素
  32. var tDiv = document.createElement("div");
  33. //对象类名
  34. tDiv.className ="heart";
  35. //将所有半圆整体Y旋转10°,Z旋转45°,x坐标设置35像素大小
  36. tDiv.style.transform ="rotateY(" + i * 10 + "deg) rotateZ(45deg) translateX(35px)";
  37. // love3d元素内添加tDiv
  38. love3d.appendChild(tDiv);}</script></body></html>

效果:
在这里插入图片描述

效果三 实现立方体爱心

  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>立方体旋转</title><style type="text/css">
  2. /* 立体效果设置 */
  3. body {
  4. perspective: 1000px;}#cube {
  5. position: relative;
  6. width: 200px;
  7. height: 200px;
  8. margin: 300px auto;
  9. /* z方向的百分之五十为101 */
  10. transform-origin: 50% 50% -101%;
  11. /* 盒子修改为3d空间 */
  12. transform-style: preserve-3d;
  13. /* 鼠标移动2秒的过渡 */
  14. transition: 2s;}#cube div {
  15. position: absolute;
  16. left: 0;
  17. top: 0;
  18. width: 200px;
  19. height: 200px;
  20. border: 2px solid red;}
  21. /* 对于下面的div标签 */
  22. #cube div:nth-child(1) {
  23. /* 上 */
  24. top: -202px;
  25. /* 旋转基地 xyz方向 */
  26. /*默认值 transform-origin: 50% 50% 0; */
  27. transform-origin: bottom;
  28. /* 围绕x坐标 */
  29. transform: rotateX(90deg);}#cube div:nth-child(2) {
  30. top: 202px;
  31. /* 下 */
  32. /* 围绕 上边对称 旋转-90° */
  33. transform-origin: top;
  34. transform: rotateX(-90deg);}#cube div:nth-child(3) {
  35. left: -202px;
  36. /* 左 */
  37. /* 围绕y坐标 */
  38. transform-origin: right;
  39. transform: rotateY(-90deg);}#cube div:nth-child(4) {
  40. left: 202px;
  41. /* 右 */
  42. transform-origin: left;
  43. transform: rotateY(90deg);}#cube div:nth-child(5) {
  44. top: 0px;
  45. /* 前 */
  46. }#cube div:nth-child(6) {
  47. top: 0px;
  48. /* 后 */
  49. /* 宽加边款的长度 */
  50. transform: translateZ(-202px);}#cube:hover {
  51. /* 实现鼠标停留在页面 以360°旋转 */
  52. transform: rotateY(360deg);}</style></head><body><div id="cube"><div></div><div></div><div></div><div></div><div></div><div></div></div></body></html>

效果在这里插入图片描述

最终效果 3D爱心

  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>整合一个爱心</title><style type="text/css">
  2. /* 清空值 */
  3. * {
  4. margin: 0;
  5. padding: 0;}
  6. /* 背景修改为黑色 */
  7. body {
  8. background: #000;}
  9. /* 引用div内的love3d元素*/
  10. /* 爱心3D调整 */
  11. .love3d {
  12. position: absolute;
  13. left: 50%;
  14. top: 50%;
  15. width: 150px;
  16. height: 150px;
  17. /* 浏览器定位居中 */
  18. /* margin: 100px auto; */
  19. /* 开启3D效果 */
  20. margin-left: -50px;
  21. margin-top: -80px;
  22. transform-style: preserve-3d;
  23. /* css自定义动画,参数:名称 时间 匀速 无限重复 */
  24. animation: yes 10s linear infinite;}
  25. /* 启动自定义动画 0-360°*/
  26. @keyframes yes{
  27. from {
  28. transform: rotateX(0deg) rotateY(0deg);}
  29. to {
  30. transform: rotateX(360deg) rotateY(180deg);}}
  31. /* 引用script内的heart */
  32. .heart {
  33. /* 相对于love3d 定位 */
  34. position: absolute;
  35. /* 定位坐标 36个半爱心的位置 0会重叠为一个半圆 */
  36. left: 0;
  37. top: 0;
  38. width: 100px;
  39. height: 170px;
  40. border: 2px solid red;
  41. border-radius: 50% 50% 0/40% 50% 0;
  42. border-left: 0;
  43. border-bottom: 0;}
  44. /* 图片3d调整 */
  45. .cube {
  46. position: relative;
  47. width: 50px;
  48. height: 50px;
  49. transform-style: preserve-3d;
  50. /* 调整图片的位置 */
  51. transform: translateX(32px) translateY(54px) translateZ(27px);}
  52. .cube div {
  53. position: absolute;
  54. left: 0;
  55. top: 0;
  56. width: 50px;
  57. height: 50px;}
  58. .cube div:nth-child(1){
  59. /* 上 */
  60. top: -50px;
  61. /* 旋转基地 xyz方向 */
  62. /*默认值 transform-origin: 50% 50% 0; */
  63. transform-origin: bottom;
  64. /* 围绕x坐标 */
  65. transform: rotateX(90deg);}
  66. .cube div:nth-child(2){
  67. top: 50px;
  68. /* 下 */
  69. /* 围绕 上边对称 旋转-90° */
  70. transform-origin: top;
  71. transform: rotateX(-90deg);}
  72. .cube div:nth-child(3){
  73. left: -50px;
  74. /* 左 */
  75. /* 围绕y坐标 */
  76. transform-origin: right;
  77. transform: rotateY(-90deg);}
  78. .cube div:nth-child(4){
  79. left: 50px;
  80. /* 右 */
  81. transform-origin: left;
  82. transform: rotateY(90deg);}
  83. .cube div:nth-child(5){
  84. /* 前 */
  85. }
  86. .cube div:nth-child(6){
  87. /* 后 */
  88. /* 宽加边款的长度 */
  89. transform: translateZ(-50px);}
  90. .cube div img {
  91. width: 50px;
  92. height: 50px;}</style></head><body><!-- div类名love3d --><div class="love3d"><!-- div 盒子 --><div class="cube"><div><img src="./a.webp"></div><div><img src="./a.webp"></div><div><img src="./a.webp"></div><div><img src="./a.webp"></div><div><img src="./a.webp"></div><div><img src="./a.webp"></div></div></div><script type="text/javascript">
  93. //在document文档下通过ClassName获取Elements元素
  94. //类数组长度为1
  95. var love3d = document.getElementsByClassName("love3d")[0];for(var i =0; i <36; i++){
  96. // 创建一个元素
  97. var tDiv = document.createElement("div");
  98. //对象类名
  99. tDiv.className ="heart";
  100. //将所有半圆整体Y旋转10°,Z旋转45°,x坐标设置35像素大小
  101. tDiv.style.transform ="rotateY(" + i * 10 + "deg) rotateZ(45deg) translateX(35px)";
  102. // love3d元素内添加tDiv
  103. love3d.appendChild(tDiv);}</script></body></html>

在这里插入图片描述

标签: 前端 css3 css

本文转载自: https://blog.csdn.net/qq_47945825/article/details/127718803
版权归原作者 神慕蔡蔡 所有, 如有侵权,请联系我们删除。

“前端练手3D爱心”的评论:

还没有评论