MoreRSS

site iconEdzbe | 耳朵修改

以期刊的形式分享歌特、厄运、朋克、流行、后摇、重金属等小众风格音乐的电台博客。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Edzbe | 耳朵的 RSS 预览

夜色属于孤独的盛宴,黑暗与光影交织,灵魂在低沉中沉淀。

2025-06-14 01:46:17

夜幕低垂,夜色将城市浸染成一片深邃的黑。很久没有听哥特金属类的歌单了,落地窗外街灯昏黄的光晕,就像一朵开败了的花,我知道它还是花,只是它还可以是花吗?随着风吹动的枝芽,让光影渐渐的迷离,我以为我能看清,只是我以为。

我的世界里,哥特音乐的低沉旋律缓缓流淌,如同夜色本身的呼吸,低回、缠绵、又带着一丝无法言喻的悲怆。低音如同深夜里幽灵的叹息,高音则像寒风中孤寂的哭泣。那些尖锐的音符,刺破了夜的宁静,却又精准地触碰到了我灵魂深处最阴暗的角落。

无法言说的孤独,放大、渲染,直至凝成实体。

我好像迷路了,在迷离的世界里游荡,我找不到人和我说话,连自己的影子都找不到。

早知道当初… 呃,电台新版发布了。

2025-06-05 05:18:34

书到用时方恨少,早知道当初年少就不应该沉迷于QQ聊天泡妞,就应该多买几本技术类教程书籍多看看…

我不知道今天抽什么风,突然间就想把电台的PC端和H5端给完善一下,然后,我太自信了,呃,这完全是在我能力之外的工作啊!

从昨天AM10:42到现在AM3:40,几个小时我算算,呃,十六还是十七个小时,啊啊啊,我现在脑壳短路,算不明白了。中途就吃了晚饭半个小时,然后辅导娃儿作业一个小时,其余时间我就抱着电脑死命磕磕磕,我的老腰啊……

想法一大堆,但是奈何水平不够,总是碰到一大堆问题,借助Gemini才勉勉强强完成。

电台页面:https://www.edzbe.com/fm/top

去年搞了这个电台页面,用的还是七八九年前的jplayer播放器,直接用代码套来套去整出来的,但是这个播放器源码太老了,总是能遇到一大堆乱七八糟的问题,索性就用Jquery从新搞一个,前端后端的水平都有限,UI啥的也是这里找那里抄,唉。

电台切换页面也得弄一下,我个小破站,为什么要弄这么多歌曲分类,唉,我真的是服了自己。

这个页面抄的QQ音乐的界面,呃,老实交代了。

因为歌曲较多,每次加载json,如果全部加载的话,那网页就卡得不要不要的,设置了获取100首歌,每次刷新随机替换一批。

封装成桌面端了,下载地址:EdzbeFm_0.0.1_x64-setup.exe

H5版折腾了最长时间,还有个问题就是滑动歌曲列表的时候,悬浮的播放器没办法移到最底部,会遮挡到歌曲列表,这个我实在是搞不定,唉,就这样将就吧!

20250606补充,呃,说将就吧,浑身不得劲,唉,这该死的强迫症。

H5版播放器增加了响应式自适应,现在可以把悬浮的播放器根据页面滑动加载缩放到网页底部了,不会遮挡了,呃,果然,方法总比问题多,再坚持坚持就解决了。

H5手机版首页做了个电台的入口,按照喜怒哀乐四种情绪把电台分类给分开。

分享下电脑端和手机端的播放器源码吧,需要的自取。

电脑端:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8"/>
  <title>电脑版黑胶唱片音乐播放器</title>
  <style>
    @import url(https://fonts.googleapis.com/css?family=Raleway:400,300,700);
    *, *:before, *:after {
      box-sizing: border-box;
    }

    body {
      background-color: #fef29c;
     color: #515044;
     font-family: "Raleway", sans-serif;
      min-height: 100vh;
      display: flex;
      justify-content: center;
      align-items: center;
      margin: 0;
    }

    .music-player-container {
      -webkit-transform: translate(-50%, -50%);
      -moz-transform: translate(-50%, -50%);
      -ms-transform: translate(-50%, -50%);
      -o-transform: translate(-50%, -50%);
      transform: translate(-50%, -50%);
      display: inline-block;
      height: 370px;
      position: absolute;
      min-width: 460px;
      left: 50%;
      top: 50%;
    }
    .music-player-container:after {
      -webkit-filter: blur(8px);
      filter: blur(8px);
      background-color: rgba(0, 0, 0, 0.8);
      bottom: -2px;
      content: " ";
      display: block;
      height: 10px;
      left: 19px;
      position: absolute;
      transform: rotate(-3deg);
      width: 70%;
      z-index: 0;
    }

    .music-player {
      background-color: #fff;
     height: 370px;
      padding: 40px 250px 40px 40px;
      position: absolute;
      text-align: right;
      width: 460px;
      z-index: 3;
    }

    .player-content-container {
      -webkit-transform: translateY(-50%);
      -moz-transform: translateY(-50%);
      -ms-transform: translateY(-50%);
      -o-transform: translateY(-50%);
      transform: translateY(-50%);
      top: 50%;
      position: relative;
    }

    .artist-name {
      font-size: 24px;
      font-weight: 200;
      margin: 0 0 0.75em 0;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      max-width: 170px;
    }

    .album-title {
      font-weight: 200;
      font-size: 18px;
      margin: 0 0 1.75em 0;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      max-width: 170px;
    }

    .song-title {
      font-size: 28px;
      font-weight: normal;
      margin: 0 0 0.5em 0;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      max-width: 170px;
      cursor: pointer;
      transition: all 0.3s ease;
      position: relative;
      padding: 5px 0;
    }
   
    .song-title:hover {
      color: #878787;
   }
   
    .song-title::after {
      content: "点击打开链接";
      position: absolute;
      bottom: -20px;
      left: 0;
      font-size: 10px;
      opacity: 0;
      transition: opacity 0.3s ease;
      background: rgba(0,0,0,0.7);
      color: white;
      padding: 2px 5px;
      border-radius: 3px;
      white-space: nowrap;
    }
   
    .song-title:hover::after {
      opacity: 1;
    }

    .album {
      box-shadow: 3px 3px 15px rgba(0, 0, 0, 0.65);
      height: 315px;
      margin-left: 250px;
      margin-top: 27px;
      position: relative;
      width: 315px;
      z-index: 10;
    }

    .album-art {
      height: 315px;
      position: relative;
      width: 315px;
      z-index: 10;
      background-size: cover;
      background-position: center;
    }

    .vinyl {
      -webkit-animation: spin 2s linear infinite;
      -moz-animation: spin 2s linear infinite;
      animation: spin 2s linear infinite;
      -webkit-transition: all 500ms;
      -moz-transition: all 500ms;
      transition: all 500ms;
      background-position: center, center;
      background-size: cover, 40% auto;
      background-repeat: no-repeat;
      border-radius: 100%;
      box-shadow: 0 0 10px rgba(0, 0, 0, 0.8);
      height: 300px;
      left: 0;
      position: absolute;
      top: 5px;
      width: 300px;
      z-index: 5;
      will-change: transform, left;
      animation-play-state: paused; /* 初始状态为暂停 */
    }
    .is-playing .vinyl {
      left: 52%;
      animation-play-state: running; /* 播放时运行动画 */
    }

    .music-player-controls {
      text-align: center;
    }

    [class^=control-] {
      -webkit-filter: brightness(95%);
      filter: brightness(95%);
      border-radius: 100%;
      display: inline-block;
      height: 44px;
      margin: 0 3px;
      width: 44px;
    }
    [class^=control-]:hover {
      -webkit-filter: brightness(85%);
      filter: brightness(85%);
      cursor: pointer;
    }

    .control-play {
      background: transparent url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/83141/play.svg") center/cover no-repeat;
    }
    .is-playing .control-play {
      background: transparent url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/83141/pause.svg") center/cover no-repeat;
    }

    .control-forwards {
      background: transparent url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/83141/forwards.svg") center/cover no-repeat;
    }

    .control-back {
      background: transparent url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/83141/backwards.svg") center/cover no-repeat;
    }

    @-webkit-keyframes spin {
      0% {
        -webkit-transform: rotate(0deg);
      }
      100% {
        -webkit-transform: rotate(360deg);
      }
    }
    @-moz-keyframes spin {
      0% {
        -moz-transform: rotate(0deg);
      }
      100% {
        -moz-transform: rotate(360deg);
      }
    }
    @keyframes spin {
      0% {
        -webkit-transform: rotate(0deg);
        -moz-transform: rotate(0deg);
        -ms-transform: rotate(0deg);
        -o-transform: rotate(0deg);
        transform: rotate(0deg);
      }
      100% {
        -webkit-transform: rotate(360deg);
        -moz-transform: rotate(360deg);
        -ms-transform: rotate(360deg);
        -o-transform: rotate(360deg);
        transform: rotate(360deg);
      }
    }
   
    /* 播放控制面板 */
    .player-controls {
      margin-top: 20px;
      display: flex;
      flex-direction: column;
      align-items: center;
    }
   
    .progress-container {
      width: 200px;
      height: 4px;
      background: #d3d3d3;
     border-radius: 2px;
      margin-bottom: 8px;
      cursor: pointer;
      position: relative;
    }
   
    .progress-bar {
      height: 100%;
      background: #515044;
     border-radius: 2px;
      transition: width 0.1s linear;
    }
   
    .time-display {
      font-size: 14px;
      color: #666;
     width: 100%;
      display: flex;
      justify-content: space-between;
    }
   
    .volume-container {
      display: flex;
      align-items: center;
      margin-top: 10px;
      width: 200px;
    }
   
    .volume-icon {
      margin-right: 10px;
      width: 20px;
      text-align: center;
    }
   
    .volume-slider {
      flex: 1;
      height: 4px;
      background: #d3d3d3;
     border-radius: 2px;
      cursor: pointer;
      position: relative;
    }
   
    .volume-level {
      height: 100%;
      background: #515044;
     border-radius: 2px;
    }
   
    .playlist-btn {
      background: none;
      border: none;
      color: #515044;
     cursor: pointer;
      font-size: 14px;
      margin-top: 15px;
      text-decoration: underline;
      padding: 5px 10px;
      border-radius: 4px;
      transition: all 0.3s ease;
    }
   
    .playlist-btn:hover {
      background: rgba(52, 152, 219, 0.1);
    }
   
    /* 播放列表样式 */
    .playlist-container {
      position: fixed;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      background: rgba(0,0,0,0.7);
      display: flex;
      justify-content: center;
      align-items: center;
      z-index: 100;
      opacity: 0;
      pointer-events: none;
      transition: opacity 0.3s ease;
    }
   
    .playlist-container.active {
      opacity: 1;
      pointer-events: all;
    }
   
    .playlist-content {
      background: #fff;
     width: 80%;
      max-width: 500px;
      max-height: 80vh;
      padding: 20px;
      border-radius: 8px;
      overflow-y: auto;
      box-shadow: 0 5px 25px rgba(0,0,0,0.5);
    }
   
    .playlist-header {
      font-size: 24px;
      margin-bottom: 15px;
      color: #515044;
     border-bottom: 1px solid #ddd;
     padding-bottom: 10px;
      display: flex;
      justify-content: space-between;
      align-items: center;
    }
   
    .playlist-item {
      padding: 12px;
      border-bottom: 1px solid #eee;
     cursor: pointer;
      display: flex;
      justify-content: space-between;
      align-items: center;
    }
   
    .playlist-item:hover {
      background: #f0f0f0;
   }
   
    .playlist-item.active {
      background: #fef29c;
     font-weight: bold;
    }
   
    .playlist-info {
      flex: 1;
    }
   
    .song-name {
      font-size: 16px;
      margin-bottom: 5px;
      cursor: pointer;
      color: #000000;
     transition: all 0.2s ease;
    }
   
    .song-name:hover {
      text-decoration: underline;
      color: #878787;
   }
   
    .song-singer {
      font-size: 14px;
      color: #666;
   }
   
    .close-btn {
      position: absolute;
      top: 20px;
      right: 20px;
      background: transparent;
      border: none;
      color: white;
      font-size: 24px;
      cursor: pointer;
      transition: all 0.3s ease;
    }
   
    .close-btn:hover {
      transform: scale(1.2);
      color: #f1c40f;
   }
   
    .song-link-btn {
      background: #5c5c5c;
     color: white;
      border: none;
      border-radius: 4px;
      padding: 5px 10px;
      cursor: pointer;
      font-size: 12px;
      transition: all 0.3s ease;
    }
   
    .song-link-btn:hover {
      background: #000000;
   }
   
    /* 响应式设计 */
    @media (max-width: 600px) {
      .music-player-container {
        transform: translate(-50%, -50%) scale(0.8);
      }
     
      .playlist-content {
        width: 90%;
      }
    }
     /* 提示信息 */
    .click-outside-hint {
      position: absolute;
      bottom: 15px;
      left: 0;
      width: 100%;
      text-align: center;
      font-size: 12px;
      color: #999;
     font-style: italic;
    }
  </style>
</head>
<body>
  <!-- 移除了初始的 is-playing 类 -->
  <div class="music-player-container">
    <div class="music-player">
      <div class="player-content-container">
        <h1 class="song-title">歌曲标题</h1>
        <h2 class="artist-name">歌手</h2>
        <h3 class="album-title">专辑</h3>
       
        <div class="music-player-controls">
          <div class="control-back"></div>
          <div class="control-play"></div>
          <div class="control-forwards"></div>
        </div>
       
        <div class="player-controls">
          <div class="progress-container">
            <div class="progress-bar" style="width: 0%"></div>
          </div>
          <div class="time-display">
            <span class="current-time">0:00</span>
            <span class="total-time">0:00</span>
          </div>
         
          <div class="volume-container">
            <div class="volume-icon">🔊</div>
            <div class="volume-slider">
              <div class="volume-level" style="width: 80%"></div>
            </div>
          </div>
         
          <button class="playlist-btn">播放列表 (4)</button>
        </div>
      </div>
    </div>

    <div class="album">
      <div class="album-art"></div>
      <div class="vinyl"></div>
    </div>
  </div>
 
  <div class="playlist-container">
    <button class="close-btn">×</button>
    <div class="playlist-content">
      <div class="playlist-header">
        <span>播放列表</span>
        <span>当前歌曲: <span id="current-song-indicator">1</span></span>
      </div>
      <div class="playlist-items">
        <!-- 播放列表内容由JS生成 -->
      </div>
      <div class="click-outside-hint">点击播放列表外部区域关闭</div>
    </div>
  </div>

  <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
  <script>
   // 歌曲数据
    const songs = [
      {
        name: "归",
        singer: "龙井",
        album: "龙井摇滚1",
        path: "https://edzbecom.edzbe.com/Music/2014031305281167131.mp3",
        image: "https://www.edzbe.com/wp-content/uploads/2010/10/15102-150x150.jpg",
        url: "https://www.example.com/song1"
      },
      {
        name: "Tu Phir Se Aana",
        singer: "Raftaar x Salim Merchant x Karma",
        album: "龙井摇滚2",
        path: "https://mp3.vlcmusic.com/download.php?track_id=34213&format=320",
        image: "https://1.bp.blogspot.com/-kX21dGUuTdM/X85ij1SBeEI/AAAAAAAAKK4/feboCtDKkls19cZw3glZWRdJ6J8alCm-gCNcBGAsYHQ/s16000/Tu%2BAana%2BPhir%2BSe%2BRap%2BSong%2BLyrics%2BBy%2BRaftaar.jpg",
        url: "https://www.example.com/song2"
      },
      {
        name: "时间里的",
        singer: "马頔",
        album: "龙井摇滚3",
        path: "https://edzbecom.edzbe.com/Music/2015080304061065494.mp3",
        image: "https://www.edzbe.com/wp-content/uploads/2015/08/13116882321422539101.jpg",
        url: "https://www.example.com/song15"
      },
      {
        name: "Feeling You",
        singer: "Raftaar x Harjas",
        album: "龙井摇滚4",
        path: "https://mp3.filmisongs.com/go.php?id=Damn%20Song%20Raftaar%20Ft%20KrSNa.mp3",
        image: "https://a10.gaanacdn.com/gn_img/albums/YoEWlabzXB/oEWlj5gYKz/size_xxl_1586752323.webp",
        url: "https://www.example.com/song18"
      }
    ];
    </script>
  <script>
    (function($) {
      $(document).ready(function() {
        // 创建音频对象
        const audio = new Audio();
        let currentSongIndex = 0;
        let isPlaying = false;
       
        // 获取DOM元素
        const playerContainer = $('.music-player-container');
        const artistName = $('.artist-name');
        const albumTitle = $('.album-title');
        const songTitle = $('.song-title');
        const albumArt = $('.album-art');
        const vinyl = $('.vinyl');
        const backBtn = $('.control-back');
        const playBtn = $('.control-play');
        const forwardBtn = $('.control-forwards');
        const progressBar = $('.progress-bar');
        const progressContainer = $('.progress-container');
        const currentTimeEl = $('.current-time');
        const totalTimeEl = $('.total-time');
        const volumeSlider = $('.volume-level');
        const volumeContainer = $('.volume-slider');
        const playlistBtn = $('.playlist-btn');
        const playlistContainer = $('.playlist-container');
        const playlistItems = $('.playlist-items');
        const currentSongIndicator = $('#current-song-indicator');
       
        // 初始化播放器
        function initPlayer() {
          // 确保初始状态正确
          playerContainer.removeClass('is-playing');
          vinyl.css('animation-play-state', 'paused');
         
          // 加载第一首歌
          loadSong(currentSongIndex);
         
          // 初始化播放列表
          renderPlaylist();
         
          // 为歌曲标题添加点击事件
          songTitle.on('click', function() {
            const currentSong = songs[currentSongIndex];
            window.open(currentSong.url, '_blank');
          });
         
          // 添加点击外部关闭播放列表的功能
          addClickOutsideClose();
        }
       
        // 添加点击外部关闭播放列表的功能
        function addClickOutsideClose() {
          // 点击播放列表外部区域关闭
          playlistContainer.on('click', function(e) {
            // 如果点击的是背景(不是播放列表内容区域)
            if (e.target === this) {
              togglePlaylist();
            }
          });
         
          // 阻止播放列表内容区域的点击事件冒泡
          $('.playlist-content').on('click', function(e) {
            e.stopPropagation();
          });
        }
       
        // 加载歌曲
        function loadSong(index) {
          currentSongIndex = index;
          const song = songs[index];
         
          // 更新UI
          artistName.text(song.singer);
          albumTitle.text(song.album);
          songTitle.text(`"${song.name}"`);
          albumArt.css('background-image', `url(${song.image})`);
         
          // 更新唱片背景
          vinyl.css('background-image',
                    `url('https://s3-us-west-2.amazonaws.com/s.cdpn.io/83141/vinyl.png'), url('${song.image}')`);
         
          // 设置音频源
          audio.src = song.path;
         
          // 重置进度条
          progressBar.css('width', '0%');
          currentTimeEl.text('0:00');
         
          // 更新当前歌曲指示器
          currentSongIndicator.text(index + 1);
         
          // 加载完成后更新总时长
          audio.addEventListener('loadedmetadata', function() {
            const totalMinutes = Math.floor(audio.duration / 60);
            const totalSeconds = Math.floor(audio.duration % 60);
            totalTimeEl.text(`${totalMinutes}:${totalSeconds < 10 ? '0' : ''}${totalSeconds}`);
          });
         
          // 更新播放列表高亮
          updatePlaylistHighlight();
         
          // 自动播放当前歌曲(如果正在播放)
          if (isPlaying) {
            audio.play();
          }
        }
       
        // 播放/暂停功能
        function togglePlayback() {
          if (isPlaying) {
            audio.pause();
            playerContainer.removeClass('is-playing');
            vinyl.css('animation-play-state', 'paused');
          } else {
            audio.play();
            playerContainer.addClass('is-playing');
            vinyl.css('animation-play-state', 'running');
          }
          isPlaying = !isPlaying;
        }
       
        // 上一首
        function prevSong() {
          currentSongIndex = (currentSongIndex - 1 + songs.length) % songs.length;
          loadSong(currentSongIndex);
          if (isPlaying) {
            audio.play();
          }
        }
       
        // 下一首
        function nextSong() {
          currentSongIndex = (currentSongIndex + 1) % songs.length;
          loadSong(currentSongIndex);
          if (isPlaying) {
            audio.play();
          }
        }
       
        // 更新进度条
        function updateProgress(e) {
          const { duration, currentTime } = e.target;
          const progressPercent = (currentTime / duration) * 100;
          progressBar.css('width', `${progressPercent}%`);
         
          // 更新当前时间
          const currentMinutes = Math.floor(currentTime / 60);
          const currentSeconds = Math.floor(currentTime % 60);
          currentTimeEl.text(`${currentMinutes}:${currentSeconds < 10 ? '0' : ''}${currentSeconds}`);
        }
       
        // 设置进度
        function setProgress(e) {
          const width = progressContainer.width();
          const clickX = e.offsetX;
          const duration = audio.duration;
         
          audio.currentTime = (clickX / width) * duration;
        }
       
        // 设置音量
        function setVolume(e) {
          const width = volumeContainer.width();
          const clickX = e.offsetX;
          const volume = clickX / width;
         
          audio.volume = volume;
          volumeSlider.css('width', `${volume * 100}%`);
        }
       
        // 渲染播放列表
        function renderPlaylist() {
          playlistItems.empty();
         
          songs.forEach((song, index) => {
            const playlistItem = $('<div>').addClass('playlist-item').data('index', index).html(`
              <div class="playlist-info">
                <div class="song-name" data-url="${song.url}">${song.name}</div>
                <div class="song-singer">${song.singer}</div>
              </div>
              <button class="song-link-btn" data-url="${song.url}">歌曲详情</button>
            `);
           
            // 绑定播放列表项的点击事件
            playlistItem.on('click', function() {
              const index = $(this).data('index');
              loadSong(index);
              if (!isPlaying) {
                togglePlayback();
              }
            });
           
            // 绑定歌曲名称的点击事件  这个我先隐藏了
    //        playlistItem.find('.song-name').on('click', function(e) {
    //          e.stopPropagation();
    //          window.open($(this).data('url'), '_blank');
    //        });
           
            // 绑定按钮的点击事件
            playlistItem.find('.song-link-btn').on('click', function(e) {
              e.stopPropagation();
              window.open($(this).data('url'), '_blank');
            });
           
            playlistItems.append(playlistItem);
          });
         
          // 更新播放列表高亮
          updatePlaylistHighlight();
        }
       
        // 更新播放列表高亮
        function updatePlaylistHighlight() {
          $('.playlist-item').removeClass('active');
          $('.playlist-item').eq(currentSongIndex).addClass('active');
        }
       
        // 显示/隐藏播放列表
        function togglePlaylist() {
          playlistContainer.toggleClass('active');
        }
       
        // 事件监听
        playBtn.on('click', togglePlayback);
        backBtn.on('click', prevSong);
        forwardBtn.on('click', nextSong);
        playlistBtn.on('click', togglePlaylist);
        $('.close-btn').on('click', togglePlaylist);
       
        // 进度条控制
        progressContainer.on('click', setProgress);
        volumeContainer.on('click', setVolume);
       
        // 音频事件
        audio.addEventListener('timeupdate', updateProgress);
        audio.addEventListener('ended', nextSong);
       
        // 初始化播放器
        initPlayer();
      });
    })(jQuery);
  </div></script>
</body>
</html>

手机端:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8"/>
  <title>耳朵电台手机端播放器</title>
  <link rel="stylesheet" href="./style.css"/>

</head>
<body>
<!-- partial:index.partial.html -->
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/css/all.min.css" integrity="sha512-HK5fgLBL+xu6dm/Ii3z4xhlSUyZgTT9tuc/hSrtw6uzJOvgRr2a9jyxxT1ely+B+xFAmJKVSTbpM/CuL7qxO8w==" crossorigin="anonymous" />
<link rel="preconnect" href="https://fonts.gstatic.com"/>
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;600&display=swap" rel="stylesheet"/>

<div class="player">
  <!-- Dashboard -->
  <div class="dashboard">
    <!-- Header -->
    <header>
      <h4>Now playing:</h4>
      <h2>String 57th & 9th</h2>
    </header>

    <!-- CD -->
    <div class="cd">
      <div class="cd-thumb">
      </div>
    </div>

    <!-- Control -->
    <div class="control">
      <div class="btn btn-repeat">
        <i class="fas fa-redo"></i>
      </div>
      <div class="btn btn-prev">
        <i class="fas fa-step-backward"></i>
      </div>
      <div class="btn btn-toggle-play">
        <i class="fas fa-pause icon-pause"></i>
        <i class="fas fa-play icon-play"></i>
      </div>
      <div class="btn btn-next">
        <i class="fas fa-step-forward"></i>
      </div>
      <div class="btn btn-random">
        <i class="fas fa-random"></i>
      </div>
    </div>

    <input id="progress" class="progress" type="range" value="0" step="1" min="0" max="100"/>

    <audio id="audio" src=""></audio>
  </div>

  <!-- Playlist -->
  <div class="playlist">
  </div>
</div>

<!-- partial -->

<script>
const songs = [
  {
    name: "镜子中",
    singer: "扭曲的机器",
    path: "https://edzbecom.oss-cn-hangzhou.aliyuncs.com/Music/2014031305281167131.mp3",
    image: "https://www.edzbe.com/wp-content/uploads/2010/10/15102-150x150.jpg"
  },
  {
    name: "Tu Phir Se Aana",
    singer: "Raftaar x Salim Merchant x Karma",
    path: "https://mp3.vlcmusic.com/download.php?track_id=34213&format=320",
    image:
      "https://1.bp.blogspot.com/-kX21dGUuTdM/X85ij1SBeEI/AAAAAAAAKK4/feboCtDKkls19cZw3glZWRdJ6J8alCm-gCNcBGAsYHQ/s16000/Tu%2BAana%2BPhir%2BSe%2BRap%2BSong%2BLyrics%2BBy%2BRaftaar.jpg"
  },
  {
    name: "时间里的",
    singer: "马頔",
    path: "https://edzbecom.oss-cn-hangzhou.aliyuncs.com/Music/2015080304061065494.mp3",
    image: "https://www.edzbe.com/wp-content/uploads/2015/08/13116882321422539101.jpg"
  },
  {
    name: "Feeling You",
    singer: "Raftaar x Harjas",
    path: "https://mp3.filmisongs.com/go.php?id=Damn%20Song%20Raftaar%20Ft%20KrSNa.mp3",
    image:
      "https://a10.gaanacdn.com/gn_img/albums/YoEWlabzXB/oEWlj5gYKz/size_xxl_1586752323.webp"
  }
];

</script>

<!--音频数据一定要在APP.JS之前加载-->
<script src="./app.js"></script>
</body>
</html>

手机端 App.js 文件代码:

const $ = document.querySelector.bind(document);
const $$ = document.querySelectorAll.bind(document);

const PlAYER_STORAGE_KEY = "F8_PLAYER";

const player = $(".player");
const cd = $(".cd");
const heading = $("header h2");
const cdThumb = $(".cd-thumb");
const audio = $("#audio");
const playBtn = $(".btn-toggle-play");
const progress = $("#progress");
const prevBtn = $(".btn-prev");
const nextBtn = $(".btn-next");
const randomBtn = $(".btn-random");
const repeatBtn = $(".btn-repeat");
const playlist = $(".playlist");

const app = {
  currentIndex: 0,
  isPlaying: false,
  isRandom: false,
  isRepeat: false,
  config: {},
  // (1/2) 解注释以下代码行以使用localStorage
  // config: JSON.parse(localStorage.getItem(PlAYER_STORAGE_KEY)) || {},
  songs: [], // 从data.js文件中导入歌曲数据
  setConfig: function (key, value) {
    this.config[key] = value;
    // (2/2) 解注释以下代码行以使用localStorage
    // localStorage.setItem(PlAYER_STORAGE_KEY, JSON.stringify(this.config));
  },
  render: function () {
    const htmls = this.songs.map((song, index) => {
      return `
                        <div class="song ${
                          index === this.currentIndex ? "
active" : ""
                        }"
data-index="${index}">
                            <div class="thumb"
                                style="background-image: url('${song.image}')">
                            </div>
                            <div class="body">
                                <h3 class="title">${song.name}</h3>
                                <p class="author">${song.singer}</p>
                            </div>
                            <div class="option">
                                <i class="fas fa-ellipsis-h"></i>
                            </div>
                        </div>
                    `;
    });
    playlist.innerHTML = htmls.join("");
  },
  defineProperties: function () {
    Object.defineProperty(this, "currentSong", {
      get: function () {
        return this.songs[this.currentIndex];
      }
    });
  },
  handleEvents: function () {
    const _this = this;
    const cdWidth = cd.offsetWidth;

    // 处理CD旋转/停止
    const cdThumbAnimate = cdThumb.animate([{ transform: "rotate(360deg)" }], {
      duration: 10000, // 10秒
      iterations: Infinity
    });
    cdThumbAnimate.pause();

    // 处理CD放大/缩小
    document.onscroll = function () {
      const scrollTop = window.scrollY || document.documentElement.scrollTop;
      const newCdWidth = cdWidth - scrollTop;

      cd.style.width = newCdWidth > 0 ? newCdWidth + "px" : 0;
      cd.style.opacity = newCdWidth / cdWidth;
    };

    // 处理点击播放
    playBtn.onclick = function () {
      if (_this.isPlaying) {
        audio.pause();
      } else {
        audio.play();
      }
    };

    // 当歌曲播放时
    audio.onplay = function () {
      _this.isPlaying = true;
      player.classList.add("playing");
      cdThumbAnimate.play();
    };

    // 当歌曲暂停时
    audio.onpause = function () {
      _this.isPlaying = false;
      player.classList.remove("playing");
      cdThumbAnimate.pause();
    };

    // 当歌曲进度改变时
    audio.ontimeupdate = function () {
      if (audio.duration) {
        const progressPercent = Math.floor(
          (audio.currentTime / audio.duration) * 100
        );
        progress.value = progressPercent;
      }
    };

    // 处理歌曲拖动
    progress.onchange = function (e) {
      const seekTime = (audio.duration / 100) * e.target.value;
      audio.currentTime = seekTime;
    };

    // 下一首歌曲
    nextBtn.onclick = function () {
      if (_this.isRandom) {
        _this.playRandomSong();
      } else {
        _this.nextSong();
      }
      audio.play();
      _this.render();
      _this.scrollToActiveSong();
    };

    // 上一首歌曲
    prevBtn.onclick = function () {
      if (_this.isRandom) {
        _this.playRandomSong();
      } else {
        _this.prevSong();
      }
      audio.play();
      _this.render();
      _this.scrollToActiveSong();
    };

    // 处理随机播放开关
    randomBtn.onclick = function (e) {
      _this.isRandom = !_this.isRandom;
      _this.setConfig("isRandom", _this.isRandom);
      randomBtn.classList.toggle("active", _this.isRandom);
    };

    // 处理单曲循环
    repeatBtn.onclick = function (e) {
      _this.isRepeat = !_this.isRepeat;
      _this.setConfig("isRepeat", _this.isRepeat);
      repeatBtn.classList.toggle("active", _this.isRepeat);
    };

    // 处理音频播放结束后的下一首歌曲
    audio.onended = function () {
      if (_this.isRepeat) {
        audio.play();
      } else {
        nextBtn.click();
      }
    };

    // 监听播放列表点击事件
    playlist.onclick = function (e) {
      const songNode = e.target.closest(".song:not(.active)");

      if (songNode || e.target.closest(".option")) {
        // 处理点击歌曲
        if (songNode) {
          _this.currentIndex = Number(songNode.dataset.index);
          _this.loadCurrentSong();
          _this.render();
          audio.play();
        }

        // 处理点击歌曲选项
        if (e.target.closest(".option")) {
        }
      }
    };
  },
  scrollToActiveSong: function () {
    setTimeout(() => {
      $(".song.active").scrollIntoView({
        behavior: "smooth",
        block: "nearest"
      });
    }, 300);
  },
  loadCurrentSong: function () {
    heading.textContent = this.currentSong.name;
    cdThumb.style.backgroundImage = `url('${this.currentSong.image}')`;
    audio.src = this.currentSong.path;
  },
  loadConfig: function () {
    this.isRandom = this.config.isRandom;
    this.isRepeat = this.config.isRepeat;
  },
  nextSong: function () {
    this.currentIndex++;
    if (this.currentIndex >= this.songs.length) {
      this.currentIndex = 0;
    }
    this.loadCurrentSong();
  },
  prevSong: function () {
    this.currentIndex--;
    if (this.currentIndex < 0) {
      this.currentIndex = this.songs.length - 1;
    }
    this.loadCurrentSong();
  },
  playRandomSong: function () {
    let newIndex;
    do {
      newIndex = Math.floor(Math.random() * this.songs.length);
    } while (newIndex === this.currentIndex);

    this.currentIndex = newIndex;
    this.loadCurrentSong();
  },
  start: function () {
    // 从data.js加载歌曲数据
    this.songs = songs;

    // 将配置从config赋值给应用
    this.loadConfig();

    // 定义对象的属性
    this.defineProperties();

    // 监听/处理事件(DOM事件)
    this.handleEvents();

    // 运行应用时将第一首歌曲信息加载到UI
    this.loadCurrentSong();

    // 渲染播放列表
    this.render();

    // 显示重复和随机按钮的初始状态
    randomBtn.classList.toggle("active", this.isRandom);
    repeatBtn.classList.toggle("active", this.isRepeat);
  }
};

app.start();

手机端 style.css 样式代码:

:root {
  --primary-color: #ec1f55;
 --text-color: #333;
}

* {
  padding: 0;
  margin: 0;
  box-sizing: inherit;
}

body {
  background-color: #f5f5f5;
}

html {
  box-sizing: border-box;
  font-family: "Poppins", sans-serif;
}

.player {
  position: relative;
  max-width: 480px;
  margin: 0 auto;
}

.player .icon-pause {
  display: none;
}

.player.playing .icon-pause {
  display: inline-block;
}

.player.playing .icon-play {
  display: none;
}

.dashboard {
  padding: 16px 16px 14px;
  background-color: #fff;
 position: fixed;
  top: 0;
  width: 100%;
  max-width: 480px;
  border-bottom: 1px solid #ebebeb;
}

/* HEADER */
header {
  text-align: center;
  margin-bottom: 10px;
}

header h4 {
  color: var(--primary-color);
  font-size: 12px;
}

header h2 {
  color: var(--text-color);
  font-size: 20px;
}

/* CD */
.cd {
  display: flex;
  margin: auto;
  width: 200px;
}

.cd-thumb {
  width: 100%;
  padding-top: 100%;
  border-radius: 50%;
  background-color: #333;
 background-size: cover;
  margin: auto;
}

/* CONTROL */
.control {
  display: flex;
  align-items: center;
  justify-content: space-around;
  padding: 18px 0 8px 0;
}

.control .btn {
  color: #666;
 padding: 18px;
  font-size: 18px;
}

.control .btn.active {
  color: var(--primary-color);
}

.control .btn-toggle-play {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  font-size: 24px;
  color: #fff;
 display: flex;
  align-items: center;
  justify-content: center;
  background-color: var(--primary-color);
}

.progress {
  width: 100%;
  -webkit-appearance: none;
  height: 6px;
  background: #d3d3d3;
 outline: none;
  opacity: 0.7;
  -webkit-transition: 0.2s;
  transition: opacity 0.2s;
}

.progress::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 12px;
  height: 6px;
  background-color: var(--primary-color);
  cursor: pointer;
}

/* PLAYLIST */
.playlist {
  margin-top: 408px;
  padding: 12px;
}

.song {
  display: flex;
  align-items: center;
  margin-bottom: 12px;
  background-color: #fff;
 padding: 8px 16px;
  border-radius: 5px;
  box-shadow: 0 2px 3px rgba(0, 0, 0, 0.1);
}

.song.active {
  background-color: var(--primary-color);
}

.song:active {
  opacity: 0.8;
}

.song.active .option,
.song.active .author,
.song.active .title {
  color: #fff;
}

.song .thumb {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background-size: cover;
  margin: 0 8px;
}

.song .body {
  flex: 1;
  padding: 0 16px;
}

.song .title {
  font-size: 18px;
  color: var(--text-color);
}

.song .author {
  font-size: 12px;
  color: #999;
}

.song .option {
  padding: 16px 8px;
  color: #999;
 font-size: 18px;
}

啊啊啊啊啊啊啊,我又想到了,安卓版好久没维护更新了,啊啊啊啊啊啊啊啊啊,当时弄的安卓版还是独立的系统,需要我博客更新一篇音频,安卓后台在更新一遍,啊,双遍工作量,我不玩了,我不玩了。

哎呀,唉,我不玩了,我好饿,我叫了份霸王牛肉面,三点多送来了,凉了,我要去吃了。

我的浪迹地图

2025-05-31 00:12:21

原计划端午节带娃回趟老家,下午哄娃睡午觉的时候,手一伸摸到脖子,感觉温度不太对,应该是有轻微的低烧,拿体温计一验,37.1°,今天是学校的六一活动节,有很多好玩的节目,贝勒爷不想错过,但是出于对别人负责的态度,算了,请个假,候着,看体温变化,美团上顺便买了核酸检测剂,唉,两条杠。

所以回老家的计划取消了,也好在有三天假期,希望这三天尽快养好,不要耽误了上课。

前几日,在周天记看到博友弄的足迹地图,抄作业我还是会的,想想我也搞个页面吧,折腾了两天,代码类的都能照抄了,没啥难度,就是在同步云盘里找之前手机的备份照片,这些年换了N+1台手机,照片一大堆,而且当初备份的时候,没有选择按照手机备份,全部叠放在一起,找得脑袋瓜子嗡嗡的,到晚上哄娃吃完药睡下后,才有时间收尾。

反正站点是自己的,新建页面又不要钱,好吧,新开一个页面,我放到 浪迹地图 这里来了,用不同的年份照片做图标,整理也是件苦力活。

发现了一个问题,会不会是因为我导入的数组太多了,百度地图的API加载会有受限,有时候前端不能完全显示我的足迹标签,我的完整版是这样的,如下图:

(我图都截不到…)

算了,我还是分成两版试试吧!

国内版:大图链接…

世界版:大图链接…

果然,分成两版就正常了,全部显示了,哎呀,这搞得,没啥意思了啊!

生在泉州,活在厦门,这一生脚步迷乱,路过很多座城,也留下很多故事和事故,我是出走了半生,但是归来时已不是少年摸样。

这里就大概的记录了这些年的足迹,多的也许我故意遗落了,也许我自己也忘了,所以那是不重要的。标注的都是停留超过7天或有特殊意义的,时间更短的地方,就不提说去过了。

不过这个还是可以看出的,这些年我一直在往南走,嗯,此情此景,应该配乐一首。

一路往南走(种完麦子我就往南走) – 卢润泽

回山里,窝两天。

2025-05-14 18:26:35

前天晚上哄娃睡觉,哄着哄着,他没睡着,我先打呼了,昨天就起了个大早,一起早我就很慌,我这一天要干点啥…八点多的时候,接到了村干部打来的微信,说是现在有个政策,农村生活污水提升治理项目,自建房可以提要求,由公家出人工和材料,给弄污水管道和化粪池,他帮我登记上去了,一会施工方就来现场查勘,看我方便回老家一趟不,看下怎么安排。

本着不要白不要的理念,我立马就下车库启动,不然自己后面折腾这些不得再花个三五千块,房子的化粪池之前做地基回填的时候,已经安装预埋了,我爸的逻辑是够用就好,我的逻辑是能大尽量大,省得后期抽粪更麻烦。

本以为这些公家工程都是很应付很敷衍的,没想到还挺靠谱的,管路走向和挖槽回填硬化这些,和施工方沟通后,必须竖个大拇指,完全按照我的需求,怎么走管道,怎么放检修口,怎么排放,完全按照我的要求确定。因为我房子弄了三种污水管道单独走管,所以屋顶阳台空调雨水走一路管,厨房污水走一路管,洗手间单独走一路管,这样确保后期不会返味,污水要对接到最近的一条小水渠,单条管道就得120米左右,三条加转角接口,怎么也得近四百米,我对材料也有要求,我想用伟星管,但是他们招标材料只有中财管,那我要中财得110排水管A型,施工方说这个材料可以申请,不需要额外付费,默认是用B型管,管壁厚2.8mm,A型管,管壁厚3mm,厚度厚一点,强度也高点。

既然回来了,顺便把坡屋顶的内隔热层的事情也落实了一下,要把坡屋顶的隔层做成娃娃们的秘密基地,所以隔热保温还是要做好的,材料加运费46元/m²,安装师傅只收工钱,按工时每人每天500元,两个人四天可以完成,约计4000元。

这些事情都落实好,就在老房子那里和奶奶唠唠嗑聊聊天,奶奶午饭做的手工面,还哈拉我要不要吃一碗,哈哈,我都没有报餐,她就做了自己的份,我要是吃了,她就没得吃了。奶奶这几十年来自己做饭自己生活,现在九十多岁了,也是个很要强的老人家,想带她去城里住,她坚决不肯,带她出去玩,也不愿意,嗯,很顽固。

她每天都会定时去散步,每天四公里左右,上午一趟,下午一趟,想扶她,那是不被允许的,拉拉手可以。这个视频是上个月回老家门口监控拍的。视频里,我脚踢了一下小石子,因为她又说了句我不爱听的话。说让她走马路要靠边安全点,她说这么多岁了,去世了也不亏。唉,老人家啊,我们希望她长命百岁,她天天跟你唠活够本了,真的很烦人啊。

好在奶奶平时的生活作息习惯都相当有规律,几点起床,几点吃饭,几点出门,几点回来,几点睡觉,都是掐分掐秒的准时,所以我在她的活动区域都装了监控,随时都可以看下她的状况,人形移动侦测,还是挺好用的。

下午闲着无事,嗯,钓鱼去吧,带上我的小装备和折叠椅,披上防晒服,嗯,出发。姑姑家的小鱼塘,平时都没有喂养,草鱼吃草,其他的鱼吃啥就不知道了,反正没有饲料喂养,私人野塘,别人都不能钓,专门等我回老家嚯嚯,风油精没有带,只好从姑姑家拿一瓶六神花露水了,因为蚊虫是真的多。

钓了一个多小时,拌的饵料用完我就收工了,我懒,用完就下一趟,我不可能再拌一次。罗非鱼,非洲鲫,嗯,这条一斤多,还不错,带回去煮鱼鱼汤,其他的都再倒回去养着,等我下次回来再嚯嚯。



姑姑家的苦桃熟了,嗯,不摘一些总觉得有点亏,顺手摘了几十颗回来,视频对面那座山,我家在那边。摘桃子的时候,我很谨慎的,很认真的先看看树上脚边有没有蛇啥的,毕竟玩归玩闹归闹,别拿生命开玩笑。

下午本地新闻刷出了个眼镜蛇的新闻,新闻链接 ,小区群里好热闹啊,让物业要响应起来,毕竟去年夏天,我们小区跑进来了三次蛇,绿化好的结果就是这点不好。



哈哈,这句哇操不是我说的,小区业主拍的视频,如果是我,看清楚是什么蛇后,我就下车追上去拍特写了。

厦漳泉分布有42种蛇。其中,蟒蛇、赤链蛇、黄链蛇、棱鳞锦蛇等30种属于无毒蛇,而金环蛇、银环蛇、丽纹蛇、眼镜蛇、眼镜王蛇、圆斑蝰蛇、竹叶青、白唇竹叶青、龟壳花蛇、山烙铁头、尖吻蝮蛇、蝮蛇等12种属有毒蛇。根据地域分布,山区拥有的蛇类最多,并不是所有地方都有毒蛇分布,但它们的迁徙也难以保证不会出现。

我们这蛇非常多,像剧毒的银环蛇,金环蛇,眼镜蛇,竹叶青这些都是很常见的。小时候的,遇到一条银环蛇慢悠悠的爬过来,一慌就想拿东西砸它,没有称手的武器,我直接上脚了,皮靴的底够硬,然后我也踩得准,正对蛇头,一脚下去它就懵逼了,要是踩不准,那就是另外一个故事了。

本来想着下午无事就回厦门了,老爸跑到隔壁村去买猪肉了,说让我等等他。上次刷视频说外面买的烤肠材料差不能吃,但是娃儿又爱吃,他去买了30斤的土猪肉,带到镇子里让别人加工成烤肠,嗯,趁热来一根,香。土猪肉一斤17元,烤肠加工费一斤15元,30斤猪肉做出来36斤的香肠,这一堆算下来,30*17+30*15=960元,960/36=26.666666元,折算下来一斤香肠26.7元,不知道贵不贵。

这下娃儿近阶段的烤肠自由实现了,晚点看下,如果没啥事,就多在老家睡一晚,明天是肯定要回厦门的,明晚学校家长会。

哎呦,我的好大儿,不错哦。

2025-05-13 08:36:07

呃,先恭喜下我的好大儿,顺利竞选上少先队。

昨天下午睡得迷迷糊糊的,媳妇儿有事要出门,喊醒我,让我找找贝勒爷一年级的奖状,拍照打包发给班主任老师,说是老师找她要的。咱也不知道有啥用,赶紧起床洗漱一下,找找他的奖状放哪里,最后在贝勒爷的小基地里找到,叠得整整齐齐的一大本,分出一年级获得的。

[envira-gallery id=”12851″]

找了找一年级的奖状只有这些了,发给媳妇,说不是这些,要校级的奖状,娃儿去上课了,家里我翻了一遍也没找到其他的,问媳妇要干什么用,她说竞选入少先队,我就很疑惑,以前不都是一年级到二年级期间就自动入队的吗?怎么现在还要竞选名额?

说是老师群里公告,第一期教育局说限定名额,只有十三个优选。心想这下没戏了,只有十三个,呃,怎么排队也轮不到咱家啊。

问老师,说贝勒爷下午已经把校级的带去交了,这些班级的奖状不参与评选加分。回来也不说一声,自己滴滴摸摸的带去交给老师了。

哈哈,没想到啊,竟然以第一名成绩入选,真是小看了我的好大儿。平常看着吊儿郎当没个正形,关键时刻还是蛮给力的嘛,为父甚慰!

我不是个很追求内卷的家长,娃儿的学习就是回家后有不懂的我就辅导,在学校的话,那是老师的事,我都是让娃儿自己去问老师。晚上放学回来,瞧贝勒爷那个得瑟样,嗯,感觉自信心十足,整个人都力挺起来了,我在思考一个问题,以其在娃儿做错事的时候训诫,不如多夸夸他的优点,这样他可以更阳光更自信更有活力。

孩子的学习过程中,如果是有条件参与的比赛,应该鼓励他多去参加,这不获奖可以加分的嘛!

欲望也好,得失也罢,不必太多计较,人生总该归于平静。

2025-05-10 07:48:34

又是一个深夜,独自坐在茶台前,冲上一壶正味的高山野茶铁观音,野茶味苦,像极了人生的苦感,好在最后浅浅的回甘。以下文字仅仅是因为今夜这壶茶,瞬悟,不代表明天天亮以后。

人生行至中年,过往的喧嚣逐渐褪去,取而代之的是一种沉淀后的淡然,回首在这之前那些执念的欲望、牵挂的得失,悻悻怅然。过往回忆种种似过眼云烟,此刻似乎也不能再掀起我内心的波澜。

我之认为的欲望,是裹挟我往前冲的驱动力,它无形中要求着我要不断追寻探索所有未知的可能。然而,当欲望膨胀到一定程度,便成一种负累,吞噬我的本心,使我陷入无尽的追逐,像极了一颗临爆的气球,而我无奈的只能继续拼命的吹着气。得失,是我欲望的另一面,它主导着我的喜怒哀乐,也因得失而患得患失。

年少时,我总想拥有更多,得到更多,以此来肯定自己的存在意义以及幸福感受。这样的想法似乎没有明显的逻辑问题。然而,在这过程中我未曾感觉快乐,无休止的欲望时刻紧绷着我的神经,吞噬了我。也在此一瞬间,我恍然觉得真正的舒服状态并非物质的丰盈,而是内心的平静。那些看似遥不可及的目标,往往在追逐的过程中就已经失去了原本的意义。

人生是一场修行,不过是一趟探寻自我的旅程,学会放下执念,放下对欲望和得失的过度计较,才能真正感受到生命的沉重和轻盈,并且我觉得它只是一种状态,不会负累。

平静并不是消极,是一种中庸市侩的人生态度。或许它可以让我得以摆脱欲望的束缚,不受得失的左右,从容自在地面对一切。平静的心境,就像一汪清澈的湖水,无论外界如何波澜起伏,它始终保持着宁静安详。归于平静,也不是逃避现实,而是以一种佛系豁达的心胸去面对人生的起起落落。或许它能让我明白,生命中最重要的不是拥有多少,而是活得是否充实。

或许当我卸下欲望的枷锁,放下得失的执念,人生便会归于平静。在这个平静的状态中,或许我也可细细品味当下的每一刻,享受生活的简单美好。

记住在喧嚣中保持一颗平静的心,在得失面前泰然自若,这是我此刻对自己的劝诫。人生总归要归于平静,那就从现在起,就让心灵安住于此?

上述我用了很多“此刻”和“或许”字眼,因为我也不知道我是不是又在给自己立Flag,而我是不是可以如同上述这般,但总归,我有这样的想法出现了,或许对我来说,会是一个好的开始。瞧,我又用上了或许,一切总还是如此未知。

我从来都不是一个为了自己而活着的人,我也并不想做一个自私的人。但是此刻我更想我能在我与别人之间寻求一个平衡支点,以最舒服的状态相处并且活着。

戾气使人癫狂,无尽的求胜欲望只会让自己更不服输,转而无限的上升矛盾,敌意螺旋飙涨直至无法调停。这一句是目前我想对媳妇开导的话,但是我并没有跟她讲,因为多一事不如少一事,也因为我上文说的淡然。

学会和解,和身边的人和解,和自我和解,和世间万物和解,茶凉了,该续水了。

仅此。