style.scss 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615
  1. @font-face {font-family:"HMfont-home";src:url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2');}
  2. .icon {
  3. font-family:"HMfont-home" !important;
  4. font-size:50upx;
  5. font-style:normal;
  6. color: #333;
  7. &.biaoqing:before {
  8. content: "\e797";
  9. }
  10. &.jianpan:before {
  11. content: "\e7b2";
  12. }
  13. &.yuyin:before {
  14. content: "\e805";
  15. }
  16. &.tupian:before {
  17. content: "\e639";
  18. }
  19. &.chehui:before {
  20. content: "\e904";
  21. }
  22. &.luyin:before {
  23. content: "\e905";
  24. }
  25. &.luyin2:before {
  26. content: "\e677";
  27. }
  28. &.other-voice:before {
  29. content: "\e667";
  30. }
  31. &.my-voice:before {
  32. content: "\e906";
  33. }
  34. &.hongbao:before {
  35. content: "\e626";
  36. }
  37. &.tupian2:before {
  38. content: "\e674";
  39. }
  40. &.paizhao:before {
  41. content: "\e63e";
  42. }
  43. &.add:before {
  44. content: "\e655";
  45. }
  46. &.close:before {
  47. content: "\e607";
  48. }
  49. &.to:before {
  50. content: "\e675";
  51. }
  52. }
  53. .hidden{
  54. display: none !important;
  55. }
  56. .popup-layer{
  57. &.showLayer{transform: translate3d(0,-42vw,0);}
  58. transition: all .15s linear;
  59. width: 96%;
  60. height: 42vw;
  61. padding: 20upx 2%;
  62. background-color: #f3f3f3;
  63. border-top: solid 1upx #ddd;
  64. position: fixed;
  65. z-index: 20;
  66. top: 100%;
  67. .emoji-swiper{
  68. height: 40vw;
  69. swiper-item{
  70. display: flex;
  71. align-content: flex-start;
  72. flex-wrap: wrap;
  73. view{
  74. width: 12vw;
  75. height: 12vw;
  76. display: flex;
  77. justify-content: center;
  78. align-items: center;
  79. image {
  80. width: 22px !important;//8.4vw;
  81. height: 22px !important;//8.4vw;
  82. }
  83. }
  84. }
  85. }
  86. .more-layer{
  87. width: 100%;
  88. height: 120upx;
  89. .list{
  90. width: 100%;
  91. display: flex;
  92. flex-wrap: wrap;
  93. .box{
  94. width: 100upx;
  95. height: 100upx;
  96. border-radius: 20upx;
  97. background-color: #fff;
  98. display: flex;
  99. justify-content: center;
  100. align-items: center;
  101. margin: 0 15upx 15upx 15upx;
  102. .icon{
  103. font-size: 50upx;
  104. }
  105. }
  106. }
  107. }
  108. }
  109. .input-box{
  110. width: 98%;
  111. // min-height: 100upx;
  112. padding: 0 1%;
  113. background-color: #f2f2f2;
  114. display: flex;
  115. position: fixed;
  116. z-index: 20;
  117. bottom: -2upx;
  118. &.showLayer{
  119. transform: translate3d(0,-42vw,0);
  120. }
  121. transition: all .15s linear;
  122. border-bottom: solid 1upx #ddd;
  123. .voice,.more{
  124. flex-shrink: 0;
  125. width: 90upx;
  126. height: 100upx;
  127. display: flex;
  128. justify-content: center;
  129. align-items: center;
  130. }
  131. .send{
  132. //H5发送按钮左边距
  133. /* #ifdef H5 */
  134. margin-left: 20upx;
  135. /* #endif */
  136. flex-shrink: 0;
  137. width: 100upx;
  138. height: 100upx;
  139. display: flex;
  140. align-items: center;
  141. .btn{
  142. width: 90upx;
  143. height: 56upx;
  144. display: flex;
  145. justify-content: center;
  146. align-items: center;
  147. background: #2B9939;
  148. color: #fff;
  149. border-radius: 6upx;
  150. font-size: 24upx;
  151. }
  152. }
  153. .textbox{
  154. width: 100%;
  155. min-height: 70upx;
  156. margin-top: 15upx;
  157. .voice-mode{
  158. width: calc(100% - 2upx);
  159. height: 68upx;
  160. border-radius: 70upx;
  161. border:solid 1upx #cdcdcd;
  162. display: flex;
  163. justify-content: center;
  164. align-items: center;
  165. font-size: 28upx;
  166. background-color: #fff;
  167. color: #555;
  168. &.recording{
  169. background-color: #e5e5e5;
  170. }
  171. }
  172. .text-mode{
  173. width: 100%;
  174. min-height: 70upx;
  175. display: flex;
  176. background-color: #fff;
  177. border-radius: 40upx;
  178. .box{
  179. width: 100%;
  180. padding-left: 30upx;
  181. min-height: 70upx;
  182. display: flex;
  183. align-items: center;
  184. textarea{
  185. width: 100%;
  186. }
  187. }
  188. .em{
  189. flex-shrink: 0;
  190. width: 80upx;
  191. padding-left: 10upx;
  192. height: 70upx;
  193. display: flex;
  194. justify-content: center;
  195. align-items: center;
  196. }
  197. }
  198. }
  199. }
  200. .record{
  201. width: 40vw;
  202. height: 40vw;
  203. position: fixed;
  204. top: 45%;
  205. left: 30%;
  206. background-color: rgba(0,0,0,.6);
  207. border-radius: 20upx;
  208. .ing{
  209. width: 100%;
  210. height: 30vw;
  211. display: flex;
  212. justify-content: center;
  213. align-items: center;
  214. // 模拟录音音效动画
  215. @keyframes volatility {
  216. 0% {background-position: 0% 130%;}
  217. 20% {background-position: 0% 150%;}
  218. 30% {background-position: 0% 155%;}
  219. 40% {background-position: 0% 150%;}
  220. 50% {background-position: 0% 145%;}
  221. 70% {background-position: 0% 150%;}
  222. 80% {background-position: 0% 155%;}
  223. 90% {background-position: 0% 140%;}
  224. 100% {background-position: 0% 135%;}
  225. }
  226. .icon{
  227. background-image:linear-gradient(to bottom,#f09b37,#fff 50%);
  228. background-size:100% 200%;
  229. animation: volatility 1.5s ease-in-out -1.5s infinite alternate;
  230. -webkit-background-clip:text;
  231. -webkit-text-fill-color:transparent;
  232. font-size: 150upx;
  233. color: #f09b37;
  234. }
  235. }
  236. .cancel{
  237. width: 100%;
  238. height: 30vw;
  239. display: flex;
  240. justify-content: center;
  241. align-items: center;
  242. .icon{
  243. color: #fff;
  244. font-size: 150upx;
  245. }
  246. }
  247. .tis{
  248. width: 100%;
  249. height: 10vw;
  250. display: flex;
  251. justify-content: center;
  252. font-size: 28upx;
  253. color: #fff;
  254. &.change{
  255. color: #f09b37;
  256. }
  257. }
  258. }
  259. .content{
  260. width: 100%;
  261. .msg-list{
  262. width: 96%;
  263. padding: 0 2%;
  264. position: absolute;
  265. top: 0;
  266. bottom: 100upx;
  267. .loading{
  268. //loading动画
  269. display: flex;
  270. justify-content: center;
  271. @keyframes stretchdelay {
  272. 0%, 40%, 100% {
  273. transform: scaleY(0.6);
  274. }
  275. 20% {
  276. transform: scaleY(1.0);
  277. }
  278. }
  279. .spinner {
  280. margin: 20upx 0;
  281. width: 60upx;
  282. height: 100upx;
  283. display: flex;
  284. align-items: center;
  285. justify-content: space-between;
  286. view {
  287. background-color: #c9c9c9;
  288. height: 50upx;
  289. width: 6upx;
  290. border-radius: 6upx;
  291. animation: stretchdelay 1.2s infinite ease-in-out;
  292. }
  293. .rect2 {
  294. animation-delay: -1.1s;
  295. }
  296. .rect3 {
  297. animation-delay: -1.0s;
  298. }
  299. .rect4 {
  300. animation-delay: -0.9s;
  301. }
  302. .rect5 {
  303. animation-delay: -0.8s;
  304. }
  305. }
  306. }
  307. .row{
  308. .system{
  309. display: flex;
  310. justify-content: center;
  311. view{
  312. padding: 0 30upx;
  313. min-height: 45upx;
  314. display: flex;
  315. justify-content: center;
  316. align-items: center;
  317. background-color: #c9c9c9;
  318. color: #fff;
  319. font-size: 24upx;
  320. border-radius: 7upx;
  321. }
  322. .red-envelope{
  323. image{
  324. margin-right: 5upx;
  325. width: 30upx;
  326. height: 30upx;
  327. }
  328. }
  329. }
  330. &:first-child{
  331. margin-top: 20upx;
  332. }
  333. padding: 20upx 0;
  334. .my .left,.other .right{
  335. width: 100%;
  336. display: flex;
  337. .bubble{
  338. max-width: 70%;
  339. min-height: 50upx;
  340. border-radius: 10upx;
  341. padding: 15upx 20upx;
  342. display: flex;
  343. align-items: center;
  344. font-size: 32upx;
  345. word-break: break-word;
  346. &.img{
  347. background-color: transparent;
  348. padding:0;
  349. overflow: hidden;
  350. image{
  351. max-width: 350upx;
  352. max-height: 350upx;
  353. }
  354. }
  355. &.red-envelope{
  356. background-color: transparent;
  357. padding:0;
  358. overflow: hidden;
  359. position: relative;
  360. justify-content: center;
  361. align-items: flex-start;
  362. image{
  363. width: 250upx;
  364. height: 313upx;
  365. }
  366. .tis{
  367. position: absolute;
  368. top: 6%;
  369. font-size: 26upx;
  370. color: #9c1712;
  371. }
  372. .blessing{
  373. position: absolute;
  374. bottom: 14%;
  375. color: #e9b874;
  376. width: 80%;
  377. text-align: center;
  378. overflow: hidden;
  379. // 最多两行
  380. display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;
  381. }
  382. }
  383. &.voice{
  384. .icon{
  385. font-size: 30upx;
  386. display: flex;
  387. align-items: center;
  388. }
  389. .icon:after
  390. {
  391. content:" ";
  392. width: 53upx;
  393. height: 53upx;
  394. border-radius: 100%;
  395. position: absolute;
  396. box-sizing: border-box;
  397. }
  398. .length{
  399. font-size: 28upx;
  400. }
  401. }
  402. }
  403. }
  404. .my .right,.other .left{
  405. flex-shrink: 0;
  406. width: 85upx;
  407. height: 85upx;
  408. image{
  409. width: 85upx;
  410. height: 85upx;
  411. border-radius: 10upx;
  412. }
  413. }
  414. .my{
  415. width: 100%;
  416. display: flex;
  417. justify-content: flex-end;
  418. .left{
  419. min-height: 80upx;
  420. align-items: center;
  421. justify-content: flex-end;
  422. .bubble{
  423. background-color: #b2e281;
  424. color: #000000;
  425. &.voice{
  426. .icon{
  427. color: #000000;
  428. }
  429. .length{
  430. margin-right: 20upx;
  431. }
  432. }
  433. &.play{
  434. @keyframes my-play {
  435. 0% {
  436. transform: translateX(80%);
  437. }
  438. 100% {
  439. transform: translateX(0%);
  440. }
  441. }
  442. .icon:after
  443. {
  444. border-left: solid 10upx rgba(178,226,129,.5);
  445. animation: my-play 1s linear infinite;
  446. right: 120upx;
  447. }
  448. }
  449. }
  450. }
  451. .right{
  452. margin-left: 15upx;
  453. }
  454. }
  455. .other{
  456. width: 100%;
  457. display: flex;
  458. .left{
  459. margin-right: 15upx;
  460. }
  461. .right{
  462. flex-wrap: wrap;
  463. .username{
  464. width: 100%;
  465. height: 45upx;
  466. font-size: 24upx;
  467. color: #999;
  468. display: flex;
  469. .name{
  470. margin-right: 50upx;
  471. }
  472. }
  473. .bubble{
  474. background-color: #fff;
  475. color: #333;
  476. &.voice{
  477. .icon{
  478. color: #333;
  479. }
  480. .length{
  481. margin-left: 20upx;
  482. }
  483. }
  484. &.play{
  485. @keyframes other-play {
  486. 0% {
  487. transform: translateX(-80%);
  488. }
  489. 100% {
  490. transform: translateX(0%);
  491. }
  492. }
  493. .icon:after
  494. {
  495. border-right: solid 10upx rgba(255,255,255,.8);
  496. animation: other-play 1s linear infinite;
  497. left: 120upx;
  498. }
  499. }
  500. }
  501. }
  502. }
  503. }
  504. }
  505. }
  506. .windows{
  507. .mask{
  508. position: fixed;
  509. top: 100%;
  510. width: 100%;
  511. height: 100%;
  512. z-index: 1000;
  513. background-color: rgba(0,0,0,.6);
  514. opacity: 0;
  515. transition: opacity .2s ease-out;
  516. }
  517. .layer{
  518. position: fixed;
  519. width: 80%;
  520. height: 70%;
  521. left: 10%;
  522. z-index: 1001;
  523. border-radius: 20upx;
  524. overflow: hidden;
  525. top:100%;
  526. transform: scale3d(.5,.5,1);
  527. transition: all .2s ease-out;
  528. }
  529. &.show{
  530. display: block;
  531. .mask{
  532. top: 0;
  533. opacity: 1;
  534. }
  535. .layer{
  536. transform: translate3d(0,-85vh,0) scale3d(1,1,1);
  537. }
  538. }
  539. &.hide{
  540. display: block;
  541. .mask{
  542. top: 0;
  543. opacity: 0;
  544. }
  545. .layer{
  546. //transform: translate3d(0,-85vh,0) scale3d(.5,.5,1);
  547. }
  548. }
  549. }
  550. .open-redenvelope{
  551. width: 100%;
  552. height: 70vh;
  553. background-color: #cf3c35;
  554. position: relative;
  555. .top{
  556. width: 100%;
  557. background-color: #fe5454;
  558. display: flex;
  559. justify-content: center;
  560. flex-wrap: wrap;
  561. border-radius: 0 0 100% 100%;
  562. box-shadow: inset 0 -20upx 0 #9c1712;
  563. .close-btn{
  564. width: 100%;
  565. height: 80upx;
  566. display: flex;
  567. justify-content: flex-end;
  568. margin-bottom: 30upx;
  569. .icon{
  570. color: #9c1712;
  571. margin-top: 10upx;
  572. margin-right: 10upx;
  573. }
  574. }
  575. image{
  576. width: 130upx;
  577. height: 130upx;
  578. border: solid 12upx #cf3c35;
  579. border-radius: 100%;
  580. margin-bottom: -65upx;
  581. }
  582. margin-bottom: 65upx;
  583. }
  584. .from,.blessing,.money,.showDetails{
  585. width: 90%;
  586. padding: 5upx 5%;
  587. display: flex;
  588. justify-content: center;
  589. font-size: 32upx;
  590. color: #fff;
  591. }
  592. .money{
  593. font-size: 100upx;
  594. color: #f8d757;
  595. display: flex;
  596. padding-top: 20upx;
  597. }
  598. .showDetails{
  599. position: absolute;
  600. bottom: 20upx;
  601. align-items: center;
  602. font-size: 28upx;
  603. color: #f8d757;
  604. .icon{
  605. font-size: 26upx;
  606. color: #f8d757;
  607. }
  608. }
  609. }