惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - 丁学

javascript实现可以拖动的层示例(层拖动,兼容IE/FF) 《博客园精华集:Web标准之道》内容提要、序、前言、封面 终于有时间聊聊《Silverlight2 完美征程》 可怜的家居易站,早说过不要乱搞 还是无法忘怀——三鹿 水土不服的SNS,落地生根的网游 无敌博皮 之 乾坤大变色——支持:后续更新 无敌博皮 之 乾坤大变色——中篇:样式说明 无敌博皮 之 乾坤大变色——上篇:使用方法 原来,程序的世界远比我想象的精彩 拿到微软GDI(最有影响力开发者)礼包 对“关于购物车的想法”的一些回复 SEO--我们是不是走错了路? 如何实现在客户端,使CheckBox按照选择的顺序进行排序--来自博问的问题 关于参数为可空值类型的多个重载的优先级 (彻底晕掉了) 电子商务胡说八道之:淘宝封百度,卖家很受伤 测试搜索引擎收录状态(2008-09),顺便测试一下CSDN那帮超有才的编辑 测试一下找找看 TerryLee [当当网,你意欲何为]之三:不解,那可怜的UE
无敌博皮 之 乾坤大变色——下篇:脚本讲解
丁学 · 2009-01-04 · via 博客园 - 丁学

如果你在看[上篇:使用方法]的时候没有下载脚本文件,请现在下载,在这里不再贴出大段的代码,请对照文件来看这篇文章,给您带来的不便敬请谅解。文件下载地址:https://files.cnblogs.com/dingxue/css1_script.js

脚本第一行的styleList定义了这里用到的七种样式的全部信息,三个信息依次表示:风格代码、风格颜色、文件地址。风格代码用于区别各个不同的风格,在下面会用这个来启用和禁用对应的CSS文件;风格颜色为显示在页面上切换区的那个小色块儿的颜色,这里都是取得每种风格的背景色作为风格颜色;文件地址是此风格对应的CSS文件的地址,如果选择了另存CSS文件到其他地方,只需要修改这里就可以了。

之后是“引入样式文件到 <head> 中”,因为XHTML标准要求 <link> 标签只能出现在 <head> 区域里,所以没有采取 document.write() 的方式来引入CSS文件,而采用了类似 Omar AL Zabir 提出的 ensure 的方式。这里设置了 <link> 的 title 属性和 disabled 属性:title在切换时用于判断应该启用哪一个样式,来自于上面定义中的“风格代码”;disabled 属性把所有CSS文件在初始时设置为禁用状态,在下面页面加载完之后有一次重置,这里只是为了防止页面加载过慢时这些CSS文件对页面展现的一些影响。在引入JS文件的情况下也需要设置自定义样式也是因为这里,这里加载的CSS全是禁用,所以博客园系统本身的自定义样式是必须的。

“添加初始化过程到 window.onload”,这一部分用于使页面加载完自动执行一些操作,这是一段来自“百度”的代码,避免了和博客园系统中自带的 window.onload 有冲突,这几行代码有点意思。

接下来是“初始化”部分,主要是创建切换区域和里面那几个小色块儿并放到适当的位置。试了几次直接在 switcher.innerHTML 上做字符串操作,都没有成功,只好引入一个字符串变量,不晓得是哪里搞错了什么,还是浏览器就这么诡异。这个切换区的插入位置,就是现在页面上这个样子,在 sideBarMain 之上,也就是在侧边栏的最上面,如果想修改一下样子,或者换个位置,可以修改这里,并修改对应的CSS文件即可。在这段代码最后,是一个用正则获取已保存到 cookie 中的风格,如果用户曾经选择过风格并且 cookie 还有效,那么会自动切换到他上次的选择,如果没有选择过,这里把 gray 设置为默认的风格,你也可以修改为其他风格,但建议与系统默认的风格一致,这样可以避免第一次加载时的“闪屏”。这里其实是有问题的,在页面加载完成后才做这个操作,“闪屏”无法避免,不知道谁有更好的主意,期待回复,感谢支持。

最后是“样式切换”,先获取到所有 <link>,然后在第一个for循环中启用指定CSS而禁用其他CSS,为了保持统一,这里把默认的样式也声明到了上面的样式列表中,所以这个for循环一上来不把系统自带的样式给禁用了,就是那个 id="MainCss" 的,也是这个for里面用到了上面定义的“风格代码”,上面引入样式文件时的title属性在这里用到了。在设置完文件的启用/禁用状态之后,在第二个for循环里,恢复了所有小色块儿的初始大小(这里是8x8),之后让当前选择的样式色块变大,以突出当前选择。在最后,将用户本次选择保存到了 cookie 中,用于到其他页面或下次访问时的自动加载,cookie 有限期设为30天,应该还算足够大。

结语:

代码写得不美,CSS也不完善,配色更别说,我自己是没什么信心,不过这依然是断断续续花了一天多时间写出来的,还是希望能对大家有所帮助。代码不高深,思路或许有可借鉴之处。同时欢迎大家继续完善这个功能,做出更好的样式出来。

感谢您能够看到这里,文章已经结束,有任何问题,请在下面发表评论,谢谢!