javascript - 点击实现图片切换
PHP中文网
PHP中文网 2017-04-11 13:28:35
[JavaScript讨论组]

如何用jQuery实现分别点击暗图标切换为高亮图标?

PHP中文网
PHP中文网

认证0级讲师

全部回复(2)
高洛峰

普通实现

js只控制行为,对于样式就交给css去实现吧,做好行为样式内容的分离。
在HTML中分别为这十四个元素定义好类名,然后在CSS里分别为这些元素使用不同的背景,如下:

.icon.icon-all {
    background: url('./icon-all.png');
}
.icon.icon-all.active {
    background: url('./icon-all-active.png');
}
.icon.icon-school {
    background: url('./icon-school.png');
}
.icon.icon-school.active {
    background: url('./icon-school-active.png');
}
...

最后使用jquery去控制点击切换:

$('.icon').on('click', function() {
    $(this).toggleClass('active');
}

以上便是使用jq便可以实现的,下面的是如果想优化性能的时候,可以尝试做的:

进阶实现

每个元素请求一张图片太浪费了,我们将所有图片合并成一张,然后用 background-position 去控制要显示的图标:

.icon.icon-all {
    background: url('./icon-all.png');
    background-position: 0px, 0px;
}
.icon.icon-all.active {
    background: url('./icon-all.png');
    background-position: 0px, 20px;
}
.icon.icon-school {
    background: url('./icon-all.png');
    background-position: 20px, 0px;
}
.icon.icon-school.active {
    background: url('./icon-all.png');
    background-position: 20px, 20px;
}
...

具体图片位置根据合成的图片去定义了,这样请求的图片就只需要请求一张了

再次进阶

如果每张图片都很小,那么使用工具将其变成 base64 内嵌到代码里面,那么连一张图片都不需要请求了!
然后就可以这样写:

.icon.icon-all {
    background: url('xxxxxx'); // base64格式的字符串
}
.icon.icon-all.active {
    background: url('xxxxxx');
}
.icon.icon-school {
    background: url('xxxxxx');
}
.icon.icon-school.active {
    background: url('xxxxxx');
}
...

除了css,js和html在性能优化的时候都不需要改动,这就是我一开始提到了mvc分离,对于后期维护和性能优化都有一定的好处,不知道能不能帮到你

PHPz

1/使用-webkit-filter: grayscale(100%);css3灰度属性 ie filter:Gray;
移动上去移除这个属性
//引入插件
<script type="text/javascript" src="grayscale.js"></script>

//调用插件
<script type="text/javascript">

window.onload = function(){
    var el = document.getElementById( 'body' );
    grayscale( el );
};

</script>
兼容所有浏览器,执行后会在元素上加入很多行内样式,如果你对兼容性要求不高的话建议使用CSS实现灰度效果。
2、jq 点击切换src

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号