Skip to content

Commit d9b9eb2

Browse files
author
Prinzhorn
committed
Merge branch 'attr'
2 parents 46d7252 + 699ef3b commit d9b9eb2

File tree

3 files changed

+65
-12
lines changed

3 files changed

+65
-12
lines changed

src/skrollr.js

+13-3
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
//Find all data-attributes. data-[_constant]-[offset]-[anchor]-[anchor].
6868
var rxKeyframeAttribute = /^data(?:-(_\w+))?(?:-?(-?\d*\.?\d+p?))?(?:-?(start|end|top|center|bottom))?(?:-?(top|center|bottom))?$/;
6969

70-
var rxPropValue = /\s*([\w\-\[\]]+)\s*:\s*(.+?)\s*(?:;|$)/gi;
70+
var rxPropValue = /\s*(@?[\w\-\[\]]+)\s*:\s*(.+?)\s*(?:;|$)/gi;
7171

7272
//Easing function names follow the property in square brackets.
7373
var rxPropEasing = /^([a-z\-]+)\[(\w+)\]$/;
@@ -984,7 +984,12 @@
984984
if(hasProp.call(props, key)) {
985985
value = _interpolateString(props[key].value);
986986

987-
skrollr.setStyle(element, key, value);
987+
//Set style or attribute.
988+
if(key.indexOf('@') === 0) {
989+
element.setAttribute(key.substr(1), value);
990+
} else {
991+
skrollr.setStyle(element, key, value);
992+
}
988993
}
989994
}
990995

@@ -1018,7 +1023,12 @@
10181023

10191024
value = _interpolateString(value);
10201025

1021-
skrollr.setStyle(element, key, value);
1026+
//Set style or attribute.
1027+
if(key.indexOf('@') === 0) {
1028+
element.setAttribute(key.substr(1), value);
1029+
} else {
1030+
skrollr.setStyle(element, key, value);
1031+
}
10221032
}
10231033
}
10241034

test/index.html

+2
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@
8080

8181
<div id="auto-z-index" data-0="z-index:!1;" data-250="z-index:auto;">TEST</div>
8282

83+
<div id="attr" data-0="@title:500;@data-test:skrollr" data-250="@title:250" data-500="@title:0;@data-test:skrollr-test">TEST</div>
84+
8385
<div id="qunit"></div>
8486

8587
<script src="qunit.js" type="text/javascript"></script>

test/tests.js

+50-9
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,15 @@ var countAssertions = function(tests) {
2424
var curTest = tests[i];
2525

2626
if(curTest.styles) {
27-
for(var k in curTest.styles) {
28-
counter += Object.prototype.hasOwnProperty.call(curTest.styles, k);
29-
}
27+
$.each(curTest.styles, function() {
28+
counter++;
29+
});
30+
}
31+
32+
if(curTest.attributes) {
33+
$.each(curTest.attributes, function() {
34+
counter++;
35+
});
3036
}
3137

3238
counter += !!curTest.selector;
@@ -58,11 +64,16 @@ var scrollTests = function(offset, tests) {
5864
var curTest = tests[i];
5965

6066
if(curTest.styles) {
61-
for(var k in curTest.styles) {
62-
if(Object.prototype.hasOwnProperty.call(curTest.styles, k)) {
63-
QUnit.numericCSSPropertyEquals(curTest.element.css(k), curTest.styles[k], curTest.message || 'element\'s (#' + curTest.element[0].id + ') "' + k + '" CSS property is correct');
64-
}
65-
}
67+
$.each(curTest.styles, function(k) {
68+
QUnit.numericCSSPropertyEquals(curTest.element.css(k), curTest.styles[k], curTest.message || 'element\'s (#' + curTest.element[0].id + ') "' + k + '" CSS property is correct');
69+
});
70+
}
71+
72+
if(curTest.attributes) {
73+
$.each(curTest.attributes, function(k, value) {
74+
console.log(curTest.element.prop(k));
75+
QUnit.numericCSSPropertyEquals(curTest.element.attr(k), curTest.attributes[k], curTest.message || 'element\'s (#' + curTest.element[0].id + ') "' + k + '" attribute is correct');
76+
});
6677
}
6778

6879
if(curTest.selector) {
@@ -86,7 +97,7 @@ s.refresh(newElement[0]);
8697
module('basic stuff');
8798

8899
test('CSS classes present', function() {
89-
strictEqual($('.skrollable').length, 22, 'All elements have the .skrollable class');
100+
strictEqual($('.skrollable').length, 23, 'All elements have the .skrollable class');
90101

91102
ok($('html').is('.skrollr'), 'HTML element has skrollr class');
92103
ok($('html').is(':not(.no-skrollr)'), 'HTML element does not have no-skrollr class');
@@ -180,6 +191,13 @@ scrollTests(500, [
180191
styles: {
181192
zIndex: 'auto'
182193
}
194+
},
195+
{
196+
message: 'attribute interpolation',
197+
element: $('#attr'),
198+
attributes: {
199+
title: '0'
200+
}
183201
}
184202
]);
185203

@@ -254,6 +272,14 @@ scrollTests(0, [
254272
styles: {
255273
zIndex: '1'
256274
}
275+
},
276+
{
277+
message: 'attribute interpolation',
278+
element: $('#attr'),
279+
attributes: {
280+
title: '500',
281+
'data-test': 'skrollr'
282+
}
257283
}
258284
]);
259285

@@ -330,6 +356,14 @@ scrollTests(250, [
330356
styles: {
331357
float: 'none'
332358
}
359+
},
360+
{
361+
message: 'attribute interpolation',
362+
element: $('#attr'),
363+
attributes: {
364+
title: '250',
365+
'data-test': 'skrollr'
366+
}
333367
}
334368
]);
335369

@@ -350,6 +384,13 @@ scrollTests(600, [
350384
styles: {
351385
left: '500px'
352386
}
387+
},
388+
{
389+
message: 'attribute interpolation',
390+
element: $('#attr'),
391+
attributes: {
392+
'data-test': 'skrollr-test'
393+
}
353394
}
354395
]);
355396

0 commit comments

Comments
 (0)