以前项目中的一些“骚”操作

简介: 以前项目中的一些“骚”操作

国家纪念日使网站灰化


这里我们需要借助moment这个库来实现


import moment from 'moment'
    const memorial = () => {
      let now = moment().locale('zh-cn').format('MM-DD');
      if (
        now === '04-04' || // 清明
        now === '05-12' || // 汶川大地震
        now === '12-13' // 南京大屠杀
      ) {
        // 灰化
        document.getElementsByTagName('html')[0].style = 'filter: grayscale(100%);'
      }
    }
    export default memorial


网络异常,图片无法展示
|


控制台输入各式各样的文字 / 图案


// 控制台的显示内容
    console.log('%c 欢迎来到 昊淼Blog! ', 'background: rgba(18, 141, 244, 0.1); color: #1890ff');
    console.log('%c 如果你看到了这里,你一定具有一颗追求编程的心,让我们一起加油吧!', 'color: #1890ff');


网络异常,图片无法展示
|


主要就是通过%c 为打印内容定义样式。%c后面的内容将应用我们设置的样式。


具体用法请看mdn


这里提供一些网站为我们生成特殊图案。




鼠标点击飘出字体


animationend事件是当css3动画执行完毕后会被触发。


let index = 0;
    const fnTextPopup = (event) => {
      let arr = ['富强', '民主', '文明', '和谐', '自由', '平等', '公正', '法治', '爱国', '敬业', '诚信', '友善']
      if (!arr || !arr.length) {
        return;
      }
      // 获取鼠标点击的位置
      let x = event.pageX,
        y = event.pageY;
      let eleText = document.createElement('span');
      eleText.className = 'text-popup';
      eleText.style.color = `rgb(${Math.random() * 256}, ${Math.random() * 256}, ${Math.random() * 256})`
      document.documentElement.appendChild(eleText);
      if (arr[index]) {
        eleText.innerHTML = arr[index];
      } else {
        index = 0;
        eleText.innerHTML = arr[0];
      }
      // 动画结束后删除自己
      eleText.addEventListener('animationend', function () {
        eleText.parentNode.removeChild(eleText);
      });
      // 位置(让其处于鼠标点击的中心位置)
      eleText.style.left = (x - eleText.clientWidth / 2) + 'px';
      eleText.style.top = (y - eleText.clientHeight) + 'px';
      // index递增
      index++;
    };
    document.documentElement.addEventListener('click', fnTextPopup, false)


css样式


/* 鼠标点击样式 */
    .text-popup {
      position: absolute;
      z-index: 99;
      animation: textPopup 2s;
      /* color: #69c3da;  */
      user-select: none;
      white-space: nowrap;
    }
    @keyframes textPopup {
      0%,
      100% {
        opacity: 0;
      }
      5% {
        opacity: 1;
      }
      /* 开始到动画结束时,上偏50px */
      100% {
        transform: translateY(-50px);
      }
    }


网络异常,图片无法展示
|


切换主题


  • 可以写多套css代码,切换主题时,去请求对应的css代码即可。



通过定义css变量,我们在设置样式时,都通过css变量去设置。这样我们在切换主题时就可以直接修改变量来达到效果。


一般将css变量放在根dom下。因为这里的变量可以被全部元素使用。全局css变量。


:root {
      --theme_font: #fff;
      --theme_bg: #f00;
    }


点击切换主题的按钮,修改css变量。


document.styleSheets[0].cssRules[0].style.setProperty("--theme_font", "#000")


一个小demo


<!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <style>
        :root {
          --font-color: #000;
          --border-color: #f6de06;
          --bg-color: #fff;
        }
        p {
          color: var(--font-color);
          background: var(--bg-color);
          border: 2px solid var(--border-color);
        }
      </style>
    </head>
    <body>
      <p>一个小demo</p>
      <button id="light">切换主题(亮)</button>
      <button id="dark">切换主题(暗)</button>
      <script>
        const light = document.getElementById("light")
        const dark = document.getElementById("dark")
        const lightTheme = {
          "--font-color": "#000",
          "--border-color": "#f6de06",
          "--bg-color": "#fff"
        }
        const darkTheme = {
          "--font-color": "#fff",
          "--border-color": "#f00",
          "--bg-color": "#000"
        }
        light.addEventListener("click", function() {
          Object.keys(lightTheme).forEach(item => {
            document.styleSheets[0].cssRules[0].style.setProperty(item, lightTheme[item])
          })
        })
        dark.addEventListener("click", function() {
          Object.keys(darkTheme).forEach(item => {
            document.styleSheets[0].cssRules[0].style.setProperty(item, darkTheme[item])
          })
        })
      </script>
    </body>
    </html>


相关文章
|
6月前
|
运维 Devops
云效产品使用报错问题之代码域修改配置后,删除了代码组,代码未删除,但是项目现在看不到了,如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
6月前
|
Java 测试技术 应用服务中间件
使用Maven构建一个项目时,通常按照以下六个步骤的顺序进行
使用Maven构建一个项目时,通常按照以下六个步骤的顺序进行
141 0
18activiti - 流程管理定义(删除key相同的所有不同版本的流程定义)
18activiti - 流程管理定义(删除key相同的所有不同版本的流程定义)
49 0
|
4月前
|
存储 开发工具 git
好的git管理方法,标明项目_编号_(功能,不过还是在没有bug出现时就提交为好)+Excel表管理的格式
好的git管理方法,标明项目_编号_(功能,不过还是在没有bug出现时就提交为好)+Excel表管理的格式
|
5月前
|
敏捷开发 Java 测试技术
阿里云云效产品使用问题之多个代码源要进行代码合并,新建步骤代码合并,合并逻辑应该怎么写
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
6月前
|
Java Maven
创建的项目
在`C:\MVN`目录下有一个名为`health`的Java应用程序项目,它的artifactId与项目名相同。项目包含一个自动生成的`pom.xml`文件,版本为4.0.0,指定groupId为`com.companyname.insurance`,artifactId为`health`,version为`1.0-SNAPSHOT`,打包类型为`jar`,并引用了JUnit 3.8.1作为测试依赖。编码格式为UTF-8。[40 characters]
|
6月前
|
缓存 NoSQL 数据库
总结 做项目的一点自己的想法 在开发中我觉得可以修改的地方
总结 做项目的一点自己的想法 在开发中我觉得可以修改的地方
37 1
|
项目管理 C++
VS2010一个解决方案下新建多个项目出现的问题和方法
VS2010一个解决方案下新建多个项目出现的问题和方法
239 0
VS2010一个解决方案下新建多个项目出现的问题和方法
|
前端开发
前端工作小结12-工具里面代码提交
前端工作小结12-工具里面代码提交
70 0
前端工作小结12-工具里面代码提交
|
Java 开发者