用JS制作博客页面背景随滚动渐变的效果
今天颓了一会,用JavaScript给我的博客园博客写了一个页面背景随滚动而渐变的效果,做完之后自我感觉良好……
下面就以我的博客园博客为例,介绍一下如何制作这个效果!
准备
- 申请博客园的JS权限(如果你也想把它用在自己的博客园上)
- 可能需要一些JS的基础知识(你可以打开w3school,然后就当自己准备好了)
- 可能需要一些CSS基础知识(你需要知道颜色是怎样用16进制表示的)
——当然,你也可以复制下面的代码然后走人……
注意:如果你想要用在自己的博客园上,请注意博客园的不同模板对应的元素class也可能是不同的。
代码
首先,在“页首HTML代码”中新建一个div,放在最下面一层。这个div用来放渐变的背景颜色。
<div id="backGround" style="position: fixed; width:100%; height: 100%; top: 0; left: 0; background-color: #bff687; z-index: -1"></div>
然后用js监听window.onscroll事件,记录一个cnt变量,每监听到一次,就给cnt加上1,然后用cnt生成当前颜色。
至于颜色的生成方式你可以自己发明一个。我用了三个相位不同的sin函数生成R、G、B三个颜色的值。
function getTitleValue(start, x){
var ret = titleMax - 1 - rangeValue + Math.floor(rangeValue * Math.sin(start + x));
return ret;
}
function getBackgroundColor(){
var red = getBackgroundValue(0, cnt * 2 * PI / 256).toString(16);
var green = getBackgroundValue(2 * PI / 3, cnt * 2 * PI / 256).toString(16);
var blue = getBackgroundValue(4 * PI / 3, cnt * 2 * PI / 256).toString(16);
return "#" + red + green + blue;
}
这里讲一下如何用js修改某个元素的颜色:
function changeColor(){
var backGround = document.getElementById("backGround");
var titles = document.getElementsByClassName("postTitle2");
var newTitleColor = getTilteColor();
backGround.style.backgroundColor = getBackgroundColor();
for(var i = 0; i < titles.length; i++)
titles[i].style.color = newTitleColor;
cnt = (cnt + 1) % 256;
}
先getElementById,然后调用生成颜色的函数,生成了一个字符串,形如#aabbcc,代表颜色。然后用JS修改CSS。
完整代码:
<div id="backGround" style="position: fixed; width:100%; height: 100%; top: 0; left: 0; background-color: #bff687; z-index: -1"></div>
<script>
var cnt = 0, PI = Math.acos(-1);
var rangeValue = 64, backgroundMax = 256, titleMax = 192;
function getBackgroundValue(start, x){
var ret = backgroundMax - 1 - rangeValue + Math.floor(rangeValue * Math.sin(start + x));
return ret;
}
function getTitleValue(start, x){
var ret = titleMax - 1 - rangeValue + Math.floor(rangeValue * Math.sin(start + x));
return ret;
}
function getBackgroundColor(){
var red = getBackgroundValue(0, cnt * 2 * PI / 256).toString(16);
var green = getBackgroundValue(2 * PI / 3, cnt * 2 * PI / 256).toString(16);
var blue = getBackgroundValue(4 * PI / 3, cnt * 2 * PI / 256).toString(16);
return "#" + red + green + blue;
}
function getTilteColor(){
var red = getTitleValue(0, cnt * 2 * PI / 256).toString(16);
var green = getTitleValue(2 * PI / 3, cnt * 2 * PI / 256).toString(16);
var blue = getTitleValue(4 * PI / 3, cnt * 2 * PI / 256).toString(16);
return "#" + red + green + blue;
}
window.onload = window.onscroll = function changeColor(){
var backGround = document.getElementById("backGround");
var titles = document.getElementsByClassName("postTitle2");
var newTitleColor = getTilteColor();
backGround.style.backgroundColor = getBackgroundColor();
for(var i = 0; i < titles.length; i++)
titles[i].style.color = newTitleColor;
cnt = (cnt + 1) % 256;
}
</script>
用JS制作博客页面背景随滚动渐变的效果的更多相关文章
- 原生js添加博客点击鼠标出小心心效果~~
昨天刚申请成功JS权限,心血来潮想添加点东西,记得之前看到别人家博客首页点击鼠标的时候会出现炫酷的 “小心心”,自己也来搞一个.没有用jquery啥的框架,原生js写起来麻烦了点,不过主要是怕博客首页 ...
- 转载: 使用vue全家桶制作博客网站 HTML5 移动网站制作的好教程
使用vue全家桶制作博客网站 前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用vue全家桶制作的博客网站 概述 该项目是基于vue全家桶(vue. ...
- 使用react全家桶制作博客后台管理系统 网站PWA升级 移动端常见问题处理 循序渐进学.Net Core Web Api开发系列【4】:前端访问WebApi [Abp 源码分析]四、模块配置 [Abp 源码分析]三、依赖注入
使用react全家桶制作博客后台管理系统 前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用react全家桶制作的博客后台管理系统 概述 该项目是基 ...
- 一个基于Vue.js+Mongodb+Node.js的博客内容管理系统
这个项目最初其实是fork别人的项目.当初想接触下mongodb数据库,找个例子学习下,后来改着改着就面目全非了.后台和数据库重构,前端增加了登录注册功能,仅保留了博客设置页面,但是也优化了. 一.功 ...
- 使用vuepress搭建GitHub pages静态博客页面
vuepress官网 vuepress是尤大开发来写文档的静态页面.可以用Markdown 语法,并且也可以使用vue模块化的方式开发页面. vuepress-theme-reco 是另外的开发者开发 ...
- Confluence 6.15 博客页面(Blog Posts)宏参数
参数是让你可以用来控制宏的格式和输出的选项.在 Confluence 存储格式或者 Wiki 标记(wikimarkup)中使用的参数名与在宏浏览器中使用的标签名是不同的,在下面我们将会用括号列出 ...
- Confluence 6.15 博客页面(Blog Posts)宏
博客页面宏允许你 Confluence 页面中显示博客页面.通过单击博客的标题将会把你链接到博客页面中. 使用博客页面宏 为了将博客页面宏添加到页面中: 从编辑工具栏中,选择 插入(Insert) ...
- 使用vue全家桶制作博客网站
前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用vue全家桶制作的博客网站 概述 该项目是基于vue全家桶(vue.vue-router.vuex.v ...
- 使用react全家桶制作博客后台管理系统
前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用react全家桶制作的博客后台管理系统 概述 该项目是基于react全家桶(React.React-r ...
随机推荐
- ASP.NET Response.Redirect 丢失 Session的问题(作废,仅供参考)
以前在做ASP.NET开发时一直没注意到一个问题,就是广泛使用的Response.Redirect方法并不会将服务器端在Response中新增或修改的Cookie返回给客户端浏览器,而网站的Sessi ...
- centos 7 搭建开源堡垒机 Teleport 遇到的问题解决
不得不说 centos7 的环境版本就是高,没有再出现6.5下那些依赖组件的版本支持过低的错误了,所以说现在个人用户还是推荐用7,企业生产环境的话,可能6.5适合一些,至少2年前是这样. 安装过程: ...
- 微信小程序实现各种特效实例
写在前面 最近在负责一个微信小程序的前端以及前后端接口的对接的项目,整体上所有页面的布局我都已经搭建完成,里面有一些常用的特效,总结一下,希望对大家和我都能有所帮助 实例1:滚动tab选项卡 先看一下 ...
- NodeMCU学习(三) : 进入网络世界
把NodeMCU连接到路由器网络上 NodeMCU可以被配置为Station模式和softAP模式或者Station + AP模式,当它被配置为Station模式时,就可以去连接Access Poin ...
- 初识Redux Middleware
前言 原先改变store是通过dispatch(action) = > reducer:那Redux的Middleware是什么呢?就是dispatch(action) = > reduc ...
- 搭建个人博客 github+hexo
其实相关的教程网上有很多很多,不过就是很多很多,而且技术大神们每个人都写得不一样啊喂,为什么我明明就是一步一步按照教程来的还是有那么多乱七八糟的错?...所以我决定写此篇记录一下我搭建博客的过程以及我 ...
- Linux 终端快捷键整理
一.历史命令相关快捷键 快捷键 说明 ↑.↓ 显示历史命令 !! 执行上一个命令 !n 执行历史命令中第 n 条命令 !-n 执行历史命令中倒数第 n 条命令 二.移动相关快捷键 快捷键 说明 Ctr ...
- BugPhobia开发篇章:Beta阶段第IV次Scrum Meeting
0x01 :Scrum Meeting基本摘要 Beta阶段第四次Scrum Meeting 敏捷开发起始时间 2015/12/16 00:00 A.M. 敏捷开发终止时间 2015/12/16 23 ...
- Beta版本总结
beta 阶段的 postmortem 报告 1. 每个成员在beta 阶段的实践和alpha 阶段有何改进? 成员 Beta阶段的实践和alpha 阶段有何改进 黄山成 beta阶段较alpha ...
- Python爬虫爬中文却显示Unicode,怎样显示中文--问题解答
首先爬取古诗网站时,显示 原因是因为输出为列表[] 如果写一个循环,输出其中每个元素就为中文了...