video标签默认视频播放款式:
更改后的播放成果:
代码:
const [playStatus, setPlayStatus] = useState(new Array(4)); // 视频的播放状态,用于控住播放按钮的显示与暗藏const videos = () => { const ref: (HTMLVideoElement | null)[] = []; return ( <ul styleName="content-video"> // videosConfig存储一组视频的url {videosConfig.map((e, i) => ( <div styleName="video-item" key={e.fileUrl}> <video muted src={e.fileUrl} ref={el => { ref[i] = el; }} onMouseOver={() => { ref[i] && ref[i]?.play(); playStatus[i] = true; setPlayStatus([...playStatus]); }} onMouseOut={() => { ref[i] && ref[i]?.pause(); playStatus[i] = false; setPlayStatus([...playStatus]); }} key={e.fileUrl} width="250px" height="430px" /> {!playStatus[i] && <Play />} // 为false时显示播放按钮<Play />组件为播放按钮svg图 </div> ))} </ul> );
Play组件:
const Index = () => ( <> <svg className={styles.play} viewBox="0 0 63 63" version="1.1" xmlns="http://www.w3.org/2000/svg" > <g id="home" stroke="none" strokeWidth="1" fill="none" fillRule="evenodd"> <g id="homePage" transform="translate(-428.000000, -544.000000)"> <g id="编组-2" transform="translate(428.000000, 544.000000)"> <circle id="椭圆形" fill="#D8D8D8" opacity="0.7" cx="31.5" cy="31.5" r="31.5" /> <g id="播放" transform="translate(24.000000, 17.000000)" fill="#46464A" fillRule="nonzero"> <path d="M2.64369111,0.256232087 L23.1138308,12.8699856 C24.2953897,13.5949062 24.2953897,15.4072217 23.1138308,16.1321706 L2.64369111,28.7459241 C1.46213223,29.4708446 0,28.5574498 0,27.1075804 L0,1.88007338 C0,0.430203955 1.46216108,-0.468716787 2.64369111,0.256203762" id="门路" /> </g> </g> </g> </g> </svg> </>);export default Index;
款式代码: 使播放按钮居中
.video-item { position: relative; } svg { cursor: pointer; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); }