单击图像时如何更改样式表

时间:2011-09-30 11:25:54

标签: php javascript jquery css

JS新手在这里

我希望有一种个人资料预览页面供人们选择颜色(可以点击图片或可以是单选按钮),并且可以更改预览页面中某些div的背景颜色。

IE有人点击按钮获取红色,然后标题栏,信息框等背景中的渐变将变为红色。

这是最好的方法吗?

5 个答案:

答案 0 :(得分:3)

如果您为每个“颜色”(读取:样式)定义您希望用户可用的特定样式表,我认为您最好。如果用户单击某些内容以进行颜色选择,则可以更改已加载的样式表。您可能需要一个default.css或一个main.css文件,其中包含所有定位和默认着色内容,对于每种颜色,您都有一个单独的css文件,如red.css,它将为您想要的dom中的每个元素加载颜色改变了。

在简单的Javascript中,这可能类似于:

<link rel="stylesheet" href="style1.css" id="stylesheet">

<script type="text/javascript">
    function changeStyle() {
        document.getElementById('stylesheet').href = 'style2.css';
    }
</script>

当然,你也可以包含像jQuery这样的库来为你做这件事。另一个选项(非JS)是在用户选择颜色并更改样式表服务器端时执行POST。但这会使页面刷新。

答案 1 :(得分:0)

使用jQuery:

$(document).ready(function(){
    $('#my-button').click(function(){
        $('.title-bar').css({'background' : 'red'});
    });
});

修改

我刚刚将一个更好的(如“程序化”)解决方案整合在一起:http://jsfiddle.net/eNLs6/

$(document).ready(function(){
    $('.colorchanger').click(function(){
        $('#preview-div').css({'background' : $(this).val()});
    });
});

答案 2 :(得分:0)

我会在主体中添加一个类,然后在样式表中使用它来创建不同的主题。

JS:

$('#red').click(function() {
  document.body.className = 'red';
});

CSS:

body.red .title{background:url('red-gradient.png');}
body.red .color{color: red}
/* etc... */

您当然可以将每个主题放在一个单独的CSS文件中,以便于组织。但出于性能原因,我建议您一次加载所有CSS,只需交换类onclick,而不是动态样式表加载器。

答案 3 :(得分:0)

我认为实现这一目标的最佳方法是为每种颜色(一般是主题)设置不同的div类,并在单击按钮或图像时更改div的css类:

$('#myRedButton').click(function(){$('#myDiv').attr('class','red')});
$('#myBlueButton').click(function(){$('#myDiv').attr('class','blue')});

你会有一个看起来像

的HTML
<div id="myDiv">....the div that will have it's color changed </div>
<img src="..." id="myRedButton"/>
<img src="..." id="myBlueButton"/>

答案 4 :(得分:0)

为常规内容创建基本样式表(base.css),然后为每种颜色创建辅助样式表,例如red.css,blue.css

当用户点击红色图片时,它会加载red.css样式表。

 $('#red').click(function() {

//load red.css
}

有关详细信息,请参阅how to change a secondary stylesheet with jQuery上的此问题。