solution.vue 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422
  1. <script setup>
  2. import commonProduct from './commonProduct.vue'
  3. </script>
  4. <template>
  5. <div class="box" id='solution'>
  6. <div class="title">
  7. <span>解决方案</span>
  8. <span>possible solutions</span>
  9. </div>
  10. <ul class='ul1'>
  11. <li>
  12. <p>自然资源</p>
  13. </li>
  14. <li>
  15. <p>生态环境</p>
  16. </li>
  17. <li>
  18. <p>森林防火</p>
  19. </li>
  20. <li>
  21. <div class='item'>
  22. <div class='item1'>
  23. <div class='item11'>1</div>
  24. <div class='item12'>2</div>
  25. </div>
  26. <div class='item2'>3</div>
  27. <div class='item3'>
  28. <div class='item31'>4</div>
  29. <div class='item32'>5</div>
  30. </div>
  31. </div>
  32. <p>城市规划</p>
  33. </li>
  34. <li>
  35. <p>数字孪生</p>
  36. </li>
  37. </ul>
  38. <ul class='ul2'>
  39. <li>
  40. <p>自然资源</p>
  41. </li>
  42. <li>
  43. <p>生态环境</p>
  44. </li>
  45. <li>
  46. <p>森林防火</p>
  47. </li>
  48. <li>
  49. <div class='item'>
  50. <div class='item1'>
  51. <div class='item11'></div>
  52. <div class='item12'></div>
  53. </div>
  54. <div class='item2'></div>
  55. <div class='item3'>
  56. <div class='item31'></div>
  57. <div class='item32'></div>
  58. </div>
  59. </div>
  60. <p>城市规划</p>
  61. </li>
  62. <li>
  63. <p>数字孪生</p>
  64. </li>
  65. </ul>
  66. </div>
  67. </template>
  68. <script>
  69. export default {
  70. /* 数据 */
  71. data() {
  72. return {
  73. //产品列表
  74. productlist:[],
  75. }
  76. },
  77. /* 方法 */
  78. methods: {
  79. //接口数据请求
  80. getdate(){
  81. this.$http.get('/getTableList', {
  82. tableName: 'base_app_info',
  83. sqlWhere: "",
  84. orderByField: ''
  85. }).then(res => {
  86. if (res.data.length > 0) {
  87. this.productlist=res.data
  88. } else {
  89. ElMessage.error('账号或密码输入错误!')
  90. }
  91. })
  92. },
  93. //图标选择跳转
  94. getItem(index){
  95. window.location.href=this.productlist[index[0]].url
  96. },
  97. },
  98. created(){
  99. this.getdate()
  100. },
  101. mounted() {
  102. }
  103. }
  104. </script>
  105. <style lang="scss" scoped>
  106. @keyframes overturnpre {
  107. 0%{
  108. opacity: 1;
  109. }
  110. 25%{
  111. opacity: 1;
  112. }
  113. 30%{
  114. opacity: 0;
  115. }
  116. 100%{
  117. opacity: 0;
  118. }
  119. }
  120. @keyframes overturnaft {
  121. 0%{
  122. opacity: 0;
  123. }
  124. 25%{
  125. opacity: 0;
  126. }
  127. 30%{
  128. opacity: 1;
  129. }
  130. 100%{
  131. opacity: 1;
  132. }
  133. }
  134. @keyframes overturn {
  135. 0%{
  136. opacity: 0;
  137. }
  138. 50%{
  139. opacity: 0;
  140. }
  141. 100%{
  142. opacity: 1;
  143. }
  144. }
  145. @keyframes overturnpre3 {
  146. 0%{
  147. opacity: 1;
  148. }
  149. 60%{
  150. opacity: 1;
  151. }
  152. 61%{
  153. opacity: 0;
  154. }
  155. 100%{
  156. opacity: 0;
  157. }
  158. }
  159. @keyframes overturnaft3 {
  160. 0%{
  161. opacity: 0;
  162. }
  163. 60%{
  164. opacity: 0;
  165. }
  166. 61%{
  167. opacity: 1;
  168. }
  169. 100%{
  170. opacity: 1;
  171. }
  172. }
  173. @keyframes overturn {
  174. 0%{
  175. opacity: 0;
  176. }
  177. 50%{
  178. opacity: 0;
  179. }
  180. 100%{
  181. opacity: 1;
  182. }
  183. }
  184. @keyframes lb {
  185. 0%{
  186. left:100%;
  187. }
  188. 100%{
  189. left:-100%;
  190. }
  191. }
  192. .box {
  193. // display: flex;
  194. position: relative;
  195. justify-content: center;
  196. align-items: center;
  197. height: 23vw;
  198. /* 过渡为0.3秒 */
  199. transition: all .5s;
  200. &>.title{
  201. height: 3vw;
  202. font-size: 1.5vw;
  203. line-height: 3vw;
  204. width: 100%;
  205. padding-left: 3vw;
  206. &>span{
  207. float:left;
  208. }
  209. }
  210. & >ul{
  211. position: absolute;
  212. top:3vw;
  213. left:100%;
  214. margin:0rem;
  215. width: 100%;
  216. height: 20vw;
  217. /* 超出部分隐藏 */
  218. overflow: hidden;
  219. /* 过渡为0.3秒 */
  220. transition: all .5s;
  221. &>li{
  222. background-color: aqua;
  223. position: relative;
  224. float: left;
  225. list-style-type: none;
  226. border: 0.1vw solid #000000;
  227. width: 10vw;
  228. height: 100%;
  229. /* 过渡为0.5秒 */
  230. transition: all .5s;
  231. &>p{
  232. /* 绝对定位 */
  233. position: absolute;
  234. left: 0;
  235. bottom: 0;
  236. width: 100%;
  237. height: 1.5vw;
  238. line-height: 1.5vw;
  239. text-align: center;
  240. font-size:0.8vw;
  241. font-weight: 700;
  242. color: #fff;
  243. /* 文字遮罩层 */
  244. background-color: rgba(0, 0, 0, .3);
  245. transition: all .5s;
  246. }
  247. &>.item{
  248. position: absolute;
  249. top:0;
  250. left:0;
  251. width: 10vw;
  252. height: calc(100% - 0vw);
  253. transform-style: preserve-3d;
  254. perspective: 25vw;
  255. &>div{
  256. position: absolute;
  257. top:0;
  258. left:0;
  259. width: calc(100% - 0vw);
  260. height: calc(100% - 0vw);
  261. }
  262. &>.item1{
  263. transform-origin: 0 50%;
  264. width: calc(100% - 0vw);
  265. height: calc(100% - 0vw);
  266. &>.item11{
  267. position: absolute;
  268. top:0;
  269. left:0;
  270. width: calc(100% - 0vw);
  271. height: calc(100% - 0vw);
  272. z-index:14;
  273. opacity: 1;
  274. background:url("../../assets/images/solution/swcs/1.jpg") no-repeat center center;
  275. background-size: cover;
  276. }
  277. &>.item12{
  278. z-index:14;
  279. opacity: 0;
  280. position: absolute;
  281. top:0;
  282. right:0;
  283. background-color: #aa55ff;
  284. width: calc(100% - 0vw);
  285. height: calc(100% - 0vw);
  286. background:url("../../assets/images/solution/swcs/2.jpg") no-repeat center center;
  287. background-size: cover;
  288. transform: rotateY(180deg);
  289. }
  290. }
  291. &>.item2{
  292. z-index:3;
  293. background:url("../../assets/images/solution/swcs/3.jpg") no-repeat center center;
  294. background-size: cover;
  295. opacity: 0;
  296. background-color: antiquewhite;
  297. }
  298. &>.item3{
  299. transform-origin: 100% 50%;
  300. &>.item31{
  301. z-index:12;
  302. opacity: 1;
  303. position: absolute;
  304. top:0;
  305. left:0;
  306. width: calc(100% - 0vw);
  307. height: calc(100% - 0vw);
  308. background:url("../../assets/images/solution/swcs/5.jpg") no-repeat center center;
  309. background-size: cover;
  310. }
  311. &>.item32{
  312. z-index:12;
  313. opacity: 0;
  314. position: absolute;
  315. top:0;
  316. left:0;
  317. width: calc(100% - 0vw);
  318. height: calc(100% - 0vw);
  319. background:url("../../assets/images/solution/swcs/4.jpg") no-repeat center center;
  320. background-size: cover;
  321. transform: rotateY(180deg);
  322. }
  323. }
  324. }
  325. }
  326. }
  327. }
  328. .ul2{
  329. animation: lb 20s infinite linear;
  330. }
  331. .ul1{
  332. animation: lb 20s 10s infinite linear;
  333. }
  334. .box ul li:hover p {
  335. font-size:1vw;
  336. }
  337. /* 鼠标移入时让所有的li宽度变为90px */
  338. .box:hover {
  339. height: 43vw
  340. }
  341. .box:hover ul {
  342. height: 43vw;
  343. animation-play-state: paused;
  344. }
  345. .box:hover li {
  346. height: 40vw;
  347. width: 9vw;
  348. }
  349. /* 鼠标移入时让当前的宽度变为640px */
  350. .box ul li:hover {
  351. width:60vw;
  352. }
  353. .box ul li:hover .item{
  354. width: 20vw;
  355. left:20vw;
  356. }
  357. .box ul li .item:hover .item1{
  358. transform: rotate3d(0,1,0,-179deg);
  359. transition: all 5s;
  360. }
  361. .box ul li .item:hover .item11{
  362. animation:overturnpre 5s linear;
  363. opacity:0;
  364. }
  365. .box ul li .item:hover .item12{
  366. animation:overturnaft 5s linear;
  367. opacity:1;
  368. }
  369. .box ul li .item:hover .item3{
  370. transform: rotate3d(0,1,0,179deg);
  371. transition: all 5s 5s;
  372. }
  373. .box ul li .item:hover .item31{
  374. animation:overturnpre3 10s linear;
  375. opacity: 0;
  376. }
  377. .box ul li .item:hover .item32{
  378. animation:overturnaft3 10s linear;
  379. opacity: 1;
  380. }
  381. .box ul li .item:hover .item2{
  382. animation:overturn 10s ;
  383. opacity: 1;
  384. }
  385. .box ul li .item .item1 .item12:hover .item3{
  386. transform: rotate3d(0,1,0,-179deg);
  387. }
  388. </style>