chat.scss 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911
  1. page {
  2. background-color: #f1f1f1;
  3. font-size: 28rpx;
  4. }
  5. .ask {
  6. color: #26b3a0;
  7. margin-top: 22rpx;
  8. }
  9. /* 加载数据提示 */
  10. .tips {
  11. position: fixed;
  12. left: 0;
  13. top: var(--window-top);
  14. width: 100%;
  15. z-index: 9;
  16. background-color: rgba(0, 0, 0, 0.15);
  17. height: 72rpx;
  18. line-height: 72rpx;
  19. transform: translateY(-80rpx);
  20. transition: transform 0.3s ease-in-out 0s;
  21. &.show {
  22. transform: translateY(0);
  23. }
  24. }
  25. .box-1 {
  26. width: 100%;
  27. height: auto;
  28. padding-bottom: 138rpx;
  29. box-sizing: content-box;
  30. /* 兼容iPhoneX */
  31. margin-bottom: 0;
  32. margin-bottom: constant(safe-area-inset-bottom);
  33. margin-bottom: env(safe-area-inset-bottom);
  34. }
  35. .box-2 {
  36. position: fixed;
  37. left: 0;
  38. width: 100%;
  39. bottom: 0;
  40. // bottom: 98rpx;
  41. height: auto;
  42. // border-radius: 30rpx 30rpx 0 0;
  43. z-index: 2;
  44. border-top: #9e9e9e38 solid 1px;
  45. // border-bottom: #e5e5e5 solid 1px;
  46. box-sizing: content-box;
  47. background-color: #ffffff;
  48. /* 兼容iPhoneX */
  49. padding-bottom: 0;
  50. padding-bottom: constant(safe-area-inset-bottom);
  51. padding-bottom: env(safe-area-inset-bottom);
  52. >view {
  53. padding: 0 20rpx;
  54. height: 150rpx;
  55. }
  56. .content {
  57. background-color: #f1f1f1;
  58. height: 64rpx;
  59. width: 100%;
  60. padding: 15rpx 20rpx 0;
  61. border-radius: 32rpx;
  62. // font-size: 28rpx;
  63. padding-bottom: 98rpx;
  64. }
  65. .send {
  66. background-color: #26b3a0d6;
  67. color: #fff;
  68. height: 75rpx;
  69. margin-left: 20rpx;
  70. border-radius: 50rpx;
  71. padding: 0;
  72. width: 138rpx;
  73. font-size: 30rpx;
  74. font-weight: bold;
  75. line-height: 75rpx;
  76. &:active {
  77. background-color: #26b3a08a;
  78. }
  79. }
  80. }
  81. .talk-list {
  82. padding-bottom: 20rpx;
  83. /* 消息项,基础类 */
  84. .item {
  85. padding: 20rpx 20rpx 0 20rpx;
  86. align-items: flex-start;
  87. align-content: flex-start;
  88. color: #333;
  89. .pic {
  90. width: 100rpx;
  91. height: 100rpx;
  92. border-radius: 50%;
  93. border: #fff solid 1px;
  94. }
  95. .content {
  96. font-weight: bold;
  97. padding: 15rpx 25rpx;
  98. border-radius: 4px;
  99. max-width: 500rpx;
  100. word-break: break-all;
  101. line-height: 52rpx;
  102. position: relative;
  103. }
  104. /* 收到的消息 */
  105. &.pull {
  106. .time {
  107. margin-left: 22rpx;
  108. font-size: 24rpx;
  109. margin-bottom: 15rpx;
  110. color: #9e9e9e;
  111. position: absolute;
  112. width: 300rpx;
  113. top: 0rpx;
  114. left: 0rpx;
  115. }
  116. .content {
  117. margin-left: 22rpx;
  118. background-color: #fff;
  119. border-radius: 0px 8px 8px 8px;
  120. margin-top: 45rpx;
  121. // &::after{
  122. // content: '';
  123. // display: block;
  124. // width: 0;
  125. // height: 0;
  126. // border-top: 16rpx solid transparent;
  127. // border-bottom: 16rpx solid transparent;
  128. // border-right: 20rpx solid #fff;
  129. // position: absolute;
  130. // top: 30rpx;
  131. // left: -18rpx;
  132. // }
  133. }
  134. .sentpictures {
  135. width: 300rpx;
  136. // height: 237.5rpx;
  137. margin-left: 22rpx;
  138. border-radius: 0px 8px 8px 8px;
  139. margin-top: 46rpx;
  140. }
  141. }
  142. /* 发出的消息 */
  143. &.push {
  144. /* 主轴为水平方向,起点在右端。使不修改DOM结构,也能改变元素排列顺序 */
  145. flex-direction: row-reverse;
  146. .time {
  147. margin-right: 22rpx;
  148. font-size: 24rpx;
  149. margin-bottom: 15rpx;
  150. color: #9e9e9e;
  151. position: absolute;
  152. width: 300rpx;
  153. top: 0rpx;
  154. right: 0rpx;
  155. display: flex;
  156. justify-content: flex-end;
  157. }
  158. .content {
  159. margin-right: 22rpx;
  160. background-color: #26b3a0;
  161. color: #fff;
  162. border-radius: 8px 0px 8px 8px;
  163. margin-top: 45rpx;
  164. }
  165. .sentpictures {
  166. width: 300rpx;
  167. margin-right: 22rpx;
  168. border-radius: 8px 0 8px 8px;
  169. margin-top: 46rpx;
  170. }
  171. }
  172. }
  173. }
  174. .flex_photo {
  175. // width: 80rpx;
  176. border-radius: 50%;
  177. background: #f1f1f1;
  178. padding: 12rpx;
  179. margin-right: 20rpx;
  180. }
  181. .content {
  182. width: 100%;
  183. .msg-list {
  184. // width: 95%;
  185. // padding: 38rpx 20rpx 237rpx 20rpx;
  186. padding: 20rpx;
  187. // position: absolute;
  188. // top: 0rpx;
  189. // bottom: 130rpx;
  190. // margin-bottom: constant(safe-area-inset-bottom);
  191. // margin-bottom: env(safe-area-inset-bottom);
  192. .loading {
  193. //loading动画
  194. display: flex;
  195. justify-content: center;
  196. @keyframes stretchdelay {
  197. 0%,
  198. 40%,
  199. 100% {
  200. transform: scaleY(0.6);
  201. }
  202. 20% {
  203. transform: scaleY(1);
  204. }
  205. }
  206. .spinner {
  207. margin: 20rpx 0;
  208. width: 60rpx;
  209. height: 100rpx;
  210. display: flex;
  211. align-items: center;
  212. justify-content: space-between;
  213. view {
  214. background-color: #f06c7a;
  215. height: 50rpx;
  216. width: 6rpx;
  217. border-radius: 6rpx;
  218. animation: stretchdelay 1.2s infinite ease-in-out;
  219. }
  220. .rect2 {
  221. animation-delay: -1.1s;
  222. }
  223. .rect3 {
  224. animation-delay: -1s;
  225. }
  226. .rect4 {
  227. animation-delay: -0.9s;
  228. }
  229. .rect5 {
  230. animation-delay: -0.8s;
  231. }
  232. }
  233. }
  234. .row {
  235. .system {
  236. display: flex;
  237. justify-content: center;
  238. view {
  239. padding: 0 30rpx;
  240. height: 50rpx;
  241. display: flex;
  242. justify-content: center;
  243. align-items: center;
  244. background-color: #c9c9c9;
  245. color: #fff;
  246. font-size: 24rpx;
  247. border-radius: 40rpx;
  248. }
  249. .red-envelope {
  250. image {
  251. margin-right: 5rpx;
  252. width: 30rpx;
  253. height: 30rpx;
  254. }
  255. }
  256. }
  257. &:first-child {
  258. // margin-top: 20rpx;
  259. }
  260. padding: 15rpx 0;
  261. .my .left,
  262. .other .right {
  263. width: 86%;
  264. display: flex;
  265. .bubble {
  266. max-width: 91%;
  267. min-height: 50rpx;
  268. // border-radius: 13rpx;
  269. padding: 20rpx 30rpx;
  270. display: flex;
  271. align-items: center;
  272. font-size: 30rpx;
  273. word-break: break-word;
  274. &.img {
  275. background-color: transparent;
  276. padding: 0;
  277. overflow: hidden;
  278. image {
  279. max-width: 300rpx;
  280. // max-height: 350rpx;
  281. }
  282. }
  283. &.red-envelope {
  284. background-color: transparent;
  285. padding: 0;
  286. overflow: hidden;
  287. position: relative;
  288. justify-content: center;
  289. align-items: flex-start;
  290. image {
  291. width: 250rpx;
  292. height: 313rpx;
  293. }
  294. .tis {
  295. position: absolute;
  296. top: 6%;
  297. font-size: 26rpx;
  298. color: #9c1712;
  299. }
  300. .blessing {
  301. position: absolute;
  302. bottom: 14%;
  303. color: #e9b874;
  304. width: 80%;
  305. text-align: center;
  306. overflow: hidden;
  307. // 最多两行
  308. display: -webkit-box;
  309. -webkit-box-orient: vertical;
  310. -webkit-line-clamp: 2;
  311. }
  312. }
  313. &.voice {
  314. .icon {
  315. font-size: 40rpx;
  316. display: flex;
  317. align-items: center;
  318. }
  319. .icon:after {
  320. content: ' ';
  321. width: 53rpx;
  322. height: 53rpx;
  323. border-radius: 100%;
  324. position: absolute;
  325. box-sizing: border-box;
  326. }
  327. .length {
  328. font-size: 28rpx;
  329. }
  330. }
  331. }
  332. }
  333. .my .right,
  334. .other .left {
  335. flex-shrink: 0;
  336. // width: 84rpx;
  337. // height: 84rpx;
  338. // image {
  339. // width: 80rpx;
  340. // height: 80rpx;
  341. // border-radius: 50%;
  342. // }
  343. }
  344. .my {
  345. width: 100%;
  346. display: flex;
  347. justify-content: flex-end;
  348. .left {
  349. min-height: 80rpx;
  350. flex-wrap: wrap;
  351. align-items: center;
  352. justify-content: flex-end;
  353. .bubbleimg {
  354. image {
  355. height: 300rpx;
  356. width: 400rpx;
  357. border-radius: 10px 0px 10px 10px;
  358. }
  359. }
  360. .bubble {
  361. border-radius: 20rpx 0rpx 20rpx 20rpx;
  362. }
  363. .username {
  364. width: 100%;
  365. height: 48rpx;
  366. font-size: 26rpx;
  367. color: #999;
  368. display: flex;
  369. justify-content: flex-end;
  370. .name {
  371. // margin-right: 50rpx;
  372. }
  373. }
  374. .bubble {
  375. background-color: #26b3a0;
  376. color: #000;
  377. font-size: 30rpx;
  378. &.voice {
  379. .icon {
  380. color: #fff;
  381. }
  382. .length {
  383. margin-right: 20rpx;
  384. }
  385. }
  386. &.play {
  387. @keyframes my-play {
  388. 0% {
  389. transform: translateX(80%);
  390. }
  391. 100% {
  392. transform: translateX(0%);
  393. }
  394. }
  395. .icon:after {
  396. border-left: solid 10rpx rgba(240, 108, 122, 0.5);
  397. animation: my-play 1s linear infinite;
  398. }
  399. }
  400. }
  401. }
  402. .right {
  403. margin-left: 22rpx;
  404. }
  405. }
  406. .other {
  407. width: 100%;
  408. display: flex;
  409. .bubbleimg {
  410. image {
  411. width: 400rpx;
  412. height: 300rpx;
  413. border-radius: 0px 10px 10px 10px;
  414. }
  415. }
  416. .bubble {
  417. border-radius: 0rpx 20rpx 20rpx 20rpx;
  418. }
  419. .left {
  420. margin-right: 22rpx;
  421. }
  422. .tip {
  423. display: flex;
  424. flex-direction: column;
  425. position: absolute;
  426. justify-content: space-between;
  427. right: -50rpx;
  428. bottom: 0;
  429. height: 92rpx;
  430. }
  431. .right {
  432. flex-wrap: wrap;
  433. .username {
  434. width: 100%;
  435. height: 48rpx;
  436. font-size: 26rpx;
  437. color: #999;
  438. display: flex;
  439. .name {
  440. // margin-right: 50rpx;
  441. }
  442. }
  443. .bubble {
  444. background-color: #fff;
  445. color: #333;
  446. &.voice {
  447. .icon {
  448. color: #333;
  449. }
  450. .length {
  451. margin-left: 20rpx;
  452. }
  453. }
  454. &.play {
  455. @keyframes other-play {
  456. 0% {
  457. transform: translateX(-80%);
  458. }
  459. 100% {
  460. transform: translateX(0%);
  461. }
  462. }
  463. .icon:after {
  464. border-right: solid 10rpx rgba(255, 255, 255, 0.8);
  465. animation: other-play 1s linear infinite;
  466. }
  467. }
  468. }
  469. }
  470. }
  471. .exchange {
  472. font-weight: bold;
  473. font-size: 30rpx;
  474. background: #00000014;
  475. padding: 15rpx 35rpx;
  476. border-radius: 45rpx;
  477. .launch {
  478. margin-right: 35rpx;
  479. }
  480. .agree {
  481. color: #4095e5;
  482. margin-right: 25rpx;
  483. }
  484. .refuse {
  485. color: #fe7058;
  486. }
  487. }
  488. }
  489. }
  490. }
  491. .ability {
  492. width: 100%;
  493. position: fixed;
  494. top: 0;
  495. height: 115rpx;
  496. background: #ffffff;
  497. z-index: 9;
  498. border-bottom: #e5e5e5 solid 1px;
  499. .item_ability {
  500. width: 20%;
  501. .t_ability {
  502. font-size: 26rpx;
  503. margin-top: 6rpx;
  504. }
  505. }
  506. }
  507. .flash {
  508. margin-left: 2px;
  509. animation: flash 0.8s linear infinite;
  510. }
  511. // 实现光标闪烁
  512. @keyframes flash {
  513. from {
  514. opacity: 0;
  515. }
  516. to {
  517. opacity: 1;
  518. }
  519. }
  520. .neckBtn_view {
  521. align-items: center;
  522. display: flex;
  523. justify-content: center;
  524. position: fixed;
  525. flex-direction: column;
  526. background: linear-gradient(-45deg, #26b3a0, #3edd3e);
  527. border-radius: 100rpx 0 0 100rpx;
  528. box-shadow: 0rpx 10rpx 10rpx 0rpx rgba(0, 0, 0, 0.2);
  529. box-sizing: border-box;
  530. color: #fff;
  531. font-size: 25rpx;
  532. line-height: 30rpx;
  533. padding: 10rpx 25rpx 10rpx;
  534. right: 0;
  535. text-align: center;
  536. bottom: 415rpx;
  537. .free_view {
  538. font-size: 28rpx;
  539. margin-bottom: 6rpx;
  540. }
  541. }
  542. .poster-img {
  543. width: 670rpx;
  544. height: 928rpx;
  545. position: relative;
  546. text {
  547. background: url('https://s.yun-live.com/images/20210201/5c4ef9d86bc5eec90f2f915683d9db08.png') no-repeat;
  548. background-size: 100% 100%;
  549. display: inline-block;
  550. width: 50rpx;
  551. height: 50rpx;
  552. position: absolute;
  553. top: -60rpx;
  554. right: 0;
  555. }
  556. image {
  557. width: 100%;
  558. height: 100%;
  559. }
  560. view {
  561. font-size: 32rpx;
  562. font-family: PingFang-SC-Bold, PingFang-SC;
  563. font-weight: bold;
  564. color: #ffffff;
  565. line-height: 32rpx;
  566. text-align: center;
  567. margin-top: 28rpx;
  568. }
  569. }
  570. .poster {
  571. padding: 24rpx 40rpx;
  572. .footer-btn {
  573. margin-top: 24rpx;
  574. display: flex;
  575. align-items: center;
  576. justify-content: space-between;
  577. view {
  578. width: 319rpx;
  579. height: 66rpx;
  580. border-radius: 40rpx;
  581. border: 1px solid #4070ff;
  582. font-size: 26rpx;
  583. font-family: PingFangSC-Regular, PingFang SC;
  584. font-weight: 400;
  585. color: #4070ff;
  586. line-height: 66rpx;
  587. text-align: center;
  588. }
  589. .save {
  590. background: #4070ff;
  591. color: #ffffff;
  592. }
  593. }
  594. }
  595. .poster-btn {
  596. position: fixed;
  597. bottom: 0;
  598. left: 0;
  599. width: 100%;
  600. height: 140rpx;
  601. background: #ffffff;
  602. border-radius: 32rpx 32rpx 0px 0px;
  603. display: flex;
  604. align-items: center;
  605. justify-content: space-around;
  606. >view {
  607. width: 80rpx;
  608. height: 80rpx;
  609. position: relative;
  610. border-radius: 10rpx;
  611. border: 4rpx solid #fff;
  612. &.is-check {
  613. border: 4rpx solid #4070ff;
  614. }
  615. image {
  616. width: 100%;
  617. height: 100%;
  618. }
  619. view {
  620. width: 30rpx;
  621. height: 30rpx;
  622. position: absolute;
  623. right: -15rpx;
  624. bottom: -15rpx;
  625. background: url('https://s.yun-live.com/images/20210201/311c01265c1aa508418f6bae10d67602.png') no-repeat;
  626. background-size: 100% 100%;
  627. }
  628. }
  629. }
  630. .select {
  631. font-weight: bold;
  632. font-size: 32rpx;
  633. margin: 30rpx;
  634. }
  635. .model_view {
  636. margin: 30rpx;
  637. .modelname {
  638. font-size: 32rpx;
  639. font-weight: bold;
  640. width: 56%;
  641. .name {
  642. overflow: hidden;
  643. white-space: nowrap;
  644. text-overflow: ellipsis;
  645. }
  646. .modeldetails {
  647. font-size: 26rpx;
  648. font-weight: 500;
  649. margin-top: 12rpx;
  650. color: #9e9e9e;
  651. overflow: hidden;
  652. text-overflow: ellipsis;
  653. display: -webkit-box;
  654. -webkit-line-clamp: 2;
  655. -webkit-box-orient: vertical;
  656. }
  657. }
  658. .modelselect {
  659. background: #03a9f4;
  660. border-radius: 14rpx;
  661. color: #fff;
  662. width: 58px;
  663. height: 30px;
  664. line-height: 30px;
  665. text-align: center;
  666. }
  667. }
  668. .expand {
  669. // padding: 20rpx;
  670. // margin: 20rpx 20rpx 155rpx 20rpx;
  671. // padding-bottom: env(safe-area-inset-bottom);
  672. margin-left: 20rpx;
  673. .surplus {
  674. font-size: 26rpx;
  675. background: #fff;
  676. border-radius: 50rpx;
  677. padding: 8rpx 12rpx;
  678. margin-right: 20rpx;
  679. border: 1px solid #ededed;
  680. // box-shadow: 0px 0px 10px 3px #f1f1f1;
  681. .item {
  682. margin-left: 10rpx;
  683. }
  684. // display: inline-block;
  685. }
  686. }
  687. .scroll-view_H {
  688. white-space: nowrap;
  689. width: 100%;
  690. margin-bottom: 177rpx;
  691. }
  692. .operate {
  693. width: 91%;
  694. margin-top: 12rpx;
  695. position: relative;
  696. .duplicate {
  697. font-size: 26rpx;
  698. margin-left: 6rpx;
  699. color: #9e9e9e;
  700. }
  701. // .eliseaudio {
  702. // position: absolute;
  703. // right: 0;
  704. // }
  705. .share {
  706. font-size: 26rpx;
  707. margin-left: 6rpx;
  708. color: #9e9e9e;
  709. }
  710. .broadcast {
  711. background: #fff;
  712. width: 150rpx;
  713. height: 40rpx;
  714. border-radius: 60rpx;
  715. // padding: 0 5rpx;
  716. .play {
  717. border-radius: 50%;
  718. }
  719. image {
  720. width: 150rpx;
  721. height: 40rpx;
  722. border-radius: 60rpx;
  723. }
  724. }
  725. .hoversubmit {
  726. background: #9e9e9e61;
  727. }
  728. }
  729. .bottomheight {
  730. width: 100%;
  731. height: 217rpx;
  732. }
  733. .soundrecording {
  734. flex-direction: column;
  735. .discriminate {
  736. color: #9e9e9e;
  737. margin-bottom: 30rpx;
  738. }
  739. }
  740. .waveform {
  741. image {
  742. width: 468rpx;
  743. height: 168rpx;
  744. }
  745. }
  746. .operation {
  747. margin: 60rpx 0 30rpx;
  748. .affirm {
  749. margin: 0 42rpx;
  750. image {
  751. width: 60rpx;
  752. height: 60rpx;
  753. }
  754. }
  755. .longpress {
  756. background: red;
  757. border-radius: 50%;
  758. padding: 30rpx;
  759. image {
  760. width: 70rpx;
  761. height: 70rpx;
  762. }
  763. }
  764. .hoversubmit {
  765. background: #9e9e9e61;
  766. }
  767. }
  768. .env {
  769. padding-bottom: env(safe-area-inset-bottom);
  770. }