`
jiasongmao
  • 浏览: 666875 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

如何实现CSS样式实时切换?

阅读更多
用W3C标准建造的网站,从理论上来说可以做到完全的表现与结构相分离。打个比方,就是可以在不动骨架(结构,XHMTL)和肌肉(行为,Javascript)的前提下,彻彻底底地换一身皮(表现,CSS)。

当然,换皮之前你需要先按W3C标准建好你的网站,并且为它预备两套表现不一样的CSS。“换皮”实质上就是“换CSS”,我们要做的,只是用某种方法让浏览器载入另一套CSS,重新渲染页面。

Javascript方法

可以用Javascript的DOM方法访问link对象,再将不需要的CSS设为“禁用(disabled)”,剩下的CSS就会被浏览器用来渲染页面。脚本如下,请注重其中的注释:

然后在合适的地方调用这个函数,以本页为例,添加如下两个按钮:

<input type=\"button\" value=\"清光\" onclick=\"setStyle('清光');\" /><input type=\"button\" value=\"冥焰\" onclick=\"setStyle('冥焰');\" />  

使用Javascript的好处是方便、快捷、简单,缺点也是很明显的:很难做到全站的CSS切换,只能局限在当前页上。为了记忆用户的选择,可行的方案就是采用cookie。可是就算使用cookie,也需要在何时载入CSS,用户没有Javasciprt支持怎么办等问题上多做好些文章。

服务器端脚本

毫无疑问,最好的CSS切换器应该使用服务器端脚本(PHP、ASP、JSP等)来开发。这样做的好处是很明显的:直接、高效、兼容性好、可以记忆用户选择、甚至可以组合不同的CSS实现相当复杂的“皮肤”切换。

我这里就用PHP为例,用其他的语言也都大同小异,对一般的开发人员来说不会有任何困难。

基本思路是这样:用户选择一种“皮肤”,把用户的选择记入cookie(记入数据库也一样,不过这样系统开销会大一些),用户访问网站上的任何一个页面时,再从cookie(或数据库)中读出之前用户的选择,载入相应的CSS文件(这里还是以方法一中讲到的a.css和b.css为例)。

创建一个名为switcher.php的文件,内容如下:

<?php$style = $_GET[\"style\"];setcookie('style',$style,time() 31536000,'/','.site.com','0');header(\"location:\".$_SERVER['HTTP_REFERER']);?> 

这段脚本先读取query数据,然后把参数style的值记入cookie,最后返回上一页。接下来我们就可以创建两个用于切换样式的链接了,并且放在合适的页面上,比如首页或用户治理后台(注重把其中的site.com换成你的域名):

<a href=\"switcher.php?style=a\">主题A</a>
<a href=\"switcher.php?style=b\">主题B</a>  

点击任意一个链接,相应的就会把“a”或“b”记入cookie,然后就需要一段脚本来读取这个cookie值并且输出XHTML来引入对应的CSS:

<?php if(isset($_COOKIE[\"style\"])){ $style = $_COOKIE[\"style\"]; }else{ $style = \"a\";//默认采用主题A }?>
<link rel=\"stylesheet\" type=\"text/css\"
title=\"当前选择的主题\" href=\"<?php echo $style ?>.css\" />

每一个需要切换样式的页面都要加上这段代码,所以直接把它加入网站的头文件中就行了。当然你可以根据自己的需要修改这个脚本,但万变不离其宗,总的思路应该是不变的。

<script type=\"text/javascript\">
function setStyle(title) {

//预定义变量
var i, links;

//用DOM方法获得所有的link元素
links = document.getElementsByTagName(\"link\");

for(i=0; links[i]; i ) {

//判定此link元素的rel属性中是否有style要害字
//即此link元素是否为样式表link
//同时判定此link元素是否含有title属性
if(links[i].getAttribute(\"rel\").indexOf(\"style\") != -1
&& links[i].getAttribute(\"title\")) {

//先不管三七二十一把它设为disabled
links[i].disabled = true;

//再判定它的title中是否有我们指定的要害字
if(links[i].getAttribute(\"title\").indexOf(title) != -1)

//假如有则将其激活
links[i].disabled = false;
}
}
}
</script>

<link rel=\"stylesheet\" type=\"text/css\"
title=\"主题A\" href=\"a.css\" />

<link rel=\"alternate stylesheet\" type=\"text/css\"
title=\"主题B\" href=\"b.css\" />


转载地址:http://hi.baidu.com/fskjb/blog/item/18b2a7ec094df92162d09fb6.html
分享到:
评论

相关推荐

    通过按钮点击实现css样式切换--模仿百度有啊

    本教程将重点讲解如何通过按钮点击来实现CSS样式的切换,以模仿百度有啊的图片展示模式,即支持图片在“大图”和“列表”两种模式之间自由切换。这种功能可以提升用户体验,使用户能够根据个人喜好或浏览需求自由...

    div CSS样式表实现中英文双语切换导航条

    以上就是使用`div`和CSS样式表实现中英文双语切换导航条的基本方法。通过深入理解这些技术,你可以创建出更加动态、交互性强的网页界面。同时,不断学习和实践,掌握更多的前端知识,如响应式设计、动画效果等,将有...

    jQuery制作控制css样式表切换各个样式表

    通过使用jQuery,我们可以轻松地实现动态切换不同的CSS样式表,从而改变网页的视觉效果。下面将详细讲解如何使用jQuery来实现这一功能。 首先,我们需要在HTML文档中引入jQuery库。通常,我们可以通过CDN链接或者...

    纯css半圆角tab标签切换代码

    通过这个项目,开发者不仅可以学习到如何用纯CSS实现Tab标签切换,还能深入了解CSS的布局、样式控制、动态效果以及响应式设计等多个方面。这对于提升网页设计和开发技能,尤其是对于初学者来说,是非常宝贵的学习...

    纯css3实现的tab标签切换效果

    在本文中,我们将深入探讨如何使用纯CSS3实现Tab标签切换效果。Tab切换是一种常见的用户界面设计模式,它允许用户在多个视图或内容区域之间切换,而无需刷新整个页面。这种效果通常用于展示有限数量的相关信息,如...

    12种炫酷CSS3图片切换过渡效果

    在“12种炫酷CSS3图片切换过渡效果”这个主题中,我们将深入探讨这些效果的实现方法和应用场景。 1. **滑动切换**:这种效果通常用于轮播图,图片沿水平或垂直方向平滑滑动,提供了一种流畅的视觉过渡。通过`...

    css3马赛克样式图片切换

    今天我们将深入探讨如何使用CSS3实现这种马赛克样式图片切换效果。 首先,我们要了解马赛克样式的基本概念。马赛克通常指的是由许多小块图形或颜色组成的图像,这些小块可以是方形、圆形或其他形状,它们组合在一起...

    css实现图片切换

    4. **定时器(Timers)**:结合JavaScript的`setInterval`或`setTimeout`函数,可以定期更改CSS样式,从而实现自动切换图片的效果。 5. **伪类选择器(Pseudo-classes)**:如`:hover`、`:active`和`:focus`等,...

    css控制图片切换

    本话题将深入探讨如何利用CSS实现图片的切换效果,包括两种常见类型:幻灯片式的新闻图片切换和iPad风格的横向左右滑动切换。 首先,我们来关注幻灯片式的新闻图片切换。这种效果通常应用于网站的首页,以展示最新...

    html+css+js实现图片切换效果

    标题中的“html+css+js实现图片切换效果”是指利用HTML、CSS和JavaScript这三种核心技术来创建一个动态的图片轮播或切换功能。在网页设计中,这种效果常见于产品展示、滑动相册或者幻灯片展示等场景,能够为用户带来...

    纯CSS3表情切换样式的开关切换按钮

    比如这款漂亮的纯CSS3开关切换按钮动画和这款纯CSS3可爱笑脸开关切换按钮,这次我们要给大家带来的这款开关切换按钮同样也很富有创意,它是纯CSS3实现的表情样式,点击时会在笑脸和哭脸之间切换,同时还会不断眨眼睛...

    jquery+css3实现图片3D切换效果

    在本项目中,"jquery+css3实现图片3D切换效果"是一个利用现代Web技术创建交互式用户体验的实例。这个项目结合了JavaScript库jQuery和CSS3的强大功能,为用户提供了一种创新的方式来展示和切换图片,特别是在网页设计...

    Jquery switcher样式表切换插件css样式表切换实现

    而jQuery Switcher 插件则是用于实现CSS样式表(style sheets)动态切换的一个实用工具。这个插件允许用户在页面加载后根据需求更换不同的样式表,从而提供更丰富的交互体验和视觉效果。 首先,我们要理解CSS样式表...

    css实现超酷图片切换

    本话题主要聚焦于如何利用CSS来实现超酷的图片切换效果,这种效果常见于网站的轮播图、产品展示等场景,能吸引用户的注意力,提升用户体验。 首先,我们要理解CSS3是CSS的最新版本,引入了许多新的特性和功能,如...

    js 实现 不用CSS实现链接样式的变化

    js 实现 不用CSS实现链接样式的变化! 值得下载看看!资源免费,大家分享!!

    css实现的图片自动切换

    本话题主要探讨如何利用CSS实现图片的自动切换效果,这对于创建动态、吸引人的用户界面至关重要。 一、CSS图片切换基础 在CSS中,我们可以利用`@keyframes`规则来创建动画,通过改变元素在一段时间内的样式,实现...

    Css3图片切换

    Css3作为CSS(层叠样式表)的第三个主要版本,引入了许多新的特性和功能,其中就包括丰富的动画效果和过渡效果,使得图片切换变得更为流畅和生动。 在实现Css3图片切换时,我们通常会用到以下关键技术: 1. **选择...

    css3滑动图像面板图片切换css3 动画图片切换

    2. CSS样式:给容器和图片添加必要的样式,如宽度、高度、溢出隐藏等,确保图片可以在容器内滑动。同时,隐藏除了第一个图片之外的所有图片。 ```css .slider { width: 100%; height: 400px; overflow: hidden; ...

    纯CSS写的TAB切换

    **CSS样式** 1. **隐藏默认内容**: 使用`display: none;`可以将所有初始内容区域隐藏,只显示第一个内容区域: ```css .tab-content { display: none; } .tab-content:first-child { display: block; } ...

    纯CSS实现的图片切换

    "纯CSS实现的图片切换"这一主题旨在探讨如何利用CSS的特性,如伪类、过渡效果和动画,来创建一个功能完备且视觉吸引人的图片轮播组件。 首先,我们要理解CSS中的关键元素。伪类如`:hover`、`:active`和`:focus`可以...

Global site tag (gtag.js) - Google Analytics