mirror of
https://github.com/h5bp/html5-boilerplate.git
synced 2026-01-14 17:17:54 -05:00
Compare commits
927 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
72cdf1e96c | ||
|
|
f033325bac | ||
|
|
d144341003 | ||
|
|
71ca9fb7a0 | ||
|
|
23f5e084e5 | ||
|
|
da9528e568 | ||
|
|
ab6b2fc4aa | ||
|
|
ab05d000f8 | ||
|
|
8a68443746 | ||
|
|
cd981e52f7 | ||
|
|
2cf1ef7cea | ||
|
|
5bc2a985c7 | ||
|
|
21c614849a | ||
|
|
01624d71f5 | ||
|
|
be4484add0 | ||
|
|
ce7c3c5c15 | ||
|
|
ff37dba6bf | ||
|
|
8fc26501f4 | ||
|
|
9ec546569b | ||
|
|
02713eedd2 | ||
|
|
8f743702f6 | ||
|
|
48d49e96d6 | ||
|
|
deec362213 | ||
|
|
713abf57a9 | ||
|
|
f27c2b7372 | ||
|
|
52f17087f9 | ||
|
|
7a22a33d40 | ||
|
|
0adda79fee | ||
|
|
d94e506189 | ||
|
|
fa7527fb26 | ||
|
|
2a8e5828af | ||
|
|
6cfbc95cd6 | ||
|
|
a7a4d0685c | ||
|
|
c8b0431c7d | ||
|
|
1b0f042e06 | ||
|
|
a10460934d | ||
|
|
b83ce3b1b4 | ||
|
|
c01aa0474d | ||
|
|
2f966781d8 | ||
|
|
b4587434f8 | ||
|
|
522fa645c3 | ||
|
|
19c03c4bf0 | ||
|
|
7dae637800 | ||
|
|
922df45999 | ||
|
|
aa9bcbeb5b | ||
|
|
c3358e2399 | ||
|
|
3a7de0b41a | ||
|
|
964c929ef0 | ||
|
|
e9a471bc3f | ||
|
|
29315016dc | ||
|
|
90f99e1587 | ||
|
|
fb9166461b | ||
|
|
21702c4198 | ||
|
|
7bc8241f51 | ||
|
|
a2b3d06e8b | ||
|
|
081f8aa0de | ||
|
|
1987e5a1ee | ||
|
|
46446727b2 | ||
|
|
3d5d852697 | ||
|
|
052ecc4b29 | ||
|
|
dac15682b3 | ||
|
|
8c08445487 | ||
|
|
d141f70910 | ||
|
|
e9f6a9890c | ||
|
|
e85301270f | ||
|
|
0615b940c3 | ||
|
|
551dd5c5d6 | ||
|
|
25c1073d13 | ||
|
|
7b04f32d5a | ||
|
|
750bf0e093 | ||
|
|
dc00673b7c | ||
|
|
5bed678da0 | ||
|
|
578f377849 | ||
|
|
e1b163041e | ||
|
|
4ac3ffef5c | ||
|
|
6be0119cd2 | ||
|
|
e6c64a238d | ||
|
|
b378ce239d | ||
|
|
2c079ae144 | ||
|
|
2dd1153cfc | ||
|
|
bfeac11c9a | ||
|
|
bb7b3577b1 | ||
|
|
d20a342c95 | ||
|
|
0dcd9d120e | ||
|
|
cb0bb16eb7 | ||
|
|
dd420ef187 | ||
|
|
1c6485adb9 | ||
|
|
d4467ad7f2 | ||
|
|
5735ee396d | ||
|
|
0b60046431 | ||
|
|
07ee69683c | ||
|
|
19c8065b6a | ||
|
|
6f5ed6f921 | ||
|
|
6415ccd9b0 | ||
|
|
39a1801a88 | ||
|
|
dfca687243 | ||
|
|
42f16dfaa1 | ||
|
|
a36b296b89 | ||
|
|
68197bc42d | ||
|
|
adecc5da03 | ||
|
|
fac03ef28f | ||
|
|
38c7a90cbf | ||
|
|
7b0ba6b083 | ||
|
|
28f922ff3c | ||
|
|
445037ccf4 | ||
|
|
920e52a5d4 | ||
|
|
456211dc54 | ||
|
|
e52927a03e | ||
|
|
596d9a9dcc | ||
|
|
50b46d6fa2 | ||
|
|
1d96e32876 | ||
|
|
8e90c33cef | ||
|
|
66b137083f | ||
|
|
02bdaea124 | ||
|
|
5ed4dadf5c | ||
|
|
1c30c5a660 | ||
|
|
d590b0efe9 | ||
|
|
f23340ed9b | ||
|
|
3ce6e98cde | ||
|
|
703d0b8651 | ||
|
|
1e3be1842b | ||
|
|
cc265d4511 | ||
|
|
889e377b2d | ||
|
|
d3969484ff | ||
|
|
5370479476 | ||
|
|
83f4f28186 | ||
|
|
288f9922c0 | ||
|
|
2a60c6b3d1 | ||
|
|
49089be067 | ||
|
|
ca30a53977 | ||
|
|
7aa306c0b3 | ||
|
|
0c52750ea6 | ||
|
|
cbde32f684 | ||
|
|
4505fa12b1 | ||
|
|
5a2585f42c | ||
|
|
d2d5fd1eac | ||
|
|
d242bd27cd | ||
|
|
7a2f9dcf8b | ||
|
|
6bfd7948c6 | ||
|
|
3942ee1775 | ||
|
|
e53c1df9cf | ||
|
|
d055e4e6c1 | ||
|
|
4934c5defd | ||
|
|
b2b24c351e | ||
|
|
c20eb1a6fa | ||
|
|
09dc03ae17 | ||
|
|
6e1417b857 | ||
|
|
509648b8a5 | ||
|
|
e1e53cf83c | ||
|
|
1ab8d64169 | ||
|
|
e49353b05f | ||
|
|
a95f300ac8 | ||
|
|
1d320b59a3 | ||
|
|
eb2dc2fe90 | ||
|
|
1b581aff02 | ||
|
|
c264d91c6c | ||
|
|
02bf76cd16 | ||
|
|
3606c8345f | ||
|
|
cfae00adab | ||
|
|
5469e272a4 | ||
|
|
21e77285e2 | ||
|
|
b0db5d5eb6 | ||
|
|
060ac246fd | ||
|
|
339b6c96ad | ||
|
|
086280e6fd | ||
|
|
ce64453057 | ||
|
|
00ee25c1be | ||
|
|
6c1c1db5a2 | ||
|
|
263af0b468 | ||
|
|
4026f03249 | ||
|
|
258cbef93c | ||
|
|
9cb7e46f32 | ||
|
|
863de294e8 | ||
|
|
7912513084 | ||
|
|
1c55518def | ||
|
|
9cf989542c | ||
|
|
9ced71e8ef | ||
|
|
e2fff6fe07 | ||
|
|
923b0f3adc | ||
|
|
767dc09916 | ||
|
|
efe88dfbf2 | ||
|
|
1ec581885a | ||
|
|
aa0396eae7 | ||
|
|
758eab9f35 | ||
|
|
c448cc03e7 | ||
|
|
db1574059d | ||
|
|
ca4bf4793d | ||
|
|
1aad336ef7 | ||
|
|
1929462a39 | ||
|
|
5bbd604930 | ||
|
|
b0ddd13910 | ||
|
|
fe6c2f56ec | ||
|
|
f8f347e392 | ||
|
|
080026e4f4 | ||
|
|
9434b5bc79 | ||
|
|
f9ebf5d2e9 | ||
|
|
c93f45ff38 | ||
|
|
5dbb3b4b0a | ||
|
|
deeb952314 | ||
|
|
0659528100 | ||
|
|
4d65006439 | ||
|
|
ab117fc461 | ||
|
|
5d2a6dbe3a | ||
|
|
a2240384c7 | ||
|
|
cedd640083 | ||
|
|
ac50fbc1e2 | ||
|
|
f96fed6942 | ||
|
|
f2924da1b1 | ||
|
|
a111a79500 | ||
|
|
ce0c28932b | ||
|
|
d7e668235f | ||
|
|
8552d9543e | ||
|
|
af3bd79de5 | ||
|
|
2dcdaf0104 | ||
|
|
3cebea1671 | ||
|
|
a5e31d6132 | ||
|
|
37470f8da6 | ||
|
|
e1b81302bd | ||
|
|
965f3f1636 | ||
|
|
fddbaa3487 | ||
|
|
26d6be2479 | ||
|
|
611162c891 | ||
|
|
f5d13045c0 | ||
|
|
cff92881a8 | ||
|
|
2eb19a9c99 | ||
|
|
2b5f881ecc | ||
|
|
6a304122b7 | ||
|
|
8b1f5ebe50 | ||
|
|
4b213f9050 | ||
|
|
0bf9143cd1 | ||
|
|
d269a55d45 | ||
|
|
c04b0b57b5 | ||
|
|
f6ccd1032d | ||
|
|
af98e6fc51 | ||
|
|
f0358b52a5 | ||
|
|
1dd911f06a | ||
|
|
1738287ce9 | ||
|
|
5c02f406e4 | ||
|
|
2dc1493df6 | ||
|
|
79beb6c91c | ||
|
|
26ea01971c | ||
|
|
4932b4070f | ||
|
|
27d1fda0dc | ||
|
|
e80a3e0637 | ||
|
|
a36d558702 | ||
|
|
3e0b0de9da | ||
|
|
ce9c57c105 | ||
|
|
f4cd5c18a3 | ||
|
|
0f9507774b | ||
|
|
01296493e7 | ||
|
|
8c4ce42af3 | ||
|
|
3719f56c86 | ||
|
|
b3755703b7 | ||
|
|
f6830c199b | ||
|
|
f93c8e1636 | ||
|
|
5884c3a5fd | ||
|
|
d5c0d33d10 | ||
|
|
b780098073 | ||
|
|
2e1a7bf567 | ||
|
|
481dfc1966 | ||
|
|
71d5229611 | ||
|
|
32aabb23f7 | ||
|
|
fd52982efd | ||
|
|
9feb29f465 | ||
|
|
23bd766955 | ||
|
|
024600fd57 | ||
|
|
e2ca1bf931 | ||
|
|
2b5eeeef27 | ||
|
|
e97689d7aa | ||
|
|
791734033f | ||
|
|
cafea9f090 | ||
|
|
d582fe5d8e | ||
|
|
a835a4dbb0 | ||
|
|
ba7d47f931 | ||
|
|
b1e3aa5fe4 | ||
|
|
a8e96a79a1 | ||
|
|
d8e28f2f2e | ||
|
|
2727fa23a6 | ||
|
|
fdb58e6815 | ||
|
|
875df4e9b5 | ||
|
|
a0cf284836 | ||
|
|
a7b1a71624 | ||
|
|
f40da1b529 | ||
|
|
9efe695f4d | ||
|
|
05965584fc | ||
|
|
2dd8ad97f8 | ||
|
|
78533f248c | ||
|
|
8bf92b0989 | ||
|
|
8074f1584f | ||
|
|
6122ef5ab1 | ||
|
|
212afb9d43 | ||
|
|
8278b4552d | ||
|
|
ce11ab3f8e | ||
|
|
8b634157e3 | ||
|
|
588e82c8dc | ||
|
|
07634ccaf1 | ||
|
|
1c18e9e8ca | ||
|
|
821f3449aa | ||
|
|
4a69c41694 | ||
|
|
6290f4018c | ||
|
|
5718718cdd | ||
|
|
d526c488ea | ||
|
|
e0b5b1c93d | ||
|
|
0eb2dc932a | ||
|
|
fb6d9387ed | ||
|
|
b0fd587b26 | ||
|
|
5347f874ed | ||
|
|
d32dfb7a48 | ||
|
|
380c4f80d8 | ||
|
|
125a7a6840 | ||
|
|
1437e0fefd | ||
|
|
0a80ebafd0 | ||
|
|
5fdb99f91b | ||
|
|
b72f114d95 | ||
|
|
90734c0b45 | ||
|
|
f022785b64 | ||
|
|
d20c503e08 | ||
|
|
a37f57addb | ||
|
|
a87078d406 | ||
|
|
ecdb8d79ac | ||
|
|
f3cc3a28e4 | ||
|
|
8d50ceb127 | ||
|
|
f1e9bb3f94 | ||
|
|
5e213a872c | ||
|
|
638f77206f | ||
|
|
25fa9bedd7 | ||
|
|
b230b84043 | ||
|
|
362eb87946 | ||
|
|
eaf87bb500 | ||
|
|
5c85e31a21 | ||
|
|
e17dc838a2 | ||
|
|
3cdf17e1bc | ||
|
|
994cd0801d | ||
|
|
e130ae32c2 | ||
|
|
d8a3970e14 | ||
|
|
d98f4ae88e | ||
|
|
6673ce68ff | ||
|
|
535918a3ed | ||
|
|
32fcb33604 | ||
|
|
d13dfdef40 | ||
|
|
b23de068c5 | ||
|
|
7f94518f6b | ||
|
|
53aded7bf3 | ||
|
|
7a984c7f84 | ||
|
|
8aa70882b4 | ||
|
|
fe2d67c9c0 | ||
|
|
115bce064e | ||
|
|
4994e375a1 | ||
|
|
64c9e797b8 | ||
|
|
ceb6e819d3 | ||
|
|
ea716a8f46 | ||
|
|
715957bffc | ||
|
|
981e448b36 | ||
|
|
439778a2be | ||
|
|
7b3c30d8c8 | ||
|
|
70a836c34d | ||
|
|
75ac1ea512 | ||
|
|
d07c233422 | ||
|
|
bd72320946 | ||
|
|
2ba5f9d80d | ||
|
|
9b32ced2b4 | ||
|
|
a6bc1d4e69 | ||
|
|
2df9a9a863 | ||
|
|
19dd8f8318 | ||
|
|
4caa411f01 | ||
|
|
fccc4824cc | ||
|
|
ef3c095baf | ||
|
|
3f22747dfb | ||
|
|
ca028d751f | ||
|
|
97c7ae774a | ||
|
|
6727b542ac | ||
|
|
ad423ae3fd | ||
|
|
e88011b49b | ||
|
|
01f0a9f999 | ||
|
|
d2223de26a | ||
|
|
8cbb3e7155 | ||
|
|
7467f9c041 | ||
|
|
3233fdeeec | ||
|
|
2aabc1a276 | ||
|
|
c8b87abd01 | ||
|
|
94b065fb97 | ||
|
|
9fe23b3f82 | ||
|
|
c4ef2f3810 | ||
|
|
2fef4ad3ee | ||
|
|
20976f7af4 | ||
|
|
64561534a6 | ||
|
|
bf52178981 | ||
|
|
e1702af5ee | ||
|
|
014b6d4153 | ||
|
|
b139b59797 | ||
|
|
6c1e80d6dd | ||
|
|
2fb6ac3369 | ||
|
|
50daa07400 | ||
|
|
b44a12d78c | ||
|
|
fa785e0ef0 | ||
|
|
c86f2b52c0 | ||
|
|
0062417c59 | ||
|
|
98e4ca1edf | ||
|
|
21933ec1ee | ||
|
|
85d8cc0ac0 | ||
|
|
1311138f3e | ||
|
|
1b3690933e | ||
|
|
b87096669b | ||
|
|
7344d57029 | ||
|
|
060315b591 | ||
|
|
5f2b327595 | ||
|
|
1e79f7b7df | ||
|
|
c6dbb2892b | ||
|
|
c996f0e685 | ||
|
|
f10f81a241 | ||
|
|
00be05ad18 | ||
|
|
5fe1dda97c | ||
|
|
113c98f849 | ||
|
|
341992913b | ||
|
|
1c9145c9a7 | ||
|
|
e13f5c4b37 | ||
|
|
d9cc711ea1 | ||
|
|
55a7fc2466 | ||
|
|
99e140ded4 | ||
|
|
b77d30c2f0 | ||
|
|
b191777977 | ||
|
|
6241a72722 | ||
|
|
2db692e752 | ||
|
|
6c5b7719a6 | ||
|
|
a314d2a374 | ||
|
|
a81061aa37 | ||
|
|
0d4f6b5261 | ||
|
|
a556e26cb5 | ||
|
|
cde1dc4f5c | ||
|
|
601fbc59e4 | ||
|
|
28b1ca4b8c | ||
|
|
ce89a01bef | ||
|
|
7b95c57e2d | ||
|
|
44bc2bdbf2 | ||
|
|
00d8b84570 | ||
|
|
458cd36309 | ||
|
|
586dc13ee3 | ||
|
|
4238aed87d | ||
|
|
a48bd3ebaf | ||
|
|
19450d9d59 | ||
|
|
7fca5a5adf | ||
|
|
7668263695 | ||
|
|
d15376de77 | ||
|
|
413822acbc | ||
|
|
11158f1bc4 | ||
|
|
0b15ec7d6d | ||
|
|
05d83fcfeb | ||
|
|
53f28cf87d | ||
|
|
4c9e90e730 | ||
|
|
c537194736 | ||
|
|
fd345072df | ||
|
|
51d121e79a | ||
|
|
777f14fa93 | ||
|
|
0a7a6f82bf | ||
|
|
2792309862 | ||
|
|
976fc0f9ba | ||
|
|
aee2fa8f29 | ||
|
|
73f6f66039 | ||
|
|
e7e087854b | ||
|
|
b14b4a60d1 | ||
|
|
8b168ad3b1 | ||
|
|
f2f59b04ec | ||
|
|
727ef92941 | ||
|
|
5c97f98709 | ||
|
|
41246db22b | ||
|
|
3611b4c4e0 | ||
|
|
299291e6be | ||
|
|
0d1c066177 | ||
|
|
ffb7b8e359 | ||
|
|
401e66acb4 | ||
|
|
e49793fdc9 | ||
|
|
a36c13a732 | ||
|
|
9a6433f92f | ||
|
|
bd88d3e457 | ||
|
|
58816dd249 | ||
|
|
8175a1c468 | ||
|
|
ebe10aef34 | ||
|
|
e52f6af093 | ||
|
|
559bc56768 | ||
|
|
78641b530f | ||
|
|
6fee66d751 | ||
|
|
c23caaf1d8 | ||
|
|
b4229a4d49 | ||
|
|
3f3f95de4e | ||
|
|
acdae81735 | ||
|
|
7f52ddf680 | ||
|
|
dc1604c697 | ||
|
|
d965db4c5e | ||
|
|
f78016f555 | ||
|
|
c72a81c5e9 | ||
|
|
639cb05ba0 | ||
|
|
5416bcd103 | ||
|
|
37446e28af | ||
|
|
a709725b06 | ||
|
|
d3dc77b211 | ||
|
|
7db1acaeb5 | ||
|
|
29c7e128cd | ||
|
|
09a8c715cb | ||
|
|
536b6ace6b | ||
|
|
f4a43fd2e4 | ||
|
|
c80cc610e2 | ||
|
|
fca04b1e3e | ||
|
|
e150d87944 | ||
|
|
b131981d84 | ||
|
|
d19dea0572 | ||
|
|
f5e2524c96 | ||
|
|
3fb77e0cfa | ||
|
|
e3367bc021 | ||
|
|
e12930a242 | ||
|
|
8e0864f509 | ||
|
|
93f0e38c51 | ||
|
|
705493215e | ||
|
|
02e749a3f4 | ||
|
|
d9146777db | ||
|
|
f7da334d36 | ||
|
|
8628fef73e | ||
|
|
35872f2e58 | ||
|
|
ddd7ae43a5 | ||
|
|
954d45cbcb | ||
|
|
f569ad9813 | ||
|
|
210fbe0947 | ||
|
|
86581681eb | ||
|
|
26a391c60d | ||
|
|
b125225228 | ||
|
|
b61671ccc6 | ||
|
|
91f39213da | ||
|
|
036b1e5e4b | ||
|
|
401250356e | ||
|
|
2d09367d64 | ||
|
|
0928889ddc | ||
|
|
fbfbbd5dad | ||
|
|
14ba59535e | ||
|
|
6edd2cb9b2 | ||
|
|
5e26749118 | ||
|
|
b84c9aeb50 | ||
|
|
4c8e51a459 | ||
|
|
8ace459e0e | ||
|
|
c03be7e137 | ||
|
|
bca1d30716 | ||
|
|
82c2125692 | ||
|
|
5572931889 | ||
|
|
b37d518d81 | ||
|
|
d5d05a36cd | ||
|
|
94c63ee571 | ||
|
|
b49ca17032 | ||
|
|
6aba703c89 | ||
|
|
73b878bf9e | ||
|
|
ddaf66a515 | ||
|
|
e9f342b91f | ||
|
|
6d8a8ef805 | ||
|
|
31025414e9 | ||
|
|
4f2003b5fe | ||
|
|
bfe9a84023 | ||
|
|
929eeccc5f | ||
|
|
2f370b8156 | ||
|
|
d97a2ff818 | ||
|
|
ff68f939b6 | ||
|
|
1a54c57370 | ||
|
|
0b5d68c0af | ||
|
|
bec3000690 | ||
|
|
bc1b720915 | ||
|
|
dab7d7ebc7 | ||
|
|
b4432895b5 | ||
|
|
7610e41dad | ||
|
|
b10c7c04c4 | ||
|
|
83f3d6ab09 | ||
|
|
ef41c51637 | ||
|
|
a2c89c0964 | ||
|
|
dc31d7c852 | ||
|
|
e02dd35b51 | ||
|
|
452c2836b2 | ||
|
|
2834081fac | ||
|
|
7f31896fd4 | ||
|
|
9cba6fcae9 | ||
|
|
26463fe491 | ||
|
|
0a3456758b | ||
|
|
ab3abb63db | ||
|
|
4504c11445 | ||
|
|
695d2ca304 | ||
|
|
7b37e95341 | ||
|
|
7227e7fb27 | ||
|
|
fdbbc12871 | ||
|
|
bad4fb5288 | ||
|
|
d9f114c019 | ||
|
|
5c93b03069 | ||
|
|
c7f763c966 | ||
|
|
c24b78462a | ||
|
|
3300a6847f | ||
|
|
347e0c0053 | ||
|
|
1d0ec96931 | ||
|
|
fdb8f6aced | ||
|
|
a30e338dc5 | ||
|
|
14608f44cf | ||
|
|
cbbaaecc0e | ||
|
|
7f53f98ec7 | ||
|
|
b4a91bda9f | ||
|
|
e5e057e538 | ||
|
|
362d0b78d3 | ||
|
|
bb94ded9f3 | ||
|
|
9ee01e94dc | ||
|
|
91ff0b8fec | ||
|
|
1f94b05317 | ||
|
|
648026d780 | ||
|
|
24f174de59 | ||
|
|
1cec539712 | ||
|
|
b6a8dec0e4 | ||
|
|
0e1c7ba929 | ||
|
|
f467a7e84b | ||
|
|
c5289aad2b | ||
|
|
4c3301b9cc | ||
|
|
e3d389a171 | ||
|
|
974d1e2d0b | ||
|
|
3522122e31 | ||
|
|
fb41ccd538 | ||
|
|
4bbbfc88de | ||
|
|
0c9eec9b52 | ||
|
|
5cad48ced5 | ||
|
|
8a3955dae6 | ||
|
|
59b993abe9 | ||
|
|
b0685726da | ||
|
|
0e41abd9e2 | ||
|
|
caab9d30bd | ||
|
|
e10e3f04b4 | ||
|
|
98180a91f9 | ||
|
|
0e2062cb4a | ||
|
|
7d792b6845 | ||
|
|
e65c1ad37f | ||
|
|
9c1188592a | ||
|
|
1faa76a804 | ||
|
|
f4283547f8 | ||
|
|
2833b89914 | ||
|
|
d284eac8fd | ||
|
|
6a71a7e9d5 | ||
|
|
cf2ee8e826 | ||
|
|
ef83a0481e | ||
|
|
758f2f4f4c | ||
|
|
e7089e8cf8 | ||
|
|
8e36358c04 | ||
|
|
496898500c | ||
|
|
fe1d2a3f70 | ||
|
|
dbed4dacf7 | ||
|
|
fd2a816d53 | ||
|
|
a7361c1a13 | ||
|
|
3180b3f3dd | ||
|
|
1a398b3eaf | ||
|
|
61557bbe09 | ||
|
|
1d229e42d1 | ||
|
|
d96d5b6c8b | ||
|
|
7bc7e96d96 | ||
|
|
edd1da8572 | ||
|
|
ffa8bc9438 | ||
|
|
c1e3a7e6b4 | ||
|
|
6ce2a0f9f9 | ||
|
|
ac92ae7a5f | ||
|
|
37462b1bcc | ||
|
|
fc7d9e1ebb | ||
|
|
b2faa1fc3c | ||
|
|
1b78ceb957 | ||
|
|
9a9660b2f9 | ||
|
|
5373835d17 | ||
|
|
7e5efcc23c | ||
|
|
a2274d1993 | ||
|
|
a59a243eda | ||
|
|
c0d3d939d7 | ||
|
|
b62ca34b72 | ||
|
|
5b0dd0f4df | ||
|
|
6ee79bc4ba | ||
|
|
72bb744064 | ||
|
|
0e18366fc5 | ||
|
|
45cd0378d5 | ||
|
|
24b0f14ca0 | ||
|
|
0843a608eb | ||
|
|
1cf9f7487f | ||
|
|
d2acfe0654 | ||
|
|
eab37feb45 | ||
|
|
f1a8fbf649 | ||
|
|
043491dea5 | ||
|
|
b817d1758c | ||
|
|
a0ac99a4d9 | ||
|
|
96d7b26406 | ||
|
|
c35755b8d6 | ||
|
|
e3007f0b31 | ||
|
|
2d4ddfeca9 | ||
|
|
164dcab88b | ||
|
|
5ea8b6446b | ||
|
|
ce6878eeb4 | ||
|
|
7ef42605c2 | ||
|
|
b736756a92 | ||
|
|
3820568da4 | ||
|
|
ce7e249ae4 | ||
|
|
8185bc313a | ||
|
|
bb22ca66a8 | ||
|
|
5b6db9d0bd | ||
|
|
edf9c3fbdb | ||
|
|
9b1a477b12 | ||
|
|
41c657a05a | ||
|
|
b9341fe4ce | ||
|
|
91fa216839 | ||
|
|
e4edeff4fa | ||
|
|
4dc87b52c2 | ||
|
|
71880dee16 | ||
|
|
5c9fa3a83d | ||
|
|
19fec34e0d | ||
|
|
50fb1a7870 | ||
|
|
69039d03b9 | ||
|
|
2fedc604cc | ||
|
|
aa3068c8e0 | ||
|
|
7f73ae3d72 | ||
|
|
94cb8195b7 | ||
|
|
5b4ddd3a58 | ||
|
|
dc5379c0c9 | ||
|
|
828141a41d | ||
|
|
d7d467e69e | ||
|
|
ff3ed8f402 | ||
|
|
caeb9138fc | ||
|
|
17894ff685 | ||
|
|
a39f656d95 | ||
|
|
f93c3a5b87 | ||
|
|
6ac62b0846 | ||
|
|
9f7b4b6091 | ||
|
|
28c06a9fb9 | ||
|
|
22333ab6e0 | ||
|
|
2404601c72 | ||
|
|
56cefd41e4 | ||
|
|
67dfe6f47a | ||
|
|
339c2a64ea | ||
|
|
3090a50f72 | ||
|
|
cdfbffc199 | ||
|
|
e81479ba2f | ||
|
|
eb091e9f80 | ||
|
|
a638ad6f0c | ||
|
|
cada0b681a | ||
|
|
6a4a1e25b1 | ||
|
|
d9801c57e1 | ||
|
|
10ee9c474c | ||
|
|
758b714783 | ||
|
|
5ed87b9881 | ||
|
|
37f0ac6fe3 | ||
|
|
315586244c | ||
|
|
598a1c9633 | ||
|
|
2ea8ab2bec | ||
|
|
b26e8bbd5b | ||
|
|
df5722ee73 | ||
|
|
7d39c44830 | ||
|
|
8ef7f55c4e | ||
|
|
b68861f48d | ||
|
|
1f60eae914 | ||
|
|
11827ed646 | ||
|
|
96c1155fa3 | ||
|
|
5e25d85bcf | ||
|
|
c13b80dd9c | ||
|
|
937c886b99 | ||
|
|
c1f064c0fe | ||
|
|
a2c48898b5 | ||
|
|
18be2cf89a | ||
|
|
6875bb5be7 | ||
|
|
8def09ffda | ||
|
|
7a5705b57a | ||
|
|
2a2f1d6d8b | ||
|
|
ce120b5902 | ||
|
|
cf4726e7c2 | ||
|
|
b0bb456eeb | ||
|
|
d88d40dd20 | ||
|
|
e124b48fb0 | ||
|
|
792430393c | ||
|
|
ccf437a7c2 | ||
|
|
ad3d734149 | ||
|
|
964f1b44a3 | ||
|
|
899e1a817e | ||
|
|
7df2afc560 | ||
|
|
8d402bbe88 | ||
|
|
696a6126b7 | ||
|
|
5e69fa5bc6 | ||
|
|
6f2d5058f8 | ||
|
|
5b4f0aa34b | ||
|
|
369e439a0f | ||
|
|
9b29109f2c | ||
|
|
5bf99e4fef | ||
|
|
eebdfffecb | ||
|
|
779bc0283e | ||
|
|
993440dd1b | ||
|
|
07e5589e1d | ||
|
|
3c97e05b0c | ||
|
|
20f25adb70 | ||
|
|
1b6e010c1a | ||
|
|
3a41223daf | ||
|
|
2fe0b745d5 | ||
|
|
e75f023662 | ||
|
|
d9afd22990 | ||
|
|
ff29c10051 | ||
|
|
0729f0abdb | ||
|
|
33139c8012 | ||
|
|
84161236ea | ||
|
|
7588f53379 | ||
|
|
1733fc8acd | ||
|
|
8c9e80188a | ||
|
|
de50e81376 | ||
|
|
70a1c04805 | ||
|
|
7217a506e7 | ||
|
|
cebeb1f81b | ||
|
|
dab3e71f99 | ||
|
|
38d79ac945 | ||
|
|
55495513b7 | ||
|
|
15b32829ca | ||
|
|
78f4ec5517 | ||
|
|
2496a8e8f1 | ||
|
|
46a9bad46b | ||
|
|
80d6d58306 | ||
|
|
2cdb10c472 | ||
|
|
eea85ed4cf | ||
|
|
c50f6e0a7e | ||
|
|
98335ab5a0 | ||
|
|
71b308c30a | ||
|
|
3b9dd052fa | ||
|
|
b32b3710e2 | ||
|
|
16e9b7d61c | ||
|
|
5d67f6499a | ||
|
|
d7ed897097 | ||
|
|
e9d6b996ee | ||
|
|
31fb49c0fb | ||
|
|
044bd7c1e7 | ||
|
|
c5f92fa2af | ||
|
|
6da1bd8b43 | ||
|
|
c3175aacea | ||
|
|
4971aa0ae0 | ||
|
|
4b67ea5cab | ||
|
|
3c07677ab3 | ||
|
|
db9da49bb3 | ||
|
|
4ab1c3d327 | ||
|
|
e4183675f1 | ||
|
|
e7ad33ce89 | ||
|
|
1f4f4f41d7 | ||
|
|
342c27d1dc | ||
|
|
5e3a844b1d | ||
|
|
990e5bdcfb | ||
|
|
9670091104 | ||
|
|
b12c895705 | ||
|
|
58490fe18c | ||
|
|
2a49d6fb16 | ||
|
|
4504b435c3 | ||
|
|
37b5fec090 | ||
|
|
977c042164 | ||
|
|
961ec5435d | ||
|
|
e5f76306df | ||
|
|
63d8a6ca86 | ||
|
|
94712defc8 | ||
|
|
c29ae78388 | ||
|
|
e7a7e5119e | ||
|
|
a623bb284e | ||
|
|
eefe8d9b5a | ||
|
|
89055740c8 | ||
|
|
02a5762d5f | ||
|
|
13a90524b8 | ||
|
|
211da4667f | ||
|
|
2db11b3cde | ||
|
|
a6885b5125 | ||
|
|
797a347977 | ||
|
|
7c81999b78 | ||
|
|
ae070b6802 | ||
|
|
876673322c | ||
|
|
f7c3ea6e08 | ||
|
|
07768edc28 | ||
|
|
43c3719cd7 | ||
|
|
96a53956eb | ||
|
|
093b5d5c97 | ||
|
|
5fc91dfe44 | ||
|
|
9cd21210f7 | ||
|
|
732779413e | ||
|
|
146dd4fd76 | ||
|
|
822709f4f6 | ||
|
|
8f1245d027 | ||
|
|
c956187004 | ||
|
|
9c9089879c | ||
|
|
11aec5b373 | ||
|
|
379d9233b1 | ||
|
|
e863583cae | ||
|
|
773e064e45 | ||
|
|
bea990b340 | ||
|
|
df1e4b833b | ||
|
|
9ac07e0e42 | ||
|
|
decb4b5591 | ||
|
|
850e08efd1 | ||
|
|
ea80fce0c1 | ||
|
|
d7522e937c | ||
|
|
f19e32e00b | ||
|
|
a54714fd0b | ||
|
|
4d65b4dcf2 | ||
|
|
5fb5af9fd2 | ||
|
|
473af90bdb | ||
|
|
84774e88ae | ||
|
|
724e24e1b3 | ||
|
|
0d51c7a4e2 | ||
|
|
170b0da912 | ||
|
|
55daf5a0d5 | ||
|
|
9bae730ec3 | ||
|
|
45cb5a9aef | ||
|
|
168d2eb7e0 | ||
|
|
81179481bc | ||
|
|
a0bbe45a51 | ||
|
|
af71023adc | ||
|
|
9520ab8296 | ||
|
|
fea0fdd547 | ||
|
|
72f5b495c0 | ||
|
|
f6c8c0ab33 | ||
|
|
ed8d1fad8a | ||
|
|
e3db0c0c57 | ||
|
|
45e892ff8c | ||
|
|
252d117fa7 | ||
|
|
c4c638f7d7 | ||
|
|
b57c5c8620 | ||
|
|
3d95cfa01e | ||
|
|
6794dc3c10 | ||
|
|
3f3d6f4ae9 | ||
|
|
71df119772 | ||
|
|
d96229ca17 | ||
|
|
dc6978a8dc | ||
|
|
e2c718cc0f | ||
|
|
1754717e5b | ||
|
|
7b96c314bd | ||
|
|
f19dab3f9c | ||
|
|
637d25b16d | ||
|
|
7226d7e6ce | ||
|
|
373dd13bb0 | ||
|
|
c59f163cd5 | ||
|
|
e90971b6bb | ||
|
|
73df984047 | ||
|
|
6d7669feea |
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
||||
* text=auto
|
||||
6
.gitignore
vendored
6
.gitignore
vendored
@@ -1,4 +1,2 @@
|
||||
.svn/
|
||||
publish/
|
||||
build/buildinfo.properties
|
||||
.DS_Store
|
||||
# Include your project-specific ignores in this file
|
||||
# Read about how to use .gitignore: https://help.github.com/articles/ignoring-files
|
||||
|
||||
721
.htaccess
721
.htaccess
@@ -1,220 +1,551 @@
|
||||
# Apache configuration file
|
||||
# httpd.apache.org/docs/2.2/mod/quickreference.html
|
||||
# Apache Server Configs v1.1.0 | MIT License
|
||||
# https://github.com/h5bp/server-configs-apache
|
||||
|
||||
# Techniques in here adapted from all over, including:
|
||||
# Kroc Camen: camendesign.com/.htaccess
|
||||
# perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/
|
||||
# (!) Using `.htaccess` files slows down Apache, therefore, if you have access
|
||||
# to the main server config file (usually called `httpd.conf`), you should add
|
||||
# this logic there: http://httpd.apache.org/docs/current/howto/htaccess.html.
|
||||
|
||||
# ##############################################################################
|
||||
# # CROSS-ORIGIN RESOURCE SHARING (CORS) #
|
||||
# ##############################################################################
|
||||
|
||||
# Force the latest IE version, in various cases when it may fall back to IE7 mode
|
||||
# github.com/rails/rails/commit/123eb25#commitcomment-118920
|
||||
# Use ChromeFrame if it's installed for a better experience for the poor IE folk
|
||||
<IfModule mod_setenvif.c>
|
||||
<IfModule mod_headers.c>
|
||||
BrowserMatch MSIE ie
|
||||
Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
|
||||
</IfModule>
|
||||
</IfModule>
|
||||
# ------------------------------------------------------------------------------
|
||||
# | Cross-domain AJAX requests |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
<IfModule mod_headers.c>
|
||||
# Because X-UA-Compatible isn't sent to non-IE (to save header bytes),
|
||||
# We need to inform proxies that content changes based on UA
|
||||
Header append Vary User-Agent
|
||||
# Cache control is set only if mod_headers is enabled, so that's unncessary to declare
|
||||
</IfModule>
|
||||
|
||||
# hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/
|
||||
# Disabled. Uncomment to serve cross-domain ajax requests
|
||||
#<IfModule mod_headers.c>
|
||||
# Header set Access-Control-Allow-Origin "*"
|
||||
#</IfModule>
|
||||
|
||||
|
||||
|
||||
|
||||
# allow access from all domains for webfonts
|
||||
# alternatively you could only whitelist
|
||||
# your subdomains like "sub.domain.com"
|
||||
|
||||
<FilesMatch "\.(ttf|otf|eot|woff|font.css)$">
|
||||
<IfModule mod_headers.c>
|
||||
Header set Access-Control-Allow-Origin "*"
|
||||
</IfModule>
|
||||
</FilesMatch>
|
||||
|
||||
|
||||
# video
|
||||
AddType video/ogg ogg ogv
|
||||
AddType video/mp4 mp4
|
||||
AddType video/webm webm
|
||||
|
||||
# Proper svg serving. Required for svg webfonts on iPad
|
||||
# twitter.com/FontSquirrel/status/14855840545
|
||||
AddType image/svg+xml svg svgz
|
||||
AddEncoding gzip svgz
|
||||
|
||||
# webfonts
|
||||
AddType application/vnd.ms-fontobject eot
|
||||
AddType font/truetype ttf
|
||||
AddType font/opentype otf
|
||||
AddType font/woff woff
|
||||
|
||||
# assorted types
|
||||
AddType image/vnd.microsoft.icon ico
|
||||
AddType image/webp webp
|
||||
AddType text/cache-manifest manifest
|
||||
AddType text/x-component htc
|
||||
AddType application/x-chrome-extension crx
|
||||
|
||||
|
||||
|
||||
|
||||
# allow concatenation from within specific js and css files
|
||||
|
||||
# e.g. Inside of script.combined.js you could have
|
||||
# <!--#include file="jquery-1.4.2.js" -->
|
||||
# <!--#include file="jquery.idletimer.js" -->
|
||||
# and they would be included into this single file
|
||||
|
||||
# this is not in use in the boilerplate as it stands. you may
|
||||
# choose to name your files in this way for this advantage
|
||||
# or concatenate and minify them manually.
|
||||
# Disabled by default.
|
||||
|
||||
# <FilesMatch "\.combined\.(js|css)$">
|
||||
# Options +Includes
|
||||
# SetOutputFilter INCLUDES
|
||||
# </FilesMatch>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# gzip compression.
|
||||
<IfModule mod_deflate.c>
|
||||
|
||||
# html, txt, css, js, json, xml, htc:
|
||||
AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
|
||||
AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript
|
||||
AddOutputFilterByType DEFLATE text/xml application/xml text/x-component
|
||||
|
||||
# webfonts and svg:
|
||||
<FilesMatch "\.(ttf|otf|eot|svg)$" >
|
||||
SetOutputFilter DEFLATE
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
|
||||
|
||||
|
||||
# these are pretty far-future expires headers
|
||||
# they assume you control versioning with cachebusting query params like
|
||||
# <script src="application.js?20100608">
|
||||
# additionally, consider that outdated proxies may miscache
|
||||
# www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/
|
||||
|
||||
# if you don't use filenames to version, lower the css and js to something like
|
||||
# "access plus 1 week" or so
|
||||
|
||||
<IfModule mod_expires.c>
|
||||
Header set Cache-Control "public"
|
||||
ExpiresActive on
|
||||
|
||||
# Perhaps better to whitelist expires rules? Perhaps.
|
||||
ExpiresDefault "access plus 1 month"
|
||||
|
||||
# cache.manifest needs re-requests in FF 3.6 (thx Remy ~Introducing HTML5)
|
||||
ExpiresByType text/cache-manifest "access plus 0 seconds"
|
||||
|
||||
# your document html
|
||||
ExpiresByType text/html "access plus 0 seconds"
|
||||
|
||||
# data
|
||||
ExpiresByType text/xml "access plus 0 seconds"
|
||||
ExpiresByType application/xml "access plus 0 seconds"
|
||||
ExpiresByType application/json "access plus 0 seconds"
|
||||
|
||||
|
||||
# rss feed
|
||||
ExpiresByType application/rss+xml "access plus 1 hour"
|
||||
|
||||
# favicon (cannot be renamed)
|
||||
ExpiresByType image/vnd.microsoft.icon "access plus 1 week"
|
||||
|
||||
# media: images, video, audio
|
||||
ExpiresByType image/gif "access plus 1 month"
|
||||
ExpiresByType image/png "access plus 1 month"
|
||||
ExpiresByType image/jpg "access plus 1 month"
|
||||
ExpiresByType image/jpeg "access plus 1 month"
|
||||
ExpiresByType video/ogg "access plus 1 month"
|
||||
ExpiresByType audio/ogg "access plus 1 month"
|
||||
ExpiresByType video/mp4 "access plus 1 month"
|
||||
ExpiresByType video/webm "access plus 1 month"
|
||||
|
||||
# webfonts
|
||||
ExpiresByType font/truetype "access plus 1 month"
|
||||
ExpiresByType font/opentype "access plus 1 month"
|
||||
ExpiresByType font/woff "access plus 1 month"
|
||||
ExpiresByType image/svg+xml "access plus 1 month"
|
||||
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
|
||||
|
||||
# css and javascript
|
||||
ExpiresByType text/css "access plus 1 month"
|
||||
ExpiresByType application/javascript "access plus 1 month"
|
||||
ExpiresByType text/javascript "access plus 1 month"
|
||||
</IfModule>
|
||||
|
||||
|
||||
|
||||
|
||||
# Since we're sending far-future expires, we don't need ETags for
|
||||
# static content.
|
||||
# developer.yahoo.com/performance/rules.html#etags
|
||||
FileETag None
|
||||
|
||||
|
||||
|
||||
|
||||
# Allow cookies to be set from iframes (for IE only)
|
||||
# If needed, uncomment and specify a path or regex in the Location directive
|
||||
# Enable cross-origin AJAX requests.
|
||||
# http://code.google.com/p/html5security/wiki/CrossOriginRequestSecurity
|
||||
# http://enable-cors.org/
|
||||
|
||||
# <IfModule mod_headers.c>
|
||||
# <Location />
|
||||
# Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""
|
||||
# </Location>
|
||||
# Header set Access-Control-Allow-Origin "*"
|
||||
# </IfModule>
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# | CORS-enabled images |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# you probably want www.example.com to forward to example.com -- shorter URLs are sexier.
|
||||
# no-www.org/faq.php?q=class_b
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
RewriteCond %{HTTPS} !=on
|
||||
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
|
||||
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
|
||||
# Send the CORS header for images when browsers request it.
|
||||
# https://developer.mozilla.org/en/CORS_Enabled_Image
|
||||
# http://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html
|
||||
# http://hacks.mozilla.org/2011/11/using-cors-to-load-webgl-textures-from-cross-domain-images/
|
||||
|
||||
<IfModule mod_setenvif.c>
|
||||
<IfModule mod_headers.c>
|
||||
<FilesMatch "\.(gif|ico|jpe?g|png|svgz?|webp)$">
|
||||
SetEnvIf Origin ":" IS_CORS
|
||||
Header set Access-Control-Allow-Origin "*" env=IS_CORS
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
</IfModule>
|
||||
|
||||
# without -MultiViews, Apache will give a 404 for a rewrite if a folder of the same name does not exist
|
||||
# e.g. /blog/hello : webmasterworld.com/apache/3808792.htm
|
||||
Options -MultiViews
|
||||
# -Indexes will have Apache block users from browsing folders without a default document
|
||||
# Options -Indexes
|
||||
# ------------------------------------------------------------------------------
|
||||
# | Web fonts access |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Allow access from all domains for web fonts
|
||||
|
||||
<IfModule mod_headers.c>
|
||||
<FilesMatch "\.(eot|font.css|otf|ttc|ttf|woff)$">
|
||||
Header set Access-Control-Allow-Origin "*"
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
|
||||
|
||||
# ##############################################################################
|
||||
# # ERRORS #
|
||||
# ##############################################################################
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# | 404 error prevention for non-existing redirected folders |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Prevent Apache from returning a 404 error for a rewrite if a directory
|
||||
# with the same name does not exist.
|
||||
# http://httpd.apache.org/docs/current/content-negotiation.html#multiviews
|
||||
# http://www.webmasterworld.com/apache/3808792.htm
|
||||
|
||||
Options -MultiViews
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# | Custom error messages / pages |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# You can customize what Apache returns to the client in case of an error (see
|
||||
# http://httpd.apache.org/docs/current/mod/core.html#errordocument), e.g.:
|
||||
|
||||
# custom 404 page
|
||||
ErrorDocument 404 /404.html
|
||||
|
||||
|
||||
# ##############################################################################
|
||||
# # INTERNET EXPLORER #
|
||||
# ##############################################################################
|
||||
|
||||
# use utf-8 encoding for anything served text/plain or text/html
|
||||
# ------------------------------------------------------------------------------
|
||||
# | Better website experience |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Force IE to render pages in the highest available mode in the various
|
||||
# cases when it may not: http://hsivonen.iki.fi/doctype/ie-mode.pdf.
|
||||
|
||||
<IfModule mod_headers.c>
|
||||
Header set X-UA-Compatible "IE=edge"
|
||||
# `mod_headers` can't match based on the content-type, however, we only
|
||||
# want to send this header for HTML pages and not for the other resources
|
||||
<FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svgz?|ttf|vcf|webapp|webm|webp|woff|xml|xpi)$">
|
||||
Header unset X-UA-Compatible
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# | Cookie setting from iframes |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Allow cookies to be set from iframes in IE.
|
||||
|
||||
# <IfModule mod_headers.c>
|
||||
# Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""
|
||||
# </IfModule>
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# | Screen flicker |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Stop screen flicker in IE on CSS rollovers (this only works in
|
||||
# combination with the `ExpiresByType` directives for images from below).
|
||||
|
||||
# BrowserMatch "MSIE" brokenvary=1
|
||||
# BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1
|
||||
# BrowserMatch "Opera" !brokenvary
|
||||
# SetEnvIf brokenvary 1 force-no-vary
|
||||
|
||||
|
||||
# ##############################################################################
|
||||
# # MIME TYPES AND ENCODING #
|
||||
# ##############################################################################
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# | Proper MIME types for all files |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
<IfModule mod_mime.c>
|
||||
|
||||
# Audio
|
||||
AddType audio/mp4 m4a f4a f4b
|
||||
AddType audio/ogg oga ogg
|
||||
|
||||
# JavaScript
|
||||
# Normalize to standard type (it's sniffed in IE anyways):
|
||||
# http://tools.ietf.org/html/rfc4329#section-7.2
|
||||
AddType application/javascript js
|
||||
AddType application/json json
|
||||
|
||||
# Video
|
||||
AddType video/mp4 mp4 m4v f4v f4p
|
||||
AddType video/ogg ogv
|
||||
AddType video/webm webm
|
||||
AddType video/x-flv flv
|
||||
|
||||
# Web fonts
|
||||
AddType application/font-woff woff
|
||||
AddType application/vnd.ms-fontobject eot
|
||||
|
||||
# Browsers usually ignore the font MIME types and sniff the content,
|
||||
# however, Chrome shows a warning if other MIME types are used for the
|
||||
# following fonts.
|
||||
AddType application/x-font-ttf ttc ttf
|
||||
AddType font/opentype otf
|
||||
|
||||
# Make SVGZ fonts work on iPad:
|
||||
# https://twitter.com/FontSquirrel/status/14855840545
|
||||
AddType image/svg+xml svg svgz
|
||||
AddEncoding gzip svgz
|
||||
|
||||
# Other
|
||||
AddType application/octet-stream safariextz
|
||||
AddType application/x-chrome-extension crx
|
||||
AddType application/x-opera-extension oex
|
||||
AddType application/x-shockwave-flash swf
|
||||
AddType application/x-web-app-manifest+json webapp
|
||||
AddType application/x-xpinstall xpi
|
||||
AddType application/xml atom rdf rss xml
|
||||
AddType image/webp webp
|
||||
AddType image/x-icon ico
|
||||
AddType text/cache-manifest appcache manifest
|
||||
AddType text/vtt vtt
|
||||
AddType text/x-component htc
|
||||
AddType text/x-vcard vcf
|
||||
|
||||
</IfModule>
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# | UTF-8 encoding |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Use UTF-8 encoding for anything served as `text/html` or `text/plain`.
|
||||
AddDefaultCharset utf-8
|
||||
# force utf-8 for a number of file formats
|
||||
AddCharset utf-8 .html .css .js .xml .json .rss
|
||||
|
||||
# Force UTF-8 for certain file formats.
|
||||
<IfModule mod_mime.c>
|
||||
AddCharset utf-8 .atom .css .js .json .rss .vtt .webapp .xml
|
||||
</IfModule>
|
||||
|
||||
|
||||
# ##############################################################################
|
||||
# # URL REWRITES #
|
||||
# ##############################################################################
|
||||
|
||||
# We don't need to tell everyone we're apache.
|
||||
ServerSignature Off
|
||||
# ------------------------------------------------------------------------------
|
||||
# | Rewrite engine |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Turning on the rewrite engine and enabling the `FollowSymLinks` option is
|
||||
# necessary for the following directives to work.
|
||||
|
||||
# If your web host doesn't allow the `FollowSymlinks` option, you may need to
|
||||
# comment it out and use `Options +SymLinksIfOwnerMatch` but, be aware of the
|
||||
# performance impact: http://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks
|
||||
|
||||
# Also, some cloud hosting services require `RewriteBase` to be set:
|
||||
# http://www.rackspace.com/knowledge_center/frequently-asked-question/why-is-mod-rewrite-not-working-on-my-site
|
||||
|
||||
<IfModule mod_rewrite.c>
|
||||
Options +FollowSymlinks
|
||||
# Options +SymLinksIfOwnerMatch
|
||||
RewriteEngine On
|
||||
# RewriteBase /
|
||||
</IfModule>
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# | Suppressing / Forcing the "www." at the beginning of URLs |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# The same content should never be available under two different URLs especially
|
||||
# not with and without "www." at the beginning. This can cause SEO problems
|
||||
# (duplicate content), therefore, you should choose one of the alternatives and
|
||||
# redirect the other one.
|
||||
|
||||
# By default option 1 (no "www.") is activated:
|
||||
# http://no-www.org/faq.php?q=class_b
|
||||
|
||||
# If you'd prefer to use option 2, just comment out all the lines from option 1
|
||||
# and uncomment the ones from option 2.
|
||||
|
||||
# IMPORTANT: NEVER USE BOTH RULES AT THE SAME TIME!
|
||||
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
||||
# Option 1: rewrite www.example.com → example.com
|
||||
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteCond %{HTTPS} !=on
|
||||
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
|
||||
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
|
||||
</IfModule>
|
||||
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
||||
# Option 2: rewrite example.com → www.example.com
|
||||
|
||||
# Be aware that the following might not be a good idea if you use "real"
|
||||
# subdomains for certain parts of your website.
|
||||
|
||||
# <IfModule mod_rewrite.c>
|
||||
# RewriteCond %{HTTPS} !=on
|
||||
# RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
|
||||
# RewriteCond %{HTTP_HOST} !=localhost [NC]
|
||||
# RewriteCond %{HTTP_HOST} !=127.0.0.1
|
||||
# RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
|
||||
# </IfModule>
|
||||
|
||||
|
||||
# ##############################################################################
|
||||
# # SECURITY #
|
||||
# ##############################################################################
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# | Content Security Policy (CSP) |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# You can mitigate the risk of cross-site scripting and other content-injection
|
||||
# attacks by setting a Content Security Policy which whitelists trusted sources
|
||||
# of content for your site.
|
||||
|
||||
# The example header below allows ONLY scripts that are loaded from the current
|
||||
# site's origin (no inline scripts, no CDN, etc). This almost certainly won't
|
||||
# work as-is for your site!
|
||||
|
||||
# To get all the details you'll need to craft a reasonable policy for your site,
|
||||
# read: http://html5rocks.com/en/tutorials/security/content-security-policy (or
|
||||
# see the specification: http://w3.org/TR/CSP).
|
||||
|
||||
# <IfModule mod_headers.c>
|
||||
# Header set Content-Security-Policy "script-src 'self'; object-src 'self'"
|
||||
# <FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svgz?|ttf|vcf|webapp|webm|webp|woff|xml|xpi)$">
|
||||
# Header unset Content-Security-Policy
|
||||
# </FilesMatch>
|
||||
# </IfModule>
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# | File access |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Block access to directories without a default document.
|
||||
# Usually you should leave this uncommented because you shouldn't allow anyone
|
||||
# to surf through every directory on your server (which may includes rather
|
||||
# private places like the CMS's directories).
|
||||
|
||||
<IfModule mod_autoindex.c>
|
||||
Options -Indexes
|
||||
</IfModule>
|
||||
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
||||
# Block access to hidden files and directories.
|
||||
# This includes directories used by version control systems such as Git and SVN.
|
||||
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteCond %{SCRIPT_FILENAME} -d [OR]
|
||||
RewriteCond %{SCRIPT_FILENAME} -f
|
||||
RewriteRule "(^|/)\." - [F]
|
||||
</IfModule>
|
||||
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
||||
# Block access to backup and source files.
|
||||
# These files may be left by some text editors and can pose a great security
|
||||
# danger when anyone has access to them.
|
||||
|
||||
<FilesMatch "(^#.*#|\.(bak|config|dist|fla|inc|ini|log|psd|sh|sql|sw[op])|~)$">
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
Satisfy All
|
||||
</FilesMatch>
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# | Secure Sockets Layer (SSL) |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Rewrite secure requests properly to prevent SSL certificate warnings, e.g.:
|
||||
# prevent `https://www.example.com` when your certificate only allows
|
||||
# `https://secure.example.com`.
|
||||
|
||||
# <IfModule mod_rewrite.c>
|
||||
# RewriteCond %{SERVER_PORT} !^443
|
||||
# RewriteRule ^ https://example-domain-please-change-me.com%{REQUEST_URI} [R=301,L]
|
||||
# </IfModule>
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# | HTTP Strict Transport Security (HSTS) |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Force client-side SSL redirection.
|
||||
|
||||
# If a user types "example.com" in his browser, the above rule will redirect
|
||||
# him to the secure version of the site. That still leaves a window of oppor-
|
||||
# tunity (the initial HTTP connection) for an attacker to downgrade or redirect
|
||||
# the request. The following header ensures that browser will ONLY connect to
|
||||
# your server via HTTPS, regardless of what the users type in the address bar.
|
||||
# http://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14#section-6.1
|
||||
# http://www.html5rocks.com/en/tutorials/security/transport-layer-security/
|
||||
|
||||
# (!) Remove the `includeSubDomains` optional directive if the subdomains are
|
||||
# not using HTTPS.
|
||||
|
||||
# <IfModule mod_headers.c>
|
||||
# Header set Strict-Transport-Security "max-age=16070400; includeSubDomains"
|
||||
# </IfModule>
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# | Server software information |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Avoid displaying the exact Apache version number, the description of the
|
||||
# generic OS-type and the information about Apache's compiled-in modules.
|
||||
|
||||
# ADD THIS DIRECTIVE IN THE `httpd.conf` AS IT WILL NOT WORK IN THE `.htaccess`!
|
||||
|
||||
# ServerTokens Prod
|
||||
|
||||
|
||||
# ##############################################################################
|
||||
# # WEB PERFORMANCE #
|
||||
# ##############################################################################
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# | Compression |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
<IfModule mod_deflate.c>
|
||||
|
||||
# Force compression for mangled headers.
|
||||
# http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping
|
||||
<IfModule mod_setenvif.c>
|
||||
<IfModule mod_headers.c>
|
||||
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
|
||||
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
|
||||
</IfModule>
|
||||
</IfModule>
|
||||
|
||||
# Compress all output labeled with one of the following MIME-types
|
||||
# (for Apache versions below 2.3.7, you don't need to enable `mod_filter`
|
||||
# and can remove the `<IfModule mod_filter.c>` and `</IfModule>` lines
|
||||
# as `AddOutputFilterByType` is still in the core directives).
|
||||
<IfModule mod_filter.c>
|
||||
AddOutputFilterByType DEFLATE application/atom+xml \
|
||||
application/javascript \
|
||||
application/json \
|
||||
application/rss+xml \
|
||||
application/vnd.ms-fontobject \
|
||||
application/x-font-ttf \
|
||||
application/x-web-app-manifest+json \
|
||||
application/xhtml+xml \
|
||||
application/xml \
|
||||
font/opentype \
|
||||
image/svg+xml \
|
||||
image/x-icon \
|
||||
text/css \
|
||||
text/html \
|
||||
text/plain \
|
||||
text/x-component \
|
||||
text/xml
|
||||
</IfModule>
|
||||
|
||||
</IfModule>
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# | Content transformations |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Prevent some of the mobile network providers from modifying the content of
|
||||
# your site: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.5.
|
||||
|
||||
# <IfModule mod_headers.c>
|
||||
# Header set Cache-Control "no-transform"
|
||||
# </IfModule>
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# | ETag removal |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Since we're sending far-future expires headers (see below), ETags can
|
||||
# be removed: http://developer.yahoo.com/performance/rules.html#etags.
|
||||
|
||||
# `FileETag None` is not enough for every server.
|
||||
<IfModule mod_headers.c>
|
||||
Header unset ETag
|
||||
</IfModule>
|
||||
|
||||
FileETag None
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# | Expires headers (for better cache control) |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# The following expires headers are set pretty far in the future. If you don't
|
||||
# control versioning with filename-based cache busting, consider lowering the
|
||||
# cache time for resources like CSS and JS to something like 1 week.
|
||||
|
||||
<IfModule mod_expires.c>
|
||||
|
||||
ExpiresActive on
|
||||
ExpiresDefault "access plus 1 month"
|
||||
|
||||
# CSS
|
||||
ExpiresByType text/css "access plus 1 year"
|
||||
|
||||
# Data interchange
|
||||
ExpiresByType application/json "access plus 0 seconds"
|
||||
ExpiresByType application/xml "access plus 0 seconds"
|
||||
ExpiresByType text/xml "access plus 0 seconds"
|
||||
|
||||
# Favicon (cannot be renamed!)
|
||||
ExpiresByType image/x-icon "access plus 1 week"
|
||||
|
||||
# HTML components (HTCs)
|
||||
ExpiresByType text/x-component "access plus 1 month"
|
||||
|
||||
# HTML
|
||||
ExpiresByType text/html "access plus 0 seconds"
|
||||
|
||||
# JavaScript
|
||||
ExpiresByType application/javascript "access plus 1 year"
|
||||
|
||||
# Manifest files
|
||||
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
|
||||
ExpiresByType text/cache-manifest "access plus 0 seconds"
|
||||
|
||||
# Media
|
||||
ExpiresByType audio/ogg "access plus 1 month"
|
||||
ExpiresByType image/gif "access plus 1 month"
|
||||
ExpiresByType image/jpeg "access plus 1 month"
|
||||
ExpiresByType image/png "access plus 1 month"
|
||||
ExpiresByType video/mp4 "access plus 1 month"
|
||||
ExpiresByType video/ogg "access plus 1 month"
|
||||
ExpiresByType video/webm "access plus 1 month"
|
||||
|
||||
# Web feeds
|
||||
ExpiresByType application/atom+xml "access plus 1 hour"
|
||||
ExpiresByType application/rss+xml "access plus 1 hour"
|
||||
|
||||
# Web fonts
|
||||
ExpiresByType application/font-woff "access plus 1 month"
|
||||
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
|
||||
ExpiresByType application/x-font-ttf "access plus 1 month"
|
||||
ExpiresByType font/opentype "access plus 1 month"
|
||||
ExpiresByType image/svg+xml "access plus 1 month"
|
||||
|
||||
</IfModule>
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# | Filename-based cache busting |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# If you're not using a build process to manage your filename version revving,
|
||||
# you might want to consider enabling the following directives to route all
|
||||
# requests such as `/css/style.12345.css` to `/css/style.css`.
|
||||
|
||||
# To understand why this is important and a better idea than `*.css?v231`, read:
|
||||
# http://stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring
|
||||
|
||||
# <IfModule mod_rewrite.c>
|
||||
# RewriteCond %{REQUEST_FILENAME} !-f
|
||||
# RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ $1.$3 [L]
|
||||
# </IfModule>
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# | File concatenation |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Allow concatenation from within specific CSS and JS files, e.g.:
|
||||
# Inside of `script.combined.js` you could have
|
||||
# <!--#include file="libs/jquery.js" -->
|
||||
# <!--#include file="plugins/jquery.idletimer.js" -->
|
||||
# and they would be included into this single file.
|
||||
|
||||
# <IfModule mod_include.c>
|
||||
# <FilesMatch "\.combined\.js$">
|
||||
# Options +Includes
|
||||
# AddOutputFilterByType INCLUDES application/javascript application/json
|
||||
# SetOutputFilter INCLUDES
|
||||
# </FilesMatch>
|
||||
# <FilesMatch "\.combined\.css$">
|
||||
# Options +Includes
|
||||
# AddOutputFilterByType INCLUDES text/css
|
||||
# SetOutputFilter INCLUDES
|
||||
# </FilesMatch>
|
||||
# </IfModule>
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# | Persistent connections |
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Allow multiple requests to be sent over the same TCP connection:
|
||||
# http://httpd.apache.org/docs/current/en/mod/core.html#keepalive.
|
||||
|
||||
# Enable if you serve a lot of static content but, be aware of the
|
||||
# possible disadvantages!
|
||||
|
||||
# <IfModule mod_headers.c>
|
||||
# Header set Connection Keep-Alive
|
||||
# </IfModule>
|
||||
|
||||
169
404.html
169
404.html
@@ -1,22 +1,157 @@
|
||||
<!doctype html>
|
||||
<title>not found</title>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Page Not Found :(</title>
|
||||
<style>
|
||||
::-moz-selection {
|
||||
background: #b3d4fc;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
<style>
|
||||
body { text-align: center;}
|
||||
h1 { font-size: 50px; }
|
||||
body { font: 20px Constantia, 'Hoefler Text', "Adobe Caslon Pro", Baskerville, Georgia, Times, serif; color: #999; text-shadow: 2px 2px 2px rgba(200, 200, 200, 0.5); }
|
||||
::-moz-selection{ background:#FF5E99; color:#fff; }
|
||||
::selection { background:#FF5E99; color:#fff; }
|
||||
details { display:block; }
|
||||
a { color: rgb(36, 109, 56); text-decoration:none; }
|
||||
a:hover { color: rgb(96, 73, 141) ; text-shadow: 2px 2px 2px rgba(36, 109, 56, 0.5); }
|
||||
span[frown] { transform: rotate(90deg); display:inline-block; color: #bbb; }
|
||||
</style>
|
||||
::selection {
|
||||
background: #b3d4fc;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
html {
|
||||
padding: 30px 10px;
|
||||
font-size: 20px;
|
||||
line-height: 1.4;
|
||||
color: #737373;
|
||||
background: #f0f0f0;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
}
|
||||
|
||||
html,
|
||||
input {
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
}
|
||||
|
||||
body {
|
||||
max-width: 500px;
|
||||
_width: 500px;
|
||||
padding: 30px 20px 50px;
|
||||
border: 1px solid #b3b3b3;
|
||||
border-radius: 4px;
|
||||
margin: 0 auto;
|
||||
box-shadow: 0 1px 10px #a7a7a7, inset 0 1px 0 #fff;
|
||||
background: #fcfcfc;
|
||||
}
|
||||
|
||||
<details>
|
||||
<summary><h1>Not found</h1></summary>
|
||||
<p><span frown>:(</span></p>
|
||||
</details>
|
||||
h1 {
|
||||
margin: 0 10px;
|
||||
font-size: 50px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h1 span {
|
||||
color: #bbb;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin: 1.5em 0 0.5em;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
ul {
|
||||
padding: 0 0 0 40px;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 380px;
|
||||
_width: 380px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
/* google search */
|
||||
|
||||
#goog-fixurl ul {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#goog-fixurl form {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#goog-wm-qt,
|
||||
#goog-wm-sb {
|
||||
border: 1px solid #bbb;
|
||||
font-size: 16px;
|
||||
line-height: normal;
|
||||
vertical-align: top;
|
||||
color: #444;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
#goog-wm-qt {
|
||||
width: 220px;
|
||||
height: 20px;
|
||||
padding: 5px;
|
||||
margin: 5px 10px 0 0;
|
||||
box-shadow: inset 0 1px 1px #ccc;
|
||||
}
|
||||
|
||||
#goog-wm-sb {
|
||||
display: inline-block;
|
||||
height: 32px;
|
||||
padding: 0 10px;
|
||||
margin: 5px 0 0;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
background-color: #f5f5f5;
|
||||
background-image: -webkit-linear-gradient(rgba(255,255,255,0), #f1f1f1);
|
||||
background-image: -moz-linear-gradient(rgba(255,255,255,0), #f1f1f1);
|
||||
background-image: -ms-linear-gradient(rgba(255,255,255,0), #f1f1f1);
|
||||
background-image: -o-linear-gradient(rgba(255,255,255,0), #f1f1f1);
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
*overflow: visible;
|
||||
*display: inline;
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
#goog-wm-sb:hover,
|
||||
#goog-wm-sb:focus {
|
||||
border-color: #aaa;
|
||||
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
|
||||
background-color: #f8f8f8;
|
||||
}
|
||||
|
||||
#goog-wm-qt:hover,
|
||||
#goog-wm-qt:focus {
|
||||
border-color: #105cb6;
|
||||
outline: 0;
|
||||
color: #222;
|
||||
}
|
||||
|
||||
input::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>Not found <span>:(</span></h1>
|
||||
<p>Sorry, but the page you were trying to view does not exist.</p>
|
||||
<p>It looks like this was the result of either:</p>
|
||||
<ul>
|
||||
<li>a mistyped address</li>
|
||||
<li>an out-of-date link</li>
|
||||
</ul>
|
||||
<script>
|
||||
var GOOG_FIXURL_LANG = (navigator.language || '').slice(0,2),GOOG_FIXURL_SITE = location.host;
|
||||
</script>
|
||||
<script src="//linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
133
CHANGELOG.md
Normal file
133
CHANGELOG.md
Normal file
@@ -0,0 +1,133 @@
|
||||
### HEAD
|
||||
|
||||
### 4.3.0 (September 10, 2013)
|
||||
|
||||
* Use one apple-touch-icon instead of six ([#1367](https://github.com/h5bp/html5-boilerplate/issues/1367)).
|
||||
* Move font-related declarations from `body` to `html` ([#1411](https://github.com/h5bp/html5-boilerplate/issues/1411)).
|
||||
* Update to Apache Server Configs 1.1.0.
|
||||
* Add `initial-scale=1` to the viewport `meta` ([#1398](https://github.com/h5bp/html5-boilerplate/pull/1398)).
|
||||
* Vertical centering for audio-, canvas- and video-tags ([#1326](https://github.com/h5bp/html5-boilerplate/issues/1326)).
|
||||
* Remove Google Chrome Frame related code ([#1379](https://github.com/h5bp/html5-boilerplate/pull/1379), [#1396](https://github.com/h5bp/html5-boilerplate/pull/1396)).
|
||||
* Update to Google Universal Analytics ([#1347](https://github.com/h5bp/html5-boilerplate/issues/1347)).
|
||||
* Update to jQuery 1.10.2.
|
||||
* Update to Normalize.css 1.1.3.
|
||||
|
||||
### 4.2.0 (April 8, 2013)
|
||||
|
||||
* Remove Google Analytics protocol check ([#1319](https://github.com/h5bp/html5-boilerplate/pull/1319)).
|
||||
* Update to Normalize.css 1.1.1.
|
||||
* Update Apache configurations to include the latest changes in the canonical
|
||||
[`.htaccess`](https://github.com/h5bp/server-configs-apache) file.
|
||||
* Use a protocol relative URL for the 404 template script.
|
||||
* Update to jQuery 1.9.1.
|
||||
|
||||
### 4.1.0 (January 21, 2013)
|
||||
|
||||
* Update to Normalize.css 1.1.0.
|
||||
* Update to jQuery 1.9.0.
|
||||
|
||||
### 4.0.3 (January 12, 2013)
|
||||
|
||||
* Use 32x32 favicon.ico ([#1286](https://github.com/h5bp/html5-boilerplate/pull/1286)).
|
||||
* Remove named function expression in plugins.js ([#1280](https://github.com/h5bp/html5-boilerplate/pull/1280)).
|
||||
* Adjust CSS image-replacement code ([#1239](https://github.com/h5bp/html5-boilerplate/issues/1239)).
|
||||
* Update HiDPI example media query ([#1127](https://github.com/h5bp/html5-boilerplate/issues/1127)).
|
||||
|
||||
### 4.0.2 (December 9, 2012)
|
||||
|
||||
* Update placeholder icons.
|
||||
* Update to Normalize.css 1.0.2.
|
||||
* Update to jQuery 1.8.3.
|
||||
|
||||
### 4.0.1 (October 20, 2012)
|
||||
|
||||
* Further improvements to `console` method stubbing ([#1206](https://github.com/h5bp/html5-boilerplate/issues/1206), [#1229](https://github.com/h5bp/html5-boilerplate/pull/1229)).
|
||||
* Update to jQuery 1.8.2.
|
||||
* Update to Modernizr 2.6.2.
|
||||
* Minor additions to the documentation.
|
||||
|
||||
### 4.0.0 (August 28, 2012)
|
||||
|
||||
* Improve the Apache compression configuration ([#1012](https://github.com/h5bp/html5-boilerplate/issues/1012), [#1173](https://github.com/h5bp/html5-boilerplate/issues/1173)).
|
||||
* Add a HiDPI example media query ([#1127](https://github.com/h5bp/html5-boilerplate/issues/1127)).
|
||||
* Add bundled docs ([#1154](https://github.com/h5bp/html5-boilerplate/issues/1154)).
|
||||
* Add MIT license ([#1139](https://github.com/h5bp/html5-boilerplate/issues/1139)).
|
||||
* Update to Normalize.css 1.0.1.
|
||||
* Separate Normalize.css from the rest of the CSS ([#1160](https://github.com/h5bp/html5-boilerplate/issues/1160)).
|
||||
* Improve `console.log` protection ([#1107](https://github.com/h5bp/html5-boilerplate/issues/1107)).
|
||||
* Replace hot pink text selection color with a neutral color.
|
||||
* Change image replacement technique ([#1149](https://github.com/h5bp/html5-boilerplate/issues/1149)).
|
||||
* Code format and consistency changes ([#1112](https://github.com/h5bp/html5-boilerplate/issues/1112)).
|
||||
* Rename CSS file and rename JS files and subdirectories.
|
||||
* Update to jQuery 1.8 ([#1161](https://github.com/h5bp/html5-boilerplate/issues/1161)).
|
||||
* Update to Modernizr 2.6.1 ([#1086](https://github.com/h5bp/html5-boilerplate/issues/1086)).
|
||||
* Remove uncompressed jQuery ([#1153](https://github.com/h5bp/html5-boilerplate/issues/1153)).
|
||||
* Remove superfluous inline comments ([#1150](https://github.com/h5bp/html5-boilerplate/issues/1150)).
|
||||
|
||||
### 3.0.2 (February 19, 2012)
|
||||
|
||||
* Update to Modernizr 2.5.3.
|
||||
|
||||
### 3.0.1 (February 08, 2012).
|
||||
|
||||
* Update to Modernizr 2.5.2 (includes html5shiv 3.3).
|
||||
|
||||
### 3.0.0 (February 06, 2012)
|
||||
|
||||
* Improvements to `.htaccess`.
|
||||
* Improve 404 design.
|
||||
* Simplify JS folder structure.
|
||||
* Change `html` IE class names changed to target ranges rather than specific versions of IE.
|
||||
* Update CSS to include latest normalize.css changes and better typographic defaults ([#825](https://github.com/h5bp/html5-boilerplate/issues/825)).
|
||||
* Update to Modernizr 2.5 (includes yepnope 1.5 and html5shiv 3.2).
|
||||
* Update to jQuery 1.7.1.
|
||||
* Revert to async snippet for the Google Analytics script.
|
||||
* Remove the ant build script ([#826](https://github.com/h5bp/html5-boilerplate/issues/826)).
|
||||
* Remove Respond.js ([#816](https://github.com/h5bp/html5-boilerplate/issues/816)).
|
||||
* Remove the `demo/` directory ([#808](https://github.com/h5bp/html5-boilerplate/issues/808)).
|
||||
* Remove the `test/` directory ([#808](https://github.com/h5bp/html5-boilerplate/issues/808)).
|
||||
* Remove Google Chrome Frame script for IE6 users; replace with links to Chrome Frame and options for alternative browsers.
|
||||
* Remove `initial-scale=1` from the viewport `meta` ([#824](https://github.com/h5bp/html5-boilerplate/issues/824)).
|
||||
* Remove `defer` from all scripts to avoid legacy IE bugs.
|
||||
* Remove explicit Site Speed tracking for Google Analytics. It's now enabled by default.
|
||||
|
||||
### 2.0.0 (August 10, 2011)
|
||||
|
||||
* Change starting CSS to be based on normalize.css instead of reset.css ([#500](https://github.com/h5bp/html5-boilerplate/issues/500)).
|
||||
* Add Respond.js media query polyfill.
|
||||
* Add Google Chrome Frame script prompt for IE6 users.
|
||||
* Simplify the `html` conditional comments for modern browsers and add an `oldie` class.
|
||||
* Update clearfix to use "micro clearfix".
|
||||
* Add placeholder CSS MQs for mobile-first approach.
|
||||
* Add `textarea { resize: vertical; }` to only allow vertical resizing.
|
||||
* Add `img { max-width: 100%; }` to the print styles; prevents images being truncated.
|
||||
* Add Site Speed tracking for Google Analytics.
|
||||
* Update to jQuery 1.6.2 (and use minified by default).
|
||||
* Update to Modernizr 2.0 Complete, Production minified (includes yepnope, html5shiv, and Respond.js).
|
||||
* Use `Modernizr.load()` to load the Google Analytics script.
|
||||
* Much faster build process.
|
||||
* Add build script options for CSSLint, JSLint, JSHint tools.
|
||||
* Build script now compresses all images in subfolders.
|
||||
* Build script now versions files by SHA hash.
|
||||
* Many `.htaccess` improvements including: disable directory browsing, improved support for all versions of Apache, more robust and extensive HTTP compression rules.
|
||||
* Remove `handheld.css` as it has very poor device support.
|
||||
* Remove touch-icon `link` elements from the HTML and include improved touch-icon support.
|
||||
* Remove the cache-busting query paramaters from files references in the HTML.
|
||||
* Remove IE6 PNGFix.
|
||||
|
||||
### 1.0.0 (March 21, 2011)
|
||||
|
||||
* Rewrite build script to make it more customizable and flexible.
|
||||
* Add a humans.txt.
|
||||
* Numerous `.htaccess` improvements (including inline documentation).
|
||||
* Move the alternative server configurations to the H5BP server configs repo.
|
||||
* Use a protocol-relative url to reference jQuery and prevent mixed content warnings.
|
||||
* Optimize the Google Analytics snippet.
|
||||
* Use Eric Meyer's recent CSS reset update and the HTML5 Doctor reset.
|
||||
* More robust `sub`/`sup` CSS styles.
|
||||
* Add keyboard `.focusable` helper class that extends `.visuallyhidden`.
|
||||
* Print styles no longer print hash or JavaScript links.
|
||||
* Add a print reset for IE's proprietary filters.
|
||||
* Remove IE9-specific conditional class on the `html` element.
|
||||
* Remove margins from lists within `nav` elements.
|
||||
* Remove YUI profiling.
|
||||
154
CONTRIBUTING.md
Normal file
154
CONTRIBUTING.md
Normal file
@@ -0,0 +1,154 @@
|
||||
# Contributing to HTML5 Boilerplate
|
||||
|
||||
♥ [HTML5 Boilerplate](http://html5boilerplate.com) and want to get involved?
|
||||
Thanks! There are plenty of ways you can help!
|
||||
|
||||
Please take a moment to review this document in order to make the contribution
|
||||
process easy and effective for everyone involved.
|
||||
|
||||
Following these guidelines helps to communicate that you respect the time of
|
||||
the developers managing and developing this open source project. In return,
|
||||
they should reciprocate that respect in addressing your issue or assessing
|
||||
patches and features.
|
||||
|
||||
|
||||
## Using the issue tracker
|
||||
|
||||
The [issue tracker](https://github.com/h5bp/html5-boilerplate/issues) is
|
||||
the preferred channel for [bug reports](#bugs), [features requests](#features)
|
||||
and [submitting pull requests](#pull-requests), but please respect the following
|
||||
restrictions:
|
||||
|
||||
* Please **do not** use the issue tracker for personal support requests (use
|
||||
[Stack Overflow](http://stackoverflow.com/questions/tagged/html5boilerplate)
|
||||
or IRC).
|
||||
|
||||
* Please **do not** derail or troll issues. Keep the discussion on topic and
|
||||
respect the opinions of others.
|
||||
|
||||
* Please **do not** open issues or pull requests regarding the code in
|
||||
[`.htaccess`](https://github.com/h5bp/server-configs-apache),
|
||||
[`jQuery`](https://github.com/jquery/jquery/),
|
||||
[`Modernizr`](https://github.com/Modernizr/Modernizr) or
|
||||
[`Normalize.css`](https://github.com/necolas/normalize.css) (open them in
|
||||
their respective repositories).
|
||||
|
||||
|
||||
<a name="bugs"></a>
|
||||
## Bug reports
|
||||
|
||||
A bug is a _demonstrable problem_ that is caused by the code in the repository.
|
||||
Good bug reports are extremely helpful - thank you!
|
||||
|
||||
Guidelines for bug reports:
|
||||
|
||||
1. **Use the GitHub issue search** — check if the issue has already been
|
||||
reported.
|
||||
|
||||
2. **Check if the issue has been fixed** — try to reproduce it using the
|
||||
latest `master` or development branch in the repository.
|
||||
|
||||
3. **Isolate the problem** — ideally create a [reduced test
|
||||
case](http://css-tricks.com/6263-reduced-test-cases/) and a live example.
|
||||
|
||||
A good bug report shouldn't leave others needing to chase you up for more
|
||||
information. Please try to be as detailed as possible in your report. What is
|
||||
your environment? What steps will reproduce the issue? What browser(s) and OS
|
||||
experience the problem? What would you expect to be the outcome? All these
|
||||
details will help people to fix any potential bugs.
|
||||
|
||||
Example:
|
||||
|
||||
> Short and descriptive example bug report title
|
||||
>
|
||||
> A summary of the issue and the browser/OS environment in which it occurs. If
|
||||
> suitable, include the steps required to reproduce the bug.
|
||||
>
|
||||
> 1. This is the first step
|
||||
> 2. This is the second step
|
||||
> 3. Further steps, etc.
|
||||
>
|
||||
> `<url>` - a link to the reduced test case
|
||||
>
|
||||
> Any other information you want to share that is relevant to the issue being
|
||||
> reported. This might include the lines of code that you have identified as
|
||||
> causing the bug, and potential solutions (and your opinions on their
|
||||
> merits).
|
||||
|
||||
|
||||
<a name="features"></a>
|
||||
## Feature requests
|
||||
|
||||
Feature requests are welcome. But take a moment to find out whether your idea
|
||||
fits with the scope and aims of the project. It's up to *you* to make a strong
|
||||
case to convince the project's developers of the merits of this feature. Please
|
||||
provide as much detail and context as possible.
|
||||
|
||||
|
||||
<a name="pull-requests"></a>
|
||||
## Pull requests
|
||||
|
||||
Good pull requests - patches, improvements, new features - are a fantastic
|
||||
help. They should remain focused in scope and avoid containing unrelated
|
||||
commits.
|
||||
|
||||
**Please ask first** before embarking on any significant pull request (e.g.
|
||||
implementing features, refactoring code, porting to a different language),
|
||||
otherwise you risk spending a lot of time working on something that the
|
||||
project's developers might not want to merge into the project.
|
||||
|
||||
Please adhere to the coding conventions used throughout a project (indentation,
|
||||
accurate comments, etc.) and any other requirements (such as test coverage).
|
||||
|
||||
Adhering to the following this process is the best way to get your work
|
||||
included in the project:
|
||||
|
||||
1. [Fork](http://help.github.com/fork-a-repo/) the project, clone your fork,
|
||||
and configure the remotes:
|
||||
|
||||
```bash
|
||||
# Clone your fork of the repo into the current directory
|
||||
git clone https://github.com/<your-username>/html5-boilerplate.git
|
||||
# Navigate to the newly cloned directory
|
||||
cd html5-boilerplate
|
||||
# Assign the original repo to a remote called "upstream"
|
||||
git remote add upstream https://github.com/h5bp/html5-boilerplate.git
|
||||
```
|
||||
|
||||
2. If you cloned a while ago, get the latest changes from upstream:
|
||||
|
||||
```bash
|
||||
git checkout master
|
||||
git pull upstream master
|
||||
```
|
||||
|
||||
3. Create a new topic branch (off the main project development branch) to
|
||||
contain your feature, change, or fix:
|
||||
|
||||
```bash
|
||||
git checkout -b <topic-branch-name>
|
||||
```
|
||||
|
||||
4. Commit your changes in logical chunks. Please adhere to these [git commit
|
||||
message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
|
||||
or your code is unlikely be merged into the main project. Use Git's
|
||||
[interactive rebase](https://help.github.com/articles/interactive-rebase)
|
||||
feature to tidy up your commits before making them public.
|
||||
|
||||
5. Locally merge (or rebase) the upstream development branch into your topic branch:
|
||||
|
||||
```bash
|
||||
git pull [--rebase] upstream master
|
||||
```
|
||||
|
||||
6. Push your topic branch up to your fork:
|
||||
|
||||
```bash
|
||||
git push origin <topic-branch-name>
|
||||
```
|
||||
|
||||
7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/)
|
||||
with a clear title and description.
|
||||
|
||||
**IMPORTANT**: By submitting a patch, you agree to allow the project owners to
|
||||
license your work under the the terms of the [MIT License](LICENSE.md).
|
||||
19
LICENSE.md
Normal file
19
LICENSE.md
Normal file
@@ -0,0 +1,19 @@
|
||||
Copyright (c) HTML5 Boilerplate
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
129
README.markdown
129
README.markdown
@@ -1,129 +0,0 @@
|
||||
# HTML5 Boilerplate [http://html5boilerplate.com](http://html5boilerplate.com)
|
||||
|
||||
## Changelog:
|
||||
|
||||
### v.0.9.5 : October 25th, 2010
|
||||
|
||||
Major changes:
|
||||
|
||||
<ul>
|
||||
<li>Removed <code>-webkit-font-smoothing: antialiased;</code> it makes monospace too thin.</li>
|
||||
<li>IE conditional classes have moved from the <code><body></code> tag to the <code><html></code> tag ( #44 ).</li>
|
||||
<li>Dropped <code>text-rendering: <a href="http://www.aestheticallyloyal.com/public/optimize-legibility/">optimizeLegibility</a></code> as it breaks small-caps, looks odd on Linux machines, and goes invisible on WebOS.</li>
|
||||
<li>Added a IE6 call for the minified <code>dd_belatedpng</code>.</li>
|
||||
<li>Revised viewport declaration to allow user scaling and clear Webkit console errors ( #37 ).</li>
|
||||
<li>Updated Modernizr to 1.6 </li>
|
||||
<li>Added <code>web.config</code> file for Microsoft IIS</li>
|
||||
<li>Beta release of the <a href="http://github.com/paulirish/html5-boilerplate/wiki/Build-script ">Build Script</a> (this is HUGE)</li>
|
||||
<li>New project scaffolding <a href="http://github.com/paulirish/html5-boilerplate/wiki/makep.sh">bash script</a>.</li>
|
||||
<li><a href="http://github.com/paulirish/html5-boilerplate/blob/master/README.markdown">.... and over 100 other fixes and improvements.</a></li>
|
||||
</ul>
|
||||
|
||||
#### General
|
||||
* Updated Modernizr to 1.6 (smaller and faster)
|
||||
* Added web.config file for Microsoft IIS. Now forcing latest IE version and ChromeFrame, if installed.
|
||||
* Added favicon and default icon for iOS.
|
||||
* Updated crossdomain.xml wording for better security guidelines ( #124 ).
|
||||
* Expires value for nginx.conf corrected.
|
||||
* License clarified.
|
||||
|
||||
#### style.css
|
||||
* Removed -webkit-font-smoothing: antialiased; as it made monospace too thin.
|
||||
* Updated fonts normalization to YUI 3.2.0 PR1.
|
||||
* Table Header set explicitly for IE6 and table row now has page-break: avoid in print CSS.
|
||||
* text-shadow:none !important set for all text in print css.
|
||||
* Removed scrollbar from textareas in IE.
|
||||
* Fixed textarea stylings and form field treatment for validity. Added default background-color.
|
||||
* New robust clearfix solution without IE 5.5 hack ( #45 #126 ).
|
||||
* Margins for form-elements explicitly set to 0 as webkit adds 2px space around form elements' chrome.
|
||||
* Dropped text-rendering: optimizeLegibility as it breaks small-caps and looks odd on Linux machines.
|
||||
* Lists now have a left margin of 1.8em. Default list-style-type for ordered list is decimal.
|
||||
* Image Replacement now works with right-to-left text ( #68 ).
|
||||
* Removed "Star Hack" for checkboxes in favor of .ie7 selector.
|
||||
|
||||
#### index.html
|
||||
* IE conditional classes have moved from the <body> tag to the <html> tag ( #44 ).
|
||||
* Added a IE6 call for the minified dd_belatedpng.
|
||||
* Google Analytics script will now work with SSL in IE6.
|
||||
* Added protocol independent absolute path for cdn jquery, with improved fallback-to-local code to protect against edge case IE bug.
|
||||
* Commented out handheld CSS ( #73 ).
|
||||
* Mobile viewport and textsize styles adjusted per group feedback ( #37 ).
|
||||
|
||||
#### .htaccess
|
||||
* More files are served via gzip like .htc ( #55 ).
|
||||
* Added Expires header for content types image/gif and video/webm.
|
||||
* Fixed favicon display in IE6 ( #113 ).
|
||||
* Corrected mimetypes for fonts.
|
||||
* Removed caching for files of type json/xml.
|
||||
* Better use of ifmodule for more stability in different Apache environments.
|
||||
|
||||
[View full diff and commit history](http://github.com/paulirish/html5-boilerplate/compare/v0.9.1)
|
||||
|
||||
|
||||
#### Contributors
|
||||
Shi Chuan, Rob Larsen, Ivan Nikolić, Mikko Tikkanen, Paul Neave, Weston Ruter, Jeffrey Barke, Robert Meissner, SirFunk, Philip von Bargen, Kroc Camen, Andreas Madsen, Marco d'Itri, Adeelejaz, James Rosen, Dave DeSandro, Ken Newman, Swaroop C H, Yann Mainier, Joe Sak, Irakli, Rob Flaherty, Jeff Starr, Mike Lamb, Holek, Aaron Peters, Kaelig, Meander, Charlie Ussery, Ciney, Région Wallonne and Paul Hayes.
|
||||
|
||||
|
||||
### v.0.9.1 : August 13th, 2010
|
||||
* HTML5 Boilerplate is now in the Public Domain
|
||||
* Nginx configuration added
|
||||
* Font stacks (sans-serif and monospace) simplified
|
||||
* Very accessible a:focus styles.
|
||||
* Corrected IE=edge,chromeframe enabling (As a result, the base HTML [does not validate](http://bit.ly/cGSSgr))
|
||||
* ServerSideIncludes disabled by default.
|
||||
* Apache config bugfixes
|
||||
* Conditional body tag class combined
|
||||
* dd_belatedPNG updated to 0.0.8. Redundant BackgroundImageCache fix removed.
|
||||
|
||||
[View full diff and commit history](http://github.com/paulirish/html5-boilerplate/compare/v0.9...v0.9.1)
|
||||
|
||||
##### Thanks:
|
||||
|
||||
voodootikigod, garowetz, fearphage, christopherjacob, mathias byenens, daniel harttman, rse, chris dary, erik dahlstrom, timwillison, ken nordahl, riddle, elcuervo, andreas kuckartz, 3rdEden, riley willis, majic3
|
||||
|
||||
### v0.9 : August 10th, 2010 - Initial release
|
||||
|
||||
|
||||
## License:
|
||||
|
||||
Major components:
|
||||
|
||||
* Modernizr: MIT/BSD license
|
||||
* jQuery: MIT/GPL license
|
||||
* DD_belatedPNG: MIT license
|
||||
* YUI Profiling: BSD license
|
||||
* HTML5Doctor CSS reset: Creative Commons 3.0 BY
|
||||
* CSS Reset Reloaded: Public Domain
|
||||
|
||||
Everything else:
|
||||
|
||||
* [The Unlicense](http://unlicense.org) (aka: public domain)
|
||||
|
||||
|
||||
## Summary:
|
||||
|
||||
This is a set of files that a front-end developer can use to get started on a website, with following included:
|
||||
|
||||
1. Cross-browser compatible (IE6, yeah we got that.)
|
||||
2. HTML5 ready. Use the new tags with certainty.
|
||||
3. Optimal caching and compression rules for grade-A performance
|
||||
4. Best practice site configuration defaults
|
||||
5. Think there's too much? The HTML5 Boilerplate is delete-key friendly. :)
|
||||
6. Mobile browser optimizations
|
||||
7. Progressive enhancement graceful degredation ........ yeah yeah we got that
|
||||
8. IE specific classes for maximum cross-browser control
|
||||
9. Want to write unit tests but lazy? A full, hooked up test suite is waiting for you.
|
||||
10. Javascript profiling.. in IE6 and IE7? Sure, no problem.
|
||||
11. Console.log nerfing so you won't break anyone by mistake.
|
||||
12. Never go wrong with your doctype or markup!
|
||||
13. An optimal print stylesheet, performance optimized
|
||||
14. iOS, Android, Opera Mobile-adaptable markup and CSS skeleton.
|
||||
15. IE6 pngfix baked in.
|
||||
16. jQuery, waiting for you
|
||||
|
||||
## Releases
|
||||
|
||||
There are two releases: a documented release, which is exactly what you see here, and a "stripped" release, with most of the descriptive comments stripped out.
|
||||
|
||||
Watch the [current tickets](http://github.com/paulirish/html5-boilerplate/issues) to view the areas of active development.
|
||||
|
||||
61
README.md
Normal file
61
README.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# [HTML5 Boilerplate](http://html5boilerplate.com)
|
||||
|
||||
HTML5 Boilerplate is a professional front-end template for building fast,
|
||||
robust, and adaptable web apps or sites.
|
||||
|
||||
This project is the product of many years of iterative development and combined
|
||||
community knowledge. It does not impose a specific development philosophy or
|
||||
framework, so you're free to architect your code in the way that you want.
|
||||
|
||||
* Source: [https://github.com/h5bp/html5-boilerplate](https://github.com/h5bp/html5-boilerplate)
|
||||
* Homepage: [http://html5boilerplate.com](http://html5boilerplate.com)
|
||||
* Twitter: [@h5bp](http://twitter.com/h5bp)
|
||||
|
||||
|
||||
## Quick start
|
||||
|
||||
Choose one of the following options:
|
||||
|
||||
1. Download the latest stable release from
|
||||
[html5boilerplate.com](http://html5boilerplate.com/) or a custom build from
|
||||
[Initializr](http://www.initializr.com).
|
||||
2. Clone the git repo — `git clone
|
||||
https://github.com/h5bp/html5-boilerplate.git` - and checkout the tagged
|
||||
release you'd like to use.
|
||||
|
||||
|
||||
## Features
|
||||
|
||||
* HTML5 ready. Use the new elements with confidence.
|
||||
* Cross-browser compatible (Chrome, Opera, Safari, Firefox 3.6+, IE6+).
|
||||
* Designed with progressive enhancement in mind.
|
||||
* Includes [Normalize.css](http://necolas.github.com/normalize.css/) for CSS
|
||||
normalizations and common bug fixes.
|
||||
* The latest [jQuery](http://jquery.com/) via CDN, with a local fallback.
|
||||
* The latest [Modernizr](http://modernizr.com/) build for feature detection.
|
||||
* IE-specific classes for easier cross-browser control.
|
||||
* Placeholder CSS Media Queries.
|
||||
* Useful CSS helpers.
|
||||
* Default print CSS, performance optimized.
|
||||
* Protection against any stray `console.log` causing JavaScript errors in
|
||||
IE6/7.
|
||||
* An optimized Google Analytics snippet.
|
||||
* Apache server caching, compression, and other configuration defaults for
|
||||
Grade-A performance.
|
||||
* Cross-domain Ajax and Flash.
|
||||
* "Delete-key friendly." Easy to strip out parts you don't need.
|
||||
* Extensive inline and accompanying documentation.
|
||||
|
||||
|
||||
## Documentation
|
||||
|
||||
Take a look at the [documentation table of contents](doc/TOC.md). This
|
||||
documentation is bundled with the project, which makes it readily available for
|
||||
offline reading and provides a useful starting point for any documentation you
|
||||
want to write about your project.
|
||||
|
||||
|
||||
## Contributing
|
||||
|
||||
Anyone and everyone is welcome to [contribute](CONTRIBUTING.md). Hundreds of
|
||||
developers have helped make the HTML5 Boilerplate what it is today.
|
||||
BIN
apple-touch-icon-precomposed.png
Normal file
BIN
apple-touch-icon-precomposed.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.8 KiB |
@@ -1,3 +0,0 @@
|
||||
# build.properties file defines overrides for default.properties
|
||||
# Explaination: This file should be created by each user as and when he or she needs to override particular values.
|
||||
# Consequently, it should not be placed under version control.
|
||||
428
build/build.xml
428
build/build.xml
@@ -1,428 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<project name="Boilerplate Build" default="build" basedir="../"> <!-- one back since we're in build/ -->
|
||||
<!-- load property files -->
|
||||
|
||||
<property file="build/build.properties"/>
|
||||
<property file="build/default.properties"/>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- there are three different options for html optimization:
|
||||
buildkit : all html whitespace retained. inline script/style minified
|
||||
htmlclean (default) : minor html optimizations (extra quotes removed). inline script/style minified
|
||||
htmlcompress : html minification
|
||||
-->
|
||||
|
||||
<target name="basics" depends="clean,rev,current-number,copy,usemin,js.all,css,html" description="Concats files, runs YUI Compressor on them and makes magic happen."/>
|
||||
|
||||
<target name="text" depends="basics,htmlclean" description="Concats files, runs YUI Compressor on them and makes magic happen."/>
|
||||
<target name="buildkit" depends="basics,htmlbuildkit,imagespng,imagesjpg" description="Concats files, runs YUI Compressor, optimizes images. There is much rejoicing."/>
|
||||
<target name="build" depends="basics,htmlclean,imagespng,imagesjpg" description="Concats files, runs YUI Compressor, optimizes images. There is much rejoicing."/>
|
||||
<target name="minify" depends="basics,htmlcompress,imagespng,imagesjpg" description="Concats files, runs YUI Compressor, optimizes images. There is much rejoicing."/>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Increase the current build number by one and set build date -->
|
||||
<!-- as per http://www.ibmpressbooks.com/articles/article.aspx?p=519946 -->
|
||||
<target name="rev">
|
||||
<echo message="Rev the build number..."/>
|
||||
<propertyfile file="./${dir.build}/${build.info}" comment="Build Information File - DO NOT CHANGE">
|
||||
<entry key="build.number" type="int" default="0000" operation="+" pattern="0000"/>
|
||||
<entry key="build.date" type="date" value="now" pattern="dd.MM.yyyy HH:mm"/>
|
||||
</propertyfile>
|
||||
<property file="./${dir.build}/${build.info}"/>
|
||||
</target>
|
||||
|
||||
<target name="current-number">
|
||||
<echo>Current build number: ${build.number}</echo>
|
||||
</target>
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Wipe the old
|
||||
|
||||
-->
|
||||
<target name="clean">
|
||||
<echo message="Cleaning up previous build directory..."/>
|
||||
<delete dir="./${dir.publish}/"/>
|
||||
</target>
|
||||
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Copy in the new stuff
|
||||
|
||||
-->
|
||||
|
||||
<target name="copy" depends="clean, rev">
|
||||
<echo message="Copying over new files..."/>
|
||||
<copy todir="./${dir.publish}">
|
||||
<fileset dir="./">
|
||||
<exclude name=".gitignore"/>
|
||||
<exclude name=".project"/>
|
||||
<exclude name=".settings"/>
|
||||
<exclude name="README.markdown"/>
|
||||
<exclude name="**/.git/**"/>
|
||||
<exclude name="**/.svn/**"/>
|
||||
<exclude name=".gitignore"/>
|
||||
<exclude name="**/${dir.build}/**"/>
|
||||
<exclude name="**/${dir.test}/**"/>
|
||||
<exclude name="**/${dir.demo}/**"/>
|
||||
<exclude name="**/${dir.js}/profiling/**"/>
|
||||
|
||||
<!-- configurable excludes -->
|
||||
<exclude name="**/${file.exclude}/**"/>
|
||||
</fileset>
|
||||
</copy>
|
||||
</target>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Optimize javascript files
|
||||
-->
|
||||
<target name="js.all" depends="js.remove.console, js.all.min, js.main.concat, js.libs.concat, js.concat.scripts, js.minifyonly.min, js.delete"></target>
|
||||
|
||||
|
||||
<!--
|
||||
JS: Concat primary scripts
|
||||
|
||||
-->
|
||||
<target name="js.main.concat" depends="js.all.min">
|
||||
<echo message="Concatenating JS scripts"/>
|
||||
<concat destfile="./${dir.publish}/${dir.js}/scripts-${build.number}.js">
|
||||
<fileset dir="./${dir.publish}/">
|
||||
<include name="**/${dir.js.main}/*.min.js"/>
|
||||
<exclude name="**/${dir.js.mylibs}/*.js"/>
|
||||
<exclude name="**/${dir.js.libs}/*.js"/>
|
||||
</fileset>
|
||||
</concat>
|
||||
</target>
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
JS: Concat library scripts
|
||||
|
||||
|
||||
-->
|
||||
<target name="js.libs.concat" depends="js.all.min">
|
||||
<echo message="Concatenating JS libraries"/>
|
||||
<concat destfile="./${dir.publish}/${dir.js}/libs-${build.number}.js">
|
||||
<fileset dir="./${dir.publish}/${dir.js.mylibs}/">
|
||||
<include name="**/*.min.js"/>
|
||||
</fileset>
|
||||
</concat>
|
||||
</target>
|
||||
|
||||
<!-- Comment out console.log commands from main scripts -->
|
||||
<target name="js.remove.console" description="Comment out console.log lines">
|
||||
<echo>Commenting out console.log lines</echo>
|
||||
|
||||
<replaceregexp match="(console.log\(.*\))" replace="/\*\1\*/" flags="g" >
|
||||
<fileset dir="./${dir.publish}/${dir.js}/">
|
||||
<include name="**/*.js"/>
|
||||
<exclude name="**/*.min.js"/>
|
||||
</fileset>
|
||||
</replaceregexp>
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
JS: Minify primary scripts and libraries
|
||||
|
||||
-->
|
||||
<target name="js.all.min" depends="copy">
|
||||
<echo message="Minifying concatenated script- and library-file"/>
|
||||
<apply executable="java" parallel="false">
|
||||
<fileset dir="./${dir.publish}/${dir.js}">
|
||||
<include name="**/*.js"/>
|
||||
<exclude name="**/*.min.js"/>
|
||||
<exclude name="**/${dir.js.libs}/*.js"/>
|
||||
</fileset>
|
||||
<arg line="-jar"/>
|
||||
<arg path="./${dir.tools}/${tool.yuicompressor}"/>
|
||||
<srcfile/>
|
||||
<arg line="--line-break"/>
|
||||
<arg line="4000"/>
|
||||
<arg line="-o"/>
|
||||
<mapper type="glob" from="*.js" to="../${dir.publish}/${dir.js}/*.min.js"/>
|
||||
<targetfile/>
|
||||
</apply>
|
||||
</target>
|
||||
|
||||
|
||||
<!--
|
||||
JS: Minify helper files.
|
||||
these files do not get concat'd with anyone else.
|
||||
they will get a build number in their filename though
|
||||
|
||||
-->
|
||||
<target name="js.minifyonly.min">
|
||||
<echo message="Minifying helper JS files"/>
|
||||
|
||||
<apply executable="java" parallel="false">
|
||||
<fileset dir="./${dir.publish}/${dir.js.libs}/" includes="*.js" excludes="*.min.js"/>
|
||||
<arg line="-jar"/>
|
||||
<arg path="./${dir.tools}/${tool.yuicompressor}"/>
|
||||
<srcfile/>
|
||||
<arg line="-o"/>
|
||||
<mapper type="glob" from="*.js" to="../${dir.publish}/${dir.js.libs}/*-${build.number}.min.js"/>
|
||||
<targetfile/>
|
||||
</apply>
|
||||
</target>
|
||||
|
||||
|
||||
<!--
|
||||
JS: Concat mylibs- and scripts- into a normal and a debug file.
|
||||
Then rename them to s/-all//
|
||||
|
||||
-->
|
||||
<target name="js.concat.scripts" if="build.concat.scripts">
|
||||
|
||||
|
||||
<echo message="Concatenating library file with main script file"/>
|
||||
<concat destfile="./${dir.publish}/${dir.js}/scripts-${build.number}.min.js">
|
||||
<fileset dir="./${dir.publish}/${dir.js}/">
|
||||
<include name="libs-${build.number}.js"/>
|
||||
<include name="scripts-${build.number}.js"/>
|
||||
</fileset>
|
||||
</concat>
|
||||
|
||||
<echo message="Concatenating library file with main debug script file"/>
|
||||
<concat destfile="./${dir.publish}/${dir.js}/scripts-${build.number}-debug.min.js">
|
||||
<fileset dir="./${dir.publish}/${dir.js}/">
|
||||
<include name="libs-${build.number}.js"/>
|
||||
<include name="scripts-${build.number}-debug.js"/>
|
||||
</fileset>
|
||||
</concat>
|
||||
|
||||
<echo>About to rename scripts-all to scripts</echo>
|
||||
<!--
|
||||
<move file="./${dir.publish}/${dir.js}/scripts-all-${build.number}.min.js" tofile="./${dir.publish}/${dir.js}/scripts-${build.number}.min.js"/>
|
||||
<move file="./${dir.publish}/${dir.js}/scripts-all-${build.number}-debug.min.js" tofile="./${dir.publish}/${dir.js}/scripts-${build.number}-debug.min.js"/>
|
||||
-->
|
||||
</target>
|
||||
|
||||
|
||||
<!--
|
||||
JS: Delete unoptimized files (If set)
|
||||
|
||||
-->
|
||||
<target name="js.delete" if="build.delete.unoptimized" depends="js.if.concat.scripts">
|
||||
<echo message="Deleting unoptimized files"/>
|
||||
|
||||
|
||||
<delete file="./${dir.publish}/${dir.js}/scripts-${build.number}.js"/>
|
||||
|
||||
<delete file="./${dir.publish}/${dir.js}/scripts-${build.number}-debug.js"/>
|
||||
|
||||
<!--
|
||||
<delete dir="./${dir.publish}/${dir.js.lib}/"/>
|
||||
<delete file="./${dir.publish}/${dir.js}/libs-${build.number}.js"/>
|
||||
|
||||
|
||||
this guy probably COULD be on but I think it's better if we keep him off for now. ^pi
|
||||
<delete includeemptydirs="true">
|
||||
<fileset dir="./${dir.publish}/${dir.js.libs}/" includes="*.js" excludes="*.min.js"/>
|
||||
</delete>
|
||||
|
||||
-->
|
||||
</target>
|
||||
|
||||
<!-- JS, Delete concatenated libs file (only if concat.scripts and delete.unoptimized are defined) -->
|
||||
<target name="js.if.concat.scripts" if="build.delete.unoptimized, build.concat.scripts">
|
||||
<delete file="./${dir.publish}/${dir.js}/libs-${build.number}.min.js"/>
|
||||
<delete file="./${dir.publish}/${dir.js}/scripts-${build.number}.min.js"/>
|
||||
</target>
|
||||
|
||||
|
||||
<!--
|
||||
CSS: concat style.css into ... one file. :)
|
||||
run it through yui compressor for minification.
|
||||
replace the reference to it in index.html
|
||||
|
||||
-->
|
||||
<target name="css" depends="copy">
|
||||
<echo message="Minifying css..."/>
|
||||
<concat destfile="./${dir.publish}/${dir.css}/style-${build.number}.css">
|
||||
<fileset file="./${dir.css}/style.css"/>
|
||||
</concat>
|
||||
<apply executable="java" parallel="false">
|
||||
<fileset dir="./${dir.publish}/${dir.css}/" includes="style-${build.number}.css"/>
|
||||
<arg line="-jar"/>
|
||||
<arg path="./${dir.tools}/${tool.yuicompressor}"/>
|
||||
<srcfile/>
|
||||
<arg line="-o"/>
|
||||
<mapper type="glob" from="style-${build.number}.css" to="../${dir.publish}/${dir.css}/style-${build.number}.min.css"/>
|
||||
<targetfile/>
|
||||
</apply>
|
||||
<replace token="style.css" value="style-${build.number}.min.css" file="./${dir.publish}/${file.index}"/>
|
||||
<!-- <delete file="./publish/css/style-${build.number}.css"/> -->
|
||||
</target>
|
||||
|
||||
<!--
|
||||
IMAGES: png
|
||||
-->
|
||||
<target name="imagespng" depends="copy">
|
||||
<echo message="Optimizing images"/>
|
||||
<apply executable="optipng" osfamily="unix">
|
||||
<arg value="-o7"/>
|
||||
<fileset dir="./${dir.publish}/">
|
||||
<include name="**/*.png"/>
|
||||
</fileset>
|
||||
</apply>
|
||||
<apply executable="optipng" osfamily="mac">
|
||||
<arg value="-o7"/>
|
||||
<fileset dir="./${dir.publish}/">
|
||||
<include name="**/*.png"/>
|
||||
</fileset>
|
||||
</apply>
|
||||
<apply executable="tools/optipng-0.6.4-exe/optipng.exe" osfamily="windows">
|
||||
<arg value="-o7"/>
|
||||
<fileset dir="./${dir.publish}/">
|
||||
<include name="**/*.png"/>
|
||||
</fileset>
|
||||
</apply>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
IMAGES: jpg
|
||||
-->
|
||||
<target name="imagesjpg" depends="copy">
|
||||
<echo message="Clean up those jpgs..."/>
|
||||
<apply executable="jpegtran" osfamily="unix">
|
||||
<fileset dir="./${dir.publish}/${dir.images}/" includes="*.jpg"/>
|
||||
<arg value="-copy"/>
|
||||
<!-- change 'all to 'none' in order to strip metadata
|
||||
only do so if you own copyright to the image -->
|
||||
<arg value="all"/>
|
||||
<srcfile/>
|
||||
<targetfile/>
|
||||
<!-- you may want to flag optimized images. If so, do it here. Otherwise change this to type="identity" -->
|
||||
<mapper type="glob" from="*.jpg" to="../${dir.publish}/${dir.images}/*.jpg"/>
|
||||
</apply>
|
||||
<apply executable="jpegtran" osfamily="mac">
|
||||
<fileset dir="./${dir.publish}/${dir.images}/" includes="*.jpg"/>
|
||||
<arg value="-copy"/>
|
||||
<!-- change 'all to 'none' in order to strip metadata
|
||||
only do so if you own copyright to the image -->
|
||||
<arg value="all"/>
|
||||
<srcfile/>
|
||||
<targetfile/>
|
||||
<!-- you may want to flag optimized images. If so, do it here. Otherwise change this to type="identity" -->
|
||||
<mapper type="glob" from="*.jpg" to="../${dir.publish}/${dir.images}/*.jpg"/>
|
||||
</apply>
|
||||
<apply executable="tools/jpegtran.exe" osfamily="windows">
|
||||
<fileset dir="./${dir.publish}/${dir.images}/" includes="*.jpg"/>
|
||||
<arg value="-copy"/>
|
||||
<!-- change 'all to 'none' in order to strip metadata
|
||||
only do so if you own copyright to the image -->
|
||||
<arg value="all"/>
|
||||
<srcfile/>
|
||||
<targetfile/>
|
||||
<!-- you may want to flag optimized images. If so, do it here. Otherwise change this to type="identity" -->
|
||||
<mapper type="glob" from="*.jpg" to="../${dir.publish}/${dir.images}/*.jpg"/>
|
||||
</apply>
|
||||
</target>
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
HTML: switch to minified jquery in the html
|
||||
|
||||
-->
|
||||
<target name="usemin" depends="copy">
|
||||
<echo message="Switching to minified js files..."/>
|
||||
|
||||
<!-- switch from a regular jquery to minified-->
|
||||
<replaceregexp match="jquery-(\d|\d(\.\d)+)\.js" replace="jquery-\1.min.js" file="./${dir.publish}/${file.index}" flags=""/>
|
||||
<!-- switch any google CDN reference to minified -->
|
||||
<replaceregexp match="(\d|\d(\.\d)+)\/jquery\.js" replace="\1/jquery.min.js" file="./${dir.publish}/${file.index}" flags=""/>
|
||||
|
||||
<echo>kill off those versioning flags: ?v=2</echo>
|
||||
<replaceregexp match='\?v=\d+">' replace='">' file="./${dir.publish}/${file.index}" flags=""/>
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
HTML: replaces scripts with single concat'd one.
|
||||
removes profiling code
|
||||
-->
|
||||
|
||||
<target name="html" depends="">
|
||||
<echo message="Clean up the html..."/>
|
||||
<!-- style.css replacement handled as a replacetoken above -->
|
||||
<replaceregexp match="<!-- scripts concatenated [\d\w\s\W]*?!-- end concatenated and minified scripts-->" file="./${dir.publish}/${file.index}" replace="<script src='${dir.js}/scripts-${build.number}.min.js\'></script>" flags="m"/>
|
||||
<replaceregexp match="<!-- yui profiler[\d\w\s\W]*?end profiling code -->" file="./${dir.publish}/${file.index}" replace=" " flags="m"/>
|
||||
|
||||
<!--[! use comments like this one to avoid having them get minified -->
|
||||
|
||||
</target>
|
||||
|
||||
<!--
|
||||
HTML Minification. There are three levels. htmlclean is default.
|
||||
-->
|
||||
<target name="htmlbuildkit" depends="html" >
|
||||
<apply executable="java" parallel="false" force="true" dest="./${dir.publish}/" >
|
||||
<fileset dir="./${dir.publish}/" includes="*.html"/>
|
||||
<arg value="-jar"/>
|
||||
<arg path="./${dir.build}/tools/htmlcompressor-0.9.3.jar"/>
|
||||
<arg value="--preserve-comments"/>
|
||||
<arg line="--preserve-multi-spaces"/>
|
||||
<arg line="--type html"/>
|
||||
<arg line="--compress-js"/>
|
||||
<arg line="--compress-css"/>
|
||||
<srcfile/>
|
||||
<arg value="-o"/>
|
||||
<mapper type="glob" from="*.html" to="../${dir.publish}/*.html"/>
|
||||
<targetfile/>
|
||||
</apply>
|
||||
</target>
|
||||
|
||||
<target name="htmlclean" depends="html" >
|
||||
<apply executable="java" parallel="false" force="true" dest="./${dir.publish}/" >
|
||||
<fileset dir="./${dir.publish}/" includes="*.html"/>
|
||||
<arg value="-jar"/>
|
||||
<arg path="./${dir.build}/tools/htmlcompressor-0.9.3.jar"/>
|
||||
<arg line="--type html"/>
|
||||
<arg line="--preserve-multi-spaces"/>
|
||||
<arg line="--remove-quotes"/>
|
||||
<arg line="--compress-js"/>
|
||||
<arg line="--compress-css"/>
|
||||
<srcfile/>
|
||||
<arg value="-o"/>
|
||||
<mapper type="glob" from="*.html" to="../${dir.publish}/*.html"/>
|
||||
<targetfile/>
|
||||
</apply>
|
||||
</target>
|
||||
|
||||
<target name="htmlcompress" depends="html" >
|
||||
<apply executable="java" parallel="false" force="true" dest="./${dir.publish}/" >
|
||||
<fileset dir="./${dir.publish}/" includes="*.html"/>
|
||||
<arg value="-jar"/>
|
||||
<arg path="./${dir.build}/tools/htmlcompressor-0.9.3.jar"/>
|
||||
<arg line="--type html"/>
|
||||
<arg line="--remove-quotes"/>
|
||||
<arg line="--compress-js"/>
|
||||
<arg line="--compress-css"/>
|
||||
<srcfile/>
|
||||
<arg value="-o"/>
|
||||
<mapper type="glob" from="*.html" to="../${dir.publish}/*.html"/>
|
||||
<targetfile/>
|
||||
</apply>
|
||||
</target>
|
||||
|
||||
|
||||
|
||||
</project>
|
||||
@@ -1,73 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
#Generate a new project from your HTML5 Boilerplate repo clone
|
||||
#Created 2010-10-13, Rick Waldron
|
||||
|
||||
|
||||
##first run
|
||||
# $ cd html5-boilerplate
|
||||
# $ sudo chmod a+x createproject.sh && ./createproject.sh
|
||||
|
||||
##usage
|
||||
# $ cd html5-boilerplate/build
|
||||
# $ ./createproject.sh
|
||||
|
||||
echo "To create a new html5-boilerplate project, enter a new directory name:"
|
||||
|
||||
read name
|
||||
|
||||
cd ..
|
||||
|
||||
webroot=$PWD
|
||||
|
||||
SRC=$webroot"/html5-boilerplate"
|
||||
DST=$webroot"/../"$name
|
||||
|
||||
if [ -d "$DST" ]
|
||||
then
|
||||
echo "$DST exists"
|
||||
else
|
||||
#create new project
|
||||
mkdir $name
|
||||
|
||||
#sucess message
|
||||
echo "Created Directory: $DST"
|
||||
|
||||
cd $SRC
|
||||
|
||||
#copy to new project directory
|
||||
#http://en.wikipedia.org/wiki/Cpio#Copy
|
||||
#http://cybertiggyr.com/cpio-howto/
|
||||
#http://www.cyberciti.biz/faq/how-do-i-use-cpio-command-under-linux/
|
||||
find . -depth -print0 | cpio -0pdmv $DST
|
||||
|
||||
|
||||
#sucess message
|
||||
echo "Created Project: $DST"
|
||||
|
||||
# delete that temporary folder
|
||||
rm -r $name
|
||||
|
||||
#move into new project
|
||||
cd $DST
|
||||
|
||||
#in Bourne Again Shell, the cpio was copying
|
||||
#the whole dir into the new project, along with the contents
|
||||
if [ -d "$DST/html5-boilerplate" ]
|
||||
then
|
||||
rm -r html5-boilerplate
|
||||
fi
|
||||
|
||||
if [ -e "$DST/createproject.sh" ]
|
||||
then
|
||||
rm -r createproject.sh
|
||||
fi
|
||||
|
||||
if [ -e "$DST/.git" ]
|
||||
then
|
||||
rm -rf .git
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
# Build options ---------------------------------
|
||||
# Customize these to fit your needs
|
||||
|
||||
# If set, concat libraries with main scripts file, producing single script file
|
||||
build.concat.scripts = true
|
||||
# If set, delete unoptimized files
|
||||
build.delete.unoptimized = true
|
||||
|
||||
|
||||
# Exclude file filter for publishing (can't be empty)
|
||||
# For example: ...<add example here>...
|
||||
file.exclude = nonexistentfile
|
||||
|
||||
|
||||
|
||||
|
||||
# Project structure -----------------------------
|
||||
|
||||
# Directory names
|
||||
dir.publish = publish
|
||||
dir.build = build
|
||||
dir.tools = ${dir.build}/tools
|
||||
dir.test = test
|
||||
dir.demo = demo
|
||||
dir.js = js
|
||||
# Main JS script folder (Will be concatenated and minified)
|
||||
dir.js.main = ${dir.js}
|
||||
# JS libraries folder (Will be concatenated and minified)
|
||||
dir.js.mylibs = ${dir.js}/mylibs
|
||||
# Folder that should be only minified, not concatenated together
|
||||
dir.js.libs = ${dir.js}/libs
|
||||
dir.css = css
|
||||
dir.images = images
|
||||
|
||||
# Files
|
||||
# all the html/php whatever that the build script will be mucking with.
|
||||
# For example: ...<add example here>...
|
||||
file.index = index.html
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Hardcore build options... --------------------
|
||||
|
||||
# Build Versioning
|
||||
build.info = buildinfo.properties
|
||||
|
||||
# Tools
|
||||
tool.yuicompressor = yuicompressor-2.4.2.jar
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,21 +0,0 @@
|
||||
|
||||
Copyright (C) 2001-2010 Cosmin Truta.
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the author(s) be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
|
||||
2. Altered source versions must be plainly marked as such, and must not
|
||||
be misrepresented as being the original software.
|
||||
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
[InternetShortcut]
|
||||
URL=http://optipng.sourceforge.net/
|
||||
@@ -1,32 +0,0 @@
|
||||
|
||||
CAVEAT EMPTOR
|
||||
=============
|
||||
(known bugs, problems or limitations)
|
||||
|
||||
|
||||
Legend
|
||||
------
|
||||
- Minor bug, limitation, or incompletely-implemented feature.
|
||||
! Bug that may lead to a behavior different than expected,
|
||||
but without any serious consequence.
|
||||
!! Bug that may cause accidental data loss, security hazard,
|
||||
or another serious consequence.
|
||||
* Another problematic issue, that is not necessarily a bug.
|
||||
|
||||
|
||||
Version 0.6.4 14-mar-2010
|
||||
-------------
|
||||
- Lossless image reductions are not completely implemented.
|
||||
(This does NOT affect the integrity of PNG files.)
|
||||
Here are the missing pieces:
|
||||
- The color palette reductions are implemented only partially.
|
||||
- The bit depth reductions below 8, for grayscale images, are
|
||||
not implemented yet.
|
||||
|
||||
- TIFF support is limited to uncompressed, PNG-compatible
|
||||
color spaces (grayscale, RGB and RGBA).
|
||||
|
||||
- Metadata is not imported from the external image formats.
|
||||
|
||||
- There is no support for pipes or streams.
|
||||
|
||||
@@ -1,318 +0,0 @@
|
||||
|
||||
OptiPNG - Revision history
|
||||
==========================
|
||||
|
||||
Legend
|
||||
------
|
||||
++ Added or improved performance-related feature
|
||||
(might improve compression ratio or processing speed).
|
||||
+ Added or improved feature.
|
||||
- Removed feature.
|
||||
! Fixed bug.
|
||||
!! Fixed dangerous bug
|
||||
(data/metadata loss or serious security hazard).
|
||||
* Other modification (e.g. architectural improvement).
|
||||
|
||||
|
||||
Version 0.6.4 14-mar-2010
|
||||
-------------
|
||||
+ Upgraded libpng to version 1.4.1-optipng [private]
|
||||
+ Upgraded zlib to version 1.2.4-optipng [private]
|
||||
+ Added the option -nx.
|
||||
* Clarified the behavior of -nz and the relation between -nz and -o0.
|
||||
+ Added a filesystem check (resolving normalized paths, symlinks, etc.)
|
||||
to better detect when the output overwrites the input.
|
||||
+ Enabled automatic wildcard expansion (i.e. globbing) on Win64.
|
||||
! Fixed a Unicode build issue on Windows.
|
||||
(Thanks to Fabien Barbier for the fix.)
|
||||
|
||||
|
||||
Version 0.6.3 18-may-2009
|
||||
-------------
|
||||
+ Upgraded libpng to version 1.2.36-optipng [private]
|
||||
!! Fixed a use-after-free error in the GIF reader.
|
||||
(Thanks to Roy Tam for the report, and to Bryan McQuade for the fix.)
|
||||
! Flushed the output log to display the current trial in real time.
|
||||
This only worked on Windows in the previous version.
|
||||
(Thanks to Vincent Lefevre for the fix.)
|
||||
! Fixed an error in reporting unrecognized file formats.
|
||||
(Thanks to [LaughingMan] for the report.)
|
||||
- Removed the requirement to "fix" TIFF files that contain unrecognized
|
||||
metadata. (Thanks to Piotr Bandurski for the suggestion.)
|
||||
* Simplified the option abbreviation rules. Option names can now be
|
||||
abbreviated to their shortest unique prefix, as in X11 applications.
|
||||
|
||||
|
||||
Version 0.6.2 9-nov-2008
|
||||
-------------
|
||||
+ Upgraded libpng to version 1.2.33-optipng [private]
|
||||
++ Put back a speed optimization, accidentally removed in version 0.6,
|
||||
allowing singleton trials (-o1) to be bypassed in certain conditions.
|
||||
!! Fixed an array overflow in the BMP reader.
|
||||
!! Fixed the loss of private chunks under the -snip option.
|
||||
+ Produced a more concise on-screen output in the non-verbose mode.
|
||||
(Thanks to Vincent Lefevre for the contribution.)
|
||||
* Added a programming interface to the optimization engine, in order
|
||||
to facilitate the development of PNG-optimizing GUI apps and plugins.
|
||||
|
||||
|
||||
Version 0.6.1 20-jul-2008
|
||||
-------------
|
||||
* Upgraded cexcept to version 2.0.1.
|
||||
+ Added a configure script, to be used instead of unix-secure.mak.
|
||||
! Fixed a build issue that occured when using libpng from the system.
|
||||
(Thanks to Nelson A. de Oliveira for the report.)
|
||||
! Fixed processing when image reduction yields an output larger than
|
||||
the original. (Thanks to Michael Krishtopa for the report.)
|
||||
! Fixed behavior of -preserve.
|
||||
(Thanks to Bill Koch for the report.)
|
||||
- Removed displaying of partial progress when abandoning IDATs under
|
||||
the -v option. The percentages displayed were not very accurate.
|
||||
|
||||
|
||||
Version 0.6 15-jun-2008
|
||||
-----------
|
||||
+ Upgraded libpng to version 1.2.29-optipng [private]
|
||||
++ Implemented grayscale(alpha)-to-palette reductions.
|
||||
++ Improved conversion of bKGD info during RGB-to-palette reductions.
|
||||
(Thanks to Matthew Fearnley for the contribution.)
|
||||
!! Fixed conversion of bKGD and tRNS during 16-to-8-bit reductions.
|
||||
(Thanks to Matthew Fearnley for the report.)
|
||||
+ Added support for compressed BMP (incl. PNG-compressed BMP, you bet!)
|
||||
+ Improved the speed of reading raw PNM files.
|
||||
+ Recognized PNG digital signatures (dSIG) and disabled optimization
|
||||
in their presence, to preserve their integrity.
|
||||
+ Allowed the user to enforce the optimization of dSIG'ed files.
|
||||
+ Recognized APNG animation files and disabled reductions to preserve
|
||||
their integrity.
|
||||
+ Added the -snip option, to allow the user to "snip" one image out of
|
||||
a multi-image file, such as animated GIF, multi-page TIFF, or APNG.
|
||||
(Thanks to [LaughingMan] for the suggestion.)
|
||||
+ Improved recovery of PNG files with incomplete IDAT.
|
||||
!! Fixed a crash triggered by the use of -log on some platforms.
|
||||
(Thanks to Stefan Bruns for the fix.)
|
||||
! Fixed behavior of -out and -dir when the input is already optimized.
|
||||
(Thanks to Christian Davideck for the report.)
|
||||
* Provided more detailed image information at the start of processing.
|
||||
* Provided a more detailed summary at the end of processing, under the
|
||||
presence of the -v option and/or the occurence of exceptional events.
|
||||
|
||||
|
||||
Version 0.5.5 28-jan-2007
|
||||
-------------
|
||||
+ Upgraded libpng to version 1.2.15-optipng [private]
|
||||
++ Used a previously-missed RGB-to-palette reduction opportunity
|
||||
for images containing 256 distinct colors.
|
||||
(Thanks to Joachim Kluge for the report.)
|
||||
!! Fixed conversion of bKGD info during RGB-to-palette reductions.
|
||||
(Thanks to Matthew Fearnley for the report.)
|
||||
! Fixed pre-computation of iterations.
|
||||
(Thanks to Matthew Fearnley for the report.)
|
||||
! Eliminated a false alarm when processing RGB images with tRNS
|
||||
in Unix-secure mode. (Thanks to Till Maas for the report, and
|
||||
thanks to Nelson A. de Oliveira for the fix.)
|
||||
! Fixed behavior of -out and -dir when changing interlacing.
|
||||
(Thanks to Martin Packman for the report.)
|
||||
! Fixed the behavior of "-dir [DRIVE]:" on Windows.
|
||||
|
||||
|
||||
Version 0.5.4 11-aug-2006
|
||||
-------------
|
||||
+ Added user options -out and -dir, to specify the name of
|
||||
the output file or directory.
|
||||
(Thanks to Alexander Lucas for the suggestion.)
|
||||
* Added support for builds based on the system-supplied libpng.
|
||||
(Thanks to Nelson A. de Oliveira for the valuable help.)
|
||||
|
||||
|
||||
Version 0.5.3 23-jul-2006
|
||||
-------------
|
||||
+ Upgraded libpng to version 1.2.12-optipng [private]
|
||||
+ Implemented basic support for TIFF (grayscale, RGB and RGBA,
|
||||
uncompressed).
|
||||
++ Avoided the redundant trial when the search space is singular
|
||||
(e.g. when running "optipng -o1 example.tif").
|
||||
+ Prevented accidental file corruption when using option "-log".
|
||||
! Fixed (again) a small typo in the online help.
|
||||
|
||||
|
||||
Version 0.5.2 7-may-2006
|
||||
-------------
|
||||
+ Improved handling of inexact PNM-to-PNG conversions.
|
||||
! Fixed a typo that was breaking the build on some Unix platforms.
|
||||
(Thanks to Aaron Reitz for the report.)
|
||||
|
||||
|
||||
Version 0.5.1 30-apr-2006
|
||||
-------------
|
||||
++ Implemented bit depth reduction for palette images.
|
||||
+ Upgraded libpng to version 1.2.10-optipng [private]
|
||||
+ Improved the BMP support.
|
||||
+ Added a Unix man page.
|
||||
(Thanks to Nelson A. de Oliveira for the contribution.)
|
||||
+ Allowed abbreviation of command-line options.
|
||||
+ Changed user option -log to accept a file name as an argument.
|
||||
* Changed user option -no to -simulate.
|
||||
! Fixed an error in handling .bak files on Unix.
|
||||
(Thanks to Adam Szojda and Nelson A. de Oliveira for the report.)
|
||||
! Fixed a small typo in the help screen.
|
||||
(Thanks to A. Costa and Nelson A. de Oliveira for the report.)
|
||||
|
||||
|
||||
Version 0.5 14-jan-2006
|
||||
-----------
|
||||
++ Added pngxtern, a libpng add-on for external image format
|
||||
support: BMP (uncompressed), GIF, PNM.
|
||||
(This was incorporated from OptiPNG-Plus.)
|
||||
++ Implemented RGB(A)-to-palette reductions.
|
||||
+ Upgraded zlib to version 1.2.3-optipng [private]
|
||||
+ Upgraded libpng to version 1.2.8-optipng [private]
|
||||
+ If trials are ended prematurely, detailed progression is only
|
||||
reported under the user option -v.
|
||||
- Removed reporting of some IDAT sizes that exceeded the optimum.
|
||||
(This was NOT a bug, but a "feature" that confused some users.)
|
||||
! Fixed an RGB-to-gray reduction problem that occured under some
|
||||
specific background colors.
|
||||
* Added support for builds based on the system-supplied zlib.
|
||||
(Thanks to Nelson A. de Oliveira for the suggestion.)
|
||||
* Modified LICENSE. It is now a verbatim spell of the zlib license.
|
||||
|
||||
|
||||
Version 0.4.8 10-may-2005
|
||||
-------------
|
||||
+ Upgraded libpng to version 1.0.18-optipng [private]
|
||||
!! Fixed a palette-to-gray reduction problem that occurred when an
|
||||
RGB triple had both an alpha below max, and an alpha equal to max.
|
||||
(Thanks to Nicolas Le Gland for the report.)
|
||||
+ Packed the Windows executable using UPX.
|
||||
(Thanks to [Warriant] for the suggestion.)
|
||||
|
||||
|
||||
Version 0.4.7 30-oct-2004
|
||||
-------------
|
||||
!! Fixed a palette-to-gray reduction problem that occurred when
|
||||
having more than one alpha value per RGB triple.
|
||||
(Thanks to Larry Hastings for the report.)
|
||||
! Fixed the progress display, when processing very large images.
|
||||
+ Displayed the image info at the beginning of processing.
|
||||
++ Reduced the IDAT buffer size, allowing abandoned trials to
|
||||
terminate earlier in some circumstances.
|
||||
+ Implemented error recovery, when PLTE is too small, and/or
|
||||
tRNS is too large.
|
||||
|
||||
|
||||
Version 0.4.6 25-oct-2004
|
||||
-------------
|
||||
+ Upgraded zlib to version 1.2.2-optipng [private]
|
||||
+ Upgraded libpng to version 1.0.17-optipng [private]
|
||||
This provides safe handling of some ill-formed PNG images.
|
||||
+ Rewrote makefiles.
|
||||
+ Added project workspace to build under Visual C++ 6.0,
|
||||
integrated with memory leak detection.
|
||||
++ Implemented a premature termination of trials, in the moment
|
||||
when IDAT grows beyond the smallest size previously achieved.
|
||||
(Thanks to Larry Hastings for the idea.)
|
||||
+ Changed the order of trials, to perform the trials that are
|
||||
more likely to yield a smaller IDAT, at the beginning.
|
||||
+ Added user option -full to avoid the premature termination of
|
||||
trials; useful for debugging.
|
||||
|
||||
|
||||
Version 0.4.5 31-may-2004
|
||||
-------------
|
||||
+ Upgraded zlib to version 1.2.1.f-cos2 [private]
|
||||
+ Upgraded libpng to version 1.0.15-cos2 [private]
|
||||
* Changed user option -nx to -nz.
|
||||
+ Added user option to preserve file attributes (file mode,
|
||||
time stamp, etc.) when applicable.
|
||||
(Thanks to Nehal Mistry for the suggestion.)
|
||||
! Fixed an incorrect initialization of zlib window bits.
|
||||
! Displayed an error message when the search space was invalid.
|
||||
!! Fixed a palette reduction problem for bit depths below 8.
|
||||
! Eliminated memory leaks.
|
||||
(Thanks to Niels de Koning for the help.)
|
||||
|
||||
|
||||
Version 0.4.4 20-nov-2003
|
||||
-------------
|
||||
+ Upgraded zlib to version 1.2.1
|
||||
++ Added support for the Z_RLE strategy.
|
||||
|
||||
|
||||
Version 0.4.3 12-aug-2003
|
||||
-------------
|
||||
! Fixed a reduction problem that caused an assertion failure.
|
||||
(Thanks to Dimitri Papadopoulos for the report.)
|
||||
|
||||
|
||||
Version 0.4.2 30-jun-2003
|
||||
-------------
|
||||
++ Enhanced the support for palette size reductions:
|
||||
trailing sterile palette entries are removed even when
|
||||
the bit depth is below 8.
|
||||
! Enforced recompression when the new IDAT has the same size,
|
||||
but other chunks have been reduced.
|
||||
+ Displayed the IDAT size difference as a percentage.
|
||||
(Thanks to Nehal Mistry for the suggestion.)
|
||||
|
||||
|
||||
Version 0.4.1 19-may-2003
|
||||
-------------
|
||||
! Fixed the removal of trailing sterile palette entries.
|
||||
|
||||
|
||||
Version 0.4 12-may-2003
|
||||
-----------
|
||||
++ Added support for palette-to-gray reductions.
|
||||
++ Added partial support for palette size reductions.
|
||||
! Fixed the reporting of invalid command-line options.
|
||||
! Eliminated a spurious warning when the zlib window size
|
||||
is set to 256.
|
||||
|
||||
|
||||
Version 0.3.2 11-mar-2003
|
||||
-------------
|
||||
+ Added support for updating sBIT during reductions.
|
||||
! Fixed the reduction of the alpha channel.
|
||||
|
||||
|
||||
Version 0.3.1 25-feb-2003
|
||||
-------------
|
||||
! Fixed the encoding of interlaced images when they become
|
||||
larger than the input.
|
||||
(Thanks to James H. Cloos, Jr. for the report.)
|
||||
+ Added the HISTORY document (this file).
|
||||
|
||||
|
||||
Version 0.3 24-feb-2003
|
||||
-----------
|
||||
This is the first public release of OptiPNG.
|
||||
++ Added support for iterating through zlib memory levels.
|
||||
++ Added support for collapsing IDAT, avoiding calls to
|
||||
png_set_compression_buffer_size().
|
||||
This reduces the memory requirements.
|
||||
++ Added support for lossless reduction of the image type:
|
||||
RGB[A] -> G[A], RGBA -> RGB, GA -> G
|
||||
+ Added many user options.
|
||||
+ Added documentation.
|
||||
|
||||
|
||||
Version 0.2 27-dec-2001
|
||||
-----------
|
||||
+ Added support for optimization level presets.
|
||||
+ Added user option for changing the interlacing.
|
||||
|
||||
|
||||
Version 0.1 17-dec-2001
|
||||
-----------
|
||||
+ Added support for chunk I/O status annotation.
|
||||
This improves the speed of OptiPNG significantly.
|
||||
* Structured exception handling is provided by cexcept.
|
||||
|
||||
|
||||
Version 0.0 10-dec-2001
|
||||
-----------
|
||||
This is the very first version of OptiPNG.
|
||||
It compresses IDAT repeatedly, iterating through zlib compression
|
||||
and strategy levels, and PNG filters.
|
||||
|
||||
@@ -1,677 +0,0 @@
|
||||
<!-- Creator : groff version 1.19.2 -->
|
||||
<!-- CreationDate: Sun Mar 14 12:29:16 2010 -->
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta name="generator" content="groff -Thtml, see www.gnu.org">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta name="Content-Style" content="text/css">
|
||||
<style type="text/css">
|
||||
p { margin-top: 0; margin-bottom: 0; }
|
||||
pre { margin-top: 0; margin-bottom: 0; }
|
||||
table { margin-top: 0; margin-bottom: 0; }
|
||||
</style>
|
||||
<title>OPTIPNG</title>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1 align=center>OPTIPNG</h1>
|
||||
|
||||
<hr>
|
||||
|
||||
|
||||
<a name="NAME"></a>
|
||||
<h2>NAME</h2>
|
||||
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em"><b>OptiPNG</b>
|
||||
− Advanced optimization program for <b>Portable
|
||||
Network Graphics (PNG)</b></p>
|
||||
|
||||
<a name="SYNOPSIS"></a>
|
||||
<h2>SYNOPSIS</h2>
|
||||
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em"><b>optipng</b>
|
||||
[<b>−?</b> | <b>−h</b> | <b>−help</b>]
|
||||
<b><br>
|
||||
optipng</b> [<i>options...</i>] <i>files...</i></p>
|
||||
|
||||
<a name="DESCRIPTION"></a>
|
||||
<h2>DESCRIPTION</h2>
|
||||
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em">The
|
||||
<b>OptiPNG</b> program shall attempt to <i>optimize</i> PNG
|
||||
files, i.e. reduce their size to a minimum, without losing
|
||||
any information. In addition, this program shall perform a
|
||||
suite of auxiliary functions like integrity checks, metadata
|
||||
recovery and pixmap-to-PNG conversion.</p>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em">The
|
||||
optimization attempts are not guaranteed to succeed. Valid
|
||||
PNG files that cannot be optimized by this program are
|
||||
normally left intact; their size will not grow. The user may
|
||||
request to override this default behavior.</p>
|
||||
|
||||
<a name="FILES"></a>
|
||||
<h2>FILES</h2>
|
||||
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em">The input files
|
||||
are raster image files encoded either in PNG format (the
|
||||
native format), or in an external format. The currently
|
||||
supported external formats are GIF, BMP, PNM and TIFF.</p>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em"><b>OptiPNG</b>
|
||||
processes each image file given in the command line as
|
||||
follows:</p>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em">− If it
|
||||
is in PNG format:</p>
|
||||
|
||||
<p style="margin-left:22%; margin-top: 1em">Attempt to
|
||||
optimize the given file in-place. If optimization is
|
||||
successful, or if the option <b>−force</b> is in
|
||||
effect, replace the original file with its optimized
|
||||
version. The original file is backed up if the option
|
||||
<b>−keep</b> is in effect.</p>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em">− If it
|
||||
is in an external format:</p>
|
||||
|
||||
<p style="margin-left:22%; margin-top: 1em">Create an
|
||||
optimized PNG version of the given file. The output file
|
||||
name is composed from the original file name and the
|
||||
<tt>.png</tt> extension.</p>
|
||||
|
||||
<a name="OPTIONS"></a>
|
||||
<h2>OPTIONS</h2>
|
||||
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em"><b>General
|
||||
options <br>
|
||||
-?</b>, <b>−h</b>, <b>−help</b></p>
|
||||
|
||||
<p style="margin-left:22%;">Show a complete summary of
|
||||
options.</p>
|
||||
|
||||
<p style="margin-left:11%;"><b>−o</b>
|
||||
<i>level</i></p>
|
||||
|
||||
<p style="margin-left:22%;">Select the optimization level.
|
||||
<br>
|
||||
The optimization level 0 enables a set of optimization
|
||||
operations that require minimal effort. There will be no
|
||||
changes to image attributes like bit depth or color type,
|
||||
and no recompression of existing IDAT datastreams. <br>
|
||||
The optimization level 1 enables a single IDAT compression
|
||||
trial. The trial chosen is what <b>OptiPNG</b> <i>thinks</i>
|
||||
it’s probably the most effective. <br>
|
||||
The optimization levels 2 and higher enable multiple IDAT
|
||||
compression trials; the higher the level, the more trials.
|
||||
<br>
|
||||
The behavior and the default value of this option may change
|
||||
across different program versions. Use the option
|
||||
<b>−h</b> to see the details pertaining to your
|
||||
specific version.</p>
|
||||
|
||||
<p style="margin-left:11%;"><b>−dir</b>
|
||||
<i>directory</i></p>
|
||||
|
||||
<p style="margin-left:22%;">Write output file(s) to
|
||||
<i>directory</i>.</p>
|
||||
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="6%">
|
||||
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top"><b>−fix</b></p> </td>
|
||||
<td width="5%"></td>
|
||||
<td width="78%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">Enable error
|
||||
recovery. This option has no effect on valid input
|
||||
files.</p> </td>
|
||||
</table>
|
||||
|
||||
<p style="margin-left:22%;">The program will spend a
|
||||
reasonable amount of effort to recover as much data as
|
||||
possible, without increasing the output file size, but the
|
||||
success cannot be generally guaranteed. The program may even
|
||||
increase the file size, e.g., by reconstructing missing
|
||||
critical data. Under this option, integrity shall take
|
||||
precedence over file size. <br>
|
||||
When this option is not used, the invalid input files are
|
||||
left unprocessed.</p>
|
||||
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="9%">
|
||||
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top"><b>−force</b></p> </td>
|
||||
<td width="2%"></td>
|
||||
<td width="56%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">Enforce writing of
|
||||
a new output file.</p></td>
|
||||
<td width="22%">
|
||||
</td>
|
||||
</table>
|
||||
|
||||
<p style="margin-left:22%;">This option overrides the
|
||||
program’s decision not to write such file, e.g. when
|
||||
the PNG input is digitally signed (using dSIG), or when the
|
||||
PNG output becomes larger than the PNG input.</p>
|
||||
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="7%">
|
||||
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top"><b>−keep</b></p> </td>
|
||||
<td width="4%"></td>
|
||||
<td width="58%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">Keep a backup of
|
||||
the modified file(s).</p></td>
|
||||
<td width="20%">
|
||||
</td>
|
||||
</table>
|
||||
|
||||
<p style="margin-left:22%;">The files that use the backup
|
||||
names prior to the program execution are <i>not</i>
|
||||
overwritten.</p>
|
||||
|
||||
<p style="margin-left:11%;"><b>−log</b>
|
||||
<i>file</i></p>
|
||||
|
||||
<p style="margin-left:22%;">Log messages to <i>file</i>.
|
||||
For safety reasons, <i>file</i> must have the extension
|
||||
<tt>.log</tt>.</p>
|
||||
|
||||
<p style="margin-left:11%;"><b>−out</b>
|
||||
<i>file</i></p>
|
||||
|
||||
<p style="margin-left:22%;">Write output file to
|
||||
<i>file</i>. The command line must contain exactly one input
|
||||
file.</p>
|
||||
|
||||
<p style="margin-left:11%;"><b>−preserve</b></p>
|
||||
|
||||
<p style="margin-left:22%;">Preserve file attributes (time
|
||||
stamps, file access rights, etc.) where applicable.</p>
|
||||
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="9%">
|
||||
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top"><b>−quiet</b></p> </td>
|
||||
<td width="2%"></td>
|
||||
<td width="27%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">Run in quiet
|
||||
mode.</p> </td>
|
||||
<td width="51%">
|
||||
</td>
|
||||
</table>
|
||||
|
||||
<p style="margin-left:22%;">These messages are still
|
||||
written to the log file if the option <b>−log</b> is
|
||||
in effect.</p>
|
||||
|
||||
<p style="margin-left:11%;"><b>−simulate</b></p>
|
||||
|
||||
<p style="margin-left:22%;">Run in simulation mode: perform
|
||||
the trials, but do not create output files.</p>
|
||||
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="7%">
|
||||
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top"><b>−snip</b></p> </td>
|
||||
<td width="4%"></td>
|
||||
<td width="78%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">Cut one image out
|
||||
of multi-image, animation or video file(s).</p></td>
|
||||
</table>
|
||||
|
||||
<p style="margin-left:22%;">Depending on the input format,
|
||||
this may be either the first or the most relevant (e.g. the
|
||||
largest) image.</p>
|
||||
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="3%">
|
||||
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top"><b>−v</b></p> </td>
|
||||
<td width="8%"></td>
|
||||
<td width="63%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">Enable the options
|
||||
<b>−verbose</b> and <b>−version</b>.</p></td>
|
||||
<td width="15%">
|
||||
</td>
|
||||
</table>
|
||||
|
||||
<p style="margin-left:11%;"><b>−verbose</b></p>
|
||||
|
||||
<p style="margin-left:22%;">Run in verbose mode.</p>
|
||||
|
||||
<p style="margin-left:11%;"><b>−version</b></p>
|
||||
|
||||
<p style="margin-left:22%;">Show copyright, version and
|
||||
build info.</p>
|
||||
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="3%">
|
||||
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top"><b>−−</b></p> </td>
|
||||
<td width="8%"></td>
|
||||
<td width="41%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">Stop option switch
|
||||
parsing.</p> </td>
|
||||
<td width="37%">
|
||||
</td>
|
||||
</table>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em"><b>PNG encoding
|
||||
and optimization options <br>
|
||||
−f</b> <i>filters</i></p>
|
||||
|
||||
<p style="margin-left:22%;">Select the PNG delta filters.
|
||||
<br>
|
||||
The <i>filters</i> argument is specified as a rangeset (e.g.
|
||||
<b>−f0−5</b>), and the default <i>filters</i>
|
||||
value depends on the optimization level set by the option
|
||||
<b>−o</b>. <br>
|
||||
The filter values 0, 1, 2, 3 and 4 indicate static
|
||||
filtering, and correspond to the standard PNG filter codes
|
||||
(<i>None</i>, <i>Left</i>, <i>Up</i>, <i>Average</i> and
|
||||
<i>Paeth</i>, respectively). The filter value 5 indicates
|
||||
adaptive filtering, whose effect is defined by the
|
||||
<b>libpng</b>(3) library used by <b>OptiPNG</b>.</p>
|
||||
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="7%">
|
||||
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top"><b>−full</b></p> </td>
|
||||
<td width="4%"></td>
|
||||
<td width="78%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">Produce a full
|
||||
report on IDAT. This option might slow down the trials.</p></td>
|
||||
</table>
|
||||
|
||||
<p style="margin-left:11%;"><b>−i</b> <i>type</i></p>
|
||||
|
||||
<p style="margin-left:22%;">Select the interlace type
|
||||
(0−1). <br>
|
||||
If the interlace type 0 is selected, the output image shall
|
||||
be non-interlaced (i.e. progressive-scanned). If the
|
||||
interlace type 1 is selected, the output image shall be
|
||||
interlaced using the <i>Adam7</i> method. <br>
|
||||
By default, the output shall have the same interlace type as
|
||||
the input.</p>
|
||||
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="4%">
|
||||
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top"><b>−nb</b></p> </td>
|
||||
<td width="7%"></td>
|
||||
<td width="78%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">Do not apply bit
|
||||
depth reduction.</p></td>
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="4%">
|
||||
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top"><b>−nc</b></p> </td>
|
||||
<td width="7%"></td>
|
||||
<td width="78%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">Do not apply color
|
||||
type reduction.</p></td>
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="4%">
|
||||
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top"><b>−np</b></p> </td>
|
||||
<td width="7%"></td>
|
||||
<td width="78%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">Do not apply
|
||||
palette reduction.</p></td>
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="4%">
|
||||
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top"><b>−nx</b></p> </td>
|
||||
<td width="7%"></td>
|
||||
<td width="78%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">Do not apply any
|
||||
lossless image reduction: enable the options
|
||||
<b>−nb</b>, <b>−nc</b> and <b>−np</b>.</p></td>
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="4%">
|
||||
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top"><b>−nz</b></p> </td>
|
||||
<td width="7%"></td>
|
||||
<td width="78%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">Do not recode IDAT
|
||||
datastreams.</p> </td>
|
||||
</table>
|
||||
|
||||
<p style="margin-left:22%;">The IDAT optimization
|
||||
operations that do not require recoding (e.g. IDAT chunk
|
||||
concatenation) are still performed. <br>
|
||||
This option has effect on PNG input files only.</p>
|
||||
|
||||
<p style="margin-left:11%;"><b>−zc</b>
|
||||
<i>levels</i></p>
|
||||
|
||||
<p style="margin-left:22%;">Select the zlib compression
|
||||
levels used in IDAT compression. <br>
|
||||
The <i>levels</i> argument is specified as a rangeset (e.g.
|
||||
<b>−zc6−9</b>), and the default <i>levels</i>
|
||||
value depends on the optimization level set by the option
|
||||
<b>−o</b>. <br>
|
||||
The effect of this option is defined by the <b>zlib</b>(3)
|
||||
library used by <b>OptiPNG</b>.</p>
|
||||
|
||||
<p style="margin-left:11%;"><b>−zm</b>
|
||||
<i>levels</i></p>
|
||||
|
||||
<p style="margin-left:22%;">Select the zlib memory levels
|
||||
used in IDAT compression. <br>
|
||||
The <i>levels</i> argument is specified as a rangeset (e.g.
|
||||
<b>-zm8−9</b>), and the default <i>levels</i> value
|
||||
depends on the optimization level set by the option
|
||||
<b>−o</b>. <br>
|
||||
The effect of this option is defined by the <b>zlib</b>(3)
|
||||
library used by <b>OptiPNG</b>.</p>
|
||||
|
||||
<p style="margin-left:11%;"><b>−zs</b>
|
||||
<i>strategies</i></p>
|
||||
|
||||
<p style="margin-left:22%;">Select the zlib compression
|
||||
strategies used in IDAT compression. <br>
|
||||
The <i>strategies</i> argument is specified as a rangeset
|
||||
(e.g. <b>-zs0−3</b>), and the default
|
||||
<i>strategies</i> value depends on the optimization level
|
||||
set by the option <b>−o</b>. <br>
|
||||
The effect of this option is defined by the <b>zlib</b>(3)
|
||||
library used by <b>OptiPNG</b>.</p>
|
||||
|
||||
<p style="margin-left:11%;"><b>−zw</b>
|
||||
<i>size</i></p>
|
||||
|
||||
<p style="margin-left:22%;">Select the zlib window size
|
||||
(32k,16k,8k,4k,2k,1k,512,256) used in IDAT compression. <br>
|
||||
The <i>size</i> argument can be specified either in bytes
|
||||
(e.g. 16384) or kilobytes (e.g. 16k). The default
|
||||
<i>size</i> value is set to the lowest window size that
|
||||
yields an IDAT output as big as if yielded by the value
|
||||
32768. <br>
|
||||
The effect of this option is defined by the <b>zlib</b>(3)
|
||||
library used by <b>OptiPNG</b>.</p>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em"><b>Notes</b>
|
||||
<br>
|
||||
Options may come in any order (except for
|
||||
<b>−−</b>), before, after, or alternating with
|
||||
file names. Option names are case-insensitive and may be
|
||||
abbreviated to their shortest unique prefix.</p>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em">Some options
|
||||
may have arguments that follow the option name, separated by
|
||||
whitespace or the equal sign (’<b>=</b>’). If
|
||||
the option argument is a number or a rangeset, the separator
|
||||
may be omitted. For example:</p>
|
||||
|
||||
|
||||
<p style="margin-left:22%; margin-top: 1em"><b>−out</b>
|
||||
<tt>newfile.png</tt> <=>
|
||||
<b>−out=</b><tt>newfile.png</tt> <b><br>
|
||||
−o3</b> <=> <b>−o 3</b> <=>
|
||||
<b>−o=3 <br>
|
||||
−f0,3−5</b> <=>
|
||||
<b>−f 0,3−5</b> <=>
|
||||
<b>−f=0,3−5</b></p>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em">Rangeset
|
||||
arguments are cumulative; e.g.</p>
|
||||
|
||||
<p style="margin-left:22%; margin-top: 1em"><b>−f0
|
||||
−f3−5</b> <=> <b>−f0,3−5 <br>
|
||||
−zs0 −zs1 −zs2−3</b> <=>
|
||||
<b>−zs0,1,2,3</b> <=>
|
||||
<b>−zs0−3</b></p>
|
||||
|
||||
<a name="EXTENDED DESCRIPTION"></a>
|
||||
<h2>EXTENDED DESCRIPTION</h2>
|
||||
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em">The PNG
|
||||
optimization algorithm consists of the following steps:</p>
|
||||
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="3%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">1.</p></td>
|
||||
<td width="3%"></td>
|
||||
<td width="83%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">Reduce the bit
|
||||
depth, the color type and the color palette of the image.
|
||||
This step may reduce the size of the uncompressed image,
|
||||
which, indirectly, may reduce the size of the compressed
|
||||
image (i.e. the size of the output PNG file).</p></td>
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="3%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">2.</p></td>
|
||||
<td width="3%"></td>
|
||||
<td width="83%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">Run a suite of
|
||||
compression methods and strategies and select the
|
||||
compression parameters that yield the smallest output
|
||||
file.</p> </td>
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="3%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">3.</p></td>
|
||||
<td width="3%"></td>
|
||||
<td width="83%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">Store all IDAT
|
||||
contents into a single chunk, eliminating the overhead
|
||||
incurred by repeated IDAT headers and CRCs.</p></td>
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="3%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">4.</p></td>
|
||||
<td width="3%"></td>
|
||||
<td width="83%">
|
||||
|
||||
|
||||
<p style="margin-top: 1em" valign="top">Set the zlib window
|
||||
size inside IDAT to a mininum that does not affect the
|
||||
compression ratio, reducing the memory requirements of PNG
|
||||
decoders.</p> </td>
|
||||
</table>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em">Not all of the
|
||||
above steps need to be executed. The behavior depends on the
|
||||
actual input files and user options.</p>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em">Step 1 may be
|
||||
customized via the no-reduce options <b>−nb</b>,
|
||||
<b>−nc</b>, <b>−np</b> and <b>−nx</b>.
|
||||
Step 2 may be customized via the <b>−o</b> option, and
|
||||
may be fine-tuned via the options <b>−zc</b>,
|
||||
<b>−zm</b>, <b>−zs</b> and <b>−zw</b>.
|
||||
Step 3 is always executed. Step 4 is executed only if a new
|
||||
IDAT is being created, and may be fine-tuned via the option
|
||||
<b>−zw</b>.</p>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em">Extremely
|
||||
exhaustive searches are not generally expected to yield
|
||||
significant improvements in compression ratio, and are
|
||||
recommended to advanced users only.</p>
|
||||
|
||||
<a name="EXAMPLES"></a>
|
||||
<h2>EXAMPLES</h2>
|
||||
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em"><tt>optipng
|
||||
file1.png file2.gif file3.tif</tt></p>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em"><tt>optipng
|
||||
−o5 file1.png file2.gif file3.tif</tt></p>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em"><tt>optipng
|
||||
−i1 −o7 −v −full −sim
|
||||
experiment.png</tt></p>
|
||||
|
||||
<a name="BUGS"></a>
|
||||
<h2>BUGS</h2>
|
||||
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em">Lossless image
|
||||
reductions are not completely implemented. (This does NOT
|
||||
affect the integrity of the output files.) Here are the
|
||||
missing pieces:</p>
|
||||
|
||||
<p style="margin-left:22%; margin-top: 1em">− The
|
||||
color palette reductions are implemented only partially.
|
||||
<br>
|
||||
− The bit depth reductions below 8, for grayscale
|
||||
images, are not implemented yet.</p>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em">TIFF support is
|
||||
limited to uncompressed, PNG-compatible (grayscale, RGB and
|
||||
RGBA) images.</p>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em">Metadata is not
|
||||
imported from the external image formats.</p>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em">There is no
|
||||
support for pipes or streams.</p>
|
||||
|
||||
<a name="SEE ALSO"></a>
|
||||
<h2>SEE ALSO</h2>
|
||||
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em"><b>png</b>(5),
|
||||
<b>libpng</b>(3), <b>zlib</b>(3), <b>pngcrush</b>(1),
|
||||
<b>pngrewrite</b>(1).</p>
|
||||
|
||||
<a name="STANDARDS"></a>
|
||||
<h2>STANDARDS</h2>
|
||||
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em">The files
|
||||
produced by <b>OptiPNG</b> are compliant with
|
||||
<b>PNG−2003</b>: <br>
|
||||
Glenn Randers-Pehrson et al. <i>Portable Network Graphics
|
||||
(PNG) Specification, Second Edition</i>. <br>
|
||||
W3C Recommendation 10 November 2003; ISO/IEC IS 15948:2003
|
||||
(E). <tt><br>
|
||||
http://www.w3.org/TR/PNG/</tt></p>
|
||||
|
||||
<a name="AUTHOR"></a>
|
||||
<h2>AUTHOR</h2>
|
||||
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em"><b>OptiPNG</b>
|
||||
is written and maintained by Cosmin Truta.</p>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em">This manual
|
||||
page was originally written by Nelson A. de Oliveira for the
|
||||
Debian Project. It was later updated by Cosmin Truta, and is
|
||||
now part of the <b>OptiPNG</b> distribution.</p>
|
||||
<hr>
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
@@ -1,280 +0,0 @@
|
||||
OPTIPNG(1) OPTIPNG(1)
|
||||
|
||||
NAME
|
||||
OptiPNG - Advanced optimization program for Portable Network Graphics
|
||||
(PNG)
|
||||
|
||||
SYNOPSIS
|
||||
optipng [-? | -h | -help]
|
||||
optipng [options...] files...
|
||||
|
||||
DESCRIPTION
|
||||
The OptiPNG program shall attempt to optimize PNG files, i.e. reduce
|
||||
their size to a minimum, without losing any information. In addition,
|
||||
this program shall perform a suite of auxiliary functions like
|
||||
integrity checks, metadata recovery and pixmap-to-PNG conversion.
|
||||
|
||||
The optimization attempts are not guaranteed to succeed. Valid PNG
|
||||
files that cannot be optimized by this program are normally left
|
||||
intact; their size will not grow. The user may request to override this
|
||||
default behavior.
|
||||
|
||||
FILES
|
||||
The input files are raster image files encoded either in PNG format
|
||||
(the native format), or in an external format. The currently supported
|
||||
external formats are GIF, BMP, PNM and TIFF.
|
||||
|
||||
OptiPNG processes each image file given in the command line as follows:
|
||||
|
||||
- If it is in PNG format:
|
||||
|
||||
Attempt to optimize the given file in-place. If optimization is
|
||||
successful, or if the option -force is in effect, replace the
|
||||
original file with its optimized version. The original file is
|
||||
backed up if the option -keep is in effect.
|
||||
|
||||
- If it is in an external format:
|
||||
|
||||
Create an optimized PNG version of the given file. The output
|
||||
file name is composed from the original file name and the .png
|
||||
extension.
|
||||
|
||||
OPTIONS
|
||||
General options
|
||||
-?, -h, -help
|
||||
Show a complete summary of options.
|
||||
|
||||
-o level
|
||||
Select the optimization level.
|
||||
The optimization level 0 enables a set of optimization opera-
|
||||
tions that require minimal effort. There will be no changes to
|
||||
image attributes like bit depth or color type, and no recompres-
|
||||
sion of existing IDAT datastreams.
|
||||
The optimization level 1 enables a single IDAT compression
|
||||
trial. The trial chosen is what OptiPNG thinks it's probably the
|
||||
most effective.
|
||||
The optimization levels 2 and higher enable multiple IDAT com-
|
||||
pression trials; the higher the level, the more trials.
|
||||
The behavior and the default value of this option may change
|
||||
across different program versions. Use the option -h to see the
|
||||
details pertaining to your specific version.
|
||||
|
||||
-dir directory
|
||||
Write output file(s) to directory.
|
||||
|
||||
-fix Enable error recovery. This option has no effect on valid input
|
||||
files.
|
||||
The program will spend a reasonable amount of effort to recover
|
||||
as much data as possible, without increasing the output file
|
||||
size, but the success cannot be generally guaranteed. The pro-
|
||||
gram may even increase the file size, e.g., by reconstructing
|
||||
missing critical data. Under this option, integrity shall take
|
||||
precedence over file size.
|
||||
When this option is not used, the invalid input files are left
|
||||
unprocessed.
|
||||
|
||||
-force Enforce writing of a new output file.
|
||||
This option overrides the program's decision not to write such
|
||||
file, e.g. when the PNG input is digitally signed (using dSIG),
|
||||
or when the PNG output becomes larger than the PNG input.
|
||||
|
||||
-keep Keep a backup of the modified file(s).
|
||||
The files that use the backup names prior to the program execu-
|
||||
tion are not overwritten.
|
||||
|
||||
-log file
|
||||
Log messages to file. For safety reasons, file must have the
|
||||
extension .log.
|
||||
|
||||
-out file
|
||||
Write output file to file. The command line must contain
|
||||
exactly one input file.
|
||||
|
||||
-preserve
|
||||
Preserve file attributes (time stamps, file access rights, etc.)
|
||||
where applicable.
|
||||
|
||||
-quiet Run in quiet mode.
|
||||
These messages are still written to the log file if the option
|
||||
-log is in effect.
|
||||
|
||||
-simulate
|
||||
Run in simulation mode: perform the trials, but do not create
|
||||
output files.
|
||||
|
||||
-snip Cut one image out of multi-image, animation or video file(s).
|
||||
Depending on the input format, this may be either the first or
|
||||
the most relevant (e.g. the largest) image.
|
||||
|
||||
-v Enable the options -verbose and -version.
|
||||
|
||||
-verbose
|
||||
Run in verbose mode.
|
||||
|
||||
-version
|
||||
Show copyright, version and build info.
|
||||
|
||||
-- Stop option switch parsing.
|
||||
|
||||
PNG encoding and optimization options
|
||||
-f filters
|
||||
Select the PNG delta filters.
|
||||
The filters argument is specified as a rangeset (e.g. -f0-5),
|
||||
and the default filters value depends on the optimization level
|
||||
set by the option -o.
|
||||
The filter values 0, 1, 2, 3 and 4 indicate static filtering,
|
||||
and correspond to the standard PNG filter codes (None, Left, Up,
|
||||
Average and Paeth, respectively). The filter value 5 indicates
|
||||
adaptive filtering, whose effect is defined by the libpng(3)
|
||||
library used by OptiPNG.
|
||||
|
||||
-full Produce a full report on IDAT. This option might slow down the
|
||||
trials.
|
||||
|
||||
-i type
|
||||
Select the interlace type (0-1).
|
||||
If the interlace type 0 is selected, the output image shall be
|
||||
non-interlaced (i.e. progressive-scanned). If the interlace type
|
||||
1 is selected, the output image shall be interlaced using the
|
||||
Adam7 method.
|
||||
By default, the output shall have the same interlace type as the
|
||||
input.
|
||||
|
||||
-nb Do not apply bit depth reduction.
|
||||
|
||||
-nc Do not apply color type reduction.
|
||||
|
||||
-np Do not apply palette reduction.
|
||||
|
||||
-nx Do not apply any lossless image reduction: enable the options
|
||||
-nb, -nc and -np.
|
||||
|
||||
-nz Do not recode IDAT datastreams.
|
||||
The IDAT optimization operations that do not require recoding
|
||||
(e.g. IDAT chunk concatenation) are still performed.
|
||||
This option has effect on PNG input files only.
|
||||
|
||||
-zc levels
|
||||
Select the zlib compression levels used in IDAT compression.
|
||||
The levels argument is specified as a rangeset (e.g. -zc6-9),
|
||||
and the default levels value depends on the optimization level
|
||||
set by the option -o.
|
||||
The effect of this option is defined by the zlib(3) library used
|
||||
by OptiPNG.
|
||||
|
||||
-zm levels
|
||||
Select the zlib memory levels used in IDAT compression.
|
||||
The levels argument is specified as a rangeset (e.g. -zm8-9),
|
||||
and the default levels value depends on the optimization level
|
||||
set by the option -o.
|
||||
The effect of this option is defined by the zlib(3) library used
|
||||
by OptiPNG.
|
||||
|
||||
-zs strategies
|
||||
Select the zlib compression strategies used in IDAT compression.
|
||||
The strategies argument is specified as a rangeset (e.g.
|
||||
-zs0-3), and the default strategies value depends on the opti-
|
||||
mization level set by the option -o.
|
||||
The effect of this option is defined by the zlib(3) library used
|
||||
by OptiPNG.
|
||||
|
||||
-zw size
|
||||
Select the zlib window size (32k,16k,8k,4k,2k,1k,512,256) used
|
||||
in IDAT compression.
|
||||
The size argument can be specified either in bytes (e.g. 16384)
|
||||
or kilobytes (e.g. 16k). The default size value is set to the
|
||||
lowest window size that yields an IDAT output as big as if
|
||||
yielded by the value 32768.
|
||||
The effect of this option is defined by the zlib(3) library used
|
||||
by OptiPNG.
|
||||
|
||||
Notes
|
||||
Options may come in any order (except for --), before, after, or alter-
|
||||
nating with file names. Option names are case-insensitive and may be
|
||||
abbreviated to their shortest unique prefix.
|
||||
|
||||
Some options may have arguments that follow the option name, separated
|
||||
by whitespace or the equal sign ('='). If the option argument is a num-
|
||||
ber or a rangeset, the separator may be omitted. For example:
|
||||
|
||||
-out newfile.png <=> -out=newfile.png
|
||||
-o3 <=> -o 3 <=> -o=3
|
||||
-f0,3-5 <=> -f 0,3-5 <=> -f=0,3-5
|
||||
|
||||
Rangeset arguments are cumulative; e.g.
|
||||
|
||||
-f0 -f3-5 <=> -f0,3-5
|
||||
-zs0 -zs1 -zs2-3 <=> -zs0,1,2,3 <=> -zs0-3
|
||||
|
||||
EXTENDED DESCRIPTION
|
||||
The PNG optimization algorithm consists of the following steps:
|
||||
|
||||
1. Reduce the bit depth, the color type and the color palette of the
|
||||
image. This step may reduce the size of the uncompressed image,
|
||||
which, indirectly, may reduce the size of the compressed image
|
||||
(i.e. the size of the output PNG file).
|
||||
|
||||
2. Run a suite of compression methods and strategies and select the
|
||||
compression parameters that yield the smallest output file.
|
||||
|
||||
3. Store all IDAT contents into a single chunk, eliminating the over-
|
||||
head incurred by repeated IDAT headers and CRCs.
|
||||
|
||||
4. Set the zlib window size inside IDAT to a mininum that does not
|
||||
affect the compression ratio, reducing the memory requirements of
|
||||
PNG decoders.
|
||||
|
||||
Not all of the above steps need to be executed. The behavior depends on
|
||||
the actual input files and user options.
|
||||
|
||||
Step 1 may be customized via the no-reduce options -nb, -nc, -np and
|
||||
-nx. Step 2 may be customized via the -o option, and may be fine-tuned
|
||||
via the options -zc, -zm, -zs and -zw. Step 3 is always executed. Step
|
||||
4 is executed only if a new IDAT is being created, and may be fine-
|
||||
tuned via the option -zw.
|
||||
|
||||
Extremely exhaustive searches are not generally expected to yield sig-
|
||||
nificant improvements in compression ratio, and are recommended to
|
||||
advanced users only.
|
||||
|
||||
EXAMPLES
|
||||
optipng file1.png file2.gif file3.tif
|
||||
|
||||
optipng -o5 file1.png file2.gif file3.tif
|
||||
|
||||
optipng -i1 -o7 -v -full -sim experiment.png
|
||||
|
||||
BUGS
|
||||
Lossless image reductions are not completely implemented. (This does
|
||||
NOT affect the integrity of the output files.) Here are the missing
|
||||
pieces:
|
||||
|
||||
- The color palette reductions are implemented only partially.
|
||||
- The bit depth reductions below 8, for grayscale images, are
|
||||
not implemented yet.
|
||||
|
||||
TIFF support is limited to uncompressed, PNG-compatible (grayscale, RGB
|
||||
and RGBA) images.
|
||||
|
||||
Metadata is not imported from the external image formats.
|
||||
|
||||
There is no support for pipes or streams.
|
||||
|
||||
SEE ALSO
|
||||
png(5), libpng(3), zlib(3), pngcrush(1), pngrewrite(1).
|
||||
|
||||
STANDARDS
|
||||
The files produced by OptiPNG are compliant with PNG-2003:
|
||||
Glenn Randers-Pehrson et al. Portable Network Graphics (PNG) Specifi-
|
||||
cation, Second Edition.
|
||||
W3C Recommendation 10 November 2003; ISO/IEC IS 15948:2003 (E).
|
||||
http://www.w3.org/TR/PNG/
|
||||
|
||||
AUTHOR
|
||||
OptiPNG is written and maintained by Cosmin Truta.
|
||||
|
||||
This manual page was originally written by Nelson A. de Oliveira for
|
||||
the Debian Project. It was later updated by Cosmin Truta, and is now
|
||||
part of the OptiPNG distribution.
|
||||
|
||||
OptiPNG version 0.6.4 2010-March-14 OPTIPNG(1)
|
||||
@@ -1,634 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta name="Author" content="Cosmin Truţa">
|
||||
<title>A guide to PNG optimization</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h2>A guide to PNG optimization</h2>
|
||||
|
||||
<h3>1. Background</h3>
|
||||
|
||||
<h4>1.1 The PNG file format</h4>
|
||||
|
||||
<p>
|
||||
The <a href="http://www.libpng.org/pub/png/">Portable Network Graphics</a>
|
||||
(<b><i>PNG</i></b>) is a format for storing compressed raster graphics. The
|
||||
compression engine is based on the <b><i>Deflate</i></b> method
|
||||
[<a href="http://www.ietf.org/rfc/rfc1951">RFC1951</a>],
|
||||
designed by
|
||||
<a href="http://www.pkware.com/">PKWare</a>
|
||||
and originally used in <b>PKZIP</b>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The PNG format is defined by the
|
||||
<a href="http://www.libpng.org/pub/png/spec/">PNG Specification</a>.
|
||||
This specification was developed by an ad-hoc group named the
|
||||
<a href="http://www.libpng.org/pub/png/">PNG Development Group</a>, and it is
|
||||
both an International Standard (published under the formal name
|
||||
ISO/IEC 15948) and a W3C Recommendation.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
PNG was initially intended as a superior, patent-free replacement of GIF. The
|
||||
final outcome is a modern, extensible, reliable image format, capable to handle
|
||||
an impressive number of image types (from 1-bit black-and-white images up to
|
||||
48-bit RGB images with a full 16-bit alpha channel), and geared by a
|
||||
significantly stronger lossless compression engine (typically 5-25% better than
|
||||
GIF).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Unlike other lossless compression schemes, PNG compression does not depend
|
||||
solely on the statistics of the input, but it may vary within wide limits,
|
||||
depending on the compressor's implementation. A good PNG encoder must be
|
||||
able to take informed decisions about the factors that affect the size of the
|
||||
output. The purpose of this article is to provide information about these
|
||||
factors, and to give advice on implementing efficient PNG encoders.
|
||||
</p>
|
||||
|
||||
|
||||
<h4>1.2 The PNG compression</h4>
|
||||
|
||||
<p>
|
||||
The PNG compression works in a pipeline manner.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In the first stage, the image pixels are passed through a lossless arithmetic
|
||||
transformation named <b><i>delta filtering</i></b>, or simply
|
||||
<b><i>filtering</i></b>, and sent further as a (filtered) byte sequence.
|
||||
Filtering does not compress or otherwise reduce the size of the data, but it
|
||||
makes the data more compressible.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In the second stage, the filtered byte sequence is passed through the
|
||||
Ziv-Lempel algorithm (LZ77), producing LZ77 codes that are further compressed
|
||||
by the Huffman algorithm in the third and final stage. The combination of the
|
||||
last two stages is referred to as the <b><i>Deflate compression</i></b>, a
|
||||
widely-used, patent-free algorithm for universal, lossless data compression.
|
||||
The maximum size of the LZ77 sliding window in Deflate is 32768 bytes, and the
|
||||
LZ77 matches can be between 3 and 258 bytes long.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
A complete description of the PNG compression is beyond the scope of this
|
||||
guide. The PNG Specification describes the format completely, and provides
|
||||
a complete list of references to the underlying technologies.
|
||||
</p>
|
||||
|
||||
|
||||
<h3>2. Factors that affect the PNG file size</h3>
|
||||
|
||||
<div>
|
||||
Like any other compression scheme, PNG compression depends on the statistics
|
||||
of the input data. In addition, it depends on the following PNG-specific
|
||||
parameters:
|
||||
</div>
|
||||
<ol>
|
||||
<li>
|
||||
The PNG image type
|
||||
</li>
|
||||
<li>
|
||||
The PNG delta filters
|
||||
</li>
|
||||
<li>
|
||||
The strategy of searching LZ77 matches
|
||||
</li>
|
||||
<li>
|
||||
The size of the Huffman buffers inside the Deflate encoder
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
<p>
|
||||
Depending on how these parameters are chosen by the implementation, PNG
|
||||
compression may vary within wide limits. The process of selecting the best
|
||||
configuration is computationally infeasible, but heuristics to select a
|
||||
satisfactory configuration are available. The problem of improving these
|
||||
heuristics constitutes an interesting subject for research.
|
||||
</p>
|
||||
|
||||
|
||||
<h4>2.1 The PNG image type</h4>
|
||||
|
||||
<p>
|
||||
The type of a PNG image is defined in the <b><code>IHDR</code></b> image
|
||||
header. The image has a certain bit depth, up to 16 bits per sample, and a
|
||||
certain color type, from Grayscale to RGB+Alpha. If two PNG files of different
|
||||
types represent exactly the same image, each file can be regarded as a lossless
|
||||
transformation of the other. A lossless transformation can reduce the
|
||||
<i>uncompressed</i> stream, and such a transformation is named <b><i>image
|
||||
reduction</i></b>. In most cases, image reductions are capable of reducing the
|
||||
<i>compressed</i> stream (which is, in fact, our interest), as an indirect
|
||||
effect of reducing the size of the compressor's input.
|
||||
</p>
|
||||
|
||||
<div>
|
||||
The possible image reductions are:
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
<i>Bit depth reduction</i>
|
||||
<br>
|
||||
The bit depth can be reduced to a minimum value that is acceptable for all
|
||||
samples. For example, if all sample values in a 16-bit image have the form
|
||||
(256+1)*<i>n</i>, (e.g. #0000, #2323, #FFFF), then the bit depth can be
|
||||
reduced to 8, and the new sample values will become <i>n</i>, (e.g. #00, #23,
|
||||
#FF).
|
||||
</li>
|
||||
<li>
|
||||
<i>Color type reduction</i>
|
||||
<br>
|
||||
- If an RGB image has 256 distinct colors or less, it can be reencoded as a
|
||||
Palette image.
|
||||
<br>
|
||||
- If an RGB or Palette image has only gray pixels, it can be reencoded as
|
||||
Grayscale.
|
||||
<br>
|
||||
A color type reduction can also enable a bit depth reduction.
|
||||
</li>
|
||||
<li>
|
||||
<i>Color palette reduction</i>
|
||||
<br>
|
||||
If the color palette contains redundant entries (i.e. duplicate entries that
|
||||
indicate the same RGB value) or sterile entries (i.e. entries that do not
|
||||
have a correspondent in the raw pixel data), these entries can be removed.
|
||||
<br>
|
||||
A color palette reduction can also enable a bit depth reduction.
|
||||
</li>
|
||||
<li>
|
||||
<i>Alpha channel reduction</i>
|
||||
<br>
|
||||
If all pixels in a Grayscale+Alpha or an RGB+Alpha image are fully opaque
|
||||
(i.e. all alpha components are equal to 2^<sup>bitdepth</sup>-1), or if the
|
||||
transparency information can be stored entirely in a (much cheaper)
|
||||
<b><code>tRNS</code></b> chunk, the alpha channel can be stripped.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
There are, however, a few cases when some image type reductions do not
|
||||
necessarily lead to the reduction of the compressed stream. The
|
||||
<a href="http://www.cs.toronto.edu/~cosmin/pngtech/">PNG-Tech</a> site contains
|
||||
experimental analyses of these possibilities; for example, see the article
|
||||
<a href="8bpp.html">8 bits per pixel in paletted images</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Interlacing, useful for a faster, progressive rendering, is another component
|
||||
of the PNG image type that affects compression. In an interlaced stream, the
|
||||
samples corresponding to neighboring pixels are stored far away, hence the data
|
||||
in it is less correlated and less compressible. Unlike JPEG, where interlacing
|
||||
may improve the compression slightly, the PNG interlacing degrades the
|
||||
compression significantly.
|
||||
</p>
|
||||
|
||||
|
||||
<h4>2.2 The PNG delta filters</h4>
|
||||
|
||||
<p>
|
||||
The role of filtering can be illustrated in the following example. Assume the
|
||||
sequence 2, 3, 4, 5, 6, 7, 8, 9. Although it has much redundancy, the sequence
|
||||
is not compressible by a Ziv-Lempel compressor, nor by a Huffman compressor.
|
||||
However, if one makes a simple and reversible transformation, replacing each
|
||||
value with the numerical difference between it and the value to its left, the
|
||||
sequence becomes 2, 1, 1, 1, 1, 1, 1, 1, which is highly compressible.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The PNG format employs five types of filters: <b><i>None</i></b>,
|
||||
<b><i>Left</i></b>, <b><i>Up</i></b>, <b><i>Average</i></b>, and
|
||||
<b><i>Paeth</i></b>. The first filter leaves the original data intact, and the
|
||||
other four are subtracting from each pixel a value that involves the
|
||||
neighbor pixels from the left, up, and/or the upper left.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
A certain filter is assigned to each row, and is applied to all pixels from
|
||||
that row. Therefore, an image can be delta-filtered in a huge number of
|
||||
possible configurations (5 ^ <sup><i>height</i></sup>), and each configuration
|
||||
leads to a different compressed output. Two different filter configurations may
|
||||
make a difference in the compressed file size by a couple of factors, so a
|
||||
careful choice of filters is of paramount importance.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
It is possible to apply a single filter to all rows, or to apply different
|
||||
filters to different rows. In the former case, the filtering process is
|
||||
<b><i>fixed</i></b>; in the latter, it is <b><i>adaptive</i></b>.
|
||||
</p>
|
||||
|
||||
<div>
|
||||
While an exhaustive search is unfeasible, the PNG Specification suggests a
|
||||
heuristic filtering strategy:
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
If the image type is Palette, or the bit depth is smaller than 8, then
|
||||
do not filter the image (i.e. use fixed filtering, with the filter
|
||||
<i>None</i>).
|
||||
</li>
|
||||
<li>
|
||||
(The other case) If the image type is Grayscale or RGB (with or without
|
||||
Alpha), and the bit depth is not smaller than 8, then use adaptive filtering
|
||||
as follows: <i>independently for each row</i>, apply all five filters and
|
||||
select the filter that produces the smallest sum of absolute values per row.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
Cases where the above heuristics are less than optimal are shown on the
|
||||
<a href="http://www.cs.toronto.edu/~cosmin/pngtech/">PNG-Tech</a>
|
||||
site; for example, see
|
||||
<a href="better-filtering.html">Brute-force vs. heuristic filtering</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<h4>2.3 The strategy of searching LZ77 matches</h4>
|
||||
|
||||
<p>
|
||||
The Ziv-Lempel algorithm works under the assumption that contiguous sequences
|
||||
appear repeatedly in the input stream. If the sequence to be encoded matches
|
||||
one or more sequences already present in the sliding history window, the
|
||||
encoder sends a LZ77 pair (<i>distance</i>, <i>length</i>) that points to the
|
||||
<i>closest</i> match. In most LZ77 incarnations, including Deflate, smaller
|
||||
distance codes are encoded more concisely.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In Deflate, in particular, the regular (non-matched) symbols, and the match
|
||||
lengths, are sent to the same Huffman coder, while the match distances are sent
|
||||
to a separate Huffman coder. If the LZ77 matches fall between the accepted
|
||||
boundaries (i.e. they are not shorter than 3 and not longer than 258), a greedy
|
||||
strategy will accept them as a replacement for the symbols to which they
|
||||
correspond.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The greedy strategy is preferable when compressing text files, or many types of
|
||||
binary files, but it may be suboptimal when compressing filtered data, such as
|
||||
the byte strings that come from a PNG filter. Filtered data consist mostly of
|
||||
small values with a pseudo-random distribution. Therefore, in certain
|
||||
situations, it may be desirable to favor the encoding of individual symbols,
|
||||
even if matches that may replace these symbols exist.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The
|
||||
<a href="http://www.zlib.org/">zlib Reference Library</a>
|
||||
is a reference implementation of Deflate, which is further used by the
|
||||
<a href="http://www.libpng.org/pub/png/libpng.html">PNG Reference Library</a>.
|
||||
By default, <b>zlib</b> selects the greedy strategy, but the user is able to
|
||||
specify his or her custom preference via the <code>strategy</code> parameter.
|
||||
This parameter can take one of the following values:
|
||||
<br>
|
||||
- <code>Z_DEFAULT_STRATEGY = 0</code>, the default greedy search strategy.
|
||||
<br>
|
||||
- <code>Z_FILTERED = 1</code>, a strategy in which the matches are accepted
|
||||
only if their length is 6 or bigger.
|
||||
<br>
|
||||
- <code>Z_HUFFMAN_ONLY = 2</code>, a fast strategy in which the Ziv-Lempel
|
||||
algorithm is entirely bypassed, and all the symbols from the input are encoded
|
||||
directly by the Huffman coder.
|
||||
<br>
|
||||
- <code>Z_RLE = 3</code> (appeared in the <b>zlib-1.2.x</b> series), a fast
|
||||
strategy in which the LZ77 algorithm is essentially reduced to the Run-Length
|
||||
Encoding algorithm. In other words, the matches are accepted only if their
|
||||
distance is 1. For example, the 10-symbol sequence "<code>aaaaaaaaaa</code>"
|
||||
can be LZ77-encoded as
|
||||
['<code>a</code>', (<i>distance</i>=1, <i>length</i>=9)];
|
||||
by removing <i>distance</i>=1 from the picture, this encoding can be regarded
|
||||
as a peculiar run-length encoding (which differs from the classic RLE by using
|
||||
<i>length</i>=9 instead of <i>count</i>=10).
|
||||
<br>
|
||||
The <code>strategy</code> parameter affects only the compression ratio. It does
|
||||
not affect the correctness of the compressed output, even if it is set to an
|
||||
inappropriate value.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
It was experimentally observed that the LZ77 search is occasionally capable of
|
||||
producing smaller PNGs if it is less exhaustive. The reason behind this act
|
||||
resides in the same category of "strategic searches" discussed here.
|
||||
Unfortunately, there is no known method of anticipating which search level
|
||||
(from the fastest and the least exhaustive, to the slowest and the most
|
||||
exhaustive) is better, other than assuming "the most exhaustive is better in
|
||||
most cases".
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Unfortunately, even a "filtered" strategy does not always produce better
|
||||
results than a "greedy" strategy on filtered input, and the only known method
|
||||
to obtain the best combination is by multiple trials. Experiments and
|
||||
measurements can, again, be found on the
|
||||
<a href="http://www.cs.toronto.edu/~cosmin/pngtech/">PNG-Tech</a>
|
||||
site; for example, see the original
|
||||
<a href="z_rle.html">Z_RLE strategy proposal</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<h4>2.4 The size of Huffman buffers</h4>
|
||||
|
||||
<p>
|
||||
As mentioned earlier, the entropy encoder inside the Deflate method is the
|
||||
static Huffman algorithm. The output of LZ77 is fed into a buffer which is
|
||||
occasionally flushed by sending a static Huffman tree followed by all the
|
||||
Huffman codes, to the output of Deflate. After this, both the buffer and the
|
||||
Huffman tree are reset, waiting for the subsequent LZ77 codes to come and
|
||||
refill the buffer.
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
The Deflate specification refers to <i>dynamic Huffman codes</i>. However, this
|
||||
is a misnomer, in which the term <i>dynamic</i> is used in contrast to the
|
||||
<i>fixed</i> Huffman codes. The fixed Huffman codes are simply built according
|
||||
to a predefined Huffman tree, without regard to the actual symbol frequencies.
|
||||
The dynamic Huffman codes referred to by the Deflate specification are NOT
|
||||
built by the dynamic Huffman algorithm, as defined, for example, by Faller,
|
||||
Gallager and Knuth (the FGK algorithm), or by Vitter (the V algorithm).
|
||||
The predefined Huffman tree was introduced in <b>PKZIP</b> as a fast
|
||||
compression alternative, but it produces poor results even on text, and it is
|
||||
almost useless in PNG compression. Still, a PNG stream that contains codes
|
||||
built by the fixed (predefined) Huffman tree, is a valid stream, and a
|
||||
compliant PNG reader must decode this stream correctly.
|
||||
</blockquote>
|
||||
|
||||
<p>
|
||||
It is desirable to establish the buffer boundaries so that sequences conforming
|
||||
to the same probability model are fit in the same Huffman buffer. Methods for
|
||||
approaching these boundaries exist, but they are not used in the mainstream
|
||||
Deflate implementation(s). Instead, the buffers are flushed when a limit
|
||||
(typically, 16k LZ77 codes) is reached. This is, however, a fast approach, and
|
||||
the results are satisfactory.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The size of Huffman buffers is indirectly determined by the encoder's memory
|
||||
(usage) level. For this reason, certain memory levels might be good for certain
|
||||
types of images.
|
||||
</p>
|
||||
|
||||
|
||||
<h3>3. PNG (lossless) optimization programs</h3>
|
||||
|
||||
<p>
|
||||
The multitude of PNG encoding programs is listed at
|
||||
<a href="http://www.libpng.org/pub/png/pngapps.html">http://www.libpng.org/pub/png/pngapps.html</a>.
|
||||
Their performance varies as much as the range of possible compression ratios;
|
||||
the good encoders are at least applying the filtering heuristics, described
|
||||
briefly in the PNG Specification, and illustrated above.
|
||||
<br>
|
||||
Some programs gain extra compression by discarding some of the data in the
|
||||
input images (so these programs are <i>lossy</i>!)
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This section contains the small list of <b><i>PNG optimization programs</i></b>
|
||||
that show a particular concern towards obtaining a file size as small as
|
||||
possible. They work by performing repeated compression trials, applying various
|
||||
parameter sets, and selecting the parameter set that yields the smallest
|
||||
compressed output.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<p>
|
||||
<b>pngrewrite</b> by Jason Summers, available at
|
||||
<a href="http://www.pobox.com/~jason1/pngrewrite/">http://www.pobox.com/~jason1/pngrewrite</a>,
|
||||
is an open-source program that performs lossless image reductions.
|
||||
It works best in conjunction with <b>pngcrush</b> (see below); the user
|
||||
should run <b>pngcrush</b> <i>after</i> <b>pngrewrite</b>.
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
<b>pngcrush</b> by Glenn Randers-Pehrson, available at
|
||||
<a href="http://pmt.sourceforge.net/pngcrush/">http://pmt.sourceforge.net/pngcrush</a>,
|
||||
is an open-source program that iterates over PNG filters and zlib (Deflate)
|
||||
parameters, compresses the image repeatedly using each parameter
|
||||
configuration, and chooses the configuration that yields the smallest
|
||||
compressed (IDAT) output.
|
||||
At the user's option, the program can explore few (below 10) or many (a
|
||||
brute-force traversal over more than 100) configurations. The method of
|
||||
selecting the parameters for "few" trials is particularly effective, and the
|
||||
use of a brute-force traversal is generally not recommended.
|
||||
</p>
|
||||
<p>
|
||||
In addition, <b>pngcrush</b> offers a multitude of extra features, such as
|
||||
recovery of erroneous PNG files (e.g. files containing bad CRCs), and
|
||||
chunk-level editing of PNG meta-data.
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
<b>OptiPNG</b> by Cosmin Truţa, available at
|
||||
<a href="http://www.cs.toronto.edu/~cosmin/pngtech/optipng/">http://www.cs.toronto.edu/pngtech/optipng</a>,
|
||||
is a newer open-source program, inspired from <b>pngcrush</b>, but designed
|
||||
to be more flexible and to run faster.
|
||||
Unlike <b>pngcrush</b>, <b>OptiPNG</b> performs the trials entirely in
|
||||
memory, and writes only the final output file on the disk. Moreover, it
|
||||
offers multiple optimization presets to the user, who can choose among a
|
||||
range of options from "very few trials" to "very many trials" (in contrast to
|
||||
the coarser "smart vs. brute" option offered by <b>pngcrush</b>).
|
||||
</p>
|
||||
<p>
|
||||
It is important to mention that the achieved compression ratio is less and
|
||||
less likely to improve when higher-level presets (trigerring more trials)
|
||||
are being used. Even if the program is capable of searching automatically
|
||||
over more than 200 configurations (and the advanced users have access to more
|
||||
than 1000 configurations!), a preset that selects around 10 trials should be
|
||||
satisfactory for most users. Furthermore, a preset that selects between
|
||||
30-40 trials <i>should</i> be satisfactory for all users, for it is very,
|
||||
very unlikely to be beaten significantly by any wider search. The rest of the
|
||||
trial configurations are offered rather as a curiosity (but they were used in
|
||||
the experimentation from which we concluded they are indeed useless!)
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
<b>AdvanceCOMP</b> by Andrea Mazzoleni is a set of tools for optimizing
|
||||
ZIP/GZIP, PNG and MNG files, based on the powerful <b>7-Zip</b> deflation
|
||||
engine. The name of the PNG optimization tool is <b>AdvPNG</b>. At the time
|
||||
of this writing, <b>AdvPNG</b> does not perform image reductions, so the use
|
||||
of <b>pngrewrite</b> or <b>OptiPNG</b> prior to optimiziation may be
|
||||
necessary. However, given the effectivenes of <b>7-Zip</b> deflation,
|
||||
<b>AdvanceCOMP</b> is a powerful contender.
|
||||
</p>
|
||||
<p>
|
||||
The <b>AdvanceCOMP</b> tool set is a part of the <b>AdvanceMAME</b> project,
|
||||
available at
|
||||
<a href="http://advancemame.sourceforge.net/">http://advancemame.sourceforge.net</a>.
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
<b>PNGOut</b> by Ken Silverman, available at
|
||||
<a href="http://advsys.net/ken/utils.htm">http://advsys.net/ken/utils.htm</a>,
|
||||
is a freely-available compiled program (no source code), running on
|
||||
Windows and Linux. According to our tests, the compression ratio achieved by
|
||||
<b>PNGOut</b> is comparable to that of <b>AdvPNG</b>.
|
||||
Unfortunately, due to the lack of information, we cannot say much about this
|
||||
tool.
|
||||
</p>
|
||||
<p>
|
||||
A nice GUI frontend for <b>PNGOut</b>, named <b>PNGGauntlet</b>, is
|
||||
available at
|
||||
<a href="http://www.numbera.com/software/pnggauntlet.aspx">http://www.numbera.com/software/pnggauntlet.aspx</a>.
|
||||
</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3>4. An extra note on losslessness</h3>
|
||||
|
||||
<p>
|
||||
What is lossless PNG optimization, after all? This is a straightforward
|
||||
question, whose answer is intuitive, yet not so straightforward.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Losslessness in the strictest sense, where no information whatsoever is lost,
|
||||
can only be achieved by leaving the original file (<i>any</i> file) intact, or
|
||||
by transforming it (e.g. compressing it, encrypting it) in such a way that
|
||||
there is an inverse transformation which recovers it completely, bit by bit.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In the case of PNG images, this condition of strict losslessness has little
|
||||
relevance to the casual graphics user, and is, therefore, too strong.
|
||||
There are instances where strict losslessness is required; for example, when
|
||||
handling certified PNG files whose integrity is guaranteed by an external
|
||||
checksum like <b>MD5</b> or <b>SHA</b>, or by a digital signature such as
|
||||
<b><code>dSIG</code></b>. Most of the time, however, it is desirable to relax
|
||||
the notion of PNG losslessness, to the extent of not losing any information
|
||||
that pertains to the <i>rendered image</i> and to the
|
||||
<i>semantic value of the metadata</i> that accompanies the image. This allows
|
||||
the user to concentrate on what is really important when it comes to preserving
|
||||
the contents of a PNG image, and enables the concept of PNG optimization tools.
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
A <b><i>lossless transform</i></b> of a PNG image file is a transform which
|
||||
fully preserves the <i>rendered</i> RGB triples (the RGB triples that come
|
||||
either directly, or from a palette index, or from a gray->RGB expansion), the
|
||||
<i>rendered</i> transparency (the alpha samples that come either directly, or
|
||||
from a <b><code>tRNS</code></b> chunk, or the implicit 100% opacity assumed due
|
||||
to the lack of any explicit transparency information), the <i>order of
|
||||
rendering</i> (sequential or interlaced), and the semantics contained by the
|
||||
ancillary chunks.
|
||||
</blockquote>
|
||||
|
||||
<div>
|
||||
This definition allows the execution of the above-mentioned image reduction
|
||||
operations, and the recompression of <b><code>IDAT</code></b>. It also allows
|
||||
the alteration or the elimination of other pieces of information that are
|
||||
technically valid, but have no influence on any presentation of the image
|
||||
pixels:
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
The information that pertains to <b><i>Deflate</i></b> streams, either inside
|
||||
<b><code>IDAT</code></b>, or in other compressed chunks like
|
||||
<b><code>zTXt</code></b>, <b><code>iTXt</code></b> or
|
||||
<b><code>iCCP</code></b>; e.g. the LZ77 window size, the type and size of
|
||||
<b><i>Deflate</i></b> blocks, etc. (The only thing that matters is that the
|
||||
decompressed byte sequence must remain the same.)
|
||||
</li>
|
||||
<li>
|
||||
The order of palette entries inside a <b><code>PLTE</code></b> chunk. (When
|
||||
changing this order, the information that depends on it, such as the
|
||||
palette-encoded pixels or the <b><code>tRNS</code></b> information, must be
|
||||
updated accordingly.)
|
||||
</li>
|
||||
<li>
|
||||
RGB triples that do not correspond to any pixel in the actual image, but are
|
||||
stored in a <b><code>tRNS</code></b> chunk.
|
||||
</li>
|
||||
<li>
|
||||
Fully opaque <b><code>tRNS</code></b> entries in a palette image.
|
||||
</li>
|
||||
<li>
|
||||
Gamma correction (<b><code>gAMA</code></b>) or significant bit
|
||||
(<b><code>sBIT</code></b>) information inside an image that consists
|
||||
exclusively of samples whose intensity is either minimum (0) or maximum
|
||||
(2^<sup>bitdepth</sup>-1).
|
||||
</li>
|
||||
<li>
|
||||
The fact that a textual comment is stored uncompressed in a
|
||||
<b><code>tEXt</code></b> chunk, or compressed in a <b><code>zTXt</code></b>
|
||||
chunk, or with no translation in an <b><code>iTXt</code></b> chunk.
|
||||
</li>
|
||||
<li>
|
||||
Etcetera.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
If any of the discardable information is important in a particular application,
|
||||
and lossless PNG optimization is still desirable, it is recommended to store
|
||||
this information in ancillary chunks, rather than hack it inside critical
|
||||
chunks. For example, if sterile palette entries are necessary (e.g. for later
|
||||
editing stages), it is recommended to store them inside a suggested palette
|
||||
(<b><code>sPLT</code></b>) chunk, rather than keeping them inside
|
||||
<b><code>PLTE</code></b>.
|
||||
</p>
|
||||
|
||||
|
||||
<h3>5. Selective bibliography</h3>
|
||||
|
||||
<p>
|
||||
Besides the discussed specifications, the references below provide essential
|
||||
information necessary to comprehend the contents of this article.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
Thomas Boutell, Glenn Randers-Pehrson et al.
|
||||
<i>Portable Network Graphics (PNG) Specification, Second Edition</i>.
|
||||
ISO/IEC 15948:2003(E); W3C Recommendation 10 November 2003.
|
||||
</li>
|
||||
<li>
|
||||
David A. Huffman.
|
||||
A method for the construction of minimum redundancy codes.
|
||||
In <i>Proceedings of the Institute of Radio Engineers</i>,
|
||||
vol. 40, no. 9, pp. 1098-1101, September 1952.
|
||||
</li>
|
||||
<li>
|
||||
Jacob Ziv and Abraham Lempel.
|
||||
A universal algorithm for data compression.
|
||||
<i>IEEE Transactions on Information Theory</i>,
|
||||
vol. IT-23, no. 3, pp. 337-343, May 1977.
|
||||
<br>
|
||||
<font size="-1">
|
||||
Due to a historical accident, the famous algorithm is better-known as the
|
||||
"Lempel-Ziv (LZ) algorithm", even though the "Ziv-Lempel algorithm" is a
|
||||
more legitimate name.
|
||||
</font>
|
||||
</li>
|
||||
<li>
|
||||
Greg Roelofs.
|
||||
<i>PNG: The definitive guide</i>.
|
||||
O'Reilly and Associates, 1999.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<hr>
|
||||
|
||||
<address>
|
||||
<font size="-1">
|
||||
Copyright © 2003-2008 Cosmin Truţa. Permission to distribute freely.
|
||||
<br>
|
||||
Appeared: 7 Apr 2003.
|
||||
<br>
|
||||
Last updated: 10 May 2008.
|
||||
</font>
|
||||
</address>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,325 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta name="Author" content="Cosmin Truţa">
|
||||
<title>Thanks!</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h2>Acknowledgements</h2>
|
||||
|
||||
<div>
|
||||
The author is indebted to the following people.
|
||||
OptiPNG would not exist without their work.
|
||||
|
||||
<p>
|
||||
|
||||
<table border="0" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td width="25%">Mark Adler</td>
|
||||
<td>for developing the zlib library</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Thomas Boutell</td>
|
||||
<td>for the idea of creating the PNG image format (it's all his fault!)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Adam M. Costello</td>
|
||||
<td>for co-developing cexcept, an exception-handling interface for C</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Jean-loup Gailly</td>
|
||||
<td>for devising a patent-free deflation algorithm
|
||||
and for developing the zlib library</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Phil Katz</td>
|
||||
<td>for inventing ZIP (PKZip) and the deflation algorithm</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">David Koblas</td>
|
||||
<td>GIF support is derived from the giftopnm tool</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Miyasaka Masaru</td>
|
||||
<td>BMP support is derived from the bmptopng tool</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">David Salomon</td>
|
||||
<td>for writing the most comprehensive data compression reference book</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Jason Summers</td>
|
||||
<td>image reductions are inspired from the pngrewrite tool</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Glenn Randers-Pehrson</td>
|
||||
<td>OptiPNG is inspired from the pngcrush tool(!)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">The PNG Development Group</td>
|
||||
<td>for developing the PNG format and the libpng library
|
||||
and also for countless help via the emailing list :-)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">The Information Theory founders</td>
|
||||
<td>Shannon, Huffman, Ziv, Lempel et al., you will never be forgotten!</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
|
||||
<hr>
|
||||
|
||||
<p>
|
||||
|
||||
<div>
|
||||
There are also many people who contributed to the OptiPNG project.
|
||||
The author is grateful to all of them.
|
||||
<br>
|
||||
This list is by no means complete. If you made a contribution, but your name is
|
||||
not listed here, please don't be shy and
|
||||
<a href="http://sourceforge.net/sendmessage.php?touser=24402">let him know</a>.
|
||||
<br>
|
||||
The author is particularly aware of the ever-increasing grup of amazing
|
||||
volunteers who either create new ports and packages, or take over the
|
||||
maintenance of the existing ones. They are unsung heroes. Regardless whether
|
||||
they are on this list or not (yet), a big THANKS goes to them!
|
||||
|
||||
<p>
|
||||
|
||||
<table border="0" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td width="25%">Peter Ahlstrom</td>
|
||||
<td>for experimenting with the zlib parameters,
|
||||
and for providing useful test data</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Emmanuel Andry</td>
|
||||
<td>for maintaining the Mandriva Linux port</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Piotr Bandurski</td>
|
||||
<td>for maintaining the Amiga port,
|
||||
and for suggesting a feature improvement</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Fabien Barbier</td>
|
||||
<td>for fixing a Unicode build issue on Windows</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Fabrizio Bartoloni</td>
|
||||
<td>for maintaining the MorphOS port</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Pascal Bleser</td>
|
||||
<td>for maintaining the SUSE Linux port</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Stefan Brüns</td>
|
||||
<td>for contributing a security fix</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">James Buren</td>
|
||||
<td>for maintaining the Frugalware Linux port</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Adam Ciarcinski</td>
|
||||
<td>for maintaining the pkgsrc package</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">James H. Cloos, Jr.</td>
|
||||
<td>for being the first user to report a defect</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Christian Davideck</td>
|
||||
<td>for reporting a defect</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Andrew C. E. Dent</td>
|
||||
<td>for experimenting with various compression parameters,
|
||||
and for providing useful test data</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Matthew Fearnley</td>
|
||||
<td>for reporting several defects and limitations,
|
||||
and for contributing a reduction improvement</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Petr Gajdos</td>
|
||||
<td>for maintaining the SUSE Linux port</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Nicolas Le Gland</td>
|
||||
<td>for reporting a defect</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Tero Grundström</td>
|
||||
<td>for reporting a build problem</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Larry Hastings</td>
|
||||
<td>for suggesting a performance improvement, for reporting a defect,
|
||||
and for providing useful test data</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Tristan Heaven</td>
|
||||
<td>for maintaining the Gentoo Linux port</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Jukka Heino</td>
|
||||
<td>for maintaining the Crux Linux port</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Max Horn</td>
|
||||
<td>for maintaining the Mac OS X (Fink) port</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Thomas Hurst</td>
|
||||
<td>for maintaining the FreeBSD port</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Joachim Kluge</td>
|
||||
<td>for reporting a defect</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Bill Koch</td>
|
||||
<td>for reporting a defect</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Niels de Koning</td>
|
||||
<td>for contributing memory leak fixes</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Michael Krishtopa</td>
|
||||
<td>for reporting a defect</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Vincent Lefevre</td>
|
||||
<td>for maintaining the Mac OS X DarwinPort,
|
||||
and for suggesting a feature</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Vitaly Lipatov</td>
|
||||
<td>for maintaining the ALT Linux port</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Alexander Lucas</td>
|
||||
<td>for suggesting a feature</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Till Maas</td>
|
||||
<td>for maintaining the Fedora Linux port,
|
||||
and for valuable contributions and feedback</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Brian McQuade</td>
|
||||
<td>for contributing a security fix</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Nehal Mistry</td>
|
||||
<td>for suggesting various features</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Dirk Mueller</td>
|
||||
<td>for maintaining the SUSE Linux port</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Gustavo De Nardin</td>
|
||||
<td>for maintaining the Mandriva Linux port</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Nelson A. de Oliveira</td>
|
||||
<td>for maintaining the Debian Linux port,
|
||||
and for valuable contributions and feedback</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Tavis Ormandy</td>
|
||||
<td>for maintaining the Gentoo Linux port</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Martin Packman</td>
|
||||
<td>for reporting a defect</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Dimitri Papadopoulos</td>
|
||||
<td>for reporting a defect</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Aaron Reitz</td>
|
||||
<td>for reporting a platform-specific build problem</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Ryan Schenk</td>
|
||||
<td>for writing PNGpong, a Dashboard widget for Mac OS X</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Ville Skyttä</td>
|
||||
<td>for maintaining the Fedora Linux port</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Roy Tam</td>
|
||||
<td>for reporting a defect</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Juhapekka Tolvanen</td>
|
||||
<td>for suggesting various script improvements</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Dmitry Vlasko</td>
|
||||
<td>for writing a configurable Windows shell integration utility</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Funda Wang</td>
|
||||
<td>for maintaining the Mandriva Linux port</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Liang Zhao</td>
|
||||
<td>for reporting a platform-specific build problem</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">[akJ]</td>
|
||||
<td>for writing an Eclipse RCP utility</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">[amake]</td>
|
||||
<td>for writing pngcrusher, a Mac OS X front-end</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">[Baldelario]</td>
|
||||
<td>for maintaining the Slackware Linux port</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">[I Like Pi]</td>
|
||||
<td>for writing a configurable Paint.NET plugin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">[LaughingMan]</td>
|
||||
<td>for suggesting a feature, and for reporting a defect</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">[warriant]</td>
|
||||
<td>for suggesting the use of UPX to pack the Windows executable</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
|
||||
<hr>
|
||||
|
||||
<div>
|
||||
Last updated: 14 Mar 2010 by Cosmin Truţa.
|
||||
<br>
|
||||
<a href="http://optipng.sourceforge.net/"><< <b>OptiPNG Home Page</b></a>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,57 +0,0 @@
|
||||
|
||||
OptiPNG - TO-DO list
|
||||
====================
|
||||
|
||||
- Compression improvements:
|
||||
Use zlib's deflateTune().
|
||||
Use 7zip's powerful deflation engine.
|
||||
(This is not possible with libpng, so a custom encoder is needed.)
|
||||
|
||||
- Speed improvements:
|
||||
Avoid repeated filtering when trying a filter value more than once.
|
||||
(This is not possible with libpng, so a custom encoder is needed.)
|
||||
|
||||
- Text chunk optimization:
|
||||
Smart selection between tEXt and zTXt. Similarly for iTXt.
|
||||
|
||||
- More file recovery features.
|
||||
|
||||
- Input from stdin; output to stdout.
|
||||
|
||||
- Optimization of an entire directory, with and without subdirectory
|
||||
recursion:
|
||||
optipng dir/
|
||||
optipng -recurse dir/
|
||||
Currently it is possible to optimize an entire directory as:
|
||||
optipng dir/*.png
|
||||
provided that file globbing works, either at the shell level (Unix)
|
||||
or in the program (linked with wildargs.obj on Windows).
|
||||
|
||||
- Improved support for reading external image formats
|
||||
(e.g. compressed TIFF or other image formats).
|
||||
|
||||
- Support for conversion to a desired bit depth and color type:
|
||||
optipng -b16 -c6 ...
|
||||
|
||||
- Support for handling metadata, e.g.:
|
||||
optipng -meta set:tEXt=<keyword>,<text> # add/update chunk
|
||||
optipng -meta set:sRGB=0 # add/update chunk
|
||||
optipng -meta select:all # keep all chunks
|
||||
optipng -meta reject:all # delete all chunks
|
||||
optipng -meta select:std2003 # keep all standard chunks
|
||||
optipng -meta select:public # keep all public chunks
|
||||
optipng -meta reject:private # delete all private chunks
|
||||
optipng -meta reject:hIST,sPLT # delete hIST and sPLT
|
||||
optipng -meta select:visual # keep gAMA, cHRM, sRGB, ...
|
||||
optipng -meta reject:visual # delete gAMA, cHRM, sRGB, ...
|
||||
optipng -meta select:textual # keep tEXt, zTXt, iTXt
|
||||
optipng -meta reject:textual # delete tEXt, zTXt, iTXt
|
||||
optipng -meta reject:gif # delete gIFg, gIFt, gIFx
|
||||
optipng -meta load:<file> # load chunks from file
|
||||
optipng -meta store:<file> # store chunks in file
|
||||
|
||||
- Parallelization on multi-processor/multi-core machines.
|
||||
|
||||
- A shared library (e.g. optipng.dll), to facilitate the development of
|
||||
PNG-optimizing GUI applications and plugins.
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,25 +1,15 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
|
||||
<cross-domain-policy>
|
||||
|
||||
|
||||
<!-- Read this: www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html -->
|
||||
<!-- Read this: www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html -->
|
||||
|
||||
<!-- Most restrictive policy: -->
|
||||
<site-control permitted-cross-domain-policies="none"/>
|
||||
|
||||
|
||||
|
||||
<!-- Least restrictive policy: -->
|
||||
<!--
|
||||
<site-control permitted-cross-domain-policies="all"/>
|
||||
<allow-access-from domain="*" to-ports="*" secure="false"/>
|
||||
<allow-http-request-headers-from domain="*" headers="*" secure="false"/>
|
||||
-->
|
||||
<!--
|
||||
If you host a crossdomain.xml file with allow-access-from domain=“*”
|
||||
and don’t understand all of the points described here, you probably
|
||||
have a nasty security vulnerability. ~ simon willison
|
||||
-->
|
||||
<!-- Most restrictive policy: -->
|
||||
<site-control permitted-cross-domain-policies="none"/>
|
||||
|
||||
</cross-domain-policy>
|
||||
<!-- Least restrictive policy: -->
|
||||
<!--
|
||||
<site-control permitted-cross-domain-policies="all"/>
|
||||
<allow-access-from domain="*" to-ports="*" secure="false"/>
|
||||
<allow-http-request-headers-from domain="*" headers="*" secure="false"/>
|
||||
-->
|
||||
</cross-domain-policy>
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
* {
|
||||
float: none; /* Screens are not big enough to account for floats */
|
||||
background: #fff; /* As much contrast as possible */
|
||||
color: #000;
|
||||
}
|
||||
|
||||
/* Slightly reducing font size to reduce need to scroll */
|
||||
body { font-size: 80%; }
|
||||
304
css/main.css
Normal file
304
css/main.css
Normal file
@@ -0,0 +1,304 @@
|
||||
/*! HTML5 Boilerplate v4.3.0 | MIT License | http://h5bp.com/ */
|
||||
|
||||
/*
|
||||
* What follows is the result of much research on cross-browser styling.
|
||||
* Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
|
||||
* Kroc Camen, and the H5BP dev community and team.
|
||||
*/
|
||||
|
||||
/* ==========================================================================
|
||||
Base styles: opinionated defaults
|
||||
========================================================================== */
|
||||
|
||||
html,
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
color: #222;
|
||||
}
|
||||
|
||||
html {
|
||||
font-size: 1em;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
/*
|
||||
* Remove text-shadow in selection highlight: h5bp.com/i
|
||||
* These selection rule sets have to be separate.
|
||||
* Customize the background color to match your design.
|
||||
*/
|
||||
|
||||
::-moz-selection {
|
||||
background: #b3d4fc;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
::selection {
|
||||
background: #b3d4fc;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
/*
|
||||
* A better looking default horizontal rule
|
||||
*/
|
||||
|
||||
hr {
|
||||
display: block;
|
||||
height: 1px;
|
||||
border: 0;
|
||||
border-top: 1px solid #ccc;
|
||||
margin: 1em 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Remove the gap between images, videos, audio and canvas and the bottom of
|
||||
* their containers: h5bp.com/i/440
|
||||
*/
|
||||
|
||||
audio,
|
||||
canvas,
|
||||
img,
|
||||
video {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/*
|
||||
* Remove default fieldset styles.
|
||||
*/
|
||||
|
||||
fieldset {
|
||||
border: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Allow only vertical resizing of textareas.
|
||||
*/
|
||||
|
||||
textarea {
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Browse Happy prompt
|
||||
========================================================================== */
|
||||
|
||||
.browsehappy {
|
||||
margin: 0.2em 0;
|
||||
background: #ccc;
|
||||
color: #000;
|
||||
padding: 0.2em 0;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Author's custom styles
|
||||
========================================================================== */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
Helper classes
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
* Image replacement
|
||||
*/
|
||||
|
||||
.ir {
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
overflow: hidden;
|
||||
/* IE 6/7 fallback */
|
||||
*text-indent: -9999px;
|
||||
}
|
||||
|
||||
.ir:before {
|
||||
content: "";
|
||||
display: block;
|
||||
width: 0;
|
||||
height: 150%;
|
||||
}
|
||||
|
||||
/*
|
||||
* Hide from both screenreaders and browsers: h5bp.com/u
|
||||
*/
|
||||
|
||||
.hidden {
|
||||
display: none !important;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
/*
|
||||
* Hide only visually, but have it available for screenreaders: h5bp.com/v
|
||||
*/
|
||||
|
||||
.visuallyhidden {
|
||||
border: 0;
|
||||
clip: rect(0 0 0 0);
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
}
|
||||
|
||||
/*
|
||||
* Extends the .visuallyhidden class to allow the element to be focusable
|
||||
* when navigated to via the keyboard: h5bp.com/p
|
||||
*/
|
||||
|
||||
.visuallyhidden.focusable:active,
|
||||
.visuallyhidden.focusable:focus {
|
||||
clip: auto;
|
||||
height: auto;
|
||||
margin: 0;
|
||||
overflow: visible;
|
||||
position: static;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
/*
|
||||
* Hide visually and from screenreaders, but maintain layout
|
||||
*/
|
||||
|
||||
.invisible {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
/*
|
||||
* Clearfix: contain floats
|
||||
*
|
||||
* For modern browsers
|
||||
* 1. The space content is one way to avoid an Opera bug when the
|
||||
* `contenteditable` attribute is included anywhere else in the document.
|
||||
* Otherwise it causes space to appear at the top and bottom of elements
|
||||
* that receive the `clearfix` class.
|
||||
* 2. The use of `table` rather than `block` is only necessary if using
|
||||
* `:before` to contain the top-margins of child elements.
|
||||
*/
|
||||
|
||||
.clearfix:before,
|
||||
.clearfix:after {
|
||||
content: " "; /* 1 */
|
||||
display: table; /* 2 */
|
||||
}
|
||||
|
||||
.clearfix:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
/*
|
||||
* For IE 6/7 only
|
||||
* Include this rule to trigger hasLayout and contain floats.
|
||||
*/
|
||||
|
||||
.clearfix {
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
EXAMPLE Media Queries for Responsive Design.
|
||||
These examples override the primary ('mobile first') styles.
|
||||
Modify as content requires.
|
||||
========================================================================== */
|
||||
|
||||
@media only screen and (min-width: 35em) {
|
||||
/* Style adjustments for viewports that meet the condition */
|
||||
}
|
||||
|
||||
@media print,
|
||||
(-o-min-device-pixel-ratio: 5/4),
|
||||
(-webkit-min-device-pixel-ratio: 1.25),
|
||||
(min-resolution: 120dpi) {
|
||||
/* Style adjustments for high resolution devices */
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Print styles.
|
||||
Inlined to avoid required HTTP connection: h5bp.com/r
|
||||
========================================================================== */
|
||||
|
||||
@media print {
|
||||
* {
|
||||
background: transparent !important;
|
||||
color: #000 !important; /* Black prints faster: h5bp.com/s */
|
||||
box-shadow: none !important;
|
||||
text-shadow: none !important;
|
||||
}
|
||||
|
||||
a,
|
||||
a:visited {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a[href]:after {
|
||||
content: " (" attr(href) ")";
|
||||
}
|
||||
|
||||
abbr[title]:after {
|
||||
content: " (" attr(title) ")";
|
||||
}
|
||||
|
||||
/*
|
||||
* Don't show links for images, or javascript/internal links
|
||||
*/
|
||||
|
||||
.ir a:after,
|
||||
a[href^="javascript:"]:after,
|
||||
a[href^="#"]:after {
|
||||
content: "";
|
||||
}
|
||||
|
||||
pre,
|
||||
blockquote {
|
||||
border: 1px solid #999;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
thead {
|
||||
display: table-header-group; /* h5bp.com/t */
|
||||
}
|
||||
|
||||
tr,
|
||||
img {
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100% !important;
|
||||
}
|
||||
|
||||
@page {
|
||||
margin: 0.5cm;
|
||||
}
|
||||
|
||||
p,
|
||||
h2,
|
||||
h3 {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
|
||||
h2,
|
||||
h3 {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
}
|
||||
527
css/normalize.css
vendored
Normal file
527
css/normalize.css
vendored
Normal file
@@ -0,0 +1,527 @@
|
||||
/*! normalize.css v1.1.3 | MIT License | git.io/normalize */
|
||||
|
||||
/* ==========================================================================
|
||||
HTML5 display definitions
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
|
||||
*/
|
||||
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
main,
|
||||
nav,
|
||||
section,
|
||||
summary {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
|
||||
*/
|
||||
|
||||
audio,
|
||||
canvas,
|
||||
video {
|
||||
display: inline-block;
|
||||
*display: inline;
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent modern browsers from displaying `audio` without controls.
|
||||
* Remove excess height in iOS 5 devices.
|
||||
*/
|
||||
|
||||
audio:not([controls]) {
|
||||
display: none;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
|
||||
* Known issue: no IE 6 support.
|
||||
*/
|
||||
|
||||
[hidden] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Base
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
|
||||
* `em` units.
|
||||
* 2. Prevent iOS text size adjust after orientation change, without disabling
|
||||
* user zoom.
|
||||
*/
|
||||
|
||||
html {
|
||||
font-size: 100%; /* 1 */
|
||||
-ms-text-size-adjust: 100%; /* 2 */
|
||||
-webkit-text-size-adjust: 100%; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Address `font-family` inconsistency between `textarea` and other form
|
||||
* elements.
|
||||
*/
|
||||
|
||||
html,
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address margins handled incorrectly in IE 6/7.
|
||||
*/
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Links
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Address `outline` inconsistency between Chrome and other browsers.
|
||||
*/
|
||||
|
||||
a:focus {
|
||||
outline: thin dotted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Improve readability when focused and also mouse hovered in all browsers.
|
||||
*/
|
||||
|
||||
a:active,
|
||||
a:hover {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Typography
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Address font sizes and margins set differently in IE 6/7.
|
||||
* Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
|
||||
* and Chrome.
|
||||
*/
|
||||
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.5em;
|
||||
margin: 0.83em 0;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.17em;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 1em;
|
||||
margin: 1.33em 0;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 0.83em;
|
||||
margin: 1.67em 0;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 0.67em;
|
||||
margin: 2.33em 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address styling not present in IE 7/8/9, Safari 5, and Chrome.
|
||||
*/
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: 1px dotted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
|
||||
*/
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 1em 40px;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address styling not present in Safari 5 and Chrome.
|
||||
*/
|
||||
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address differences between Firefox and other browsers.
|
||||
* Known issue: no IE 6/7 normalization.
|
||||
*/
|
||||
|
||||
hr {
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address styling not present in IE 6/7/8/9.
|
||||
*/
|
||||
|
||||
mark {
|
||||
background: #ff0;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address margins set differently in IE 6/7.
|
||||
*/
|
||||
|
||||
p,
|
||||
pre {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
|
||||
*/
|
||||
|
||||
code,
|
||||
kbd,
|
||||
pre,
|
||||
samp {
|
||||
font-family: monospace, serif;
|
||||
_font-family: 'courier new', monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
/**
|
||||
* Improve readability of pre-formatted text in all browsers.
|
||||
*/
|
||||
|
||||
pre {
|
||||
white-space: pre;
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address CSS quotes not supported in IE 6/7.
|
||||
*/
|
||||
|
||||
q {
|
||||
quotes: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address `quotes` property not supported in Safari 4.
|
||||
*/
|
||||
|
||||
q:before,
|
||||
q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address inconsistent and variable font size in all browsers.
|
||||
*/
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
|
||||
*/
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Lists
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Address margins set differently in IE 6/7.
|
||||
*/
|
||||
|
||||
dl,
|
||||
menu,
|
||||
ol,
|
||||
ul {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin: 0 0 0 40px;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address paddings set differently in IE 6/7.
|
||||
*/
|
||||
|
||||
menu,
|
||||
ol,
|
||||
ul {
|
||||
padding: 0 0 0 40px;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct list images handled incorrectly in IE 7.
|
||||
*/
|
||||
|
||||
nav ul,
|
||||
nav ol {
|
||||
list-style: none;
|
||||
list-style-image: none;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Embedded content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
|
||||
* 2. Improve image quality when scaled in IE 7.
|
||||
*/
|
||||
|
||||
img {
|
||||
border: 0; /* 1 */
|
||||
-ms-interpolation-mode: bicubic; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct overflow displayed oddly in IE 9.
|
||||
*/
|
||||
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Figures
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
|
||||
*/
|
||||
|
||||
figure {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Forms
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Correct margin displayed oddly in IE 6/7.
|
||||
*/
|
||||
|
||||
form {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Define consistent border, margin, and padding.
|
||||
*/
|
||||
|
||||
fieldset {
|
||||
border: 1px solid #c0c0c0;
|
||||
margin: 0 2px;
|
||||
padding: 0.35em 0.625em 0.75em;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct color not being inherited in IE 6/7/8/9.
|
||||
* 2. Correct text not wrapping in Firefox 3.
|
||||
* 3. Correct alignment displayed oddly in IE 6/7.
|
||||
*/
|
||||
|
||||
legend {
|
||||
border: 0; /* 1 */
|
||||
padding: 0;
|
||||
white-space: normal; /* 2 */
|
||||
*margin-left: -7px; /* 3 */
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct font size not being inherited in all browsers.
|
||||
* 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
|
||||
* and Chrome.
|
||||
* 3. Improve appearance and consistency in all browsers.
|
||||
*/
|
||||
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
font-size: 100%; /* 1 */
|
||||
margin: 0; /* 2 */
|
||||
vertical-align: baseline; /* 3 */
|
||||
*vertical-align: middle; /* 3 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Address Firefox 3+ setting `line-height` on `input` using `!important` in
|
||||
* the UA stylesheet.
|
||||
*/
|
||||
|
||||
button,
|
||||
input {
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address inconsistent `text-transform` inheritance for `button` and `select`.
|
||||
* All other form control elements do not inherit `text-transform` values.
|
||||
* Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
|
||||
* Correct `select` style inheritance in Firefox 4+ and Opera.
|
||||
*/
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
|
||||
* and `video` controls.
|
||||
* 2. Correct inability to style clickable `input` types in iOS.
|
||||
* 3. Improve usability and consistency of cursor style between image-type
|
||||
* `input` and others.
|
||||
* 4. Remove inner spacing in IE 7 without affecting normal text inputs.
|
||||
* Known issue: inner spacing remains in IE 6.
|
||||
*/
|
||||
|
||||
button,
|
||||
html input[type="button"], /* 1 */
|
||||
input[type="reset"],
|
||||
input[type="submit"] {
|
||||
-webkit-appearance: button; /* 2 */
|
||||
cursor: pointer; /* 3 */
|
||||
*overflow: visible; /* 4 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Re-set default cursor for disabled elements.
|
||||
*/
|
||||
|
||||
button[disabled],
|
||||
html input[disabled] {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Address box sizing set to content-box in IE 8/9.
|
||||
* 2. Remove excess padding in IE 8/9.
|
||||
* 3. Remove excess padding in IE 7.
|
||||
* Known issue: excess padding remains in IE 6.
|
||||
*/
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
box-sizing: border-box; /* 1 */
|
||||
padding: 0; /* 2 */
|
||||
*height: 13px; /* 3 */
|
||||
*width: 13px; /* 3 */
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
|
||||
* 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
|
||||
* (include `-moz` to future-proof).
|
||||
*/
|
||||
|
||||
input[type="search"] {
|
||||
-webkit-appearance: textfield; /* 1 */
|
||||
-moz-box-sizing: content-box;
|
||||
-webkit-box-sizing: content-box; /* 2 */
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove inner padding and search cancel button in Safari 5 and Chrome
|
||||
* on OS X.
|
||||
*/
|
||||
|
||||
input[type="search"]::-webkit-search-cancel-button,
|
||||
input[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove inner padding and border in Firefox 3+.
|
||||
*/
|
||||
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Remove default vertical scrollbar in IE 6/7/8/9.
|
||||
* 2. Improve readability and alignment in all browsers.
|
||||
*/
|
||||
|
||||
textarea {
|
||||
overflow: auto; /* 1 */
|
||||
vertical-align: top; /* 2 */
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Tables
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove most spacing between table cells.
|
||||
*/
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
283
css/style.css
283
css/style.css
@@ -1,283 +0,0 @@
|
||||
/*
|
||||
HTML5 ✰ Boilerplate
|
||||
|
||||
style.css contains a reset, font normalization and some base styles.
|
||||
|
||||
credit is left where credit is due.
|
||||
much inspiration was taken from these projects:
|
||||
yui.yahooapis.com/2.8.1/build/base/base.css
|
||||
camendesign.com/design/
|
||||
praegnanz.de/weblog/htmlcssjs-kickstart
|
||||
*/
|
||||
|
||||
/*
|
||||
html5doctor.com Reset Stylesheet (Eric Meyer's Reset Reloaded + HTML5 baseline)
|
||||
v1.4 2009-07-27 | Authors: Eric Meyer & Richard Clark
|
||||
html5doctor.com/html-5-reset-stylesheet/
|
||||
*/
|
||||
|
||||
html, body, div, span, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
abbr, address, cite, code,
|
||||
del, dfn, em, img, ins, kbd, q, samp,
|
||||
small, strong, sub, sup, var,
|
||||
b, i,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||
article, aside, canvas, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section, summary,
|
||||
time, mark, audio, video {
|
||||
margin:0;
|
||||
padding:0;
|
||||
border:0;
|
||||
outline:0;
|
||||
font-size:100%;
|
||||
vertical-align:baseline;
|
||||
background:transparent;
|
||||
}
|
||||
|
||||
article, aside, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section {
|
||||
display:block;
|
||||
}
|
||||
|
||||
nav ul { list-style:none; }
|
||||
|
||||
blockquote, q { quotes:none; }
|
||||
|
||||
blockquote:before, blockquote:after,
|
||||
q:before, q:after { content:''; content:none; }
|
||||
|
||||
a { margin:0; padding:0; font-size:100%; vertical-align:baseline; background:transparent; }
|
||||
|
||||
ins { background-color:#ff9; color:#000; text-decoration:none; }
|
||||
|
||||
mark { background-color:#ff9; color:#000; font-style:italic; font-weight:bold; }
|
||||
|
||||
del { text-decoration: line-through; }
|
||||
|
||||
abbr[title], dfn[title] { border-bottom:1px dotted; cursor:help; }
|
||||
|
||||
/* tables still need cellspacing="0" in the markup */
|
||||
table { border-collapse:collapse; border-spacing:0; }
|
||||
|
||||
hr { display:block; height:1px; border:0; border-top:1px solid #ccc; margin:1em 0; padding:0; }
|
||||
|
||||
input, select { vertical-align:middle; }
|
||||
|
||||
/* END RESET CSS */
|
||||
|
||||
|
||||
/* fonts.css from the YUI Library: developer.yahoo.com/yui/
|
||||
Refer to developer.yahoo.com/yui/3/cssfonts/ for font sizing percentages
|
||||
|
||||
There are three custom edits:
|
||||
* remove arial, helvetica from explicit font stack
|
||||
* we normalize monospace styles ourselves
|
||||
* table font-size is reset in the HTML5 reset above so there is no need to repeat
|
||||
*/
|
||||
body { font:13px/1.231 sans-serif; *font-size:small; } /* hack retained to preserve specificity */
|
||||
|
||||
select, input, textarea, button { font:99% sans-serif; }
|
||||
|
||||
/* normalize monospace sizing
|
||||
* en.wikipedia.org/wiki/MediaWiki_talk:Common.css/Archive_11#Teletype_style_fix_for_Chrome
|
||||
*/
|
||||
pre, code, kbd, samp { font-family: monospace, sans-serif; }
|
||||
|
||||
|
||||
/*
|
||||
* minimal base styles
|
||||
*/
|
||||
|
||||
|
||||
body, select, input, textarea {
|
||||
/* #444 looks better than black: twitter.com/H_FJ/statuses/11800719859 */
|
||||
color: #444;
|
||||
/* set your base font here, to apply evenly */
|
||||
/* font-family: Georgia, serif; */
|
||||
}
|
||||
|
||||
/* Headers (h1,h2,etc) have no default font-size or margin,
|
||||
you'll want to define those yourself. */
|
||||
h1,h2,h3,h4,h5,h6 { font-weight: bold; }
|
||||
|
||||
/* always force a scrollbar in non-IE */
|
||||
html { overflow-y: scroll; }
|
||||
|
||||
|
||||
/* Accessible focus treatment: people.opera.com/patrickl/experiments/keyboard/test */
|
||||
a:hover, a:active { outline: none; }
|
||||
|
||||
a, a:active, a:visited { color: #607890; }
|
||||
a:hover { color: #036; }
|
||||
|
||||
|
||||
ul, ol { margin-left: 1.8em; }
|
||||
ol { list-style-type: decimal; }
|
||||
|
||||
/* Remove margins for navigation lists */
|
||||
nav ul, nav li { margin: 0; }
|
||||
|
||||
small { font-size: 85%; }
|
||||
strong, th { font-weight: bold; }
|
||||
|
||||
td, td img { vertical-align: top; }
|
||||
|
||||
sub { vertical-align: sub; font-size: smaller; }
|
||||
sup { vertical-align: super; font-size: smaller; }
|
||||
|
||||
pre {
|
||||
padding: 15px;
|
||||
|
||||
/* www.pathf.com/blogs/2008/05/formatting-quoted-code-in-blog-posts-css21-white-space-pre-wrap/ */
|
||||
white-space: pre; /* CSS2 */
|
||||
white-space: pre-wrap; /* CSS 2.1 */
|
||||
white-space: pre-line; /* CSS 3 (and 2.1 as well, actually) */
|
||||
word-wrap: break-word; /* IE */
|
||||
}
|
||||
|
||||
textarea { overflow: auto; } /* thnx ivannikolic! www.sitepoint.com/blogs/2010/08/20/ie-remove-textarea-scrollbars/ */
|
||||
|
||||
.ie6 legend, .ie7 legend { margin-left: -7px; } /* thnx ivannikolic! */
|
||||
|
||||
/* align checkboxes, radios, text inputs with their label
|
||||
by: Thierry Koblentz tjkdesign.com/ez-css/css/base.css */
|
||||
input[type="radio"] { vertical-align: text-bottom; }
|
||||
input[type="checkbox"] { vertical-align: bottom; }
|
||||
.ie7 input[type="checkbox"] { vertical-align: baseline; }
|
||||
.ie6 input { vertical-align: text-bottom; }
|
||||
|
||||
/* hand cursor on clickable input elements */
|
||||
label, input[type=button], input[type=submit], button { cursor: pointer; }
|
||||
|
||||
/* webkit browsers add a 2px margin outside the chrome of form elements */
|
||||
button, input, select, textarea { margin: 0; }
|
||||
|
||||
/* colors for form validity */
|
||||
input:valid, textarea:valid { }
|
||||
input:invalid, textarea:invalid {
|
||||
border-radius: 1px;
|
||||
-moz-box-shadow: 0px 0px 5px red;
|
||||
-webkit-box-shadow: 0px 0px 5px red;
|
||||
box-shadow: 0px 0px 5px red;
|
||||
}
|
||||
.no-boxshadow input:invalid,
|
||||
.no-boxshadow textarea:invalid { background-color: #f0dddd; }
|
||||
|
||||
|
||||
/* These selection declarations have to be separate.
|
||||
No text-shadow: twitter.com/miketaylr/status/12228805301
|
||||
Also: hot pink. */
|
||||
::-moz-selection{ background: #FF5E99; color:#fff; text-shadow: none; }
|
||||
::selection { background:#FF5E99; color:#fff; text-shadow: none; }
|
||||
|
||||
/* j.mp/webkit-tap-highlight-color */
|
||||
a:link { -webkit-tap-highlight-color: #FF5E99; }
|
||||
|
||||
/* make buttons play nice in IE:
|
||||
www.viget.com/inspire/styling-the-button-element-in-internet-explorer/ */
|
||||
button { width: auto; overflow: visible; }
|
||||
|
||||
/* bicubic resizing for non-native sized IMG:
|
||||
code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/ */
|
||||
.ie7 img { -ms-interpolation-mode: bicubic; }
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Non-semantic helper classes
|
||||
*/
|
||||
|
||||
/* for image replacement */
|
||||
.ir { display: block; text-indent: -999em; overflow: hidden; background-repeat: no-repeat; text-align: left; direction: ltr; }
|
||||
|
||||
/* Hide for both screenreaders and browsers
|
||||
css-discuss.incutio.com/wiki/Screenreader_Visibility */
|
||||
.hidden { display: none; visibility: hidden; }
|
||||
|
||||
/* Hide only visually, but have it available for screenreaders
|
||||
www.webaim.org/techniques/css/invisiblecontent/ & j.mp/visuallyhidden */
|
||||
.visuallyhidden { position: absolute !important;
|
||||
clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
|
||||
clip: rect(1px, 1px, 1px, 1px); }
|
||||
|
||||
/* Hide visually and from screenreaders, but maintain layout */
|
||||
.invisible { visibility: hidden; }
|
||||
|
||||
/* >> The Magnificent CLEARFIX: Updated to prevent margin-collapsing on child elements << j.mp/bestclearfix */
|
||||
.clearfix:before, .clearfix:after {
|
||||
content: "\0020"; display: block; height: 0; visibility: hidden;
|
||||
}
|
||||
|
||||
.clearfix:after { clear: both; }
|
||||
/* Fix clearfix: blueprintcss.lighthouseapp.com/projects/15318/tickets/5-extra-margin-padding-bottom-of-page */
|
||||
.clearfix { zoom: 1; }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Primary Styles
|
||||
Author:
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Media queries for responsive design
|
||||
* These follow after primary styles so they will successfully override.
|
||||
*/
|
||||
|
||||
@media all and (orientation:portrait) {
|
||||
/* Style adjustments for portrait mode goes here */
|
||||
|
||||
}
|
||||
|
||||
@media all and (orientation:landscape) {
|
||||
/* Style adjustments for landscape mode goes here */
|
||||
|
||||
}
|
||||
|
||||
/* Grade-A Mobile Browsers (Opera Mobile, iPhone Safari, Android Chrome)
|
||||
Consider this: www.cloudfour.com/css-media-query-for-mobile-is-fools-gold/ */
|
||||
@media screen and (max-device-width: 480px) {
|
||||
|
||||
|
||||
/* Uncomment if you don't want iOS and WinMobile to mobile-optimize the text for you
|
||||
j.mp/textsizeadjust
|
||||
html { -webkit-text-size-adjust:none; -ms-text-size-adjust:none; } */
|
||||
}
|
||||
|
||||
/*
|
||||
* print styles
|
||||
* inlined to avoid required HTTP connection www.phpied.com/delay-loading-your-print-css/
|
||||
*/
|
||||
@media print {
|
||||
* { background: transparent !important; color: #444 !important; text-shadow: none !important; }
|
||||
a, a:visited { color: #444 !important; text-decoration: underline; }
|
||||
a:after { content: " (" attr(href) ")"; }
|
||||
abbr:after { content: " (" attr(title) ")"; }
|
||||
.ir a:after { content: ""; } /* Don't show links for images */
|
||||
pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
|
||||
thead { display: table-header-group; } /* css-discuss.incutio.com/wiki/Printing_Tables */
|
||||
tr, img { page-break-inside: avoid; }
|
||||
@page { margin: 0.5cm; }
|
||||
p, h2, h3 { orphans: 3; widows: 3; }
|
||||
h2, h3{ page-break-after: avoid; }
|
||||
}
|
||||
|
||||
@@ -1,537 +0,0 @@
|
||||
<!doctype html>
|
||||
|
||||
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
|
||||
<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
|
||||
<!--[if IE 7 ]> <html lang="en" class="no-js ie7"> <![endif]-->
|
||||
<!--[if IE 8 ]> <html lang="en" class="no-js ie8"> <![endif]-->
|
||||
<!--[if IE 9 ]> <html lang="en" class="no-js ie9"> <![endif]-->
|
||||
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame
|
||||
Remove this if you use the .htaccess -->
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
|
||||
<title>Element Consistency Tests</title>
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
|
||||
<!-- Mobile viewport optimized: j.mp/bplateviewport -->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<!-- Place favicon.ico & apple-touch-icon.png in the root of your domain and delete these references -->
|
||||
<link rel="shortcut icon" href="/favicon.ico">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
||||
|
||||
|
||||
<!-- CSS : implied media="all" -->
|
||||
<link rel="stylesheet" href="../css/style.css?v=2">
|
||||
|
||||
<!-- Uncomment if you are specifically targeting less enabled mobile browsers
|
||||
<link rel="stylesheet" media="handheld" href="../css/handheld.css?v=2"> -->
|
||||
|
||||
<!-- All JavaScript at the bottom, except for Modernizr which enables HTML5 elements & feature detects -->
|
||||
<script src="../js/libs/modernizr-1.6.min.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="container">
|
||||
<header>
|
||||
|
||||
</header>
|
||||
|
||||
<div id="main">
|
||||
|
||||
<!-- demo content lovingly lifted from the azbuka project
|
||||
http://code.google.com/p/azbuka/
|
||||
|
||||
and the bluetrip project
|
||||
http://bluetrip.org/
|
||||
|
||||
and peter beverloo
|
||||
http://peter.sh/examples/?/html/meter-progress.html
|
||||
-->
|
||||
|
||||
|
||||
|
||||
<h1>Title 01 Heading</h1>
|
||||
<hr />
|
||||
<h2>Level 02 Heading</h2>
|
||||
<p>Lorem ipsum <em>emphasised text</em> dolor sit amet, <strong>strong text</strong>
|
||||
consectetur adipisicing elit, <abbr title="">abbreviated text</abbr> sed do eiusmod tempor
|
||||
incididunt ut labore et dolore magna aliqua. Ut
|
||||
<q>quoted text</q> enim ad minim veniam, quis nostrud exercitation <a href="/">link text</a>
|
||||
ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute
|
||||
<ins>inserted text</ins> irure dolor in reprehenderit in voluptate velit esse cillum
|
||||
dolore eu fugiat nulla pariatur. Excepteur sint occaecat <code>code text</code> cupidatat
|
||||
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
|
||||
|
||||
<p>
|
||||
Suspendisse rhoncus, est ac sollicitudin viverra, leo orci sagittis massa, sed condimentum <acronym title="">acronym text</acronym> est tortor a lectus. Curabitur porta feugiat ullamcorper. Integer lacinia mi id odio faucibus eget tincidunt nisl iaculis. Nam adipiscing hendrerit turpis, et porttitor felis sollicitudin et. Donec dictum massa ac neque accumsan tempor. Cras aliquam, ipsum sit amet laoreet hendrerit, purus <del>deleted text</del> sapien convallis dui, et porta leo ipsum ac nunc. Nullam ornare porta dui ac semper. Cras aliquam laoreet hendrerit. Quisque vulputate dolor eget mi porta vel porta nisl pretium. Vivamus non leo magna, quis imperdiet risus. Morbi tempor risus placerat tellus imperdiet fringilla.
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
<p>I am not one who was born in the possession of knowledge; I am one who is fond of antiquity, and earnest in seeking it there.</p>
|
||||
</blockquote>
|
||||
|
||||
<p><cite><a href="/">Confucius, The Confucian Analects</a></cite>, (551 BC - 479 BC)</p>
|
||||
|
||||
<h3>Level 03 Heading</h3>
|
||||
|
||||
<p>Extended paragraph. <a href="">Lorem ipsum</a> dolor sit amet, consectetur adipisicing elit, sed do eiusmod
|
||||
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
|
||||
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
|
||||
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
|
||||
occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
|
||||
|
||||
<ol>
|
||||
<li>Unus</li>
|
||||
<li>Duo</li>
|
||||
<li>Tres</li>
|
||||
<li>Quattuor</li>
|
||||
</ol>
|
||||
|
||||
<p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
|
||||
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
|
||||
anim id est laborum.</p>
|
||||
|
||||
<h3>Header 3</h3>
|
||||
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
|
||||
ut labore et dolore magna aliqua.</p>
|
||||
|
||||
<h4>Unordered lists</h4>
|
||||
<ul>
|
||||
<li>Lorem ipsum dolor sit amet</li>
|
||||
<li>Consectetur adipisicing elit</li>
|
||||
<li>Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua</li>
|
||||
<li>Ut enim ad minim veniam</li>
|
||||
</ul>
|
||||
<p>Lorem ipsum dolor sit amet,consectetur adipisicing elit, sed do eiusmod tempor incididunt
|
||||
ut labore et dolore magna aliqua.</p>
|
||||
|
||||
<pre><code>body { font:0.8125em/1.618 Arial, sans-serif;
|
||||
background-color:#fff;
|
||||
color:#111;
|
||||
}</code></pre>
|
||||
|
||||
<p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
|
||||
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
|
||||
anim id est laborum.</p>
|
||||
|
||||
<h4>Header 4</h4>
|
||||
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
|
||||
ut labore et dolore magna aliqua.</p>
|
||||
|
||||
<dl>
|
||||
<dt>Definition list</dt>
|
||||
<dd>Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
|
||||
aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
|
||||
commodo consequat.</dd>
|
||||
<dt>Lorem ipsum dolor sit amet</dt>
|
||||
<dd>Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
|
||||
aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
|
||||
commodo consequat.</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
|
||||
ut labore et dolore magna aliqua.</p>
|
||||
<h4>Ordered list</h4>
|
||||
<ol>
|
||||
<li>List item</li>
|
||||
<li>List item</li>
|
||||
<li>List item
|
||||
<ol>
|
||||
<li>List item level 2</li>
|
||||
<li>List item level 2
|
||||
<ol>
|
||||
<li>List item level 3</li>
|
||||
<li>List item level 3</li>
|
||||
</ol>
|
||||
</li>
|
||||
</ol>
|
||||
</li>
|
||||
</ol>
|
||||
<h4>Unordered list</h4>
|
||||
<ul>
|
||||
<li>List item 01</li>
|
||||
<li>List item 02</li>
|
||||
<li>List item 03
|
||||
<ul>
|
||||
<li>List item level 2</li>
|
||||
<li>List item level 2
|
||||
<ul>
|
||||
<li>List item level 3</li>
|
||||
<li>List item level 3</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
|
||||
ut labore et dolore magna aliqua.</p>
|
||||
|
||||
|
||||
<h4>Tables</h4>
|
||||
<table summary="Jimi Hendrix albums">
|
||||
<caption>Jimi Hendrix - albums</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Album</th>
|
||||
<th>Year</th>
|
||||
<th>Price</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td>Album</td>
|
||||
<td>Year</td>
|
||||
<td>Price</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Are You Experienced </td>
|
||||
<td>1967</td>
|
||||
<td>$10.00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Axis: Bold as Love</td>
|
||||
<td>1967</td>
|
||||
<td>$12.00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Electric Ladyland</td>
|
||||
<td>1968</td>
|
||||
<td>$10.00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Band of Gypsys</td>
|
||||
<td>1970</td>
|
||||
<td>$12.00</td>
|
||||
</tr>
|
||||
<tbody>
|
||||
</table>
|
||||
<p>
|
||||
I am <a href="http://devkick.com/lab/tripoli/sample.php?abc123">the a tag</a> example<br>
|
||||
|
||||
I am <abbr title="test">the abbr tag</abbr> example<br>
|
||||
|
||||
I am <acronym>the acronym tag</acronym> example<br>
|
||||
I am <b>the b tag</b> example<br>
|
||||
I am <big>the big tag</big> example<br>
|
||||
|
||||
I am <cite>the cite tag</cite> example<br>
|
||||
|
||||
I am <code>the code tag</code> example<br>
|
||||
I am <del>the del tag</del> example<br>
|
||||
I am <dfn>the dfn tag</dfn> example<br>
|
||||
|
||||
I am <em>the em tag</em> example<br>
|
||||
|
||||
I am <font face="verdana">the font tag</font> example<br>
|
||||
I am <i>the i tag</i> example<br>
|
||||
I am <ins>the ins tag</ins> example<br>
|
||||
|
||||
I am <kbd>the kbd tag</kbd> example<br>
|
||||
|
||||
I am <q>the q tag <q>inside</q> a q tag</q> example<br>
|
||||
I am <s>the s tag</s> example<br>
|
||||
I am <samp>the samp tag</samp> example<br>
|
||||
|
||||
I am <small>the small tag</small> example<br>
|
||||
I am <span>the span tag</span> example<br>
|
||||
I am <strike>the strike tag</strike> example<br>
|
||||
I am <strong>the strong tag</strong> example<br>
|
||||
|
||||
I am <sub>the sub tag</sub> example<br>
|
||||
I am <sup>the sup tag</sup> example<br>
|
||||
I am <tt>the tt tag</tt> example<br>
|
||||
I am <var>the var tag</var> example<br>
|
||||
|
||||
I am <u>the u tag</u> example
|
||||
</p>
|
||||
|
||||
<p>This is a <p> with some <code>code</code> inside.</p>
|
||||
|
||||
<h3>What is Lorem Ipsum?</h3>
|
||||
<p><b>Lorem Ipsum</b> is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
|
||||
|
||||
<p><strong>This</strong> Lorem Ipsum HTML example is created from the parts of Placeholder Markup with Lorem Ipsum - Jon Tan,
|
||||
Emastic CSS Framework,
|
||||
Tripoli CSS Framework and
|
||||
Baseline CSS Framework .</p>
|
||||
|
||||
<address>Address: somewhere, World</address>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
<a href="#">Link</a><br>
|
||||
<strong><strong></strong><br>
|
||||
<del><del> deleted</del><br>
|
||||
<dfn><dfn> dfn</dfn><br>
|
||||
<em><em> emphasis</em>
|
||||
</p>
|
||||
<pre>
|
||||
<code><html></code>
|
||||
<code><head></code>
|
||||
<code></head></code>
|
||||
<code><body></code>
|
||||
<code><div class = "main"> <div></code>
|
||||
<code></body></code>
|
||||
<code></html> </code>
|
||||
</pre>
|
||||
|
||||
<tt><tt>
|
||||
Pellentesque tempor, dui ut ultrices viverra, neque urna blandit nisi, id accumsan dolor est vitae risus.
|
||||
</tt>
|
||||
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
<!-- this following markup from http://bluetrip.org/ -->
|
||||
<dl>
|
||||
<dt>Description list title 01</dt>
|
||||
|
||||
<dd>Description list description 01</dd>
|
||||
<dt>Description list title 02</dt>
|
||||
<dd>Description list description 02</dd>
|
||||
<dd>Description list description 03</dd>
|
||||
|
||||
</dl>
|
||||
<table>
|
||||
<caption>Table Caption</caption>
|
||||
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Table head th</th>
|
||||
<td>Table head td</td>
|
||||
</tr>
|
||||
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr>
|
||||
|
||||
<th>Table foot th</th>
|
||||
<td>Table foot td</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>Table body th</th>
|
||||
|
||||
<td>Table body td</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Table body td</td>
|
||||
|
||||
<td>Table body td</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<form action="#">
|
||||
<fieldset>
|
||||
<legend>Form legend</legend>
|
||||
|
||||
<div><label for="f1">Optional Text input:</label><input type="text" id="f1" value="input text" /></div>
|
||||
<div><label for="rt1">Required Text input:</label><input type="text" id="rt1" required /></div>
|
||||
<div><label for="twp1">Text input with pattern requirement and placeholder:</label><input type="text" pattern="\d{5}(-\d{4})?" title="a US Zip code, with or without the +4 exension" placeholder="12345-6789"/></div>
|
||||
<div><label for="s1">Search input:</label><input type="search" id="s1" /></div>
|
||||
<div><label for="e1">Email input:</label><input type="email" id="e1" /></div>
|
||||
<div><label for="u1">URL input:</label><input type="url" id="u1" /></div>
|
||||
<div><label for="pw">Password input:</label><input type="password" id="pw" value="password" /></div>
|
||||
<div><label for="f2">Radio input:</label><input type="radio" id="f2" /></div>
|
||||
|
||||
<div><label for="f3">Checkbox input:</label><input type="checkbox" id="f3" /></div>
|
||||
<div><label for="f4">Select field:</label><select id="f4"><option>Option 01</option><option>Option 02</option></select></div>
|
||||
|
||||
<div><label for="f5">Textarea:</label><textarea id="f5" cols="30" rows="5" >Textarea text</textarea></div>
|
||||
<div><label for="f6">Input Button:</label> <input type="button" id="f6" value="button text" /></div>
|
||||
|
||||
<div><label for="f7">Submit Button:</label> <input type="submit" id="f7" value="button text" /></div>
|
||||
|
||||
</fieldset>
|
||||
|
||||
</form>
|
||||
|
||||
|
||||
<!-- thx peter beverloo: http://peter.sh/examples/?/html/meter-progress.html -->
|
||||
|
||||
|
||||
<p id="no-support" style="color: red; margin-bottom: 12px;">
|
||||
Your browser does not support these elements yet! Consider downloading a <a href="http://tools.peter.sh/download-latest-chromium.php">Chromium Nightly</a>.<br />
|
||||
|
||||
</p>
|
||||
|
||||
<h3><progress></h3>
|
||||
<p>
|
||||
The progress element (spec: <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-progress-element">4.10.16</a>) represents the completion progress of a task and can be both indeterminate as determinate.
|
||||
</p>
|
||||
<ul class="compact">
|
||||
<li>
|
||||
<label>Indeterminate</label>
|
||||
<progress max="100"></progress>
|
||||
</li>
|
||||
<li>
|
||||
<label>Progress: 0%</label>
|
||||
<progress max="10" value="0"></progress>
|
||||
</li>
|
||||
<li>
|
||||
<label>Progress: 100%</label>
|
||||
<progress max="3254" value="3254"></progress>
|
||||
</li>
|
||||
<li>
|
||||
<label>Progress: 57%</label>
|
||||
<progress max="0.7" value="0.4"></progress>
|
||||
</li>
|
||||
<li>
|
||||
<label>Javascript</label>
|
||||
<progress id="progress-javascript-example"></progress>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h3><meter></h3>
|
||||
<p>
|
||||
Displaying a scalar measurement within a known range, like hard drive usage, can be done using the meter element (spec: <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-meter-element">4.10.17</a>)
|
||||
</p>
|
||||
<ul class="compact">
|
||||
<li>
|
||||
<label>Meter: empty</label>
|
||||
<meter value="0"></meter>
|
||||
</li>
|
||||
<li>
|
||||
<label>Meter: full</label>
|
||||
<meter value="1"></meter>
|
||||
</li>
|
||||
<li>
|
||||
<label>Meter: "a bit"</label>
|
||||
<meter min=".34" max=".41" value=".36"></meter>
|
||||
</li>
|
||||
<li>
|
||||
<label>Preferred usage</label>
|
||||
<meter min="50" max="250" low="100" high="200" value="120"></meter>
|
||||
</li>
|
||||
<li>
|
||||
<label>Too much traffic</label>
|
||||
<meter min="1024" max="10240" low="2048" high="8192" value="9216"></meter>
|
||||
</li>
|
||||
<li>
|
||||
<label>Optimum value</label>
|
||||
<meter value=".5" optimum=".8"></meter>
|
||||
</li>
|
||||
<li>
|
||||
<label>Javascript</label>
|
||||
<meter id="meter-javascript-example" value="0"></progress>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
if (! ('position' in document.createElement ('progress'))) {
|
||||
var elements = document.querySelectorAll ('meter, progress');
|
||||
for (var i = 0, j = elements.length; i < j; i++) {
|
||||
elements [i].style.border = "1px solid red";
|
||||
elements [i].style.height = "12px";
|
||||
elements [i].style.display = "inline-block";
|
||||
elements [i].style.webkitAppearance = "none";
|
||||
}
|
||||
|
||||
return ;
|
||||
}
|
||||
|
||||
document.getElementById ('no-support').style.display = 'none';
|
||||
|
||||
/** Setup the <progress> JavaScript example **/
|
||||
var progressExample = document.getElementById ('progress-javascript-example');
|
||||
progressExample.min = 50;
|
||||
progressExample.max = 122;
|
||||
|
||||
setInterval (function ()
|
||||
{
|
||||
progressExample.value = progressExample.min + Math.random () * (progressExample.max - progressExample.min);
|
||||
|
||||
}, 1000);
|
||||
|
||||
/** We'd like some fancy <meter> examples too **/
|
||||
var meterExample = document.getElementById ('meter-javascript-example');
|
||||
meterExample.min = 0;
|
||||
meterExample.max = 100;
|
||||
meterExample.value = 50;
|
||||
meterExample.low = 20;
|
||||
meterExample.high = 80;
|
||||
meterExample.optimum = 65;
|
||||
|
||||
setInterval (function ()
|
||||
{
|
||||
meterExample.value = meterExample.min + Math.random () * (meterExample.max - meterExample.min);
|
||||
meterExample.optimum = 65 + (5 - Math.random () * 10);
|
||||
|
||||
}, 1000);
|
||||
|
||||
})();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<footer>
|
||||
|
||||
</footer>
|
||||
</div> <!--! end of #container -->
|
||||
|
||||
|
||||
<!-- Javascript at the bottom for fast page loading -->
|
||||
|
||||
<!-- Grab Google CDN's jQuery. fall back to local if necessary -->
|
||||
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
|
||||
<script>!window.jQuery && document.write(unescape('%3Cscript src="../js/libs/jquery-1.4.2.js"%3E%3C/script%3E'))</script>
|
||||
|
||||
|
||||
<!-- scripts concatenated and minified via ant build script-->
|
||||
<script src="../js/plugins.js"></script>
|
||||
<script src="../js/script.js"></script>
|
||||
<!-- end concatenated and minified scripts-->
|
||||
|
||||
|
||||
<!--[if lt IE 7 ]>
|
||||
<script src="../js/libs/dd_belatedpng.js"></script>
|
||||
<script> DD_belatedPNG.fix('img, .png_bg'); //fix any <img> or .png_bg background-images </script>
|
||||
<![endif]-->
|
||||
|
||||
<!-- yui profiler and profileviewer - remove for production -->
|
||||
<script src="../js/profiling/yahoo-profiling.min.js"></script>
|
||||
<script src="../js/profiling/config.js"></script>
|
||||
<!-- end profiling code -->
|
||||
|
||||
|
||||
<!-- asynchronous google analytics: mathiasbynens.be/notes/async-analytics-snippet
|
||||
change the UA-XXXXX-X to be your site's ID -->
|
||||
<script>
|
||||
var _gaq = [['_setAccount', 'UA-XXXXX-X'], ['_trackPageview']];
|
||||
(function(d, t) {
|
||||
var g = d.createElement(t),
|
||||
s = d.getElementsByTagName(t)[0];
|
||||
g.async = true;
|
||||
g.src = ('https:' == location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||
s.parentNode.insertBefore(g, s);
|
||||
})(document, 'script');
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,85 +0,0 @@
|
||||
/*
|
||||
style.css contains a reset, font normalization and some base styles.
|
||||
|
||||
credit is left where credit is due.
|
||||
additionally, much inspiration was taken from these projects:
|
||||
yui.yahooapis.com/2.8.1/build/base/base.css
|
||||
camendesign.com/design/
|
||||
praegnanz.de/weblog/htmlcssjs-kickstart
|
||||
*/
|
||||
|
||||
/*
|
||||
html5doctor.com Reset Stylesheet (Eric Meyer's Reset Reloaded + HTML5 baseline)
|
||||
v1.4 2009-07-27 | Authors: Eric Meyer & Richard Clark
|
||||
html5doctor.com/html-5-reset-stylesheet/
|
||||
*/
|
||||
|
||||
html, body, div, span, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
abbr, address, cite, code,
|
||||
del, dfn, em, img, ins, kbd, q, samp,
|
||||
small, strong, sub, sup, var,
|
||||
b, i,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||
article, aside, canvas, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section, summary,
|
||||
time, mark, audio, video {
|
||||
margin:0;
|
||||
padding:0;
|
||||
border:0;
|
||||
outline:0;
|
||||
font-size:100%;
|
||||
vertical-align:baseline;
|
||||
background:transparent;
|
||||
}
|
||||
|
||||
article, aside, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section {
|
||||
display:block;
|
||||
}
|
||||
|
||||
nav ul { list-style:none; }
|
||||
|
||||
blockquote, q { quotes:none; }
|
||||
|
||||
blockquote:before, blockquote:after,
|
||||
q:before, q:after { content:''; content:none; }
|
||||
|
||||
a { margin:0; padding:0; font-size:100%; vertical-align:baseline; background:transparent; }
|
||||
|
||||
ins { background-color:#ff9; color:#000; text-decoration:none; }
|
||||
|
||||
mark { background-color:#ff9; color:#000; font-style:italic; font-weight:bold; }
|
||||
|
||||
del { text-decoration: line-through; }
|
||||
|
||||
abbr[title], dfn[title] { border-bottom:1px dotted; cursor:help; }
|
||||
|
||||
/* tables still need cellspacing="0" in the markup */
|
||||
table { border-collapse:collapse; border-spacing:0; }
|
||||
|
||||
hr { display:block; height:1px; border:0; border-top:1px solid #ccc; margin:1em 0; padding:0; }
|
||||
|
||||
input, select { vertical-align:middle; }
|
||||
/* END RESET CSS */
|
||||
|
||||
|
||||
/* fonts.css from the YUI Library: developer.yahoo.com/yui/
|
||||
Please refer to developer.yahoo.com/yui/fonts/ for font sizing percentages
|
||||
|
||||
There are three custom edits:
|
||||
* remove arial, helvetica from explicit font stack
|
||||
* we normalize monospace styles ourselves
|
||||
* table font-size is reset in the HTML5 reset above so there is no need to repeat
|
||||
*/
|
||||
body { font:13px/1.231 sans-serif; *font-size:small; } /* hack retained to preserve specificity */
|
||||
|
||||
select, input, textarea, button { font:99% sans-serif; }
|
||||
|
||||
/* normalize monospace sizing
|
||||
* en.wikipedia.org/wiki/MediaWiki_talk:Common.css/Archive_11#Teletype_style_fix_for_Chrome
|
||||
*/
|
||||
pre, code, kbd, samp { font-family: monospace, sans-serif; }
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
body { font:13px/1.231 sans-serif; *font-size:small; } /* hack retained to preserve specificity */
|
||||
body, select, input, textarea {
|
||||
/* #444 looks better than black: twitter.com/H_FJ/statuses/11800719859 */
|
||||
color: #444;
|
||||
/* set your base font here, to apply evenly
|
||||
/* font-family: Georgia, serif; */
|
||||
}
|
||||
|
||||
/* Headers (h1,h2,etc) have no default font-size or margin,
|
||||
you'll want to define those yourself. */
|
||||
h1,h2,h3,h4,h5,h6 { font-weight: bold; }
|
||||
h1 { font-size: 2em; }
|
||||
select, input, textarea, button { font:99% sans-serif; }
|
||||
|
||||
/* Accessible focus treatment: people.opera.com/patrickl/experiments/keyboard/test */
|
||||
a:hover, a:active { outline: none; }
|
||||
|
||||
.current { background: #ccc; }
|
||||
header span { padding: 0.2em 0.5em; display: inline-block; }
|
||||
dd, h1, body, html { margin: 0;}
|
||||
|
||||
|
||||
a, a:active, a:visited { color: #607890; }
|
||||
a:hover { color: #036; }
|
||||
.wrapper {width:200px; border:1px solid red;}
|
||||
|
||||
dl {margin:0 auto; width:900px;}
|
||||
dt {background-color:#ccc; margin-bottom:20px; cursor:pointer; cursor:hand; padding:5px; font-weight:bold; }
|
||||
dd {margin-bottom:30px;}
|
||||
|
||||
#clear-demo {width:500px; border:1px solid black;}
|
||||
#clear-demo-l {width:200px; border:1px solid black; float:left;}
|
||||
#clear-demo-r {width:200px; border:1px solid black; float:right;}
|
||||
#clear-demo-b {width:200px; border:1px solid black;}
|
||||
|
||||
header {text-align:center;}
|
||||
.show, .hide {color: #607890; cursor:pointer; cursor:hand;}
|
||||
|
||||
body {
|
||||
padding-bottom: 200px;
|
||||
}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 8.1 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 674 B |
312
demo/tests.html
312
demo/tests.html
@@ -1,312 +0,0 @@
|
||||
<!doctype html>
|
||||
|
||||
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
|
||||
<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
|
||||
<!--[if IE 7 ]> <html lang="en" class="no-js ie7"> <![endif]-->
|
||||
<!--[if IE 8 ]> <html lang="en" class="no-js ie8"> <![endif]-->
|
||||
<!--[if IE 9 ]> <html lang="en" class="no-js ie9"> <![endif]-->
|
||||
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame
|
||||
Remove this if you use the .htaccess -->
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
|
||||
<title>Boilerplate Test Suite</title>
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
|
||||
<!-- Mobile viewport optimized: j.mp/bplateviewport -->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<!-- Place favicon.ico & apple-touch-icon.png in the root of your domain and delete these references -->
|
||||
<link rel="shortcut icon" href="/favicon.ico">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
||||
|
||||
|
||||
<!-- CSS : implied media="all" -->
|
||||
<link rel="stylesheet" href="../css/style.css?v=2">
|
||||
<link rel="stylesheet" href="hack2.css">
|
||||
|
||||
<!-- Uncomment if you are specifically targeting less enabled mobile browsers
|
||||
<link rel="stylesheet" media="handheld" href="../css/handheld.css?v=2"> -->
|
||||
|
||||
<!-- All JavaScript at the bottom, except for Modernizr which enables HTML5 elements & feature detects -->
|
||||
<script src="../js/libs/modernizr-1.6.min.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="container">
|
||||
|
||||
|
||||
<header>
|
||||
<br /><br /><h1>HTML5 Boilerplate CSS Hack Sheet</h1><br /><br />
|
||||
</header>
|
||||
|
||||
|
||||
<div id="main" style="display:block;">
|
||||
<dl>
|
||||
<dt>Hack 01 - Set default color</dt>
|
||||
<dd>
|
||||
HTML5 Boilerplate suggests the default color looks better when set to #444 instead of #000.<br />
|
||||
<span style="color:black;">Web font default color</span>
|
||||
</dd>
|
||||
|
||||
<dt>Hack 02 - Vertical Scroll Bar</dt>
|
||||
<dd>
|
||||
Click <a href="#" id="shorten">contract</a> | <a href="#" id="expand">expand</a> to see how Boilerplate forces a scrollbar in non-IE.
|
||||
</dd>
|
||||
|
||||
<dt>Hack 03 - Accessible focus style</dt>
|
||||
<dd>
|
||||
Remove dotted outline around 'a' element on hover and on focus in certain browsers
|
||||
<br /><br />
|
||||
<span href="#" class="show">With Boilerplate CSS</span> | <span href="#" class="hide">Without Boilerplate CSS</span>
|
||||
<br /><br />
|
||||
<a href="#" class="preventDefault">Click me</a>
|
||||
</dd>
|
||||
|
||||
<dt>Hack 04 - Pre Wrapping</dt>
|
||||
<dd>
|
||||
Default <code>pre</code> doesn't wrap text. Boilerplate forces <code>pre</code> to wrap text.
|
||||
<br /><br />
|
||||
<span href="#" class="show">With Boilerplate CSS</span> | <span href="#" class="hide">Without Boilerplate CSS</span>
|
||||
<br /><br />
|
||||
with wrapping:<br /><br />
|
||||
<div style="height:115px;">
|
||||
<div class="wrapper">
|
||||
<pre>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</pre>
|
||||
</div>
|
||||
</div><br />
|
||||
without wrapping:<br /><br />
|
||||
<div class="wrapper">
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
</div>
|
||||
</dd>
|
||||
|
||||
<dt>Hack 05 - Remove default textarea scrollbar in IE</dt>
|
||||
<dd>
|
||||
IE shows a disabled scrollbar on empty <code>textarea</code>.<br><br>
|
||||
<span href="#" class="show">With Boilerplate CSS</span> | <span href="#" class="hide">Without Boilerplate CSS</span>
|
||||
<br /><br />
|
||||
<form>
|
||||
<textarea></textarea>
|
||||
</form>
|
||||
</dd>
|
||||
|
||||
<dt>Hack 06 - IE6,7 legend margin</dt>
|
||||
<dd>
|
||||
Left align form legend to the inner text in IE 6,7.<br /><br />
|
||||
<span href="#" class="show">With Boilerplate CSS</span> | <span href="#" class="hide">Without Boilerplate CSS</span>
|
||||
<br /><br />
|
||||
<form>
|
||||
<fieldset>
|
||||
<legend>Information:</legend><br />
|
||||
Name: <input type="text" size="30" /><br />
|
||||
Email: <input type="text" size="30" /><br />
|
||||
Date of birth: <input type="text" size="10" />
|
||||
</fieldset>
|
||||
</form>
|
||||
</dd>
|
||||
|
||||
<dt>Hack 07 - Vertically align checkboxes, radios, text inputs with their label</dt>
|
||||
<dd>
|
||||
<span href="#" class="show">With Boilerplate CSS</span> | <span href="#" class="hide">Without Boilerplate CSS</span>
|
||||
<br /><br />
|
||||
<input type="radio" /> Option A <br /><br />
|
||||
<input type="checkbox" /> Item B <br /><br />
|
||||
Name: <input type="text" />
|
||||
</dd>
|
||||
|
||||
<dt>Hack 08 - Hand cursor on clickable input elements</dt>
|
||||
<dd>
|
||||
<span href="#" class="show">With Boilerplate CSS</span> | <span href="#" class="hide">Without Boilerplate CSS</span>
|
||||
<br /><br />
|
||||
Input with type submit <input type="submit" value="submit" />
|
||||
</dd>
|
||||
|
||||
|
||||
<dt>Hack 09 - Webkit browsers form elements margin</dt>
|
||||
<dd>
|
||||
Webkit browsers add a 2px margin outside the chrome of form elements.<br /><br />
|
||||
<span href="#" class="show">With Boilerplate CSS</span> | <span href="#" class="hide">Without Boilerplate CSS</span>
|
||||
<br /><br />
|
||||
<form>
|
||||
<input type="submit" value="submit" /><br /><br />
|
||||
<button type="button">Click Me!</button><br /><br />
|
||||
<select><option>Default</option></select>
|
||||
</form>
|
||||
</dd>
|
||||
|
||||
<dt>Hack 10 - Make buttons width rendered correctly</dt>
|
||||
<dd>
|
||||
IE adds extra padding to <code>button</code>. This fixes the issue. <br /><br />
|
||||
<span href="#" class="show">With Boilerplate CSS</span> | <span href="#" class="hide">Without Boilerplate CSS</span>
|
||||
<br /><br />
|
||||
<form>
|
||||
<button type="button">Click Me!</button>
|
||||
<button type="button">This is a really long button</button>
|
||||
</form>
|
||||
</dd>
|
||||
|
||||
<dt>Hack 11 - Bicubic resizing for non-native sized IMG</dt>
|
||||
<dd>
|
||||
IE7 hack to reduce distortion caused by image resizing <br /><br />
|
||||
<span href="#" class="show">With Boilerplate CSS</span> | <span href="#" class="hide">Without Boilerplate CSS</span>
|
||||
<br /><br />
|
||||
<img src="../apple-touch-icon.png" width="27" /><br />
|
||||
<img src="../apple-touch-icon.png" width="57" /><br />
|
||||
<img src="../apple-touch-icon.png" width="157" /><br />
|
||||
</dd>
|
||||
|
||||
<dt>Hack 12 - Hide visually</dt>
|
||||
<dd>
|
||||
Hide elements visually, but have it available for screen readers.
|
||||
<br /><br />
|
||||
<span href="#" class="show">With Boilerplate CSS</span> | <span href="#" class="hide">Without Boilerplate CSS</span>
|
||||
<br /><br />
|
||||
<div class="visuallyhidden">showing</div>
|
||||
</dd>
|
||||
|
||||
<dt>Hack 13 - Image text replacement</dt>
|
||||
<dd>
|
||||
Replace text with images.
|
||||
<br /><br />
|
||||
<span href="#" class="show">With Boilerplate CSS</span> | <span href="#" class="hide">Without Boilerplate CSS</span>
|
||||
<br /><br />
|
||||
|
||||
<div class="ir" style="background:url('../apple-touch-icon.png'); width:57px; height:57px;">Apple Touch Icon</div>
|
||||
|
||||
</dd>
|
||||
|
||||
<dt>Hack 14 - Clear Floats</dt>
|
||||
<dd>
|
||||
Clear Floated elements without extra markup.
|
||||
<br /><br />
|
||||
<span href="#" class="show">With Boilerplate CSS</span> | <span href="#" class="hide">Without Boilerplate CSS</span>
|
||||
<br /><br />
|
||||
<div id="clear-demo" class="clearfix">
|
||||
<div id="clear-demo-l">text floated left</div><div id="clear-demo-r">text floated right</div>
|
||||
</div>
|
||||
<div id="clear-demo-b">unfloated text</div>
|
||||
</dd>
|
||||
|
||||
|
||||
<dt>Hack 15 - PNG fix</dt>
|
||||
<dd>fix pngs for correct display in IE6
|
||||
<br /> <br />
|
||||
|
||||
<div style="position:relative">
|
||||
|
||||
<!-- wassup gradient. -->
|
||||
<div style="position:absolute; height: 40px; background-color: #444444; background-image: -moz-linear-gradient(top, #444444, #999999); background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #444444),color-stop(1, #999999)); filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#444444', EndColorStr='#999999'); ">
|
||||
|
||||
|
||||
<div class="png_bg" style="border:1px solid #ddd; width:100px; padding:10px 10px 10px 50px; display:inline-block; background:url(test_tubes.png) no-repeat 5px center;">
|
||||
<img src="internet_explorer.png" alt="IE is so awesome" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
</footer>
|
||||
</div> <!--! end of #container -->
|
||||
|
||||
|
||||
<!-- Javascript at the bottom for fast page loading -->
|
||||
|
||||
<!-- Grab Google CDN's jQuery. fall back to local if necessary -->
|
||||
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
|
||||
<script>!window.jQuery && document.write(unescape('%3Cscript src="../js/libs/jquery-1.4.2.js"%3E%3C/script%3E'))</script>
|
||||
|
||||
|
||||
<script>
|
||||
$('#expand').click(function() {
|
||||
$('#container').css('height','auto').css('overflow','');
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#shorten').click(function() {
|
||||
$('#container').css('height','300px').css('overflow','hidden');
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#atag').click(function() {
|
||||
return false;
|
||||
});
|
||||
|
||||
$('.show').click(function(){
|
||||
$('.show').addClass('current')
|
||||
$('.hide').removeClass('current');
|
||||
showStyle();
|
||||
return false;
|
||||
});
|
||||
$('.hide').click(function(){
|
||||
$('.hide').addClass('current')
|
||||
$('.show').removeClass('current');
|
||||
// freeze the size of each tests so the page doesnt jump.
|
||||
$('dd').each(function(){
|
||||
$(this).height( $(this).height() );
|
||||
});
|
||||
|
||||
hideStyle();
|
||||
return false;
|
||||
});
|
||||
|
||||
var linkTags = $('link');
|
||||
function hideStyle() {
|
||||
// tee hee
|
||||
$('link[href*=style.css]').attr('media','braille');
|
||||
}
|
||||
function showStyle() {
|
||||
$('link[href*=style.css]').attr('media','all');
|
||||
}
|
||||
|
||||
$('.preventDefault').click(function() {
|
||||
return false;
|
||||
});
|
||||
|
||||
$(function(){
|
||||
$('.show').addClass('current');
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
<!-- scripts concatenated and minified via ant build script-->
|
||||
<script src="../js/plugins.js"></script>
|
||||
<script src="../js/script.js"></script>
|
||||
<!-- end concatenated and minified scripts-->
|
||||
|
||||
|
||||
<!--[if lt IE 7 ]>
|
||||
<script src="../js/libs/dd_belatedpng.js"></script>
|
||||
<script> DD_belatedPNG.fix('img, .png_bg'); //fix any <img> or .png_bg background-images </script>
|
||||
<![endif]-->
|
||||
|
||||
<!-- yui profiler and profileviewer - remove for production -->
|
||||
<script src="../js/profiling/yahoo-profiling.min.js"></script>
|
||||
<script src="../js/profiling/config.js"></script>
|
||||
<!-- end profiling code -->
|
||||
|
||||
|
||||
<!-- asynchronous google analytics: mathiasbynens.be/notes/async-analytics-snippet
|
||||
change the UA-XXXXX-X to be your site's ID -->
|
||||
<script>
|
||||
var _gaq = [['_setAccount', 'UA-XXXXX-X'], ['_trackPageview']];
|
||||
(function(d, t) {
|
||||
var g = d.createElement(t),
|
||||
s = d.getElementsByTagName(t)[0];
|
||||
g.async = true;
|
||||
g.src = ('https:' == location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||
s.parentNode.insertBefore(g, s);
|
||||
})(document, 'script');
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
37
doc/TOC.md
Normal file
37
doc/TOC.md
Normal file
@@ -0,0 +1,37 @@
|
||||
[HTML5 Boilerplate homepage](http://html5boilerplate.com)
|
||||
|
||||
# HTML5 Boilerplate documentation:
|
||||
|
||||
## Getting started
|
||||
|
||||
* [Usage](usage.md) — Overview of the project contents.
|
||||
* [FAQ](faq.md) — Frequently asked questions, along with their answers.
|
||||
|
||||
## The core of HTML5 Boilerplate
|
||||
|
||||
* [HTML](html.md) — A guide to the default HTML.
|
||||
* [CSS](css.md) — A guide to the default CSS.
|
||||
* [JavaScript](js.md) — A guide to the default JavaScript.
|
||||
* [.htaccess](https://github.com/h5bp/server-configs-apache/tree/master/doc)
|
||||
— All about the Apache web server configs (also see our [alternative server
|
||||
configs](https://github.com/h5bp/server-configs/blob/master/README.md)).
|
||||
* [crossdomain.xml](crossdomain.md) — An introduction to making use of
|
||||
crossdomain requests.
|
||||
* [Everything else](misc.md).
|
||||
|
||||
## Development
|
||||
|
||||
* [Extending and customizing HTML5 Boilerplate](extend.md) — Going further with
|
||||
the boilerplate.
|
||||
|
||||
## Related projects
|
||||
|
||||
HTML5 Boilerplate has several related projects to help improve the performance
|
||||
of your site/app in various production environments.
|
||||
|
||||
* [Server configs](https://github.com/h5bp/server-configs) — Configs for
|
||||
different servers.
|
||||
* [Node build script](https://github.com/h5bp/node-build-script) — A
|
||||
feature-rich [grunt](https://github.com/gruntjs/grunt) plugin.
|
||||
* [Ant build script](https://github.com/h5bp/ant-build-script) — The original
|
||||
HTML5 Boilerplate build script.
|
||||
17
doc/crossdomain.md
Normal file
17
doc/crossdomain.md
Normal file
@@ -0,0 +1,17 @@
|
||||
[HTML5 Boilerplate homepage](http://html5boilerplate.com) | [Documentation
|
||||
table of contents](TOC.md)
|
||||
|
||||
# crossdomain.xml
|
||||
|
||||
A cross-domain policy file is an XML document that grants a web client—such as
|
||||
Adobe Flash Player, Adobe Reader, etc., permission to handle data across
|
||||
multiple domains. When a client hosts content from a particular source domain
|
||||
and that content makes requests directed towards a domain other than its own,
|
||||
the remote domain would need to host a cross-domain policy file that grants
|
||||
access to the source domain, allowing the client to continue with the
|
||||
transaction. Policy files grant read access to data, permit a client to include
|
||||
custom headers in cross-domain requests, and are also used with sockets to
|
||||
grant permissions for socket-based connections.
|
||||
|
||||
For full details, check out Adobe's article about the [cross-domain policy file
|
||||
specification](http://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html).
|
||||
136
doc/css.md
Normal file
136
doc/css.md
Normal file
@@ -0,0 +1,136 @@
|
||||
[HTML5 Boilerplate homepage](http://html5boilerplate.com) | [Documentation
|
||||
table of contents](TOC.md)
|
||||
|
||||
# The CSS
|
||||
|
||||
The HTML5 Boilerplate starting CSS includes:
|
||||
|
||||
* [Normalize.css](https://github.com/necolas/normalize.css).
|
||||
* Useful HTML5 Boilerplate defaults.
|
||||
* Common helpers.
|
||||
* Placeholder media queries.
|
||||
* Print styles.
|
||||
|
||||
This starting CSS does not rely on the presence of conditional classnames,
|
||||
conditional style sheets, or Modernizr. It is ready to use whatever your
|
||||
development preferences happen to be.
|
||||
|
||||
|
||||
## Normalize.css
|
||||
|
||||
Normalize.css is a modern, HTML5-ready alternative to CSS resets. It contains
|
||||
extensive inline documentation. Please refer to the [Normalize.css
|
||||
project](http://necolas.github.com/normalize.css/) for more information.
|
||||
|
||||
|
||||
## HTML5 Boilerplate defaults
|
||||
|
||||
This project includes a handful of base styles that build upon Normalize.css.
|
||||
These include:
|
||||
|
||||
* Basic typography settings to provide improved text readability by default.
|
||||
* Protection against unwanted `text-shadow` during text highlighting.
|
||||
* Tweaks to default image alignment, fieldsets, and textareas.
|
||||
* A pretty Chrome Frame prompt.
|
||||
|
||||
You are free to modify or add to these base styles as your project requires.
|
||||
|
||||
|
||||
## Common helpers
|
||||
|
||||
#### `.ir`
|
||||
|
||||
Add the `.ir` class to any element you are applying image-replacement to. When
|
||||
replacing an element's content with an image, make sure to also set a specific
|
||||
`background-image: url(pathtoimage.png);`, `width`, and `height` so that your
|
||||
replacement image appears.
|
||||
|
||||
#### `.hidden`
|
||||
|
||||
Add the `.hidden` class to any elements that you want to hide from all
|
||||
presentations, including screen readers. It could be an element that will be
|
||||
populated later with JavaScript or an element you will hide with JavaScript. Do
|
||||
not use this for SEO keyword stuffing. That is just not cool.
|
||||
|
||||
#### `.visuallyhidden`
|
||||
|
||||
Add the `.visuallyhidden` class to hide text from browsers but make it
|
||||
available for screen readers. You can use this to hide text that is specific to
|
||||
screen readers but that other users should not see. [About invisible
|
||||
content](http://www.webaim.org/techniques/css/invisiblecontent/), [Hiding
|
||||
content for
|
||||
accessibility](http://snook.ca/archives/html_and_css/hiding-content-for-accessibility),
|
||||
[HTML5 Boilerplate
|
||||
issue/research](https://github.com/h5bp/html5-boilerplate/issues/194/).
|
||||
|
||||
#### `.invisible`
|
||||
|
||||
Add the `.invisible` class to any element you want to hide without affecting
|
||||
layout. When you use `display: none` an element is effectively removed from the
|
||||
layout. But in some cases you want the element to simply be invisible while
|
||||
remaining in the flow and not affecting the positioning of surrounding
|
||||
content.
|
||||
|
||||
#### `.clearfix`
|
||||
|
||||
Adding `.clearfix` to an element will ensure that it always fully contains its
|
||||
floated children. There have been many variants of the clearfix hack over the
|
||||
years, and there are other hacks that can also help you to contain floated
|
||||
children, but the HTML5 Boilerplate currently uses the [micro
|
||||
clearfix](http://nicolasgallagher.com/micro-clearfix-hack/).
|
||||
|
||||
|
||||
## Media Queries
|
||||
|
||||
The boilerplate makes it easy to get started with a "Mobile First" and
|
||||
[Responsive Web
|
||||
Design](http://www.alistapart.com/articles/responsive-web-design/) approach to
|
||||
development. But it's worth remembering that there are [no silver
|
||||
bullets](http://www.cloudfour.com/css-media-query-for-mobile-is-fools-gold/).
|
||||
|
||||
We include a placeholder Media Queries to build up your mobile styles for wider
|
||||
viewports and high-resolution displays. It's recommended that you adapt these
|
||||
Media Queries based on the content of your site rather than mirroring the fixed
|
||||
dimensions of specific devices.
|
||||
|
||||
If you do not want to take a "Mobile First" approach, you can simply edit or
|
||||
remove these placeholder Media Queries. One possibility would be to work from
|
||||
wide viewports down and use `max-width` MQs instead, e.g., `@media only screen
|
||||
and (max-width: 480px)`.
|
||||
|
||||
Take a look into the [Mobile
|
||||
Boilerplate](https://github.com/h5bp/mobile-boilerplate) for features that are
|
||||
useful when developing mobile wep apps.
|
||||
|
||||
|
||||
## Print styles
|
||||
|
||||
* Print styles are inlined to [reduce the number of page
|
||||
requests](http://www.phpied.com/delay-loading-your-print-css/).
|
||||
* We strip all background colors, change the font color to black and remove
|
||||
text-shadow. This is meant to [help save printer ink and make the printing
|
||||
process much faster](http://www.sanbeiji.com/archives/953).
|
||||
* Anchors do not need colors to indicate they are linked. They are underlined
|
||||
to indicate so.
|
||||
* Anchors and Abbreviations are expanded to indicate where users reading the
|
||||
printed page can refer to.
|
||||
* But we do not want to show link text for image replaced elements (given that
|
||||
they are primarily images).
|
||||
|
||||
### Paged media styles
|
||||
|
||||
* Paged media is supported only in a [few
|
||||
browsers](http://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28Cascading_Style_Sheets%29#Grammar_and_rules).
|
||||
* Paged media support means browsers would know how to interpret instructions
|
||||
on breaking content into pages and on orphans/widows.
|
||||
* We use `page-break-inside: avoid;` to prevent an image and table row from
|
||||
being split into two different pages, so use the same `page-break-inside:
|
||||
avoid;` for that as well.
|
||||
* Headings should always appear with the text they are titles for. So, we
|
||||
ensure headings never appear in a different page than the text they describe
|
||||
by using `page-break-after: avoid;`.
|
||||
* We also apply a default margin for the page specified in `cm`.
|
||||
* We do not want [orphans and
|
||||
widows](http://en.wikipedia.org/wiki/Widows_and_orphans) to appear on pages
|
||||
you print. So, by defining `orphans: 3` and `widows: 3` you define the minimal
|
||||
number of words that every line should contain.
|
||||
586
doc/extend.md
Normal file
586
doc/extend.md
Normal file
@@ -0,0 +1,586 @@
|
||||
[HTML5 Boilerplate homepage](http://html5boilerplate.com) | [Documentation
|
||||
table of contents](TOC.md)
|
||||
|
||||
# Extend and customise HTML5 Boilerplate
|
||||
|
||||
Here is some useful advice for how you can make your project with HTML5
|
||||
Boilerplate even better. We don't want to include it all by default, as not
|
||||
everything fits with everyone's needs.
|
||||
|
||||
|
||||
## DNS prefetching
|
||||
|
||||
In short, DNS Prefetching is a method of informing the browser of domain names
|
||||
referenced on a site so that the client can resolve the DNS for those hosts,
|
||||
cache them, and when it comes time to use them, have a faster turn around on
|
||||
the request.
|
||||
|
||||
### Implicit prefetches
|
||||
|
||||
There is a lot of prefetching done for you automatically by the browser. When
|
||||
the browser encounters an anchor in your html that does not share the same
|
||||
domain name as the current location the browser requests, from the client OS,
|
||||
the IP address for this new domain. The client first checks its cache and
|
||||
then, lacking a cached copy, makes a request from a DNS server. These requests
|
||||
happen in the background and are not meant to block the rendering of the
|
||||
page.
|
||||
|
||||
The goal of this is that when the foreign IP address is finally needed it will
|
||||
already be in the client cache and will not block the loading of the foreign
|
||||
content. Less requests result in faster page load times. The perception of this
|
||||
is increased on a mobile platform where DNS latency can be greater.
|
||||
|
||||
#### Disable implicit prefetching
|
||||
|
||||
```html
|
||||
<meta http-equiv="x-dns-prefetch-control" content="off">
|
||||
```
|
||||
|
||||
Even with X-DNS-Prefetch-Control meta tag (or http header) browsers will still
|
||||
prefetch any explicit dns-prefetch links.
|
||||
|
||||
**_WARNING:_** THIS MAY MAKE YOUR SITE SLOWER IF YOU RELY ON RESOURCES FROM
|
||||
FOREIGN DOMAINS.
|
||||
|
||||
### Explicit prefetches
|
||||
|
||||
Typically the browser only scans the HTML for foreign domains. If you have
|
||||
resources that are outside of your HTML (a javascript request to a remote
|
||||
server or a CDN that hosts content that may not be present on every page of
|
||||
your site, for example) then you can queue up a domain name to be prefetched.
|
||||
|
||||
```html
|
||||
<link rel="dns-prefetch" href="//example.com">
|
||||
<link rel="dns-prefetch" href="//ajax.googleapis.com">
|
||||
```
|
||||
|
||||
You can use as many of these as you need, but it's best if they are all
|
||||
immediately after the [Meta
|
||||
Charset](https://developer.mozilla.org/en/HTML/Element/meta#attr-charset)
|
||||
element (which should go right at the top of the `head`), so the browser can
|
||||
act on them ASAP.
|
||||
|
||||
#### Common Prefetch Links
|
||||
|
||||
Amazon S3:
|
||||
|
||||
```html
|
||||
<link rel="dns-prefetch" href="//s3.amazonaws.com">
|
||||
```
|
||||
|
||||
Google APIs:
|
||||
|
||||
```html
|
||||
<link rel="dns-prefetch" href="//ajax.googleapis.com">
|
||||
```
|
||||
|
||||
Microsoft Ajax Content Delivery Network:
|
||||
|
||||
```html
|
||||
<link rel="dns-prefetch" href="//ajax.microsoft.com">
|
||||
<link rel="dns-prefetch" href="//ajax.aspnetcdn.com">
|
||||
```
|
||||
|
||||
### Browser support for DNS prefetching
|
||||
|
||||
Chrome, Firefox 3.5+, Safari 5+, Opera (Unknown), IE 9 (called "Pre-resolution"
|
||||
on blogs.msdn.com)
|
||||
|
||||
### Further reading about DNS prefetching
|
||||
|
||||
* https://developer.mozilla.org/En/Controlling_DNS_prefetching
|
||||
* http://dev.chromium.org/developers/design-documents/dns-prefetching
|
||||
* http://www.apple.com/safari/whats-new.html
|
||||
* http://blogs.msdn.com/b/ie/archive/2011/03/17/internet-explorer-9-network-performance-improvements.aspx
|
||||
* http://dayofjs.com/videos/22158462/web-browsers_alex-russel
|
||||
|
||||
|
||||
## Search
|
||||
|
||||
### Direct search spiders to your sitemap
|
||||
|
||||
[Learn how to make a sitemap](http://www.sitemaps.org/protocol.php)
|
||||
|
||||
```html
|
||||
<link rel="sitemap" type="application/xml" title="Sitemap" href="/sitemap.xml">
|
||||
```
|
||||
|
||||
### Hide pages from search engines
|
||||
|
||||
According to Heather Champ, former community manager at Flickr, you should not
|
||||
allow search engines to index your "Contact Us" or "Complaints" page if you
|
||||
value your sanity. This is an HTML-centric way of achieving that.
|
||||
|
||||
```html
|
||||
<meta name="robots" content="noindex">
|
||||
```
|
||||
|
||||
**_WARNING:_** DO NOT INCLUDE ON PAGES THAT SHOULD APPEAR IN SEARCH ENGINES.
|
||||
|
||||
### Firefox and IE Search Plugins
|
||||
|
||||
Sites with in-site search functionality should be strongly considered for a
|
||||
browser search plugin. A "search plugin" is an XML file which defines how your
|
||||
plugin behaves in the browser. [How to make a browser search
|
||||
plugin](http://www.google.com/search?ie=UTF-8&q=how+to+make+browser+search+plugin).
|
||||
|
||||
```html
|
||||
<link rel="search" title="" type="application/opensearchdescription+xml" href="">
|
||||
```
|
||||
|
||||
|
||||
## Internet Explorer
|
||||
|
||||
### Prompt users to switch to "Desktop Mode" in IE10 Metro
|
||||
|
||||
IE10 does not support plugins, such as Flash, in Metro mode. If your site
|
||||
requires plugins, you can let users know that via the X-UA-Compatible meta
|
||||
element, which will prompt them to switch to Desktop Mode.
|
||||
|
||||
```html
|
||||
<meta http-equiv="X-UA-Compatible" content="requiresActiveX=true">
|
||||
```
|
||||
|
||||
Here's what it looks like alongside H5BP's default X-UA-Compatible values:
|
||||
|
||||
```html
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1,requiresActiveX=true">
|
||||
```
|
||||
|
||||
You can find more information in [Microsoft's IEBlog post about prompting for
|
||||
plugin use in IE10 Metro
|
||||
Mode](http://blogs.msdn.com/b/ie/archive/2012/01/31/web-sites-and-a-plug-in-free-web.aspx).
|
||||
|
||||
### IE Pinned Sites (IE9+)
|
||||
|
||||
Enabling your application for pinning will allow IE9 users to add it to their
|
||||
Windows Taskbar and Start Menu. This comes with a range of new tools that you
|
||||
can easily configure with the elements below. See more [documentation on IE9
|
||||
Pinned Sites](http://msdn.microsoft.com/en-us/library/gg131029.aspx).
|
||||
|
||||
### Name the Pinned Site for Windows
|
||||
|
||||
Without this rule, Windows will use the page title as the name for your
|
||||
application.
|
||||
|
||||
```html
|
||||
<meta name="application-name" content="Sample Title">
|
||||
```
|
||||
|
||||
### Give your Pinned Site a tooltip
|
||||
|
||||
You know — a tooltip. A little textbox that appears when the user holds their
|
||||
mouse over your Pinned Site's icon.
|
||||
|
||||
```html
|
||||
<meta name="msapplication-tooltip" content="A description of what this site does.">
|
||||
```
|
||||
|
||||
### Set a default page for your Pinned Site
|
||||
|
||||
If the site should go to a specific URL when it is pinned (such as the
|
||||
homepage), enter it here. One idea is to send it to a special URL so you can
|
||||
track the number of pinned users, like so:
|
||||
`http://www.example.com/index.html?pinned=true`
|
||||
|
||||
```html
|
||||
<meta name="msapplication-starturl" content="http://www.example.com/index.html?pinned=true">
|
||||
```
|
||||
|
||||
### Recolor IE's controls manually for a Pinned Site
|
||||
|
||||
IE9+ will automatically use the overall color of your Pinned Site's favicon to
|
||||
shade its browser buttons. UNLESS you give it another color here. Only use
|
||||
named colors (`red`) or hex colors (`#ff0000`).
|
||||
|
||||
```html
|
||||
<meta name="msapplication-navbutton-color" content="#ff0000">
|
||||
```
|
||||
|
||||
### Manually set the window size of a Pinned Site
|
||||
|
||||
If the site should open at a certain window size once pinned, you can specify
|
||||
the dimensions here. It only supports static pixel dimensions. 800x600
|
||||
minimum.
|
||||
|
||||
```html
|
||||
<meta name="msapplication-window" content="width=800;height=600">
|
||||
```
|
||||
|
||||
### Jump List "Tasks" for Pinned Sites
|
||||
|
||||
Add Jump List Tasks that will appear when the Pinned Site's icon gets a
|
||||
right-click. Each Task goes to the specified URL, and gets its own mini icon
|
||||
(essentially a favicon, a 16x16 .ICO). You can add as many of these as you
|
||||
need.
|
||||
|
||||
```html
|
||||
<meta name="msapplication-task" content="name=Task 1;action-uri=http://host/Page1.html;icon-uri=http://host/icon1.ico">
|
||||
<meta name="msapplication-task" content="name=Task 2;action-uri=http://microsoft.com/Page2.html;icon-uri=http://host/icon2.ico">
|
||||
```
|
||||
|
||||
### (Windows 8) High quality visuals for Pinned Sites
|
||||
|
||||
Windows 8 adds the ability for you to provide a PNG tile image and specify the
|
||||
tile's background color. [Full details on the IE
|
||||
blog](http://blogs.msdn.com/b/ie/archive/2012/06/08/high-quality-visuals-for-pinned-sites-in-windows-8.aspx).
|
||||
|
||||
* Create a 144x144 image of your site icon, filling all of the canvas, and
|
||||
using a transparent background.
|
||||
* Save this image as a 32-bit PNG and optimize it without reducing
|
||||
colour-depth. It can be named whatever you want (e.g. `metro-tile.png`).
|
||||
* To reference the tile and its color, add the HTML `meta` elements described
|
||||
in the IE Blog post.
|
||||
|
||||
### (Windows 8) Badges for Pinned Sites
|
||||
|
||||
IE10 will poll an XML document for badge information to display on your app's
|
||||
tile in the Start screen. The user will be able to receive these badge updates
|
||||
even when your app isn't actively running. The badge's value can be a number,
|
||||
or one of a predefined list of glyphs.
|
||||
|
||||
* [Tutorial on IEBlog with link to badge XML schema](http://blogs.msdn.com/b/ie/archive/2012/04/03/pinned-sites-in-windows-8.aspx)
|
||||
* [Available badge values](http://msdn.microsoft.com/en-us/library/ie/br212849.aspx)
|
||||
|
||||
```html
|
||||
<meta name="msapplication-badge" value="frequency=NUMBER_IN_MINUTES;polling-uri=http://www.example.com/path/to/file.xml">
|
||||
```
|
||||
|
||||
### Disable link highlighting upon tap in IE10
|
||||
|
||||
Similar to [-webkit-tap-highlight-color](http://davidwalsh.name/mobile-highlight-color)
|
||||
in iOS Safari. Unlike that CSS property, this is an HTML meta element, and it's
|
||||
value is boolean rather than a color. It's all or nothing.
|
||||
|
||||
```html
|
||||
<meta name="msapplication-tap-highlight" content="no" />
|
||||
```
|
||||
|
||||
You can read about this useful element and more techniques in
|
||||
[Microsoft's documentation on adapting WebKit-oriented apps for IE10](http://blogs.windows.com/windows_phone/b/wpdev/archive/2012/11/15/adapting-your-webkit-optimized-site-for-internet-explorer-10.aspx).
|
||||
|
||||
### Suppress IE6 image toolbar
|
||||
|
||||
Kill IE6's pop-up-on-mouseover toolbar for images that can interfere with
|
||||
certain designs and be pretty distracting in general.
|
||||
|
||||
```html
|
||||
<meta http-equiv="imagetoolbar" content="false">
|
||||
```
|
||||
|
||||
|
||||
## Social Networks
|
||||
|
||||
### Facebook Open Graph data
|
||||
|
||||
You can control the information that Facebook and others display when users
|
||||
share your site. Below are just the most basic data points you might need. For
|
||||
specific content types (including "website"), see [Facebook's built-in Open
|
||||
Graph content
|
||||
templates](https://developers.facebook.com/docs/opengraph/objects/builtin/).
|
||||
Take full advantage of Facebook's support for complex data and activity by
|
||||
following the [Open Graph
|
||||
tutorial](https://developers.facebook.com/docs/opengraph/tutorial/).
|
||||
|
||||
```html
|
||||
<meta property="og:title" content="">
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:image" content="">
|
||||
```
|
||||
|
||||
### Twitter Cards
|
||||
|
||||
Twitter provides a snippet specification that serves a similar purpose to Open
|
||||
Graph. In fact, Twitter will use Open Graph when Cards is not available. Note
|
||||
that, as of this writing, Twitter requires that app developers activate Cards
|
||||
on a per-domain basis. You can read more about the various snippet formats
|
||||
and application process in the [official Twitter Cards
|
||||
documentation](https://dev.twitter.com/docs/cards).
|
||||
|
||||
```html
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:site" content="@site_account">
|
||||
<meta name="twitter:creator" content="@individual_account">
|
||||
<meta name="twitter:url" content="http://www.example.com/path/to/page.html">
|
||||
<meta name="twitter:title" content="">
|
||||
<meta name="twitter:description" content="">
|
||||
<meta name="twitter:image" content="http://www.example.com/path/to/image.jpg">
|
||||
```
|
||||
|
||||
|
||||
## URLs
|
||||
|
||||
### Canonical URL
|
||||
|
||||
Signal to search engines and others "Use this URL for this page!" Useful when
|
||||
parameters after a `#` or `?` is used to control the display state of a page.
|
||||
`http://www.example.com/cart.html?shopping-cart-open=true` can be indexed as
|
||||
the cleaner, more accurate `http://www.example.com/cart.html`.
|
||||
|
||||
```html
|
||||
<link rel="canonical" href="">
|
||||
```
|
||||
|
||||
### Official shortlink
|
||||
|
||||
Signal to the world "This is the shortened URL to use this page!" Poorly
|
||||
supported at this time. Learn more by reading the [article about shortlinks on
|
||||
the Microformats wiki](http://microformats.org/wiki/rel-shortlink).
|
||||
|
||||
```html
|
||||
<link rel="shortlink" href="h5bp.com">
|
||||
```
|
||||
|
||||
|
||||
## News Feeds
|
||||
|
||||
### RSS
|
||||
|
||||
Have an RSS feed? Link to it here. Want to [learn how to write an RSS feed from
|
||||
scratch](http://www.rssboard.org/rss-specification)?
|
||||
|
||||
```html
|
||||
<link rel="alternate" type="application/rss+xml" title="RSS" href="/rss.xml">
|
||||
```
|
||||
|
||||
### Atom
|
||||
|
||||
Atom is similar to RSS, and you might prefer to use it instead of or in
|
||||
addition to it. [See what Atom's all
|
||||
about](http://www.atomenabled.org/developers/syndication/).
|
||||
|
||||
```html
|
||||
<link rel="alternate" type="application/atom+xml" title="Atom" href="/atom.xml">
|
||||
```
|
||||
|
||||
### Pingbacks
|
||||
|
||||
Your server may be notified when another site links to yours. The href
|
||||
attribute should contain the location of your pingback service.
|
||||
|
||||
```html
|
||||
<link rel="pingback" href="">
|
||||
```
|
||||
|
||||
* High-level explanation: http://codex.wordpress.org/Introduction_to_Blogging#Pingbacks
|
||||
* Step-by-step example case: http://www.hixie.ch/specs/pingback/pingback-1.0#TOC5
|
||||
* PHP pingback service: http://blog.perplexedlabs.com/2009/07/15/xmlrpc-pingbacks-using-php/
|
||||
|
||||
|
||||
## App Stores
|
||||
|
||||
### Install a Chrome Web Store app
|
||||
|
||||
Users can install a Chrome app directly from your website, as long as the app
|
||||
and site have been associated via Google's Webmaster Tools. Read more on
|
||||
[Chrome Web Store's Inline Installation
|
||||
docs](https://developers.google.com/chrome/web-store/docs/inline_installation).
|
||||
|
||||
```html
|
||||
<link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/APP_ID">
|
||||
```
|
||||
|
||||
### Smart App Banners in iOS 6 Safari
|
||||
|
||||
Stop bothering everyone with gross modals advertising your entry in the App Store.
|
||||
This bit of code will unintrusively allow the user the option to download your iOS
|
||||
app, or open it with some data about the user's current state on the website.
|
||||
|
||||
```html
|
||||
<meta name="apple-itunes-app" content="app-id=APP_ID,app-argument=SOME_TEXT">
|
||||
```
|
||||
|
||||
## Google Analytics augments
|
||||
|
||||
### More tracking settings
|
||||
|
||||
The [optimized Google Analytics
|
||||
snippet](http://mathiasbynens.be/notes/async-analytics-snippet) included with
|
||||
HTML5 Boilerplate includes something like this:
|
||||
|
||||
```js
|
||||
var _gaq = [['_setAccount', 'UA-XXXXX-X'], ['_trackPageview']];
|
||||
```
|
||||
|
||||
In case you need more settings, just extend the array literal instead of
|
||||
[`.push()`ing to the
|
||||
array](http://mathiasbynens.be/notes/async-analytics-snippet#dont-push-it)
|
||||
afterwards:
|
||||
|
||||
```js
|
||||
var _gaq = [['_setAccount', 'UA-XXXXX-X'], ['_trackPageview'], ['_setAllowAnchor', true]];
|
||||
```
|
||||
|
||||
### Anonymize IP addresses
|
||||
|
||||
In some countries, no personal data may be transferred outside jurisdictions
|
||||
that do not have similarly strict laws (i.e. from Germany to outside the EU).
|
||||
Thus a webmaster using the Google Analytics script may have to ensure that no
|
||||
personal (trackable) data is transferred to the US. You can do that with [the
|
||||
`_gat.anonymizeIp`
|
||||
option](http://code.google.com/apis/analytics/docs/gaJS/gaJSApi_gat.html#_gat._anonymizeIp).
|
||||
In use it looks like this:
|
||||
|
||||
```js
|
||||
var _gaq = [['_setAccount', 'UA-XXXXX-X'], ['_gat._anonymizeIp'], ['_trackPageview']];
|
||||
```
|
||||
|
||||
### Track jQuery AJAX requests in Google Analytics
|
||||
|
||||
An article by @JangoSteve explains how to [track jQuery AJAX requests in Google
|
||||
Analytics](http://www.alfajango.com/blog/track-jquery-ajax-requests-in-google-analytics/).
|
||||
|
||||
Add this to `plugins.js`:
|
||||
|
||||
```js
|
||||
/*
|
||||
* Log all jQuery AJAX requests to Google Analytics
|
||||
* See: http://www.alfajango.com/blog/track-jquery-ajax-requests-in-google-analytics/
|
||||
*/
|
||||
if (typeof _gaq !== "undefined" && _gaq !== null) {
|
||||
$(document).ajaxSend(function(event, xhr, settings){
|
||||
_gaq.push(['_trackPageview', settings.url]);
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
### Track JavaScript errors in Google Analytics
|
||||
|
||||
Add this function after `_gaq` is defined:
|
||||
|
||||
```js
|
||||
(function(window){
|
||||
var undefined,
|
||||
link = function (href) {
|
||||
var a = window.document.createElement('a');
|
||||
a.href = href;
|
||||
return a;
|
||||
};
|
||||
window.onerror = function (message, file, line, column) {
|
||||
var host = link(file).hostname;
|
||||
_gaq.push([
|
||||
'_trackEvent',
|
||||
(host == window.location.hostname || host == undefined || host == '' ? '' : 'external ') + 'error',
|
||||
message, file + ' LINE: ' + line + (column ? ' COLUMN: ' + column : ''), undefined, undefined, true
|
||||
]);
|
||||
};
|
||||
}(window));
|
||||
```
|
||||
|
||||
### Track page scroll
|
||||
|
||||
Add this function after `_gaq` is defined:
|
||||
|
||||
```js
|
||||
$(function(){
|
||||
var isDuplicateScrollEvent,
|
||||
scrollTimeStart = new Date,
|
||||
$window = $(window),
|
||||
$document = $(document),
|
||||
scrollPercent;
|
||||
|
||||
$window.scroll(function() {
|
||||
scrollPercent = Math.round(100 * ($window.height() + $window.scrollTop())/$document.height());
|
||||
if (scrollPercent > 90 && !isDuplicateScrollEvent) { //page scrolled to 90%
|
||||
isDuplicateScrollEvent = 1;
|
||||
_gaq.push(['_trackEvent', 'scroll',
|
||||
'Window: ' + $window.height() + 'px; Document: ' + $document.height() + 'px; Time: ' + Math.round((new Date - scrollTimeStart )/1000,1) + 's',
|
||||
undefined, undefined, true
|
||||
]);
|
||||
}
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
## iOS Web Apps
|
||||
|
||||
There are a couple of meta tags that provide information about a web app when
|
||||
added to the Home Screen on iOS.
|
||||
|
||||
Adding `apple-mobile-web-app-capable` will make your web app chrome-less and
|
||||
provide the default iOS app view. You can control the color scheme of the
|
||||
default view by adding `apple-mobile-web-app-status-bar-style`.
|
||||
|
||||
```html
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
||||
```
|
||||
|
||||
You can use `apple-mobile-web-app-title` to add a specific sites name for the
|
||||
Home Screen icon. This works since iOS 6.
|
||||
|
||||
```html
|
||||
<meta name="apple-mobile-web-app-title" content="">
|
||||
```
|
||||
|
||||
For further information please read the [official documentation](http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariHTMLRef/Articles/MetaTags.html)
|
||||
on Apple's site.
|
||||
|
||||
### Apple Touch Icons
|
||||
|
||||
Touch Icons can be seen as the favicons of mobile devices and tablets.
|
||||
|
||||
If your site or icons are in a sub-directory, you will need to reference the
|
||||
icons using `link` elements placed in the HTML `head` of your document.
|
||||
|
||||
```html
|
||||
<link rel="apple-touch-icon-precomposed" href="apple-touch-icon-precomposed.png">
|
||||
```
|
||||
|
||||
The main sizes of the icons on iOS are:
|
||||
|
||||
* iPad, high-resolution display, iOS 7: 152x152
|
||||
* iPad, high-resolution display, iOS ≤ 6: 144x144
|
||||
* iPhone, high-resolution display, iOS 7: 120x120
|
||||
* iPhone, high-resolution display, iOS ≤ 6: 114x114
|
||||
* iPad, non-Retina, iOS ≤ 6: 72x72
|
||||
|
||||
For non-Retina iPhone, iPod Touch, and Android 2.1+ devices you can use the
|
||||
example from above or replace the `apple-touch-icon-precomposed.png` within this
|
||||
project's root folder.
|
||||
|
||||
Please refer to Mathias' [article on Touch
|
||||
Icons](http://mathiasbynens.be/notes/touch-icons) for a comprehensive overview.
|
||||
|
||||
### Apple Touch Startup Image
|
||||
|
||||
Apart from that it is possible to add start-up screens for web apps on iOS. This
|
||||
basically works by defining `apple-touch-startup-image` with an according link
|
||||
to the image. Since iOS devices have different screen resolutions it is
|
||||
necessary to add media queries to detect which image to load. Here is an
|
||||
example for a retina iPhone:
|
||||
|
||||
```html
|
||||
<link rel="apple-touch-startup-image" media="(max-device-width: 480px) and (-webkit-min-device-pixel-ratio: 2)" href="img/startup-retina.png">
|
||||
```
|
||||
|
||||
However, it is possible to detect which start-up image to use with JavaScript.
|
||||
The Mobile Boilerplate provides a useful function for this. Please see
|
||||
[helpers.js](https://github.com/h5bp/mobile-boilerplate/blob/master/js/helper.js#L354)
|
||||
for the implementation.
|
||||
|
||||
## Miscellaneous
|
||||
|
||||
* Use [HTML5
|
||||
polyfills](https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills).
|
||||
|
||||
* Use [Microformats](http://microformats.org/wiki/Main_Page) (via
|
||||
[microdata](http://microformats.org/wiki/microdata)) for optimum search
|
||||
results
|
||||
[visibility](http://googlewebmastercentral.blogspot.com/2009/05/introducing-rich-snippets.html).
|
||||
|
||||
* If you're building a web app you may want [native style momentum scrolling in
|
||||
iOS5](http://johanbrook.com/browsers/native-momentum-scrolling-ios-5/) using
|
||||
`-webkit-overflow-scrolling: touch`.
|
||||
|
||||
* Avoid development/stage websites "leaking" into SERPs (search engine results
|
||||
page) by [implementing X-Robots-tag
|
||||
headers](https://github.com/h5bp/html5-boilerplate/issues/804).
|
||||
|
||||
* Screen readers currently have less-than-stellar support for HTML5 but the JS
|
||||
script [accessifyhtml5.js](https://github.com/yatil/accessifyhtml5.js) can
|
||||
help increase accessibility by adding ARIA roles to HTML5 elements.
|
||||
|
||||
|
||||
*Many thanks to [Brian Blakely](https://github.com/brianblakely) for
|
||||
contributing much of this information.*
|
||||
76
doc/faq.md
Normal file
76
doc/faq.md
Normal file
@@ -0,0 +1,76 @@
|
||||
[HTML5 Boilerplate homepage](http://html5boilerplate.com) | [Documentation
|
||||
table of contents](TOC.md)
|
||||
|
||||
# Frequently asked questions
|
||||
|
||||
### Why is the URL for jQuery without "http"?
|
||||
|
||||
This is an intentional use of [protocol-relative
|
||||
URLs](http://paulirish.com/2010/the-protocol-relative-url/)
|
||||
|
||||
**N.B.** Using a protocol-relative URL for files that exist on a CDN is
|
||||
problematic when you try to view your local files directly in the browser. The
|
||||
browser will attempt to fetch the file from your local file system. We
|
||||
recommend that you use a local server to test your pages (or Dropbox). This can
|
||||
be done using Python 2.x by running `python -m SimpleHTTPServer` or Python 3.x
|
||||
with `python -m http.server` from your local directory, using Ruby by installing
|
||||
and running [asdf](https://rubygems.org/gems/asdf), and by installing any one of
|
||||
XAMPP, MAMP, or WAMP.
|
||||
|
||||
### Why don't you automatically load the latest version of jQuery from the Google CDN?
|
||||
|
||||
1. The latest version of jQuery may not be compatible with the existing
|
||||
plugins/code on the site. Version updating should be an intentional
|
||||
decision.
|
||||
2. The latest version has a very short `max-age=3600` compares to the specific
|
||||
version of `max-age=31536000`, which means you won't get the benefits of
|
||||
long-term caching.
|
||||
|
||||
|
||||
### Why is the Google Analytics code at the bottom? Google recommends it be placed the `head`.
|
||||
|
||||
The advantage to placing it in the `head` is that you will track a user's
|
||||
pageview even if they leave the page before it has been fully loaded. However,
|
||||
putting the code at the bottom keeps all the scripts together and reinforces
|
||||
that scripts at the bottom are the right move.
|
||||
|
||||
|
||||
### How can I integrate [Twitter Bootstrap](http://twitter.github.com/bootstrap/) with HTML5 Boilerplate?
|
||||
|
||||
You can use [Initializr](http://initializr.com) to create a custom build that
|
||||
includes HTML5 Boilerplate with Twitter Bootstrap.
|
||||
|
||||
Read more about how [HTML5 Boilerplate and Twitter Bootstrap complement each
|
||||
other](http://www.quora.com/Is-Bootstrap-a-complement-OR-an-alternative-to-HTML5-Boilerplate-or-viceversa/answer/Nicolas-Gallagher).
|
||||
|
||||
|
||||
### How do I prevent phone numbers looking twice as large and having a Skype highlight?
|
||||
|
||||
If this is occurring, it is because a user has the Skype browser extension
|
||||
installed.
|
||||
|
||||
Use the following CSS to prevent Skype from formatting the numbers on your
|
||||
page:
|
||||
|
||||
```css
|
||||
span.skype_pnh_container {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
span.skype_pnh_print_container {
|
||||
display: inline !important;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### Do I need to upgrade my sites each time a new version of HTML5 Boilerplate is released?
|
||||
|
||||
No. You don't normally replace the foundations of a house once it has been
|
||||
built. There is nothing stopping you from trying to work in the latest changes
|
||||
but you'll have to assess the costs/benefits of doing so.
|
||||
|
||||
|
||||
### Where can I get help for support questions?
|
||||
|
||||
Please ask for help on
|
||||
[StackOverflow](http://stackoverflow.com/questions/tagged/html5boilerplate).
|
||||
161
doc/html.md
Normal file
161
doc/html.md
Normal file
@@ -0,0 +1,161 @@
|
||||
[HTML5 Boilerplate homepage](http://html5boilerplate.com) | [Documentation
|
||||
table of contents](TOC.md)
|
||||
|
||||
# The HTML
|
||||
|
||||
## Conditional `html` classes
|
||||
|
||||
A series of IE conditional comments apply the relevant IE-specific classes to
|
||||
the `html` tag. This provides one method of specifying CSS fixes for specific
|
||||
legacy versions of IE. While you may or may not choose to use this technique in
|
||||
your project code, HTML5 Boilerplate's default CSS does not rely on it.
|
||||
|
||||
When using the conditional classes technique, applying classes to the `html`
|
||||
element has several benefits:
|
||||
|
||||
* It avoids a [file blocking
|
||||
issue](http://webforscher.wordpress.com/2010/05/20/ie-6-slowing-down-ie-8/)
|
||||
discovered by Stoyan Stefanov and Markus Leptien.
|
||||
* It avoids the need for an empty comment that also fixes the above issue.
|
||||
* CMSes like WordPress and Drupal use the body class more heavily. This makes
|
||||
integrating there a touch simpler.
|
||||
* It still validates as HTML5.
|
||||
* It uses the same element as Modernizr (and Dojo). That feels nice.
|
||||
* It can improve the clarity of code in multi-developer teams.
|
||||
|
||||
|
||||
## The `no-js` class
|
||||
|
||||
Allows you to more easily explicitly add custom styles when JavaScript is
|
||||
disabled (`no-js`) or enabled (`js`). More here: [Avoiding the
|
||||
FOUC](http://paulirish.com/2009/avoiding-the-fouc-v3/).
|
||||
|
||||
|
||||
## The order of meta tags, and `<title>`
|
||||
|
||||
As recommended by [the HTML5
|
||||
spec](http://www.whatwg.org/specs/web-apps/current-work/complete/semantics.html#charset)
|
||||
(4.2.5.5 Specifying the document's character encoding), add your charset
|
||||
declaration early (before any ASCII art ;) to avoid a potential
|
||||
[encoding-related security
|
||||
issue](http://code.google.com/p/doctype-mirror/wiki/ArticleUtf7) in IE. It
|
||||
should come in the first [1024
|
||||
bytes](http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#charset).
|
||||
|
||||
The charset should also come before the `<title>` tag, due to [potential XSS
|
||||
vectors](http://code.google.com/p/doctype-mirror/wiki/ArticleUtf7).
|
||||
|
||||
The meta tag for compatibility mode [needs to be before all elements except
|
||||
title and meta](http://h5bp.com/f "Defining Document Compatibility - MSDN").
|
||||
And that same meta tag can only be invoked for Google Chrome Frame if it is
|
||||
within the [first 1024
|
||||
bytes](http://code.google.com/p/chromium/issues/detail?id=23003).
|
||||
|
||||
|
||||
## X-UA-Compatible
|
||||
|
||||
This makes sure the latest version of IE is used in versions of IE that contain
|
||||
multiple rendering engines. Even if a site visitor is using IE8 or IE9, it's
|
||||
possible that they're not using the latest rendering engine their browser
|
||||
contains. To fix this, use:
|
||||
|
||||
```html
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
```
|
||||
|
||||
The `meta` tag tells the IE rendering engine it should use the latest, or edge,
|
||||
version of the IE rendering environment.
|
||||
|
||||
This `meta` tag ensures that anyone browsing your site in IE is treated to the
|
||||
best possible user experience that their browser can offer.
|
||||
|
||||
This line breaks validation. To avoid this edge case issue it is recommended
|
||||
that you **remove this line and use the `.htaccess`** (or other server config)
|
||||
to send these headers instead. You also might want to read [Validating:
|
||||
X-UA-Compatible](http://groups.google.com/group/html5boilerplate/browse_thread/thread/6d1b6b152aca8ed2).
|
||||
|
||||
If you are serving your site on a non-standard port, you will need to set this
|
||||
header on the server-side. This is because the IE preference option 'Display
|
||||
intranet sites in Compatibility View' is checked by default.
|
||||
|
||||
|
||||
## Mobile viewport
|
||||
|
||||
There are a few different options that you can use with the [`viewport` meta
|
||||
tag](https://docs.google.com/present/view?id=dkx3qtm_22dxsrgcf4 "Viewport and
|
||||
Media Queries - The Complete Idiot's Guide"). You can find out more in [the
|
||||
Apple developer docs](http://j.mp/mobileviewport). HTML5 Boilerplate comes with
|
||||
a simple setup that strikes a good balance for general use cases.
|
||||
|
||||
```html
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
```
|
||||
|
||||
## Favicons and Touch Icon
|
||||
|
||||
The shortcut icons should be put in the root directory of your site. HTML5
|
||||
Boilerplate comes with a default set of icons (include favicon and one Apple
|
||||
Touch Icon) that you can use as a baseline to create your own.
|
||||
|
||||
Please refer to the more detailed description in the [Extend section](extend.md)
|
||||
of these docs.
|
||||
|
||||
## Modernizr
|
||||
|
||||
HTML5 Boilerplate uses a custom build of Modernizr.
|
||||
|
||||
[Modernizr](http://modernizr.com) is a JavaScript library which adds classes to
|
||||
the `html` element based on the results of feature test and which ensures that
|
||||
all browsers can make use of HTML5 elements (as it includes the HTML5 Shiv).
|
||||
This allows you to target parts of your CSS and JavaScript based on the
|
||||
features supported by a browser.
|
||||
|
||||
In general, in order to keep page load times to a minimum, it's best to call
|
||||
any JavaScript at the end of the page because if a script is slow to load
|
||||
from an external server it may cause the whole page to hang. That said, the
|
||||
Modernizr script *needs* to run *before* the browser begins rendering the page,
|
||||
so that browsers lacking support for some of the new HTML5 elements are able to
|
||||
handle them properly. Therefore the Modernizr script is the only JavaScript
|
||||
file synchronously loaded at the top of the document.
|
||||
|
||||
|
||||
## The content area
|
||||
|
||||
The central part of the boilerplate template is pretty much empty. This is
|
||||
intentional, in order to make the boilerplate suitable for both web page and
|
||||
web app development.
|
||||
|
||||
### Google Chrome Frame
|
||||
|
||||
The main content area of the boilerplate includes a prompt to install Chrome
|
||||
Frame (which no longer requires administrative rights) for users of IE 6. If
|
||||
you intended to support IE 6, then you should remove the snippet of code.
|
||||
|
||||
### Google CDN for jQuery
|
||||
|
||||
The Google CDN version of the jQuery JavaScript library is referenced towards
|
||||
the bottom of the page using a protocol-independent path (read more about this
|
||||
in the [FAQ](faq.md)). A local fallback of jQuery is included for rare instances
|
||||
when the CDN version might not be available, and to facilitate offline
|
||||
development.
|
||||
|
||||
Regardless of which JavaScript library you choose to use, it is well worth the
|
||||
time and effort to look up and reference the Google CDN (Content Delivery
|
||||
Network) version. Your users may already have this version cached in their
|
||||
browsers, and Google's CDN is likely to deliver the asset faster than your
|
||||
server.
|
||||
|
||||
### Google Analytics Tracking Code
|
||||
|
||||
Finally, an optimized version of the latest Google Analytics tracking code is
|
||||
included. Google recommends that this script be placed at the top of the page.
|
||||
Factors to consider: if you place this script at the top of the page, you’ll be
|
||||
able to count users who don’t fully load the page, and you’ll incur the max
|
||||
number of simultaneous connections of the browser.
|
||||
|
||||
Further information:
|
||||
|
||||
* [Optimizing the asynchronous Google Analytics
|
||||
snippet](http://mathiasbynens.be/notes/async-analytics-snippet).
|
||||
* [Tracking Site Activity - Google
|
||||
Analytics](http://code.google.com/apis/analytics/docs/tracking/asyncTracking.html).
|
||||
31
doc/js.md
Normal file
31
doc/js.md
Normal file
@@ -0,0 +1,31 @@
|
||||
[HTML5 Boilerplate homepage](http://html5boilerplate.com) | [Documentation
|
||||
table of contents](TOC.md)
|
||||
|
||||
# The JavaScript
|
||||
|
||||
Information about the default JavaScript included in the project.
|
||||
|
||||
## main.js
|
||||
|
||||
This file can be used to contain or reference your site/app JavaScript code.
|
||||
For larger projects, you can make use of a JavaScript module loader, like
|
||||
[Require.js](http://requirejs.org/), to load any other scripts you need to
|
||||
run.
|
||||
|
||||
## plugins.js
|
||||
|
||||
This file can be used to contain all your plugins, such as jQuery plugins and
|
||||
other 3rd party scripts.
|
||||
|
||||
One approach is to put jQuery plugins inside of a `(function($){ ...
|
||||
})(jQuery);` closure to make sure they're in the jQuery namespace safety
|
||||
blanket. Read more about [jQuery plugin
|
||||
authoring](http://docs.jquery.com/Plugins/Authoring#Getting_Started)
|
||||
|
||||
## vendor
|
||||
|
||||
This directory can be used to contain all 3rd party library code.
|
||||
|
||||
Minified versions of the latest jQuery and Modernizr libraries are included by
|
||||
default. You may wish to create your own [custom Modernizr
|
||||
build](http://www.modernizr.com/download/).
|
||||
26
doc/misc.md
Normal file
26
doc/misc.md
Normal file
@@ -0,0 +1,26 @@
|
||||
[HTML5 Boilerplate homepage](http://html5boilerplate.com) | [Documentation
|
||||
table of contents](TOC.md)
|
||||
|
||||
# Miscellaneous
|
||||
|
||||
## .gitignore
|
||||
|
||||
HTML5 Boilerplate includes a basic project-level `.gitignore`. This should
|
||||
primarily be used to avoid certain project-level files and directories from
|
||||
being kept under source control. Different development-environments will
|
||||
benefit from different collections of ignores.
|
||||
|
||||
OS-specific and editor-specific files should be ignored using a "global
|
||||
ignore" that applies to all repositories on your system.
|
||||
|
||||
For example, add the following to your `~/.gitconfig`, where the `.gitignore`
|
||||
in your HOME directory contains the files and directories you'd like to
|
||||
globally ignore:
|
||||
|
||||
```gitignore
|
||||
[core]
|
||||
excludesfile = ~/.gitignore
|
||||
```
|
||||
|
||||
* More on global ignores: http://help.github.com/ignore-files/
|
||||
* Comprehensive set of ignores on GitHub: https://github.com/github/gitignore
|
||||
113
doc/usage.md
Normal file
113
doc/usage.md
Normal file
@@ -0,0 +1,113 @@
|
||||
[HTML5 Boilerplate homepage](http://html5boilerplate.com) | [Documentation
|
||||
table of contents](TOC.md)
|
||||
|
||||
# Usage
|
||||
|
||||
Once you have cloned or downloaded HTML5 Boilerplate, creating a site or app
|
||||
usually involves the following:
|
||||
|
||||
1. Set up the basic structure of the site.
|
||||
2. Add some content, style, and functionality.
|
||||
3. Run your site locally to see how it looks.
|
||||
4. (Optionally run a build script to automate the optimization of your site -
|
||||
e.g. [ant build script](https://github.com/h5bp/ant-build-script) or [node
|
||||
build script](https://github.com/h5bp/node-build-script)).
|
||||
5. Deploy your site.
|
||||
|
||||
|
||||
## Basic structure
|
||||
|
||||
A basic HTML5 Boilerplate site initially looks something like this:
|
||||
|
||||
```
|
||||
.
|
||||
├── css
|
||||
│ ├── main.css
|
||||
│ └── normalize.css
|
||||
├── doc
|
||||
├── img
|
||||
├── js
|
||||
│ ├── main.js
|
||||
│ ├── plugins.js
|
||||
│ └── vendor
|
||||
│ ├── jquery.min.js
|
||||
│ └── modernizr.min.js
|
||||
├── .htaccess
|
||||
├── 404.html
|
||||
├── apple-touch-icon-precomposed.png
|
||||
├── index.html
|
||||
├── humans.txt
|
||||
├── robots.txt
|
||||
├── crossdomain.xml
|
||||
└── favicon.ico
|
||||
```
|
||||
|
||||
What follows is a general overview of each major part and how to use them.
|
||||
|
||||
### css
|
||||
|
||||
This directory should contain all your project's CSS files. It includes some
|
||||
initial CSS to help get you started from a solid foundation. [About the
|
||||
CSS](css.md).
|
||||
|
||||
### doc
|
||||
|
||||
This directory contains all the HTML5 Boilerplate documentation. You can use it
|
||||
as the location and basis for your own project's documentation.
|
||||
|
||||
### js
|
||||
|
||||
This directory should contain all your project's JS files. Libraries, plugins,
|
||||
and custom code can all be included here. It includes some initial JS to help
|
||||
get you started. [About the JavaScript](js.md).
|
||||
|
||||
### .htaccess
|
||||
|
||||
The default web server configs are for Apache. For more information, please
|
||||
refer to the [Apache Server Configs
|
||||
documentation](https://github.com/h5bp/server-configs-apache/tree/master/doc).
|
||||
|
||||
Host your site on a server other than Apache? You're likely to find the
|
||||
corresponding server configs project listed in our [Server Configs
|
||||
](https://github.com/h5bp/server-configs/blob/master/README.md) repository.
|
||||
|
||||
### 404.html
|
||||
|
||||
A helpful custom 404 to get you started.
|
||||
|
||||
### index.html
|
||||
|
||||
This is the default HTML skeleton that should form the basis of all pages on
|
||||
your site. If you are using a server-side templating framework, then you will
|
||||
need to integrate this starting HTML with your setup.
|
||||
|
||||
Make sure that you update the URLs for the referenced CSS and JavaScript if you
|
||||
modify the directory structure at all.
|
||||
|
||||
If you are using Google Analytics, make sure that you edit the corresponding
|
||||
snippet at the bottom to include your analytics ID.
|
||||
|
||||
### humans.txt
|
||||
|
||||
Edit this file to include the team that worked on your site/app, and the
|
||||
technology powering it.
|
||||
|
||||
### robots.txt
|
||||
|
||||
Edit this file to include any pages you need hidden from search engines.
|
||||
|
||||
### crossdomain.xml
|
||||
|
||||
A template for working with cross-domain requests. [About
|
||||
crossdomain.xml](crossdomain.md).
|
||||
|
||||
### Icons
|
||||
|
||||
Replace the default `favicon.ico` and Apple Touch Icon with your own.
|
||||
|
||||
If you want to use different Apple Touch Icons for different resolutions please
|
||||
refer to the [according documentation](extend.md#apple-touch-icons).
|
||||
|
||||
You might want to check out Hans' handy [HTML5 Boilerplate Favicon and Apple
|
||||
Touch Icon
|
||||
PSD-Template](http://drublic.de/blog/html5-boilerplate-favicons-psd-template/).
|
||||
BIN
favicon.ico
BIN
favicon.ico
Binary file not shown.
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 766 B |
15
humans.txt
Normal file
15
humans.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
# humanstxt.org/
|
||||
# The humans responsible & technology colophon
|
||||
|
||||
# TEAM
|
||||
|
||||
<name> -- <role> -- <twitter>
|
||||
|
||||
# THANKS
|
||||
|
||||
<name>
|
||||
|
||||
# TECHNOLOGY COLOPHON
|
||||
|
||||
HTML5, CSS3
|
||||
Normalize.css, jQuery, Modernizr
|
||||
3
images/.gitignore
vendored
3
images/.gitignore
vendored
@@ -1,3 +0,0 @@
|
||||
*
|
||||
!.gitignore
|
||||
|
||||
0
img/.gitignore
vendored
Normal file
0
img/.gitignore
vendored
Normal file
126
index.html
126
index.html
@@ -1,94 +1,42 @@
|
||||
<!doctype html>
|
||||
<!DOCTYPE html>
|
||||
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title></title>
|
||||
<meta name="description" content="">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
|
||||
<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
|
||||
<!--[if IE 7 ]> <html lang="en" class="no-js ie7"> <![endif]-->
|
||||
<!--[if IE 8 ]> <html lang="en" class="no-js ie8"> <![endif]-->
|
||||
<!--[if IE 9 ]> <html lang="en" class="no-js ie9"> <![endif]-->
|
||||
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
|
||||
|
||||
<!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame
|
||||
Remove this if you use the .htaccess -->
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/main.css">
|
||||
<script src="js/vendor/modernizr-2.6.2.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<!--[if lt IE 7]>
|
||||
<p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
|
||||
<![endif]-->
|
||||
|
||||
<title></title>
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
<!-- Add your site or application content here -->
|
||||
<p>Hello world! This is HTML5 Boilerplate.</p>
|
||||
|
||||
<!-- Mobile viewport optimized: j.mp/bplateviewport -->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
|
||||
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>
|
||||
<script src="js/plugins.js"></script>
|
||||
<script src="js/main.js"></script>
|
||||
|
||||
<!-- Place favicon.ico & apple-touch-icon.png in the root of your domain and delete these references -->
|
||||
<link rel="shortcut icon" href="/favicon.ico">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
||||
|
||||
|
||||
<!-- CSS : implied media="all" -->
|
||||
<link rel="stylesheet" href="css/style.css?v=2">
|
||||
|
||||
<!-- Uncomment if you are specifically targeting less enabled mobile browsers
|
||||
<link rel="stylesheet" media="handheld" href="css/handheld.css?v=2"> -->
|
||||
|
||||
<!-- All JavaScript at the bottom, except for Modernizr which enables HTML5 elements & feature detects -->
|
||||
<script src="js/libs/modernizr-1.6.min.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="container">
|
||||
<header>
|
||||
|
||||
</header>
|
||||
|
||||
<div id="main">
|
||||
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
|
||||
</footer>
|
||||
</div> <!--! end of #container -->
|
||||
|
||||
|
||||
<!-- Javascript at the bottom for fast page loading -->
|
||||
|
||||
<!-- Grab Google CDN's jQuery. fall back to local if necessary -->
|
||||
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
|
||||
<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.2.js"%3E%3C/script%3E'))</script>
|
||||
|
||||
|
||||
<!-- scripts concatenated and minified via ant build script-->
|
||||
<script src="js/plugins.js"></script>
|
||||
<script src="js/script.js"></script>
|
||||
<!-- end concatenated and minified scripts-->
|
||||
|
||||
|
||||
<!--[if lt IE 7 ]>
|
||||
<script src="js/libs/dd_belatedpng.js"></script>
|
||||
<script> DD_belatedPNG.fix('img, .png_bg'); //fix any <img> or .png_bg background-images </script>
|
||||
<![endif]-->
|
||||
|
||||
<!-- yui profiler and profileviewer - remove for production -->
|
||||
<script src="js/profiling/yahoo-profiling.min.js"></script>
|
||||
<script src="js/profiling/config.js"></script>
|
||||
<!-- end profiling code -->
|
||||
|
||||
|
||||
<!-- asynchronous google analytics: mathiasbynens.be/notes/async-analytics-snippet
|
||||
change the UA-XXXXX-X to be your site's ID -->
|
||||
<script>
|
||||
var _gaq = [['_setAccount', 'UA-XXXXX-X'], ['_trackPageview']];
|
||||
(function(d, t) {
|
||||
var g = d.createElement(t),
|
||||
s = d.getElementsByTagName(t)[0];
|
||||
g.async = true;
|
||||
g.src = ('https:' == location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||
s.parentNode.insertBefore(g, s);
|
||||
})(document, 'script');
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<!-- Google Analytics: change UA-XXXXX-X to be your site's ID. -->
|
||||
<script>
|
||||
(function(b,o,i,l,e,r){b.GoogleAnalyticsObject=l;b[l]||(b[l]=
|
||||
function(){(b[l].q=b[l].q||[]).push(arguments)});b[l].l=+new Date;
|
||||
e=o.createElement(i);r=o.getElementsByTagName(i)[0];
|
||||
e.src='//www.google-analytics.com/analytics.js';
|
||||
r.parentNode.insertBefore(e,r)}(window,document,'script','ga'));
|
||||
ga('create','UA-XXXXX-X');ga('send','pageview');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
File diff suppressed because one or more lines are too long
6240
js/libs/jquery-1.4.2.js
vendored
6240
js/libs/jquery-1.4.2.js
vendored
File diff suppressed because it is too large
Load Diff
154
js/libs/jquery-1.4.2.min.js
vendored
154
js/libs/jquery-1.4.2.min.js
vendored
@@ -1,154 +0,0 @@
|
||||
/*!
|
||||
* jQuery JavaScript Library v1.4.2
|
||||
* http://jquery.com/
|
||||
*
|
||||
* Copyright 2010, John Resig
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* Includes Sizzle.js
|
||||
* http://sizzlejs.com/
|
||||
* Copyright 2010, The Dojo Foundation
|
||||
* Released under the MIT, BSD, and GPL Licenses.
|
||||
*
|
||||
* Date: Sat Feb 13 22:33:48 2010 -0500
|
||||
*/
|
||||
(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
|
||||
e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
|
||||
j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
|
||||
"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
|
||||
true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
|
||||
Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
|
||||
(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
|
||||
a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
|
||||
"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
|
||||
function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
|
||||
c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
|
||||
L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
|
||||
"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
|
||||
a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
|
||||
d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
|
||||
a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
|
||||
!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
|
||||
true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
|
||||
var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
|
||||
parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
|
||||
false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
|
||||
s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
|
||||
applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
|
||||
else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
|
||||
a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
|
||||
w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
|
||||
cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
|
||||
i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
|
||||
" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
|
||||
this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
|
||||
e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
|
||||
c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
|
||||
a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
|
||||
function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
|
||||
k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
|
||||
C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
|
||||
null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
|
||||
e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
|
||||
f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
|
||||
if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
|
||||
fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
|
||||
d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
|
||||
"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
|
||||
a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
|
||||
isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
|
||||
{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
|
||||
if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
|
||||
e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
|
||||
"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
|
||||
d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
|
||||
!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
|
||||
toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
|
||||
u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
|
||||
function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
|
||||
if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
|
||||
e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
|
||||
t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
|
||||
g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
|
||||
for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
|
||||
1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
|
||||
CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
|
||||
relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
|
||||
l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
|
||||
h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
|
||||
CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
|
||||
g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
|
||||
text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
|
||||
setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
|
||||
h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
|
||||
m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
|
||||
"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
|
||||
h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
|
||||
!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
|
||||
h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
|
||||
q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
|
||||
if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
|
||||
(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
|
||||
function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
|
||||
gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
|
||||
c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
|
||||
{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
|
||||
"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
|
||||
d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
|
||||
a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
|
||||
1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
|
||||
a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
|
||||
c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
|
||||
wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
|
||||
prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
|
||||
this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
|
||||
return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
|
||||
""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
|
||||
this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
|
||||
u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
|
||||
1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
|
||||
return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
|
||||
""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
|
||||
c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
|
||||
c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
|
||||
function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
|
||||
Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
|
||||
"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
|
||||
a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
|
||||
a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
|
||||
"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
|
||||
serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
|
||||
function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
|
||||
global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
|
||||
e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
|
||||
"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
|
||||
false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
|
||||
false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
|
||||
c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
|
||||
d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
|
||||
g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
|
||||
1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
|
||||
"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
|
||||
if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
|
||||
this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
|
||||
"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
|
||||
animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
|
||||
j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
|
||||
this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
|
||||
"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
|
||||
c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
|
||||
this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
|
||||
this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
|
||||
e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
|
||||
c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
|
||||
function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
|
||||
this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
|
||||
k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
|
||||
f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
|
||||
a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
|
||||
c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
|
||||
d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
|
||||
f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
|
||||
"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
|
||||
e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
|
||||
30
js/libs/modernizr-1.6.min.js
vendored
30
js/libs/modernizr-1.6.min.js
vendored
@@ -1,30 +0,0 @@
|
||||
/*
|
||||
* Modernizr v1.6
|
||||
* http://www.modernizr.com
|
||||
*
|
||||
* Developed by:
|
||||
* - Faruk Ates http://farukat.es/
|
||||
* - Paul Irish http://paulirish.com/
|
||||
*
|
||||
* Copyright (c) 2009-2010
|
||||
* Dual-licensed under the BSD or MIT licenses.
|
||||
* http://www.modernizr.com/license/
|
||||
*/
|
||||
window.Modernizr=function(i,e,u){function s(a,b){return(""+a).indexOf(b)!==-1}function D(a,b){for(var c in a)if(j[a[c]]!==u&&(!b||b(a[c],E)))return true}function n(a,b){var c=a.charAt(0).toUpperCase()+a.substr(1);c=(a+" "+F.join(c+" ")+c).split(" ");return!!D(c,b)}function S(){f.input=function(a){for(var b=0,c=a.length;b<c;b++)L[a[b]]=!!(a[b]in h);return L}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" "));f.inputtypes=function(a){for(var b=0,c,k=a.length;b<
|
||||
k;b++){h.setAttribute("type",a[b]);if(c=h.type!=="text"){h.value=M;if(/^range$/.test(h.type)&&h.style.WebkitAppearance!==u){l.appendChild(h);c=e.defaultView;c=c.getComputedStyle&&c.getComputedStyle(h,null).WebkitAppearance!=="textfield"&&h.offsetHeight!==0;l.removeChild(h)}else/^(search|tel)$/.test(h.type)||(c=/^(url|email)$/.test(h.type)?h.checkValidity&&h.checkValidity()===false:h.value!=M)}N[a[b]]=!!c}return N}("search tel url email datetime date month week time datetime-local number range color".split(" "))}
|
||||
var f={},l=e.documentElement,E=e.createElement("modernizr"),j=E.style,h=e.createElement("input"),M=":)",O=Object.prototype.toString,q=" -webkit- -moz- -o- -ms- -khtml- ".split(" "),F="Webkit Moz O ms Khtml".split(" "),v={svg:"http://www.w3.org/2000/svg"},d={},N={},L={},P=[],w,Q=function(a){var b=document.createElement("style"),c=e.createElement("div");b.textContent=a+"{#modernizr{height:3px}}";(e.head||e.getElementsByTagName("head")[0]).appendChild(b);c.id="modernizr";l.appendChild(c);a=c.offsetHeight===
|
||||
3;b.parentNode.removeChild(b);c.parentNode.removeChild(c);return!!a},o=function(){var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return function(b,c){c=c||document.createElement(a[b]||"div");b="on"+b;var k=b in c;if(!k){c.setAttribute||(c=document.createElement("div"));if(c.setAttribute&&c.removeAttribute){c.setAttribute(b,"");k=typeof c[b]=="function";if(typeof c[b]!="undefined")c[b]=u;c.removeAttribute(b)}}return k}}(),G={}.hasOwnProperty,R;R=
|
||||
typeof G!=="undefined"&&typeof G.call!=="undefined"?function(a,b){return G.call(a,b)}:function(a,b){return b in a&&typeof a.constructor.prototype[b]==="undefined"};d.flexbox=function(){var a=e.createElement("div"),b=e.createElement("div");(function(k,g,r,x){g+=":";k.style.cssText=(g+q.join(r+";"+g)).slice(0,-g.length)+(x||"")})(a,"display","box","width:42px;padding:0;");b.style.cssText=q.join("box-flex:1;")+"width:10px;";a.appendChild(b);l.appendChild(a);var c=b.offsetWidth===42;a.removeChild(b);
|
||||
l.removeChild(a);return c};d.canvas=function(){var a=e.createElement("canvas");return!!(a.getContext&&a.getContext("2d"))};d.canvastext=function(){return!!(f.canvas&&typeof e.createElement("canvas").getContext("2d").fillText=="function")};d.webgl=function(){var a=e.createElement("canvas");try{if(a.getContext("webgl"))return true}catch(b){}try{if(a.getContext("experimental-webgl"))return true}catch(c){}return false};d.touch=function(){return"ontouchstart"in i||Q("@media ("+q.join("touch-enabled),(")+
|
||||
"modernizr)")};d.geolocation=function(){return!!navigator.geolocation};d.postmessage=function(){return!!i.postMessage};d.websqldatabase=function(){return!!i.openDatabase};d.indexedDB=function(){for(var a=-1,b=F.length;++a<b;){var c=F[a].toLowerCase();if(i[c+"_indexedDB"]||i[c+"IndexedDB"])return true}return false};d.hashchange=function(){return o("hashchange",i)&&(document.documentMode===u||document.documentMode>7)};d.history=function(){return!!(i.history&&history.pushState)};d.draganddrop=function(){return o("drag")&&
|
||||
o("dragstart")&&o("dragenter")&&o("dragover")&&o("dragleave")&&o("dragend")&&o("drop")};d.websockets=function(){return"WebSocket"in i};d.rgba=function(){j.cssText="background-color:rgba(150,255,150,.5)";return s(j.backgroundColor,"rgba")};d.hsla=function(){j.cssText="background-color:hsla(120,40%,100%,.5)";return s(j.backgroundColor,"rgba")||s(j.backgroundColor,"hsla")};d.multiplebgs=function(){j.cssText="background:url(//:),url(//:),red url(//:)";return/(url\s*\(.*?){3}/.test(j.background)};d.backgroundsize=
|
||||
function(){return n("backgroundSize")};d.borderimage=function(){return n("borderImage")};d.borderradius=function(){return n("borderRadius","",function(a){return s(a,"orderRadius")})};d.boxshadow=function(){return n("boxShadow")};d.textshadow=function(){return e.createElement("div").style.textShadow===""};d.opacity=function(){var a=q.join("opacity:.5;")+"";j.cssText=a;return s(j.opacity,"0.5")};d.cssanimations=function(){return n("animationName")};d.csscolumns=function(){return n("columnCount")};d.cssgradients=
|
||||
function(){var a=("background-image:"+q.join("gradient(linear,left top,right bottom,from(#9f9),to(white));background-image:")+q.join("linear-gradient(left top,#9f9, white);background-image:")).slice(0,-17);j.cssText=a;return s(j.backgroundImage,"gradient")};d.cssreflections=function(){return n("boxReflect")};d.csstransforms=function(){return!!D(["transformProperty","WebkitTransform","MozTransform","OTransform","msTransform"])};d.csstransforms3d=function(){var a=!!D(["perspectiveProperty","WebkitPerspective",
|
||||
"MozPerspective","OPerspective","msPerspective"]);if(a)a=Q("@media ("+q.join("transform-3d),(")+"modernizr)");return a};d.csstransitions=function(){return n("transitionProperty")};d.fontface=function(){var a,b=e.head||e.getElementsByTagName("head")[0]||l,c=e.createElement("style"),k=e.implementation||{hasFeature:function(){return false}};c.type="text/css";b.insertBefore(c,b.firstChild);a=c.sheet||c.styleSheet;b=k.hasFeature("CSS2","")?function(g){if(!(a&&g))return false;var r=false;try{a.insertRule(g,
|
||||
0);r=!/unknown/i.test(a.cssRules[0].cssText);a.deleteRule(a.cssRules.length-1)}catch(x){}return r}:function(g){if(!(a&&g))return false;a.cssText=g;return a.cssText.length!==0&&!/unknown/i.test(a.cssText)&&a.cssText.replace(/\r+|\n+/g,"").indexOf(g.split(" ")[0])===0};f._fontfaceready=function(g){g(f.fontface)};return b('@font-face { font-family: "font"; src: "font.ttf"; }')};d.video=function(){var a=e.createElement("video"),b=!!a.canPlayType;if(b){b=new Boolean(b);b.ogg=a.canPlayType('video/ogg; codecs="theora"');
|
||||
b.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"')||a.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"');b.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"')}return b};d.audio=function(){var a=e.createElement("audio"),b=!!a.canPlayType;if(b){b=new Boolean(b);b.ogg=a.canPlayType('audio/ogg; codecs="vorbis"');b.mp3=a.canPlayType("audio/mpeg;");b.wav=a.canPlayType('audio/wav; codecs="1"');b.m4a=a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")}return b};d.localstorage=function(){try{return"localStorage"in
|
||||
i&&i.localStorage!==null}catch(a){return false}};d.sessionstorage=function(){try{return"sessionStorage"in i&&i.sessionStorage!==null}catch(a){return false}};d.webWorkers=function(){return!!i.Worker};d.applicationcache=function(){return!!i.applicationCache};d.svg=function(){return!!e.createElementNS&&!!e.createElementNS(v.svg,"svg").createSVGRect};d.inlinesvg=function(){var a=document.createElement("div");a.innerHTML="<svg/>";return(a.firstChild&&a.firstChild.namespaceURI)==v.svg};d.smil=function(){return!!e.createElementNS&&
|
||||
/SVG/.test(O.call(e.createElementNS(v.svg,"animate")))};d.svgclippaths=function(){return!!e.createElementNS&&/SVG/.test(O.call(e.createElementNS(v.svg,"clipPath")))};for(var H in d)if(R(d,H)){w=H.toLowerCase();f[w]=d[H]();P.push((f[w]?"":"no-")+w)}f.input||S();f.crosswindowmessaging=f.postmessage;f.historymanagement=f.history;f.addTest=function(a,b){a=a.toLowerCase();if(!f[a]){b=!!b();l.className+=" "+(b?"":"no-")+a;f[a]=b;return f}};j.cssText="";E=h=null;i.attachEvent&&function(){var a=e.createElement("div");
|
||||
a.innerHTML="<elem></elem>";return a.childNodes.length!==1}()&&function(a,b){function c(p){for(var m=-1;++m<r;)p.createElement(g[m])}function k(p,m){for(var I=p.length,t=-1,y,J=[];++t<I;){y=p[t];m=y.media||m;J.push(k(y.imports,m));J.push(y.cssText)}return J.join("")}var g="abbr|article|aside|audio|canvas|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video".split("|"),r=g.length,x=RegExp("<(/*)(abbr|article|aside|audio|canvas|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video)",
|
||||
"gi"),T=RegExp("\\b(abbr|article|aside|audio|canvas|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video)\\b(?!.*[;}])","gi"),z=b.createDocumentFragment(),A=b.documentElement,K=A.firstChild,B=b.createElement("style"),C=b.createElement("body");B.media="all";c(b);c(z);a.attachEvent("onbeforeprint",function(){for(var p=-1;++p<r;)for(var m=b.getElementsByTagName(g[p]),I=m.length,t=-1;++t<I;)if(m[t].className.indexOf("iepp_")<0)m[t].className+=" iepp_"+
|
||||
g[p];K.insertBefore(B,K.firstChild);B.styleSheet.cssText=k(b.styleSheets,"all").replace(T,".iepp_$1");z.appendChild(b.body);A.appendChild(C);C.innerHTML=z.firstChild.innerHTML.replace(x,"<$1bdo")});a.attachEvent("onafterprint",function(){C.innerHTML="";A.removeChild(C);K.removeChild(B);A.appendChild(z.firstChild)})}(this,document);f._enableHTML5=true;f._version="1.6";l.className=l.className.replace(/\bno-js\b/,"")+" js";l.className+=" "+P.join(" ");return f}(this,this.document);
|
||||
1
js/main.js
Normal file
1
js/main.js
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
3
js/mylibs/.gitignore
vendored
3
js/mylibs/.gitignore
vendored
@@ -1,3 +0,0 @@
|
||||
*
|
||||
!.gitignore
|
||||
|
||||
@@ -1,40 +1,24 @@
|
||||
// Avoid `console` errors in browsers that lack a console.
|
||||
(function() {
|
||||
var method;
|
||||
var noop = function () {};
|
||||
var methods = [
|
||||
'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
|
||||
'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
|
||||
'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
|
||||
'timeStamp', 'trace', 'warn'
|
||||
];
|
||||
var length = methods.length;
|
||||
var console = (window.console = window.console || {});
|
||||
|
||||
// remap jQuery to $
|
||||
(function($){
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
})(this.jQuery);
|
||||
|
||||
|
||||
|
||||
// usage: log('inside coolFunc',this,arguments);
|
||||
// paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/
|
||||
window.log = function(){
|
||||
log.history = log.history || []; // store logs to an array for reference
|
||||
log.history.push(arguments);
|
||||
if(this.console){
|
||||
console.log( Array.prototype.slice.call(arguments) );
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
// catch all document.write() calls
|
||||
(function(doc){
|
||||
var write = doc.write;
|
||||
doc.write = function(q){
|
||||
log('document.write(): ',arguments);
|
||||
if (/docwriteregexwhitelist/.test(q)) write.apply(doc,arguments);
|
||||
};
|
||||
})(document);
|
||||
while (length--) {
|
||||
method = methods[length];
|
||||
|
||||
// Only stub undefined methods.
|
||||
if (!console[method]) {
|
||||
console[method] = noop;
|
||||
}
|
||||
}
|
||||
}());
|
||||
|
||||
// Place any jQuery/helper plugins in here.
|
||||
|
||||
Binary file not shown.
@@ -1,59 +0,0 @@
|
||||
|
||||
|
||||
// call PROFILE.show() to show the profileViewer
|
||||
|
||||
var PROFILE = {
|
||||
|
||||
init : function(bool) {
|
||||
|
||||
// define what objects, constructors and functions you want to profile
|
||||
// documentation here: http://developer.yahoo.com/yui/profiler/
|
||||
|
||||
YAHOO.tool.Profiler.registerObject("jQuery", jQuery, true);
|
||||
|
||||
// the following would profile all methods within constructor's prototype
|
||||
// YAHOO.tool.Profiler.registerConstructor("Person");
|
||||
|
||||
// the following would profile the global function sayHi
|
||||
// YAHOO.tool.Profiler.registerFunction("sayHi", window);
|
||||
|
||||
// if true is passed into init(), F9 will bring up the profiler
|
||||
if (bool){
|
||||
$(document).keyup(function(e){
|
||||
if (e.keyCode === 120){
|
||||
PROFILE.show();
|
||||
$(document).unbind('keyup',arguments.callee);
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
//When the showProfile button is clicked, use YUI Loader to get all required
|
||||
//dependencies and then show the profile:
|
||||
show : function() {
|
||||
|
||||
|
||||
|
||||
var s = document.createElement('link');
|
||||
s.setAttribute('rel','stylesheet');
|
||||
s.setAttribute('type','text/css');
|
||||
s.setAttribute('href','js/profiling/yahoo-profiling.css');
|
||||
document.body.appendChild(s);
|
||||
|
||||
YAHOO.util.Dom.addClass(document.body, 'yui-skin-sam');
|
||||
|
||||
//instantiate ProfilerViewer with desired options:
|
||||
var pv = new YAHOO.widget.ProfilerViewer("", {
|
||||
visible: true, //expand the viewer mmediately after instantiation
|
||||
showChart: true,
|
||||
// base:"../../build/",
|
||||
swfUrl: "js/profiling/charts.swf"
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
// check some global debug variable to see if we should be profiling..
|
||||
if (true) { PROFILE.init(true) }
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
|
||||
Code licensed under the BSD License:
|
||||
http://developer.yahoo.net/yui/license.txt
|
||||
version: 2.7.0
|
||||
*/
|
||||
.yui-skin-sam .yui-pv{background-color:#4a4a4a;font:arial;position:relative;width:99%;z-index:1000;margin-bottom:1em;overflow:hidden;}.yui-skin-sam .yui-pv .hd{background:url(http://yui.yahooapis.com/2.7.0/build/profilerviewer/assets/skins/sam/header_background.png) repeat-x;min-height:30px;overflow:hidden;zoom:1;padding:2px 0;}.yui-skin-sam .yui-pv .hd h4{padding:8px 10px;margin:0;font:bold 14px arial;color:#fff;}.yui-skin-sam .yui-pv .hd a{background:#3f6bc3;font:bold 11px arial;color:#fff;padding:4px;margin:3px 10px 0 0;border:1px solid #3f567d;cursor:pointer;display:block;float:right;}.yui-skin-sam .yui-pv .hd span{display:none;}.yui-skin-sam .yui-pv .hd span.yui-pv-busy{height:18px;width:18px;background:url(http://yui.yahooapis.com/2.7.0/build/profilerviewer/assets/skins/sam/wait.gif) no-repeat;overflow:hidden;display:block;float:right;margin:4px 10px 0 0;}.yui-skin-sam .yui-pv .hd:after,.yui-pv .bd:after,.yui-skin-sam .yui-pv-chartlegend dl:after{content:'.';visibility:hidden;clear:left;height:0;display:block;}.yui-skin-sam .yui-pv .bd{position:relative;zoom:1;overflow-x:auto;overflow-y:hidden;}.yui-skin-sam .yui-pv .yui-pv-table{padding:0 10px;margin:5px 0 10px 0;}.yui-skin-sam .yui-pv .yui-pv-table .yui-dt-bd td{color:#eeee5c;font:12px arial;}.yui-skin-sam .yui-pv .yui-pv-table tr.yui-dt-odd{background:#929292;}.yui-skin-sam .yui-pv .yui-pv-table tr.yui-dt-even{background:#58637a;}.yui-skin-sam .yui-pv .yui-pv-table tr.yui-dt-even td.yui-dt-asc,.yui-skin-sam .yui-pv .yui-pv-table tr.yui-dt-even td.yui-dt-desc{background:#384970;}.yui-skin-sam .yui-pv .yui-pv-table tr.yui-dt-odd td.yui-dt-asc,.yui-skin-sam .yui-pv .yui-pv-table tr.yui-dt-odd td.yui-dt-desc{background:#6F6E6E;}.yui-skin-sam .yui-pv .yui-pv-table .yui-dt-hd th{background-image:none;background:#2E2D2D;}.yui-skin-sam .yui-pv th.yui-dt-asc .yui-dt-liner{background:transparent url(http://yui.yahooapis.com/2.7.0/build/profilerviewer/assets/skins/sam/asc.gif) no-repeat scroll right center;}.yui-skin-sam .yui-pv th.yui-dt-desc .yui-dt-liner{background:transparent url(http://yui.yahooapis.com/2.7.0/build/profilerviewer/assets/skins/sam/desc.gif) no-repeat scroll right center;}.yui-skin-sam .yui-pv .yui-pv-table .yui-dt-hd th a{color:#fff;font:bold 12px arial;}.yui-skin-sam .yui-pv .yui-pv-table .yui-dt-hd th.yui-dt-asc,.yui-skin-sam .yui-pv .yui-pv-table .yui-dt-hd th.yui-dt-desc{background:#333;}.yui-skin-sam .yui-pv-chartcontainer{padding:0 10px;}.yui-skin-sam .yui-pv-chart{height:250px;clear:right;margin:5px 0 0 0;color:#fff;}.yui-skin-sam .yui-pv-chartlegend div{float:right;margin:0 0 0 10px;_width:250px;}.yui-skin-sam .yui-pv-chartlegend dl{border:1px solid #999;padding:.2em 0 .2em .5em;zoom:1;margin:5px 0;}.yui-skin-sam .yui-pv-chartlegend dt{float:left;display:block;height:.7em;width:.7em;padding:0;}.yui-skin-sam .yui-pv-chartlegend dd{float:left;display:block;color:#fff;margin:0 1em 0 .5em;padding:0;font:11px arial;}.yui-skin-sam .yui-pv-minimized{height:35px;}.yui-skin-sam .yui-pv-minimized .bd{top:-3000px;}.yui-skin-sam .yui-pv-minimized .hd a.yui-pv-refresh{display:none;}
|
||||
39
js/profiling/yahoo-profiling.min.js
vendored
39
js/profiling/yahoo-profiling.min.js
vendored
File diff suppressed because one or more lines are too long
26
js/script.js
26
js/script.js
@@ -1,26 +0,0 @@
|
||||
/* Author:
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
6
js/vendor/jquery-1.10.2.min.js
vendored
Normal file
6
js/vendor/jquery-1.10.2.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
4
js/vendor/modernizr-2.6.2.min.js
vendored
Normal file
4
js/vendor/modernizr-2.6.2.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
108
nginx.conf
108
nginx.conf
@@ -1,108 +0,0 @@
|
||||
# Set another default user than root for security reasons
|
||||
user www www;
|
||||
|
||||
# As a thumb rule: One per CPU. If you are serving a large amount
|
||||
# of static files, which requires blocking disk reads, you may want
|
||||
# to increase this from the number of cpu_cores available on your
|
||||
# system.
|
||||
#
|
||||
# The maximum number of connections for Nginx is calculated by:
|
||||
# max_clients = worker_processes * worker_connections
|
||||
worker_processes 1;
|
||||
|
||||
# Maximum file descriptors that can be opened per process
|
||||
# This should be > worker_connections
|
||||
worker_rlimit_nofile 8192;
|
||||
|
||||
events {
|
||||
# When you need > 8000 * cpu_cores connections, you start optimizing
|
||||
# your OS, and this is probably the point at where you hire people
|
||||
# who are smarter than you, this is *a lot* of requests.
|
||||
worker_connections 8000;
|
||||
|
||||
# This sets up some smart queueing for accept(2)'ing requests
|
||||
# Set it to "on" if you have > worker_processes
|
||||
accept_mutex off;
|
||||
|
||||
# These settings are OS specific, by defualt Nginx uses select(2),
|
||||
# however, for a large number of requests epoll(2) and kqueue(2)
|
||||
# are generally faster than the default (select(2))
|
||||
# use epoll; # enable for Linux 2.6+
|
||||
# use kqueue; # enable for *BSD (FreeBSD, OS X, ..)
|
||||
}
|
||||
|
||||
# Change these paths to somewhere that suits you!
|
||||
error_log logs/error.log;
|
||||
pid logs/nginx.pid;
|
||||
|
||||
http {
|
||||
# Set the mime-types
|
||||
include mime.types;
|
||||
|
||||
# And the fallback mime-type
|
||||
default_type application/octet-stream;
|
||||
|
||||
# Format for our log files
|
||||
log_format main '$remote_addr - $remote_user [$time_local] $status '
|
||||
'"$request" $body_bytes_sent "$http_referer" '
|
||||
'"$http_user_agent" "$http_x_forwarded_for"';
|
||||
|
||||
# Click tracking!
|
||||
access_log logs/access.log main;
|
||||
|
||||
# ~2 seconds is often enough for HTML/CSS, but connections in
|
||||
# Nginx are cheap, so generally it's safe to increase it
|
||||
keepalive_timeout 5;
|
||||
|
||||
# You usually want to serve static files with Nginx
|
||||
sendfile on;
|
||||
|
||||
tcp_nopush on; # off may be better for Comet/long-poll stuff
|
||||
tcp_nodelay off; # on may be better for Comet/long-poll stuff
|
||||
|
||||
# Enable Gzip
|
||||
gzip on;
|
||||
gzip_http_version 1.0;
|
||||
gzip_comp_level 2;
|
||||
gzip_min_length 1100;
|
||||
gzip_buffers 4 8k;
|
||||
gzip_proxied any;
|
||||
gzip_types text/html text/plain text/xml application/xml application/xml+rss text/css text/javascript application/javascript application/json;
|
||||
|
||||
gzip_static on;
|
||||
|
||||
gzip_proxied expired no-cache no-store private auth;
|
||||
gzip_disable "MSIE [1-6]\.";
|
||||
gzip_vary on;
|
||||
|
||||
server {
|
||||
# listen 80 default deferred; # for Linux
|
||||
# listen 80 default accept_filter=httpready; # for FreeBSD
|
||||
listen 80 default;
|
||||
|
||||
# e.g. "localhost" to accept all connections, or "www.example.com"
|
||||
# to handle the requests for "example.com" (and www.example.com)
|
||||
server_name _;
|
||||
|
||||
# Path for static files
|
||||
root /sites/example.com/public;
|
||||
|
||||
expires 1M;
|
||||
|
||||
# Static assets
|
||||
location ~* ^.+\.(manifest)$ {
|
||||
expires -1D;
|
||||
root /sites/example.com/public;
|
||||
access_log logs/static.log;
|
||||
}
|
||||
|
||||
location ~* ^.+\.(ico|ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
|
||||
# Only set expires max IFF the file is a static file and exists
|
||||
if (-f $request_filename) {
|
||||
expires max;
|
||||
root /sites/example.com/public;
|
||||
access_log logs/static.log;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,3 @@
|
||||
# www.robotstxt.org/
|
||||
# www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449
|
||||
# robotstxt.org/
|
||||
|
||||
User-agent: *
|
||||
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>QUnit Tests</title>
|
||||
<link rel="stylesheet" href="qunit/qunit.css" media="screen">
|
||||
|
||||
<!-- reference your own javascript files here -->
|
||||
|
||||
<script src="../js/modernizr-1.5.min.js"></script>
|
||||
|
||||
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
|
||||
<script src="../js/plugins.js"></script>
|
||||
<script src="../js/script.js"></script>
|
||||
|
||||
|
||||
<!-- test runner files -->
|
||||
<script src="qunit/qunit.js"></script>
|
||||
<script src="tests.js"></script>
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body class="flora">
|
||||
<h1 id="qunit-header">QUnit Test Suite</h1>
|
||||
<h2 id="qunit-banner"></h2>
|
||||
<div id="qunit-testrunner-toolbar"></div>
|
||||
<h2 id="qunit-userAgent"></h2>
|
||||
<ol id="qunit-tests"></ol>
|
||||
<div id="qunit-fixture">test markup</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,148 +0,0 @@
|
||||
/** Font Family and Sizes */
|
||||
|
||||
#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
|
||||
font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
|
||||
}
|
||||
|
||||
#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
|
||||
#qunit-tests { font-size: smaller; }
|
||||
|
||||
|
||||
/** Resets */
|
||||
|
||||
#qunit-tests, #qunit-tests li ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
|
||||
/** Header */
|
||||
|
||||
#qunit-header {
|
||||
padding: 0.5em 0 0.5em 1em;
|
||||
|
||||
color: #fff;
|
||||
text-shadow: rgba(0, 0, 0, 0.5) 4px 4px 1px;
|
||||
background-color: #0d3349;
|
||||
|
||||
border-radius: 15px 15px 0 0;
|
||||
-moz-border-radius: 15px 15px 0 0;
|
||||
-webkit-border-top-right-radius: 15px;
|
||||
-webkit-border-top-left-radius: 15px;
|
||||
}
|
||||
|
||||
#qunit-banner {
|
||||
height: 5px;
|
||||
}
|
||||
|
||||
#qunit-testrunner-toolbar {
|
||||
padding: 0em 0 0.5em 2em;
|
||||
}
|
||||
|
||||
#qunit-userAgent {
|
||||
padding: 0.5em 0 0.5em 2.5em;
|
||||
background-color: #2b81af;
|
||||
color: #fff;
|
||||
text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
|
||||
}
|
||||
|
||||
|
||||
/** Tests: Pass/Fail */
|
||||
|
||||
#qunit-tests {
|
||||
list-style-position: inside;
|
||||
}
|
||||
|
||||
#qunit-tests li {
|
||||
padding: 0.4em 0.5em 0.4em 2.5em;
|
||||
border-bottom: 1px solid #fff;
|
||||
list-style-position: inside;
|
||||
}
|
||||
|
||||
#qunit-tests li strong {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#qunit-tests li ol {
|
||||
margin-top: 0.5em;
|
||||
padding: 0.5em;
|
||||
|
||||
background-color: #fff;
|
||||
|
||||
border-radius: 15px;
|
||||
-moz-border-radius: 15px;
|
||||
-webkit-border-radius: 15px;
|
||||
|
||||
box-shadow: inset 0px 2px 13px #999;
|
||||
-moz-box-shadow: inset 0px 2px 13px #999;
|
||||
-webkit-box-shadow: inset 0px 2px 13px #999;
|
||||
}
|
||||
|
||||
#qunit-tests li li {
|
||||
margin: 0.5em;
|
||||
padding: 0.4em 0.5em 0.4em 0.5em;
|
||||
background-color: #fff;
|
||||
border-bottom: none;
|
||||
list-style-position: inside;
|
||||
}
|
||||
|
||||
/*** Passing Styles */
|
||||
|
||||
#qunit-tests li li.pass {
|
||||
color: #5E740B;
|
||||
background-color: #fff;
|
||||
border-left: 26px solid #C6E746;
|
||||
}
|
||||
|
||||
#qunit-tests li.pass { color: #528CE0; background-color: #D2E0E6; }
|
||||
#qunit-tests li.pass span.test-name { color: #366097; }
|
||||
|
||||
#qunit-tests li li.pass span.test-actual,
|
||||
#qunit-tests li li.pass span.test-expected { color: #999999; }
|
||||
|
||||
strong b.pass { color: #5E740B; }
|
||||
|
||||
#qunit-banner.qunit-pass { background-color: #C6E746; }
|
||||
|
||||
/*** Failing Styles */
|
||||
|
||||
#qunit-tests li li.fail {
|
||||
color: #710909;
|
||||
background-color: #fff;
|
||||
border-left: 26px solid #EE5757;
|
||||
}
|
||||
|
||||
#qunit-tests li.fail { color: #000000; background-color: #EE5757; }
|
||||
#qunit-tests li.fail span.test-name,
|
||||
#qunit-tests li.fail span.module-name { color: #000000; }
|
||||
|
||||
#qunit-tests li li.fail span.test-actual { color: #EE5757; }
|
||||
#qunit-tests li li.fail span.test-expected { color: green; }
|
||||
|
||||
strong b.fail { color: #710909; }
|
||||
|
||||
#qunit-banner.qunit-fail,
|
||||
#qunit-testrunner-toolbar { background-color: #EE5757; }
|
||||
|
||||
|
||||
/** Footer */
|
||||
|
||||
#qunit-testresult {
|
||||
padding: 0.5em 0.5em 0.5em 2.5em;
|
||||
|
||||
color: #2b81af;
|
||||
background-color: #D2E0E6;
|
||||
|
||||
border-radius: 0 0 15px 15px;
|
||||
-moz-border-radius: 0 0 15px 15px;
|
||||
-webkit-border-bottom-right-radius: 15px;
|
||||
-webkit-border-bottom-left-radius: 15px;
|
||||
}
|
||||
|
||||
/** Fixture */
|
||||
|
||||
#qunit-fixture {
|
||||
position: absolute;
|
||||
top: -10000px;
|
||||
left: -10000px;
|
||||
}
|
||||
1265
test/qunit/qunit.js
1265
test/qunit/qunit.js
File diff suppressed because it is too large
Load Diff
1436
test/tests.js
1436
test/tests.js
File diff suppressed because it is too large
Load Diff
204
web.config
204
web.config
@@ -1,204 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- web.config contributed to html5boilerplate by Velir : velir.com -->
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
|
||||
<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
|
||||
<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
|
||||
<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
|
||||
<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" />
|
||||
<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
|
||||
<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
|
||||
<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
|
||||
</sectionGroup>
|
||||
</sectionGroup>
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
|
||||
<appSettings />
|
||||
<connectionStrings />
|
||||
<system.web>
|
||||
<!--
|
||||
Set compilation debug="true" to insert debugging
|
||||
symbols into the compiled page. Because this
|
||||
affects performance, set this value to true only
|
||||
during development.
|
||||
-->
|
||||
<compilation debug="false">
|
||||
|
||||
<assemblies>
|
||||
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
|
||||
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
|
||||
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
|
||||
</assemblies>
|
||||
|
||||
</compilation>
|
||||
<authentication mode="Windows" />
|
||||
<!--
|
||||
The <customErrors> section enables configuration
|
||||
of what to do if/when an unhandled error occurs
|
||||
during the execution of a request. Specifically,
|
||||
it enables developers to configure html error pages
|
||||
to be displayed in place of a error stack trace.
|
||||
|
||||
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
|
||||
<error statusCode="403" redirect="NoAccess.htm" />
|
||||
<error statusCode="404" redirect="FileNotFound.htm" />
|
||||
</customErrors>
|
||||
-->
|
||||
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
|
||||
<error statusCode="404" redirect="404.html" />
|
||||
</customErrors>
|
||||
|
||||
<pages>
|
||||
<controls>
|
||||
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
</controls>
|
||||
</pages>
|
||||
|
||||
<httpHandlers>
|
||||
<remove verb="*" path="*.asmx" />
|
||||
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" />
|
||||
</httpHandlers>
|
||||
<httpModules>
|
||||
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
</httpModules>
|
||||
</system.web>
|
||||
|
||||
<system.codedom>
|
||||
<compilers>
|
||||
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<providerOption name="CompilerVersion" value="v3.5" />
|
||||
<providerOption name="WarnAsError" value="false" />
|
||||
</compiler>
|
||||
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<providerOption name="CompilerVersion" value="v3.5" />
|
||||
<providerOption name="OptionInfer" value="true" />
|
||||
<providerOption name="WarnAsError" value="false" />
|
||||
</compiler>
|
||||
</compilers>
|
||||
</system.codedom>
|
||||
|
||||
<system.webServer>
|
||||
<!--
|
||||
GZip static file content. Overrides the server default which only compresses static files over 2700 bytes
|
||||
-->
|
||||
<httpCompression directory="%SystemDrive%\websites\_compressed" minFileSizeForComp="1024">
|
||||
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
|
||||
<staticTypes>
|
||||
<add mimeType="text/*" enabled="true" />
|
||||
<add mimeType="message/*" enabled="true" />
|
||||
<add mimeType="application/javascript" enabled="true" />
|
||||
<add mimeType="application/json" enabled="true" />
|
||||
<add mimeType="*/*" enabled="false" />
|
||||
</staticTypes>
|
||||
</httpCompression>
|
||||
|
||||
<validation validateIntegratedModeConfiguration="false" />
|
||||
<modules>
|
||||
<remove name="ScriptModule" />
|
||||
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
</modules>
|
||||
<handlers>
|
||||
<remove name="WebServiceHandlerFactory-Integrated" />
|
||||
<remove name="ScriptHandlerFactory" />
|
||||
<remove name="ScriptHandlerFactoryAppServices" />
|
||||
<remove name="ScriptResource" />
|
||||
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
</handlers>
|
||||
<urlCompression doStaticCompression="true" />
|
||||
<staticContent>
|
||||
<!-- Set expire headers to 30 days for static content-->
|
||||
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
|
||||
<!-- use utf-8 encoding for anything served text/plain or text/html -->
|
||||
<remove fileExtension=".css" />
|
||||
<mimeMap fileExtension=".css" mimeType="text/css; charset=UTF-8" />
|
||||
<remove fileExtension=".js" />
|
||||
<mimeMap fileExtension=".js" mimeType="text/javascript; charset=UTF-8" />
|
||||
<remove fileExtension=".json" />
|
||||
<mimeMap fileExtension=".json" mimeType="application/json; charset=UTF-8" />
|
||||
<remove fileExtension=".rss" />
|
||||
<mimeMap fileExtension=".rss" mimeType="application/rss+xml; charset=UTF-8" />
|
||||
<remove fileExtension=".html" />
|
||||
<mimeMap fileExtension=".html" mimeType="text/html; charset=UTF-8" />
|
||||
<remove fileExtension=".xml" />
|
||||
<mimeMap fileExtension=".xml" mimeType="application/xml; charset=UTF-8" />
|
||||
<!-- HTML5 Video mime types-->
|
||||
<mimeMap fileExtension=".mp4" mimeType="video/mp4" />
|
||||
<mimeMap fileExtension=".m4v" mimeType="video/m4v" />
|
||||
<mimeMap fileExtension=".ogg" mimeType="video/ogg" />
|
||||
<mimeMap fileExtension=".ogv" mimeType="video/ogg" />
|
||||
<mimeMap fileExtension=".webm" mimeType="video/webm" />
|
||||
<!-- Proper svg serving. Required for svg webfonts on iPad -->
|
||||
<mimeMap fileExtension=".svg" mimeType="images/svg+xml" />
|
||||
<mimeMap fileExtension=".svgz" mimeType="images/svg+xml" />
|
||||
<!-- HTML4 Web font mime types -->
|
||||
<!-- Remove default IIS mime type for .eot which is application/octet-stream -->
|
||||
<remove fileExtension=".eot" />
|
||||
<mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
|
||||
<mimeMap fileExtension=".otf" mimeType="font/otf" />
|
||||
<mimeMap fileExtension=".woff" mimeType="font/x-woff" />
|
||||
|
||||
</staticContent>
|
||||
<httpProtocol>
|
||||
<customHeaders>
|
||||
<!--
|
||||
http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/
|
||||
Uncomment to serve cross-domain ajax requests
|
||||
|
||||
<add name="Access-Control-Allow-Origin" value="*" />
|
||||
-->
|
||||
|
||||
<!--
|
||||
Force the latest IE version, in various cases when it may fall back to IE7 mode
|
||||
github.com/rails/rails/commit/123eb25#commitcomment-118920
|
||||
Use ChromeFrame if it's installed for a better experience for the poor IE folk
|
||||
-->
|
||||
<add name="X-UA-Compatible" value="IE=Edge,chrome=1" />
|
||||
|
||||
<!--
|
||||
Allow cookies to be set from iframes (for IE only)
|
||||
If needed, uncomment and specify a path or regex in the Location directive
|
||||
|
||||
<add name="P3P" value="policyref="/w3c/p3p.xml", CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"" />
|
||||
-->
|
||||
</customHeaders>
|
||||
</httpProtocol>
|
||||
<!--
|
||||
Remove the WWW from the URL.
|
||||
Requires IIS Rewrite module http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/
|
||||
Configuration lifted from http://nayyeri.net/remove-www-prefix-from-urls-with-url-rewrite-module-for-iis-7-0
|
||||
|
||||
<rewrite>
|
||||
<rules>
|
||||
<rule name="Remove WWW" stopProcessing="true">
|
||||
<match url="^(.*)$" />
|
||||
<conditions>
|
||||
<add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" />
|
||||
</conditions>
|
||||
<action type="Redirect" url="http://nayyeri.net{PATH_INFO}" redirectType="Permanent" />
|
||||
</rule>
|
||||
</rules>
|
||||
</rewrite>
|
||||
-->
|
||||
</system.webServer>
|
||||
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" />
|
||||
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35" />
|
||||
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
Reference in New Issue
Block a user