123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- <script setup>
- import { onMounted, ref, computed } from 'vue'
- import { useRouter } from 'vue-router'
- import useSizeAdapt from "@/useFunctions/useSizeAdapt"
- const router = useRouter()
- const goBack = () => {
- router.push({
- name: 'MoreContent',
- query: {
- anchorIdx: 0,
- }
- })
- }
- const {
- windowSizeInCssForRef,
- windowSizeWhenDesignForRef,
- } = useSizeAdapt()
- const reverseArray = (array) => {
- return array.slice().reverse()
- }
- const goPaintingDetail = () => {
- router.push(`/shuanggou-painting-detail?idx=0&&m=${curIndex.value}`)
- }
- const x = window.innerWidth / window.innerHeight
- onMounted(() => {
- console.log('shuchubili', x)
- })
- const text = [
- ['双钩,中国画技法名。用线条钩描',
- '物象的轮廓,通称“勾勒”,因基本上',
- '是用左右或上下两笔钩描合拢,故亦',
- '称“双钩”。大部用于工笔花鸟画。又',
- '旧时摹搨法书。沿字的笔迹两边用细',
- '劲的墨线线钩出轮廓,也叫“双钩”;',
- '双钩后填墨的称为“双钩”'],
- ['设色,国画中晕染彩色的意思,“廓',
- '填”。画面中只要出现彩色就可以说',
- '是设色作品。与设色相反的是“水墨”,',
- '指画面中不出现彩色,或者极少出现',
- '彩色的,以墨色为主绘制的作品。', ]
- ]
- const curIndex = ref(0)
- const lastX = ref(0)
- // 开始滑动
- const handletouchstart = (event) => {
- lastX.value = event.changedTouches[0].pageX
- }
- // 监听活动
- const touchEnd = (event) => {
- let currentX = event.changedTouches[0].pageX
- let tx = currentX - lastX.value
- if (tx < 0) {
- if (curIndex.value == 0) {
- curIndex.value = 1
- }
- } else if (tx > 0) {
- if (curIndex.value == 1) {
- curIndex.value = 0
- }
- }
- }
- const goToSlide = (index) => {
- curIndex.value = index
- }
- const curPercentage = computed(() => {
- return curIndex.value
- }
- )
- </script>
- <template>
- <div
- class="home"
- @touchstart="handletouchstart($event)"
- @touchend="touchEnd($event)"
- >
- <div class="title">
- <span :style="{ color: curIndex == 1 ? 'rgba(71, 71, 71, 0.50)' : '' }">双钩</span>
- <span :style="{ color: curIndex == 0 ? 'rgba(71, 71, 71, 0.50)' : '' }">设色</span>
- </div>
- <div class="shuanggou-yezi">
- <img
- src="@/assets/images/shuanggou-top-left.png"
- alt=""
- >
- <HotspotComp
- v-show="true"
- class="hotspot-1"
- @click="goPaintingDetail"
- />
- </div>
- <!-- <img
- class="text"
- src="@/assets/images/shuanggou-text.png"
- alt=""
- > -->
- <div
- class="text"
- :style="{ top: x > 0.5 ? 'auto' : '', bottom: x > 0.5 ? '15vh' : 'auto' }"
- >
- <div
- v-for="(item, index) in reverseArray(text[curIndex])"
- :key="index"
- >
- {{ item }}
- </div>
- <!-- <img
- v-show="curIndex == 0"
- src="@/assets/images/shuanggou-text.png"
- alt=""
- > -->
- <!-- <img
- v-show="curIndex == 1"
- src="@/assets/images/shese-text.png"
- alt=""
- > -->
- </div>
- <ProgressBar
- class="progress-bar"
- :totle-unit="2"
- :cur-percentage="curPercentage"
- color-ac="#7B916B"
- color="#7B916B60"
- type="1"
- @go-to-slide="goToSlide"
- />
- <img
- class="right-bottom"
- src="@/assets/images/right-bottom.png"
- alt=""
- >
- <div class="system-btns">
- <BtnBack
- color="green"
- @click="goBack"
- />
- <!-- <OperationTip
- class="operation-h"
- color="green"
- text=""
- direction="h"
- /> -->
- </div>
- </div>
- </template>
- <style lang='less' scoped>
- *{
- transition: all 1s ease;
- }
- .home {
- width: 100%;
- height: 100%;
- position: relative;
- background: #ffffff;
- .title {
- color: #474747;
- font-size: calc(48 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
- line-height: calc(48 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
- writing-mode: vertical-rl;
- font-family: 'KingHwa_OldSong';
- position: absolute;
- right: 13%;
- top: 26%;
- letter-spacing: 10px;
- }
- .shuanggou-yezi {
- width: 100%;
- animation: fade-in 2s forwards;
- position: relative;
- z-index: 2;
- @keyframes fade-in {
- 0% {
- opacity: 0;
- }
- 100% {
- opacity: 1;
- }
- }
- >img {
- width: 100%;
- margin-top: -3%;
- }
- >.hotspot-1 {
- position: absolute;
- bottom: 28%;
- left: 17%;
- pointer-events: initial;
- z-index: 3;
- }
- }
- .text {
- display: flex;
- position: absolute;
- right: 30%;
- top: 40vh;
- // top: calc(50 /v-bind('windowSizeWhenDesignForRef')/v-bind('windowSizeInCssForRef'));
- color: #707F48;
- font-size: calc(18 /v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
- line-height: calc(26 /v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
- font-family: 'KaiTi';
- >div {
- writing-mode: vertical-rl;
- letter-spacing: 2px;
- text-align: justify;
- }
- }
- .right-bottom {
- width: 100%;
- position: absolute;
- bottom: 0;
- right: 0;
- }
- .progress-bar{
- position: absolute;
- left: 0;
- bottom: 15px;
- left: 50%;
- transform: translateX(-50%);
- width: 90%;
- height: 15px;
- z-index: 3;
- color: #e1edd95d;
- transition: all 1s;
- z-index: 1;
- }
- .system-btns {
- width: 100%;
- padding: 0 calc(20 / v-bind(windowSizeWhenDesignForRef) * v-bind(windowSizeInCssForRef));
- display: flex;
- // flex-direction: column;
- justify-content: flex-end;
- position: absolute;
- bottom: calc(60 /v-bind(windowSizeWhenDesignForRef) * v-bind(windowSizeInCssForRef));
- z-index: 2;
- .operation-h {
- width: calc(36 /v-bind('windowSizeWhenDesignForRef')* v-bind('windowSizeInCssForRef'));
- transition: opacity 0.5s ease-in-out;
- }
- }
- }
- </style>
|