4

我对 javascript/jQuery 相当陌生,但是我正在尽一切努力了解我在做什么。我受到柴油网站的启发。在这个站点上,数据属性用于主页上的文本块。data-color. 我想在我的网站上实现这个功能。能够更改每个条目的每个块的颜色,当用户向下滚动页面时,它会以不同的方式触发。

我来这里寻求帮助,因为我没有看到任何与我试图实现的功能相关的教程。有谁知道如何做到这一点?我相信这对那些想要执行相同或类似功能的人会有所帮助。

getColorMod: function(color, val) {
    var hexToRgb = function(hex) {
        var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
        return result ? [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)] : false;
    }
    var array = hexToRgb(color),
    r = parseFloat(array[0] + val),
    g = parseFloat(array[1] + val),
    b = parseFloat(array[2] + val),
    rgb = array ? {
        r: r >= 250 ? 200 : r,
        g: g >= 250 ? 200 : g,
         b: b >= 250 ? 200 : b
    } : false;

    return 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')';
},
4

2 回答 2

6

HTML5 数据属性只是为了在 html 元素中存储附加信息。我在以编程方式打印各种数据集以包含用户帐号等信息时使用过它。您可能希望使用 javascript 或 jquery 访问的数据位

您可以在此处查看 webtutsplus 关于 HTML5 数据属性的出色文档/教程

data-attribute 很有趣,因为您可以将其定义为任何您喜欢的属性:

     data-[NAME]="[VALUE]"
     data-color="blue"
     data-price="$19.96"

最新版本的 jQuery 还具有内置的易于使用的功能,专门用于处理获取和设置 HTML5 数据属性 - 此处的文档

想象一些假设的html:

     <span id="fluxCapacitor" data-gigawats="1.21"></span>

在我们的磁通电容器 jquery 元素上调用 .data 处理程序将返回“1.21”

     $('#fluxCapacitor').data('gigawats'); // "1.21"

您可以使用两个参数功能将通量电容器设置为超过 9000 吉瓦。

     $('#fluxCapacitor').data('gigawats', "over 9000");

导致:

     <span id="fluxCapacitor" data-gigawats="over 9000"></span>

编辑:根据历史准确性调整了我的功率水平。

于 2013-05-23T13:32:16.700 回答
0
<div class="bg">
    <div style="transition: background 500ms ease; -webkit-transition: background 500ms ease; background-color: rgb(25, 30, 36);"></div>
</div>

使用您选择的库

这似乎是 Diesel 执行颜色转换的方式。

var $bodyBg = $('<div />'),
$bg = $('<div />').addClass('bg').append($bodyBg),
$arrow = $('<span />').addClass('arrow');

this.$navs.append($bg).append($arrow);

this.$navs
.on('hide', function() {
    // hide navigation bar
    $(this).addClass('hide');
})
.on('show', function() {
    // show navigation bar
    $(this).removeClass('hide');
})
.on('changeColor', $.proxy(function(e, color) {

    var $elm = $(e.currentTarget),
        $bg = $elm.find('.bg div');

    if (Modernizr.csstransforms && Modernizr.csstransitions) {
        // css3 transition
        $bg.css({
            transition: 'background 500ms ease',
            backgroundColor: this.getColorMod(color, 12)
        });
    } else {
        // no css3 transition support
        $bg.css({
            backgroundColor: this.getColorMod(color, 12)
        });
    }

}, this))
.trigger('hide')
.appendTo(this.$el);
于 2013-05-23T13:25:16.963 回答