|
@@ -1,4 +1,4 @@
|
|
|
-import React, { useState, useRef } from 'react'
|
|
|
|
|
|
|
+import React, { useState, useRef, useEffect } from 'react'
|
|
|
import styles from './index.module.scss'
|
|
import styles from './index.module.scss'
|
|
|
import { isMobileFu } from '@/utils/history'
|
|
import { isMobileFu } from '@/utils/history'
|
|
|
import { Swiper, SwiperSlide } from 'swiper/react'
|
|
import { Swiper, SwiperSlide } from 'swiper/react'
|
|
@@ -18,6 +18,9 @@ function Look({
|
|
|
}) {
|
|
}) {
|
|
|
const [hoveredIndex, setHoveredIndex] = useState<number | null>(null)
|
|
const [hoveredIndex, setHoveredIndex] = useState<number | null>(null)
|
|
|
const [selectIndex, setSelectIndex] = useState<number | null>(null)
|
|
const [selectIndex, setSelectIndex] = useState<number | null>(null)
|
|
|
|
|
+ const [isMusicPlay, setIsMusicPlay] = useState<boolean>(false)
|
|
|
|
|
+ const audioRef = useRef<HTMLAudioElement>(null)
|
|
|
|
|
+
|
|
|
const swiperRef = useRef<any>(null)
|
|
const swiperRef = useRef<any>(null)
|
|
|
const iframeRef = useRef<HTMLIFrameElement>(null)
|
|
const iframeRef = useRef<HTMLIFrameElement>(null)
|
|
|
|
|
|
|
@@ -51,6 +54,15 @@ function Look({
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // 添加音乐播放
|
|
|
|
|
+ useEffect(() => {
|
|
|
|
|
+ if (isMusicPlay && audioRef.current) {
|
|
|
|
|
+ audioRef.current.play()
|
|
|
|
|
+ } else if (!isMusicPlay && audioRef.current) {
|
|
|
|
|
+ audioRef.current.pause()
|
|
|
|
|
+ }
|
|
|
|
|
+ }, [isMusicPlay])
|
|
|
|
|
+
|
|
|
return (
|
|
return (
|
|
|
<div className={styles.look} style={style}>
|
|
<div className={styles.look} style={style}>
|
|
|
{/* 顶部仅在pc端显示 */}
|
|
{/* 顶部仅在pc端显示 */}
|
|
@@ -104,6 +116,7 @@ function Look({
|
|
|
}}
|
|
}}
|
|
|
>
|
|
>
|
|
|
<div className='itemImage'>
|
|
<div className='itemImage'>
|
|
|
|
|
+
|
|
|
<img
|
|
<img
|
|
|
src={hoveredIndex === index ? item.activeImg : item.img}
|
|
src={hoveredIndex === index ? item.activeImg : item.img}
|
|
|
alt={item.title}
|
|
alt={item.title}
|
|
@@ -146,6 +159,7 @@ function Look({
|
|
|
onClick={() => {
|
|
onClick={() => {
|
|
|
setSelectIndex(null)
|
|
setSelectIndex(null)
|
|
|
setIsHideSider(false)
|
|
setIsHideSider(false)
|
|
|
|
|
+ setIsMusicPlay(false)
|
|
|
}}
|
|
}}
|
|
|
>
|
|
>
|
|
|
<img src={require('@/assets/img/back.png')} alt='' />
|
|
<img src={require('@/assets/img/back.png')} alt='' />
|
|
@@ -162,6 +176,15 @@ function Look({
|
|
|
src={selectIndex !== null ? oreData[selectIndex].modelSrc : ''}
|
|
src={selectIndex !== null ? oreData[selectIndex].modelSrc : ''}
|
|
|
allow='src'
|
|
allow='src'
|
|
|
/>
|
|
/>
|
|
|
|
|
+ {isMobileFu() && <div className="bgMusic">
|
|
|
|
|
+ <audio src={oreData[selectIndex].musicSrc} ref={audioRef} loop />
|
|
|
|
|
+ <img
|
|
|
|
|
+ src={isMusicPlay ? require('@/assets/img/Volume btn_on.png') : require('@/assets/img/Volume btn_off.png')}
|
|
|
|
|
+ draggable="false"
|
|
|
|
|
+ alt=""
|
|
|
|
|
+ onClick={() => setIsMusicPlay(!isMusicPlay)}
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>}
|
|
|
</div>
|
|
</div>
|
|
|
<div className='right'>
|
|
<div className='right'>
|
|
|
<div className='oreTitle'>
|
|
<div className='oreTitle'>
|
|
@@ -169,6 +192,15 @@ function Look({
|
|
|
</div>
|
|
</div>
|
|
|
<div className='intro' dangerouslySetInnerHTML={{ __html: selectIndex !== null ? oreData[selectIndex].text : '' }}>
|
|
<div className='intro' dangerouslySetInnerHTML={{ __html: selectIndex !== null ? oreData[selectIndex].text : '' }}>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ {!isMobileFu() && <div className="bgMusic">
|
|
|
|
|
+ <audio src={oreData[selectIndex].musicSrc} ref={audioRef} loop />
|
|
|
|
|
+ <img
|
|
|
|
|
+ src={isMusicPlay ? require('@/assets/img/Volume btn_on.png') : require('@/assets/img/Volume btn_off.png')}
|
|
|
|
|
+ draggable="false"
|
|
|
|
|
+ alt=""
|
|
|
|
|
+ onClick={() => setIsMusicPlay(!isMusicPlay)}
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>}
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</>
|
|
</>
|