杨帆 发表于 2025-10-11 20:59

故乡的原风景

本帖最后由 杨帆 于 2025-10-12 19:05 编辑 <br /><br /><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>故乡的原风景</title>
</head>
<body>
   <style>
    @import 'https://638183.freep.cn/638183/web/css/tz01.css';   
    #pa { --offsetX: 81px; --bg: url('https://pic1.imgdb.cn/item/68ea2b3ac5157e1a88657ca2.webp') no-repeat center/cover;}
    #vid { position: absolute; width: 100%; height: 100%; left: 0px; top: 0px;mask: radial-gradient(transparent 5%, red); -webkit-mask: radial-gradient(transparent 5%, red); opacity: .8; object-fit: cover; overflow: hidden; z-index: 1;mix-blend-mode: overlay; transition:.5s;}
    #vid1 {position: absolute; width: 437px;height: 270px;right: 5%;top: 8%;object-fit: cover; border: 3px solid #ccc;box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3) inset;border-radius: 50%;mix-blend-mode: unset;pointer-events: none;opacity: .85;z-index: 1;}
    #progress { position: absolute; width: 30vw; height: 30vw; right:-8%; bottom: -10%; transition:.4s;cursor: pointer;z-index: 5; }
    #progress:hover{transform:scale(1.1,1.1);filter:hue-rotate(45deg) drop-shadow(2px 2px 35px Snow);}
    #g1 {position: absolute;transform-box: fill-box; transform-origin: center; cursor: pointer; animation: rotate 8s linear infinite var(--state); }
    #g1:hover {animation-play-state: paused; }
    #btnFs { left: 20px; top: 20px; color: gold; border-color: currentColor !important;z-index: 5; }
    #dt { position: absolute; left: 10%; top: 50%; z-index: 5; mix-blend-mode: multiply;visibility: var(--visibility); }
    #scroll { position: absolute; left: 45px; top: 220px; width: 450px; height: 300px; padding: 15px; border-color: currentColor !important; z-index: 5; }
    #marquee { height: 100%; overflow: hidden; }
    #marquee> div { text-align: center; animation: marquee 15s linear infinite var(--state); }
    #marquee:hover > div { animation-play-state: paused; }
    .tit { font: bold 1.6em SimKai; line-height: 2.8; font-weight: 600; color:Snow; user-select: none; }
    .tit h3 { margin: 0 0 15px 0; }   
    @keyframes marquee {0% { transform: translateY(0%); }100% { transform: translateY(-100%); }}   
    #mwrap { position: absolute;perspective: 800px; transform-style: preserve-3d; right:3%;bottom: 10%;width: 200px;height: 200px;--state: running;}   
    .title-text {font: bold 30px 'Microsoft YaHei', sans-serif;color: #eee;text-shadow: 0 0 1px #000, 2px 2px 6px #333;position: absolute;color: SeaShell;user-select: none;transform-origin: center;    }
    .title-text:hover { background: hsla(210, 100%, 60%, .25);box-shadow: 0 0 20px rgba(255, 215, 0, 0.7);animation-play-state: paused;}
    .ani {animation: flash 1s linear alternate var(--state), rotate 1s linear var(--state);}
    @keyframes flash {to { color: lime;opacity: .8;}}
    @keyframes rotate {from {transform: rotate(0);} to {transform: rotate(360deg);}}
    @keyframes rot {from { transform: translate(-50%, -50%) rotateX(35deg) rotateY(10deg) rotateZ(0deg);}to {transform: translate(-50%, -50%) rotateX(35deg) rotateY(10deg) rotateZ(360deg);}}
</style>
    <div id="pa">
      <audio id="aud" src="https://upfile.mp3.wf/view.php/c49f56976dcae5f8b6f0c677376261fc.mp3" autoplay loop></audio>
      <video class ="pd-vid" src="https://video.699pic.com/videos/48/99/63/a_JQ9bv8G8yWXj1560489963_10s.mp4" autoplay loop muted></video>
      <video id="vid" src="https://bpic.588ku.com/video_listen/588ku_video/22/11/05/17/17/59/video63662a47cce4f.mp4" autoplay loop muted></video>
         <video id="vid1" src="https://upfile.mp3.wf/view.php/55c0303fe64d24695f33606cdd72d489.mp4" autoplay loop muted></video>
         <div id="mwrap"></div>
      <div id="dt"><img id="Img" src="https://pic1.imgdb.cn/item/68ea310fc5157e1a88657eb4.png" style="width: 206px;height:250px;" alt="" /></div>               
         <svg id="progress" class="grayscale" xmlns="http://www.w3.org/2000/svg" viewBox="-300 -300 600 600">
              <g id="g1" class="brightness"><title>播放/暂停</title></g>
        </svg>
      <div id="scroll">
            <div id="marquee">
                <div class="tit">
                  <h2>故乡的原风景</h2>
                  《故乡的原风景》<br />由日本陶笛艺人宗次郎创作<br />被许多人所喜爱<br />该曲以山间溪流等自然景色为比拟对象<br />透过清新悠扬的陶笛乐音<br />表达了对于自然万物与山川土地的情怀<br />
                </div>
            </div>
      </div>
    </div>
    <script type="module">
      import { FS } from 'https://638183.freep.cn/638183/web/js/pathprog.js';
      import Dr from 'https://638183.freep.cn/638183/web/mod/svgdr.mod.js?v=1.0';
      var dr = Dr.dr(progress);
      dr.polygon('0 -80, -10 -60, 0 0, 10 -60', 'Gold', 'Azure', 2).addTo('g1').rotates(18);
      dr.circle(0, 0, 10, 'Orange', 'SeaShell', 3).addTo('g1');   
      FS(pa, progress);
      
      const VideoBlendController = (function() {
            let config = {
                videoId: 'vid',
                interval: 12000,
                opacityRange: ,
                blendModes: [
                  'screen', 'overlay', 'soft-light', 'hard-light',
                  'multiply', 'difference', 'exclusion', 'hue',
                  'color-dodge', 'color-burn', 'luminosity'
                ]
            };
            let videoElement = null;
            let effectTimer = null;

            function getRandomInRange(min, max) {
                return (Math.random() * (max - min) + min).toFixed(2);
            }

            function applyRandomEffect() {
                if (!videoElement) return;
               
                const randomMode = config.blendModes[
                  Math.floor(Math.random() * config.blendModes.length)
                ];
               
                const randomOpacity = getRandomInRange(
                  config.opacityRange,
                  config.opacityRange
                );
               
                videoElement.style.mixBlendMode = randomMode;
                videoElement.style.opacity = randomOpacity;
                console.log(`视频混合模式更新: ${randomMode} (透明度: ${randomOpacity})`);
            }

            return {
                init: function(options = {}) {
                  Object.assign(config, options);
                  videoElement = document.getElementById(config.videoId);
                  
                  if (videoElement) {
                        videoElement.onerror = () => {
                            console.error('视频资源加载失败,请检查地址是否有效');
                        };
                  } else {
                        console.error(`未找到ID为"${config.videoId}"的视频元素`);
                        return;
                  }
                  
                  if (!aud.paused) {
                        this.start();
                  }
                },

                start: function() {
                  this.stop();
                  applyRandomEffect();
                  effectTimer = setInterval(applyRandomEffect, config.interval);
                },

                stop: function() {
                  if (effectTimer) {
                        clearInterval(effectTimer);
                        effectTimer = null;
                  }
                },

                toggleOnce: function() {
                  applyRandomEffect();
                },

                updateConfig: function(newConfig) {
                  Object.assign(config, newConfig);
                  this.start();
                }
            };
      })();
      
      var mState = () => {
            g1.style.setProperty('--state', aud.paused ? 'paused' : 'running');
            dt.style.setProperty('--visibility', aud.paused ? 'hidden' : 'inherit');         
            mwrap.style.setProperty('--state',aud.paused ? 'paused' : 'running');

            if (aud.paused) {
                VideoBlendController.stop();
            } else {
                VideoBlendController.start();
            }
      };      
      aud.oncanplay = aud.onplaying = aud.onpause = () => mState();   
         progress.onclick = () => {
            aud.paused ? aud.play() : aud.pause();         
            mState();            
      };      
      document.addEventListener('DOMContentLoaded', function() {
            VideoBlendController.init({
                videoId: 'vid',
                interval: 5000,
                opacityRange: [.5, .9]
            });
      });
      
    var txtAr = '故乡的原风景 '.split(''),
      spans = [],
      total = 6;
    txtAr.forEach((t, k) => {
      var s = document.createElement('span');
      s.textContent = t;
      s.className = k === 0 ? 'title-text ani' : 'title-text';
      var a = -140 / (txtAr.length - 1) * k - 120,
            r = 100;
      s.style.cssText += `
            left: ${r + r * Math.cos(a * Math.PI / 180)}px;
            top: ${r + r * Math.sin(a * Math.PI / 180)}px;
      `;
      spans.push(s);
      s.onanimationend = () => {
            s.classList.remove('ani');
            spans[(k + 1) % txtAr.length].classList.add('ani');
      };
      mwrap.appendChild(s);
    });
</script>
</body>
</html>

偶然~ 发表于 2025-10-11 21:37

音画唯美

偶然~ 发表于 2025-10-11 21:37

制作大气

偶然~ 发表于 2025-10-11 21:38

感谢杨帆带来的精彩,辛苦了!祝你开心幸福、阖家幸福!

杨帆 发表于 2025-10-11 22:07

谢谢偶然~版主鼓励,祝开心{:4_191:}

小辣椒 发表于 2025-10-11 22:16

欣赏杨帆的精彩制作{:4_187:}{:4_199:}

杨帆 发表于 2025-10-11 22:24

小辣椒 发表于 2025-10-11 22:16
欣赏杨帆的精彩制作

谢谢小辣椒鼓励,祝开心天天{:4_204:}

樵歌 发表于 2025-10-12 07:38

漂亮的音画,动听的音乐!色前在网易云下载过,可现在在我帖子里放不出来了,问了,说只能网易相关的地方放,

杨帆 发表于 2025-10-12 10:44

樵歌 发表于 2025-10-12 07:38
漂亮的音画,动听的音乐!色前在网易云下载过,可现在在我帖子里放不出来了,问了,说只能网易相关的地方放 ...
只能网易相关的地方放?这个是上传的,应该可以正常播放呀{:4_171:}

梦江南 发表于 2025-10-12 15:28

这帖非常欣赏的是视频中放视频。多元素组合得非常精彩。学习了!{:4_187:}

杨帆 发表于 2025-10-12 15:47

梦江南 发表于 2025-10-12 15:28
这帖非常欣赏的是视频中放视频。多元素组合得非常精彩。学习了!

问好江南,谢谢欣赏与鼓励{:4_204:}

红影 发表于 2025-10-12 23:06

真棒的制作,好美{:4_199:}

杨帆 发表于 2025-10-12 23:32

红影 发表于 2025-10-12 23:06
真棒的制作,好美

谢谢影子鼓励,祝开心天天{:4_187:}

绿叶清舟 发表于 2025-10-23 21:20

还以为有杨帆故乡的风景看赶紧的进来了{:4_173:},风景漂亮,想起国庆时看到的那梯田

杨帆 发表于 2025-10-24 16:09

绿叶清舟 发表于 2025-10-23 21:20
还以为有杨帆故乡的风景看赶紧的进来了,风景漂亮,想起国庆时看到的那梯田

热诚欢迎绿叶驾清舟到杨帆故乡看风景{:4_199:}

国庆时你去哪儿看梯田了,发个片片呗{:4_204:}

偶然~ 发表于 2025-11-17 13:50

来欣赏杨帆的精品佳作,祝您创作如春泉涌流不息!

绿叶清舟 发表于 2025-12-6 21:32

杨帆 发表于 2025-10-24 16:09
热诚欢迎绿叶驾清舟到杨帆故乡看风景

国庆时你去哪儿看梯田了,发个片片呗

是在江西那里了,手机里找了一下没找到啊,平时懒得拍片的了以后注意{:4_173:}

冬天的雨 发表于 2025-12-9 11:23

欣赏杨帆好制作{:4_187:}

杨帆 发表于 2025-12-9 11:36

冬天的雨 发表于 2025-12-9 11:23
欣赏杨帆好制作

问好冬雨版主,谢谢鼓励{:4_191:}
页: [1]
查看完整版本: 故乡的原风景