|
|
@@ -0,0 +1,824 @@
|
|
|
+<template>
|
|
|
+ <div class="header" @touchmove.prevent>
|
|
|
+ <div class="left" :class="{ show: showMusic }">
|
|
|
+ <div class="music" @click.stop="onMenuClick('music')">
|
|
|
+ <img :src="require(`@/assets/images/icon/${showMusicPlaying ? 'music_on@2x' : 'music_off@2x'}.png`)" alt="" />
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- <div v-show="mode != 'panorama' && !isApp && player.showWidgets" class="back-pano" @click="onChangeMode">
|
|
|
+ <ui-icon type="show_back"></ui-icon>
|
|
|
+ </div>
|
|
|
+ <div v-show="mode == 'panorama'" class="back" @click="onBack">
|
|
|
+ <ui-icon type="_back"></ui-icon>
|
|
|
+ </div> -->
|
|
|
+ </div>
|
|
|
+ <div class="title" :class="{ up: player.showDescription, drak: mode != 'panorama', empty: !description }"
|
|
|
+ @click="onShowDescription" v-show="player.showWidgets">
|
|
|
+ <div>
|
|
|
+ <span>
|
|
|
+ {{ metadata.title }}
|
|
|
+ <i class="iconfont icon-pull-down"></i>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="right" v-show="player.showWidgets" @click="onShowMore">
|
|
|
+ <i class="iconfont icon-show_more_share"></i>
|
|
|
+ </div>
|
|
|
+ <transition appear name="custom-classes-transition" enter-active-class="animated fadeInUp short faster"
|
|
|
+ leave-active-class="animated fadeOutDown short faster">
|
|
|
+ <div class="content" :class="{ drak: mode != 'panorama' }" v-if="player.showDescription"
|
|
|
+ @click="onShowDescription">
|
|
|
+ <div>
|
|
|
+ <div v-html="description"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </transition>
|
|
|
+ <template v-if="isApp">
|
|
|
+ <transition appear name="custom-classes-transition" enter-active-class="animated slideInUp faster"
|
|
|
+ leave-active-class="animated slideOutDown faster">
|
|
|
+ <div class="app-share" v-if="showShare">
|
|
|
+ <ul :class="{ flex: player.lang == 'zh' }">
|
|
|
+ <li @click="onShare('weixin')">
|
|
|
+ <i class="iconfont icon_wechat"></i>
|
|
|
+ <div>微信</div>
|
|
|
+ </li>
|
|
|
+ <li @click="onShare('weixinFriend')">
|
|
|
+ <i class="iconfont icon_friend"></i>
|
|
|
+ <div>朋友圈</div>
|
|
|
+ </li>
|
|
|
+ <li @click="onShare('qq')">
|
|
|
+ <i class="iconfont icon_qq"></i>
|
|
|
+ <div>QQ</div>
|
|
|
+ </li>
|
|
|
+ <li v-if="player.lang != 'zh'" @click="onShare('faceBook')">
|
|
|
+ <i class="iconfont iconicon_share_facebook"></i>
|
|
|
+ <div>Facebook</div>
|
|
|
+ </li>
|
|
|
+ <li v-if="player.lang != 'zh'" @click="onShare('whatsApp')">
|
|
|
+ <i class="iconfont iconicon_share_whatsapp"></i>
|
|
|
+ <div>WhatsApp</div>
|
|
|
+ </li>
|
|
|
+ <li @click="onShare('copy')">
|
|
|
+ <i class="iconfont iconlink"></i>
|
|
|
+ <div>複製鏈接</div>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ <div @click="showShare = false">取消</div>
|
|
|
+ </div>
|
|
|
+ </transition>
|
|
|
+ </template>
|
|
|
+ <div class="url-share" v-show="showCopy">
|
|
|
+ <div>
|
|
|
+ <div class="tips">
|
|
|
+ <h4>分享鏈接給好友</h4>
|
|
|
+ <i class="iconfont iconshow_cancel" @click="showCopy = false"></i>
|
|
|
+ </div>
|
|
|
+ <div class="url">{{ copyLink }}</div>
|
|
|
+ <div class="btns">
|
|
|
+ <ui-button class="cancel" @click="showCopy = false">取消</ui-button>
|
|
|
+ <ui-button class="primary" :data-clipboard-text="copyLink" ref="copy$">一鍵複製</ui-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script setup>
|
|
|
+import ClipboardJS from 'clipboard'
|
|
|
+import browser from '@/utils/browser'
|
|
|
+import { useStore } from 'vuex'
|
|
|
+import { Dialog } from '@/global_components/'
|
|
|
+import { IsApp, MessageToApp, NotchHeight } from '@/utils/platform'
|
|
|
+import { useMusicPlayer } from '@/utils/sound'
|
|
|
+import { onMounted, watch, computed, ref, nextTick } from 'vue'
|
|
|
+import { useApp, getApp } from '@/app'
|
|
|
+
|
|
|
+let share_url = browser.getURLParam('share_url')
|
|
|
+if (share_url) {
|
|
|
+ share_url = decodeURIComponent(share_url)
|
|
|
+} else {
|
|
|
+ share_url = `${location.origin}${location.pathname}?m=${browser.getURLParam('m')}&pose=${browser.getURLParam('pose')}`
|
|
|
+}
|
|
|
+const musicPlayer = useMusicPlayer()
|
|
|
+const store = useStore()
|
|
|
+const metadata = computed(() => store.getters['scene/metadata'])
|
|
|
+const controls = computed(() => {
|
|
|
+ return metadata.value.controls
|
|
|
+})
|
|
|
+const showMusicPlaying = ref(false)
|
|
|
+const showMusic = computed(() => store.getters['scene/metadata'].music)
|
|
|
+const player = computed(() => store.getters['player'])
|
|
|
+
|
|
|
+const copy$ = ref(null)
|
|
|
+const copyLink = ref(share_url)
|
|
|
+const isApp = ref(IsApp)
|
|
|
+const showCopy = ref(false)
|
|
|
+const showShare = ref(false)
|
|
|
+const isMusicPlaying = ref(false)
|
|
|
+
|
|
|
+const mode = computed(() => store.getters['mode'])
|
|
|
+const description = computed(() => metadata.value.description)
|
|
|
+watch(
|
|
|
+ () => showCopy.value,
|
|
|
+ (val, old) => {
|
|
|
+ store.commit('SetPlayerOptions', {
|
|
|
+ showMap: !showCopy.value,
|
|
|
+ showToolbar: !showCopy.value,
|
|
|
+ })
|
|
|
+ },
|
|
|
+ {
|
|
|
+ deep: true,
|
|
|
+ }
|
|
|
+)
|
|
|
+watch(
|
|
|
+ () => showShare.value,
|
|
|
+ (val, old) => {
|
|
|
+ store.commit('SetPlayerOptions', {
|
|
|
+ showMap: !showShare.value,
|
|
|
+ showToolbar: !showShare.value,
|
|
|
+ })
|
|
|
+ },
|
|
|
+ {
|
|
|
+ deep: true,
|
|
|
+ }
|
|
|
+)
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ new ClipboardJS(copy$.value.$el).on('success', function (e) {
|
|
|
+ e.clearSelection()
|
|
|
+ showCopy.value = false
|
|
|
+ Dialog.toast({ content: '場景鏈接複製成功', type: 'success' })
|
|
|
+ })
|
|
|
+
|
|
|
+ nextTick(() => {
|
|
|
+ document.querySelector('.player').addEventListener('touchstart', () => {
|
|
|
+ if (player.value.showMore) {
|
|
|
+ store.commit('SetPlayerOptions', {
|
|
|
+ showMore: false,
|
|
|
+ showMap: true,
|
|
|
+ showToolbar: true,
|
|
|
+ })
|
|
|
+ } else if (player.value.showDescription) {
|
|
|
+ store.commit('SetPlayerOptions', {
|
|
|
+ showDescription: false,
|
|
|
+ showMap: true,
|
|
|
+ showToolbar: true,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ window.Back = () => {
|
|
|
+ onBack()
|
|
|
+ }
|
|
|
+ musicPlayer.on('play', () => (showMusicPlaying.value = true))
|
|
|
+ musicPlayer.on('pause', () => (showMusicPlaying.value = false))
|
|
|
+ })
|
|
|
+})
|
|
|
+const onBack = () => {
|
|
|
+ player.value.showVR && store.commit('showVR')
|
|
|
+}
|
|
|
+const onShowMore = () => {
|
|
|
+ showCopy.value = true
|
|
|
+ // let show = !player.value.showMore
|
|
|
+ // store.commit('SetPlayerOptions', {
|
|
|
+ // showMore: show,
|
|
|
+ // showMap: show == false,
|
|
|
+ // showToolbar: show == false,
|
|
|
+ // showDescription: false,
|
|
|
+ // })
|
|
|
+}
|
|
|
+const onShowDescription = () => {
|
|
|
+ let show = !player.value.showDescription
|
|
|
+ store.commit('SetPlayerOptions', {
|
|
|
+ showMore: false,
|
|
|
+ showMap: show == false,
|
|
|
+ showToolbar: show == false,
|
|
|
+ showDescription: show,
|
|
|
+ })
|
|
|
+}
|
|
|
+const onMusicClick = () => {
|
|
|
+ showMusicPlaying.value ? musicPlayer.pause() : musicPlayer.play()
|
|
|
+}
|
|
|
+const onMenuClick = name => {
|
|
|
+ // store.commit('SetPlayerOptions', {
|
|
|
+ // showMore: false,
|
|
|
+ // showDescription: false,
|
|
|
+ // showMap: true,
|
|
|
+ // showToolbar: true,
|
|
|
+ // })
|
|
|
+
|
|
|
+ nextTick(() => {
|
|
|
+ if (name == 'music') {
|
|
|
+ onMusicClick()
|
|
|
+ // if (isMusicPlaying.value) {
|
|
|
+ // musicPlayer.pause()
|
|
|
+ // } else {
|
|
|
+ // musicPlayer.play()
|
|
|
+ // }
|
|
|
+ }
|
|
|
+
|
|
|
+ // else if (name == 'share') {
|
|
|
+ // if (isApp.value) {
|
|
|
+ // showShare.value = true
|
|
|
+ // } else {
|
|
|
+ // showCopy.value = true
|
|
|
+ // }
|
|
|
+ // } else if (name === 'measure') {
|
|
|
+ // this.$bus.emit('measure/Handle', 'start')
|
|
|
+ // } else if (name == 'vr') {
|
|
|
+ // store.commit('showVR')
|
|
|
+ // }
|
|
|
+ })
|
|
|
+}
|
|
|
+const onShare = name => {
|
|
|
+ if (name == 'copy') {
|
|
|
+ showShare.value = false
|
|
|
+ this.$nextTick(() => {
|
|
|
+ showCopy.value = true
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ MessageToApp(`Share-${name}`)
|
|
|
+ showCopy.value = false
|
|
|
+ showShare.value = false
|
|
|
+ }
|
|
|
+}
|
|
|
+const onChangeMode = () => {
|
|
|
+ store.commit('setMode', 'panorama')
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+.disable {
|
|
|
+ opacity: 1;
|
|
|
+}
|
|
|
+
|
|
|
+.header {
|
|
|
+ position: absolute;
|
|
|
+ top: 0.3rem;
|
|
|
+ left: 0;
|
|
|
+ height: 40px;
|
|
|
+ width: 100%;
|
|
|
+ z-index: 101;
|
|
|
+ color: #fff;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ text-shadow: 0px 0px 4px rgba(0, 0, 0, 0.4);
|
|
|
+
|
|
|
+ &.app {
|
|
|
+ top: 1rem;
|
|
|
+ }
|
|
|
+
|
|
|
+ .left {
|
|
|
+ width: 1.28rem;
|
|
|
+ height: 100%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: flex-end;
|
|
|
+ pointer-events: none;
|
|
|
+
|
|
|
+ &.show {
|
|
|
+ visibility: visible;
|
|
|
+ pointer-events: auto;
|
|
|
+
|
|
|
+ .music {
|
|
|
+ visibility: visible;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .music {
|
|
|
+ width: 0.50rem;
|
|
|
+ height: 0.50rem;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ visibility: hidden;
|
|
|
+ position: relative;
|
|
|
+
|
|
|
+ >img {
|
|
|
+ width: 100%;
|
|
|
+ height: auto;
|
|
|
+ position: static;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ .right {
|
|
|
+ position: relative;
|
|
|
+ width: 1.28rem;
|
|
|
+ height: 100%;
|
|
|
+ padding-right: 30px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: flex-end;
|
|
|
+ z-index: 11;
|
|
|
+
|
|
|
+ >i {
|
|
|
+ font-size: 0.45rem;
|
|
|
+ color: rgba(255, 255, 255, 0.88);
|
|
|
+ }
|
|
|
+
|
|
|
+ >div {
|
|
|
+ position: absolute;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ right: 10px;
|
|
|
+ top: 1.3rem;
|
|
|
+ padding: 4px 0.42105rem;
|
|
|
+ background-color: rgba(0, 0, 0, 0.5);
|
|
|
+ border-radius: 5px;
|
|
|
+
|
|
|
+ &::after {
|
|
|
+ content: '';
|
|
|
+ position: absolute;
|
|
|
+ top: -5px;
|
|
|
+ right: 0.3rem;
|
|
|
+ width: 0;
|
|
|
+ height: 0;
|
|
|
+ border-width: 0 5px 5px;
|
|
|
+ border-style: solid;
|
|
|
+ border-color: transparent transparent rgba(0, 0, 0, 0.5);
|
|
|
+ }
|
|
|
+
|
|
|
+ &.flex {
|
|
|
+ li {
|
|
|
+ span {
|
|
|
+ flex: 1;
|
|
|
+ width: auto;
|
|
|
+ // min-width: 2.8rem;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ li {
|
|
|
+ position: relative;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ // margin-top: 0.3rem;
|
|
|
+ font-size: 0;
|
|
|
+ // height: .5333rem;
|
|
|
+ padding: 0.1333rem 0 0.2667rem;
|
|
|
+
|
|
|
+ i {
|
|
|
+ // position: absolute;
|
|
|
+ // left: 0;
|
|
|
+ // top: 0;
|
|
|
+ // font-size: 0.45rem;
|
|
|
+ font-size: 0.3733rem;
|
|
|
+ margin-right: 0.4rem;
|
|
|
+ }
|
|
|
+
|
|
|
+ b {
|
|
|
+ position: absolute;
|
|
|
+ left: 0.32rem;
|
|
|
+ top: 0.33rem;
|
|
|
+ width: 7px;
|
|
|
+ height: 7px;
|
|
|
+ border-radius: 50%;
|
|
|
+ background-color: #00c2c4;
|
|
|
+
|
|
|
+ i {
|
|
|
+ color: #fff;
|
|
|
+ font-size: 12px;
|
|
|
+ transform: scale(0.3, 0.3);
|
|
|
+ top: -4px;
|
|
|
+ left: -3px;
|
|
|
+ position: absolute;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ span {
|
|
|
+ width: 1.89474rem;
|
|
|
+ white-space: nowrap;
|
|
|
+ text-align: left;
|
|
|
+ // padding-bottom: 0.3rem;
|
|
|
+ // margin-left: 0.75rem;
|
|
|
+ font-size: 0.3733rem;
|
|
|
+ // text-indent: 0.2rem;
|
|
|
+ // padding-right: 0.2rem;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .home {
|
|
|
+ border-top: solid 1px rgba(255, 255, 255, 0.4);
|
|
|
+
|
|
|
+ a {
|
|
|
+ width: 1.89474rem;
|
|
|
+ margin-top: 0.3rem;
|
|
|
+ margin-bottom: 0.1rem;
|
|
|
+ margin-left: auto;
|
|
|
+ margin-right: auto;
|
|
|
+ display: block;
|
|
|
+ text-decoration: none;
|
|
|
+ overflow: hidden;
|
|
|
+
|
|
|
+ img {
|
|
|
+ width: 100%;
|
|
|
+ outline: none;
|
|
|
+ border: none;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .title {
|
|
|
+ display: flex;
|
|
|
+ flex: 1;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ font-size: 14px;
|
|
|
+ letter-spacing: 1px;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+
|
|
|
+ >div {
|
|
|
+ display: flex;
|
|
|
+ transition: background 0.3s ease, min-width 0.3s ease, border-radius 0.3s ease;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ padding-right: 12px;
|
|
|
+ padding-left: 12px;
|
|
|
+ white-space: nowrap;
|
|
|
+ position: absolute;
|
|
|
+ height: 100%;
|
|
|
+ min-width: 100%;
|
|
|
+ overflow: visible;
|
|
|
+ pointer-events: none;
|
|
|
+ background: linear-gradient(90deg, transparent, rgba(0, 0, 0, .2) 29%, rgba(0, 0, 0, .2) 69%, transparent);
|
|
|
+ }
|
|
|
+
|
|
|
+ span {
|
|
|
+ display: inline-block;
|
|
|
+ position: relative;
|
|
|
+ white-space: nowrap;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ max-width: 7rem;
|
|
|
+ display: inline-block;
|
|
|
+ padding-right: 20px;
|
|
|
+
|
|
|
+ i {
|
|
|
+ position: absolute;
|
|
|
+ right: 0;
|
|
|
+ color: #fff;
|
|
|
+ font-size: 10px;
|
|
|
+ top: 50%;
|
|
|
+ -webkit-transform: translateY(-50%);
|
|
|
+ transform: translateY(-50%);
|
|
|
+ vertical-align: bottom;
|
|
|
+ line-height: normal;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ &.up {
|
|
|
+ i {
|
|
|
+ transform: translateY(-50%) rotate(180deg);
|
|
|
+ }
|
|
|
+
|
|
|
+ >div {
|
|
|
+ min-width: 0;
|
|
|
+ //position: static;
|
|
|
+ flex-shrink: 0;
|
|
|
+ background-color: rgba(0, 0, 0, 0.5);
|
|
|
+ border-radius: 1.15789rem;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.drak {
|
|
|
+ >div {
|
|
|
+ background-color: rgba(0, 0, 0, 0.8);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ &.empty {
|
|
|
+ i {
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .content {
|
|
|
+ position: absolute;
|
|
|
+ top: 1.2rem;
|
|
|
+ left: 0.92105rem;
|
|
|
+ right: 0.92105rem;
|
|
|
+ padding: 10px;
|
|
|
+ background: rgba(0, 0, 0, 0.5);
|
|
|
+ border-radius: 5px;
|
|
|
+ font-size: 0.36842rem;
|
|
|
+ text-align: center;
|
|
|
+
|
|
|
+ &.drak {
|
|
|
+ background: rgba(0, 0, 0, 0.8);
|
|
|
+ }
|
|
|
+
|
|
|
+ >div {
|
|
|
+ display: inline-block;
|
|
|
+ text-align: left;
|
|
|
+ letter-spacing: 1px;
|
|
|
+ word-break: break-all;
|
|
|
+ white-space: normal;
|
|
|
+ line-height: 1.5;
|
|
|
+ // h4 {
|
|
|
+ // margin: 0;
|
|
|
+ // padding: 0;
|
|
|
+ // margin-bottom: 0.28rem;
|
|
|
+ // font-size: 0.43rem;
|
|
|
+ // padding-left: 0.18789rem;
|
|
|
+ // width: 100%;
|
|
|
+ // position: relative;
|
|
|
+ // &::before {
|
|
|
+ // content: "";
|
|
|
+ // position: absolute;
|
|
|
+ // left: 0;
|
|
|
+ // top: 50%;
|
|
|
+ // height: 80%;
|
|
|
+ // transform: translateY(-50%);
|
|
|
+ // width: 2px;
|
|
|
+ // background-color: var(--editor-main-color);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+ :deep(p) {
|
|
|
+ word-break: break-word;
|
|
|
+ }
|
|
|
+
|
|
|
+ :deep(a) {
|
|
|
+ color: var(--editor-main-color);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // &::after {
|
|
|
+ // content: "";
|
|
|
+ // position: absolute;
|
|
|
+ // top: -6px;
|
|
|
+ // left: 50%;
|
|
|
+ // margin-left: -3px;
|
|
|
+ // width: 0;
|
|
|
+ // height: 0;
|
|
|
+ // border-width: 0 7px 6px;
|
|
|
+ // border-style: solid;
|
|
|
+ // border-color: transparent transparent rgba(0, 0, 0, 0.5);
|
|
|
+ // }
|
|
|
+ }
|
|
|
+
|
|
|
+ .url-share {
|
|
|
+ position: fixed;
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ right: 0;
|
|
|
+ bottom: 0;
|
|
|
+ background-color: rgba(0, 0, 0, 0.1);
|
|
|
+
|
|
|
+ >div {
|
|
|
+ position: absolute;
|
|
|
+ left: 0.6rem;
|
|
|
+ right: 0.6rem;
|
|
|
+ top: 50vh;
|
|
|
+ transform: translateY(-50%);
|
|
|
+ border-radius: 4px;
|
|
|
+ background-color: rgba(0, 0, 0, 0.5);
|
|
|
+ padding: 0.31579rem;
|
|
|
+ font-size: 0.36842rem;
|
|
|
+
|
|
|
+ .tips {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+
|
|
|
+ h4 {
|
|
|
+ margin: 0;
|
|
|
+ font-size: 0.42105rem;
|
|
|
+ }
|
|
|
+
|
|
|
+ i {
|
|
|
+ font-size: 0.6rem;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .url {
|
|
|
+ display: -webkit-box;
|
|
|
+ color: #fff;
|
|
|
+ text-align: center;
|
|
|
+ padding: 0.26316rem;
|
|
|
+ width: 100%;
|
|
|
+ height: 1.8rem;
|
|
|
+ margin: 0.7rem 0rem;
|
|
|
+ border-radius: 0.07rem;
|
|
|
+ line-height: 1.99;
|
|
|
+ font-size: 0.36842rem;
|
|
|
+ background-color: rgba(0, 0, 0, 0.35);
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ word-break: break-all;
|
|
|
+ word-wrap: break-word;
|
|
|
+ -webkit-line-clamp: 2; //在第幾行加省略號
|
|
|
+ -webkit-box-orient: vertical;
|
|
|
+ }
|
|
|
+
|
|
|
+ .btns {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+
|
|
|
+ button {
|
|
|
+ font-size: 0.36842rem;
|
|
|
+ width: 47%;
|
|
|
+ height: 1.05263rem;
|
|
|
+ border-radius: 1.05263rem;
|
|
|
+
|
|
|
+ &.submit {
|
|
|
+ background: #00c2c4;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .app-share {
|
|
|
+ position: fixed;
|
|
|
+ left: 0;
|
|
|
+ bottom: 0;
|
|
|
+ width: 100%;
|
|
|
+ background-color: #fff;
|
|
|
+ color: var(--editor-main-color);
|
|
|
+ text-shadow: none;
|
|
|
+ border-radius: 0.146667rem 0.146667rem 0px 0px;
|
|
|
+
|
|
|
+ i {
|
|
|
+ // font-size: 2rem;
|
|
|
+ font-size: 1rem;
|
|
|
+ margin: 0.666667rem 0 0.106667rem;
|
|
|
+ display: inline-block;
|
|
|
+ }
|
|
|
+
|
|
|
+ ul {
|
|
|
+ // display: flex;
|
|
|
+ // justify-content: space-around;
|
|
|
+ overflow: hidden;
|
|
|
+
|
|
|
+ div {
|
|
|
+ text-align: center;
|
|
|
+ // margin-top: -0.3rem;
|
|
|
+ font-size: 0.34rem;
|
|
|
+ }
|
|
|
+
|
|
|
+ li {
|
|
|
+ width: 33.3%;
|
|
|
+ float: left;
|
|
|
+ // padding-bottom: 0.5rem;
|
|
|
+ overflow: hidden;
|
|
|
+ text-align: center;
|
|
|
+ // i{
|
|
|
+ // font-size: 2rem;
|
|
|
+ // }
|
|
|
+ }
|
|
|
+
|
|
|
+ &.flex {
|
|
|
+ display: flex;
|
|
|
+
|
|
|
+ li {
|
|
|
+ float: none;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ >div {
|
|
|
+ height: 1.293333rem;
|
|
|
+ font-size: 16px;
|
|
|
+ text-align: center;
|
|
|
+ // padding: 0.5rem;
|
|
|
+ border-top: solid 1px #eeeeee;
|
|
|
+ margin-top: 0.466667rem;
|
|
|
+ line-height: 1.293333rem;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+@media (orientation: landscape) {
|
|
|
+ .header {
|
|
|
+ top: 0.2rem;
|
|
|
+ height: 0.7rem;
|
|
|
+
|
|
|
+ &.app {
|
|
|
+ top: 0.2rem;
|
|
|
+ }
|
|
|
+
|
|
|
+ .left {
|
|
|
+ .back-pano {
|
|
|
+ i {
|
|
|
+ font-size: 0.5rem;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .right {
|
|
|
+ >i {
|
|
|
+ font-size: 0.5rem;
|
|
|
+ }
|
|
|
+
|
|
|
+ >div {
|
|
|
+ right: 10px;
|
|
|
+ top: 0.75rem;
|
|
|
+ padding: 4px 0.2rem;
|
|
|
+
|
|
|
+ &::after {
|
|
|
+ right: 0.23rem;
|
|
|
+ }
|
|
|
+
|
|
|
+ li {
|
|
|
+ margin-top: 0.15rem;
|
|
|
+
|
|
|
+ i {
|
|
|
+ font-size: 0.3rem;
|
|
|
+ }
|
|
|
+
|
|
|
+ b {
|
|
|
+ left: 0.2rem;
|
|
|
+ top: 0.15rem;
|
|
|
+ }
|
|
|
+
|
|
|
+ span {
|
|
|
+ padding-bottom: 0.15rem;
|
|
|
+ margin-left: 0.5rem;
|
|
|
+ font-size: 0.25rem;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .home {
|
|
|
+ a {
|
|
|
+ margin-top: 0.15rem;
|
|
|
+ margin-bottom: 0rem;
|
|
|
+ width: 1.4rem;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .title {
|
|
|
+ font-size: 0.3rem;
|
|
|
+ }
|
|
|
+
|
|
|
+ .content {
|
|
|
+ top: 1rem;
|
|
|
+ left: 2rem;
|
|
|
+ right: 2rem;
|
|
|
+ padding: 10px;
|
|
|
+
|
|
|
+ >div {
|
|
|
+ max-height: 3rem;
|
|
|
+ font-size: 0.25rem;
|
|
|
+ line-height: 1.5;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// ipad 橫屏
|
|
|
+@media only screen and (min-device-width: 768px) and (orientation: landscape) {
|
|
|
+ .header {
|
|
|
+ height: 0.8rem;
|
|
|
+
|
|
|
+ .title {
|
|
|
+ i {
|
|
|
+ margin-bottom: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// @media only screen and (min-device-width: 768px) and (orientation: portrait) {
|
|
|
+
|
|
|
+// }
|
|
|
+</style>
|
|
|
+<style lang="scss">
|
|
|
+.animated.short {
|
|
|
+ &.faster {
|
|
|
+ animation-duration: 0.3s;
|
|
|
+ }
|
|
|
+
|
|
|
+ @keyframes fadeInUp {
|
|
|
+ 0% {
|
|
|
+ opacity: 0;
|
|
|
+ transform: translate3d(0, 1rem, 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ to {
|
|
|
+ opacity: 1;
|
|
|
+ transform: translateZ(0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @keyframes fadeOutDown {
|
|
|
+ 0% {
|
|
|
+ opacity: 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ to {
|
|
|
+ opacity: 0;
|
|
|
+ transform: translate3d(0, 1rem, 0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|