Greasy Fork is available in English.

挂灯笼

给所有网站增加灯笼效果

// ==UserScript==
// @name         挂灯笼
// @namespace    none
// @version      1.2
// @description  给所有网站增加灯笼效果
// @grant        none
// @author       知心宝贝
// @include      *://*
// ==/UserScript==

(function(){
  if(window.top !== window) return; // 在iframe中不渲染灯笼
  // 原版彩色配色颜色备份
  const colors = {
    suiLight: '#dc8f03',
    suiDark: '#ffa500',
    deng_box_shadow: 'rgba(250, 108, 0, 1)',
    r1: 'rgba(216, 0, 15, 0.8)',
    r2: 'rgba(216, 0, 15, 0.1)',
  }
  // 喜迎清明,黑白分明
  // const colors = {
  //   suiLight: '#ffffff',
  //   suiDark: '#9b9b9a',
  //   deng_box_shadow: 'rgb(74,74,74)',
  //   r1: 'rgba(16, 16, 16, 80%)',
  //   r2: 'rgba(16, 16, 16, 10%)',
  // }
  // 灯笼展示的文字样式
  const word = '福福'
  const style = document.createElement('style');
  style.innerHTML = `
.spring_lantern__deng-box {
position: fixed;
top: -20px;
right: -20px;
z-index: 99999;
}
.spring_lantern__deng-box1 {
 position: fixed;
 top: -10px;
 left: 10px;
 z-index: 99999;
}

.spring_lantern__deng-box1 .spring_lantern__deng {
 position: relative;
 width: 120px;
 height: 90px;
 margin: 50px;
 background: ${colors.r1};
 border-radius: 50% 50%;
 -webkit-transform-origin: 50% -100px;
 -webkit-animation: swing 5s infinite ease-in-out;
 box-shadow: -5px 5px 30px 4px ${colors.deng_box_shadow};
}
.spring_lantern__deng {
 position: relative;
 width: 120px;
 height: 90px;
 margin: 50px;
 background: ${colors.r1};
 border-radius: 50% 50%;
 -webkit-transform-origin: 50% -100px;
 -webkit-animation: swing 3s infinite ease-in-out;
 box-shadow: -5px 5px 50px 4px ${colors.deng_box_shadow};
}

.spring_lantern__deng-a {
 width: 100px;
 height: 90px;
 background: ${colors.r2};
 margin: 12px 8px 8px 8px;
 border-radius: 50% 50%;
 border: 2px solid ${colors.suiLight};
}
.spring_lantern__deng-b {
 width: 45px;
 height: 90px;
 background: ${colors.r2};
 margin: -4px 8px 8px 26px;
 border-radius: 50% 50%;
 border: 2px solid ${colors.suiLight};
}

.spring_lantern__xian {
 position: absolute;
 top: -40px;
 left: 60px;
 width: 2px;
 height: 40px;
 background: ${colors.suiLight};
}

.spring_lantern__shui-a {
 position: relative;
 width: 5px;
 height: 20px;
 margin: -5px 0 0 59px;
 -webkit-animation: swing 4s infinite ease-in-out;
 -webkit-transform-origin: 50% -45px;
 background: ${colors.suiDark};
 border-radius: 0 0 5px 5px;
}

.spring_lantern__shui-b {
 position: absolute;
 top: 14px;
 left: -2px;
 width: 10px;
 height: 10px;
 background: ${colors.suiLight};
 border-radius: 50%;
}

.spring_lantern__shui-c {
 position: absolute;
 top: 18px;
 left: -2px;
 width: 10px;
 height: 35px;
 background: ${colors.suiDark};
 border-radius: 0 0 0 5px;
}

.spring_lantern__deng:before {
 position: absolute;
 top: -7px;
 left: 29px;
 height: 12px;
 width: 60px;
 content: " ";
 display: block;
 z-index: 999;
 border-radius: 5px 5px 0 0;
 border: solid 1px ${colors.suiLight};
 background: ${colors.suiDark};
 background: linear-gradient(to right, ${colors.suiLight}, ${colors.suiDark}, ${colors.suiLight}, ${colors.suiDark}, ${colors.suiLight});
}

.spring_lantern__deng:after {
 position: absolute;
 bottom: -7px;
 left: 10px;
 height: 12px;
 width: 60px;
 content: " ";
 display: block;
 margin-left: 20px;
 border-radius: 0 0 5px 5px;
 border: solid 1px ${colors.suiLight};
 background: ${colors.suiDark};
 background: linear-gradient(to right, ${colors.suiLight}, ${colors.suiDark}, ${colors.suiLight}, ${colors.suiDark}, ${colors.suiLight});
}

.spring_lantern__deng-t {
 font-family: 华文行楷,华文楷体,Arial,Lucida Grande,Tahoma,sans-serif;
 font-size: 53px !important;
 color: ${colors.suiLight};
 font-weight: bold;
 line-height: 85px;
 text-align: center;
 user-select:none;
}

.night .spring_lantern__deng-t,
.night .spring_lantern__deng-box,
.night .spring_lantern__deng-box1 {
 background: transparent !important;
}

@-moz-keyframes swing {
 0% {
  -moz-transform: rotate(-10deg)
 }

 50% {
  -moz-transform: rotate(10deg)
 }
 100% {
  -moz-transform: rotate(-10deg)
 }
}

@-webkit-keyframes swing {
 0% {
  -webkit-transform: rotate(-10deg)
 }

 50% {
  -webkit-transform: rotate(10deg)
 }

 100% {
  -webkit-transform: rotate(-10deg)
 }
}
`;
  ;(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(style);

  const div1 = document.createElement('div')
  div1.innerHTML = `
<div class="spring_lantern__deng-box1" id="spring_lantern__box1">
 <div class="spring_lantern__deng">
  <div class="spring_lantern__xian"></div>
  <div class="spring_lantern__deng-a">
   <div class="spring_lantern__deng-b"><div class="spring_lantern__deng-t" id="spring_lantern__chun">${word.split('')[0]}</div></div>
  </div>
  <div class="spring_lantern__shui spring_lantern__shui-a"><div class="spring_lantern__shui-c"></div><div class="spring_lantern__shui-b"></div></div>
 </div>
</div>
`
  ;(document.getElementsByTagName('body')[0] || document.getElementsByTagName('div')[0]).appendChild(div1);

  const div2 = document.createElement('div')
  div2.innerHTML = `
<div class="spring_lantern__deng-box" id="spring_lantern__box">
 <div class="spring_lantern__deng">
  <div class="spring_lantern__xian"></div>
  <div class="spring_lantern__deng-a">
   <div class="spring_lantern__deng-b"><div class="spring_lantern__deng-t" id="spring_lantern__jie">${word.split('')[1]}</div></div>
  </div>
  <div class="spring_lantern__shui spring_lantern__shui-a"><div class="spring_lantern__shui-c"></div><div class="spring_lantern__shui-b"></div></div>
 </div>
</div>
`
  ;(document.getElementsByTagName('body')[0] || document.getElementsByTagName('div')[0]).appendChild(div2);

  document.addEventListener ('mousemove', _spring_lantern_ShowMousePosition, false);
  let _spring_lantern_LightUpFlag = false
  function _spring_lantern_ShowMousePosition (e){
    const isDown = e.clientY > 220
    const isUp = e.clientY < 225
    if ((isDown && !_spring_lantern_LightUpFlag) || (isUp && _spring_lantern_LightUpFlag)) return
    _spring_lantern_LightUpFlag = !_spring_lantern_LightUpFlag
    const box1 = document.getElementById('spring_lantern__box1')
    const box = document.getElementById('spring_lantern__box')
    if (isDown) {
      _spring_lantern_LightUpFlag = false
      box.style.display = 'block'
      box1.style.display = 'block'
    }
    if (isUp) {
      _spring_lantern_LightUpFlag = true
      box.style.display = 'none'
      box1.style.display = 'none'
    }
  }

})()