根据数组中的值动态更改CSS
Change CSS dynamically based on a value from array
我有这部分的html:
<h1 class="gr-title uppercase">
<span class="title-red">GET MORE</span>
<span id="wordSwap" class="title-black">PROFITS</span>
</h1>
…这段jquery代码改变了ID为wordSwap:
的span的值(function(){
//Words:
var words = [
'Profits',
'Freedom',
'Time',
'Enjoyment',
'Disconnection',
'Value'
], i = 0;
setInterval(function(){
$('#wordSwap').fadeOut(function(){
$(this).html(words[i=(i+1)%words.length]).fadeIn();
});
// 2 second interval
}, 2000);
})();
我正试图根据接下来的值/词来改变数组中每个值的letter-spacing
,但我被卡住了,无法让它工作。例如,我希望单词"Time"的letter-spacing = 30px,单词"Value"的letter-spacing = 20px,以此类推。我该怎么做呢?
这是我目前为止的一个概要:https://jsfiddle.net/vgum6jn6/
//Swap words effect
(function() {
// List of words:
var words = [
'Profits',
'Freedom',
'Time',
'Enjoyment',
'Disconnection',
'Value'
], i = 0;
setInterval(function() {
$('#wordSwap').fadeOut(function() {
$(this).html(words[i = (i + 1) % words.length]).fadeIn();
});
// 2 seconds
}, 2000);
})();
.gr-title {
font-family: "Arial", Georgia, Serif;
}
.uppercase {
text-transform: uppercase;
}
.title-red {
color: #CB0000;
}
.title-black {
color: #191919;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<h1 class="gr-title uppercase">
<span class="title-red">GET MORE</span> <span id="wordSwap" class="title-black">PROFITS</span>
</h1>
试试这样:
var baseWidth = 100; //some value
setInterval(function(){
$('#wordSwap').fadeOut(function(){
$(this).html(words[i=(i+1)%words.length]).fadeIn()
.css('letter-spacing','') //reset spacing
.css('letter-spacing', function(){
var ratio = baseWidth / $(this).prop('offsetWidth');
return ratio + 'px';
});
});
// 2 second interval
}, 2000);
Alex Kudryashev帮我想出了这个,它完美地解决了我的问题:
//Swap words effect:
var words = [
{ word: 'Profits', spacing: '8px' },
{ word: 'Enjoyment', spacing: '0px' },
{ word: 'Freedom', spacing: '4px' },
{ word: 'Disconnection', spacing: '-2px' },
{ word: 'Time', spacing: '0.98em' },
{ word: 'Value', spacing: '0.5em' }
], i = 0, n = 0;
setInterval(function () {
$('#wordSwap').fadeOut(function () {
$(this).html(words[i = (i + 1) % words.length].word)
.css('letter-spacing', words[n = (n + 1) % words.length].spacing).fadeIn();
});
// 2 seconds
}, 2000);
(忽略随机的字母间距值,它们对于测试目的是随机的)
相关文章:
- chrome扩展在加载dom之前注入动态css
- 将动态CSS样式应用于谷歌地图的标记
- 为动态css背景预加载图像
- 动态 CSS - 多个样式表与单个动态 CSS(渲染性能)
- Javascript 中的动态 CSS 图像 URL
- 余烬2:带参数的动态CSS类
- 在foreach中敲除动态css绑定
- 用 JS 更改.css?使用变量设置动态.css属性
- 流体动态CSS - Javascript/jQuery
- 使用 PHP 和 JavaScript 的动态 CSS
- 设置Backbone.View的动态css样式属性
- 通过道具使用带有React组件的CSSModules动态CSS
- 使用javascript添加动态css
- 用于产品概述电子商务的动态CSS网格
- 使用python或js以pdf格式下载带有动态css的html
- 引导工具提示动态css规范
- 向文档注入动态CSS
- 可见绑定和动态css绑定
- 在javascript中加载动态css
- 动态CSS与PHP - Wordpress &视觉编辑器按钮