Compare commits

..

1331 Commits
v0.9 ... 5.1.0

Author SHA1 Message Date
Cătălin Mariș
1c93f0a056 v5.1.0 2015-04-01 21:08:35 +03:00
Cătălin Mariș
0c32a937e0 Update CHANGELOG.md
Remove line regarding the inclusion of the `LICENSE.txt` file in the
`dist/` directory as it does not constitute an important change as far
as end users are concerned.
2015-04-01 20:54:33 +03:00
Cătălin Mariș
735b9ad706 Update Normalize.css to v3.0.3. 2015-03-31 07:05:20 +03:00
Cătălin Mariș
f4d731e23c Update devDependencies 2015-03-25 12:13:57 +02:00
H5BP
9581cf3a81 Update content from the dist directory [skip ci] 2015-03-13 20:46:00 +00:00
Matt Smith
c7057bef0c Use Autoprefixer to add the vendor prefixes
Ref h5bp/html5-boilerplate#1682
    https://github.com/h5bp/html5-boilerplate/pull/1682#discussion_r26377139
    https://github.com/postcss/autoprefixer
    https://github.com/sindresorhus/gulp-autoprefixer

Close h5bp/html5-boilerplate#1682
2015-03-13 22:42:27 +02:00
battaglr
4f6a87f985 README.md: Add detailed info about browser support
Close h5bp/html5-boilerplate#1684
2015-03-13 19:10:06 +02:00
Cătălin Mariș
29af44ef9c Update CHANGELOG.md 2015-03-11 17:14:58 +02:00
Cătălin Mariș
eee759bfe1 Use https:// in the Google Analytics snippet
Nowadays HTTPS is fast and increasingly necessary, so using
protocol-relative URLs is becoming an anti-pattern, especially for CDNs.

From https://developers.google.com/speed/libraries/devguide?csw=1#libraries:

 " We recommend that you load libraries from the CDN via HTTPS, even
   if your own website only uses HTTP. Nowadays, performance is fast
   and caching works just the same "

See also: https://github.com/konklone/cdns-to-https#conclusion-cdns-should-redirect-to-https
2015-03-11 17:13:53 +02:00
Cătălin Mariș
57342272e6 Include the LICENSE file in the dist directory
* Rename `LICENSE.md` to `LICENSE.txt` so that more text editors
  know how to open it.

* Make the build step copy the `LICENSE.txt` file in the `dist/`
  directory so that it gets included in the distribution package.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Ref https://www.youtube.com/watch?v=hWDSToC9EV8&t=15m15s
    h5bp/html5-boilerplate#1655

Fix h5bp/html5-boilerplate#1655
Close h5bp/html5-boilerplate#1680
2015-03-11 08:17:57 +02:00
Cătălin Mariș
2431333b63 Update devDependencies 2015-03-11 08:17:09 +02:00
Cătălin Mariș
422537b96c Remove visibility: hidden from .hidden
The `visibility: hidden` declaration was added to the `.hidden` class
in order to prevent¹ some screen readers from announcing the content:

 * JAWS:

   "Announces content in a `span` element hidden with `display: none`
    if it is in an anchor element. This only works with a `span`
    element; other inline elements used in an anchor element, such
    as `em`, `strong`, `abbr`, `code`, and so on, are not announced
    in JAWS."

    (from: http://juicystudio.com/article/screen-readers-display-none.php#jawsdisplaynone)

 * Window-Eyes:

   "if a container has a value specified for the `background-image`
    property, content hidden with `display: none` will be announced
    in Window-Eyes."

    (from http://juicystudio.com/article/screen-readers-display-none.php#wedisplaynone)

Nowadays however, both of those screen reader fixed² their issues,
therefore, the `visibility: hidden` declaration is no longer needed.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

¹ http://juicystudio.com/article/screen-readers-display-none.php
² https://github.com/h5bp/html5-boilerplate/issues/1663#issuecomment-77583110

Fix h5bp/html5-boilerplate#1663
2015-03-06 18:02:03 +02:00
Cătălin Mariș
0a40054b7e Use https:// where possible 2015-03-05 01:41:23 +02:00
Cătălin Mariș
b07c91dad6 Docs: Update links
* Use `https://` for links where possible.
* Fix broken links.
2015-03-05 01:41:23 +02:00
Cătălin Mariș
57639ee786 Docs: Lowercase attr values for X-UA-Compatible
Ref: h5bp/html5-boilerplate#1656
2015-03-05 01:41:23 +02:00
BLooperZ
356e141ec9 Lowercase attr values for x-ua-compatible meta tag
Change made in order to be more consistent with the overall use of
lowercase in `index.html`.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

From https://msdn.microsoft.com/en-us/library/jj676915.aspx:

  "The X-UA-Compatible header isn't case sensitive; however, it must
   appear in the header of the webpage (the HEAD section) before all
   other elements except for the title element and other meta elements."

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Ref h5bp/html5-boilerplate#1656

Close h5bp/html5-boilerplate#1656
Close h5bp/html5-boilerplate#1668
2015-03-05 01:41:00 +02:00
drKraken
c8165a6da0 Update devDependencies
Close h5bp/html5-boilerplate#1679
2015-03-04 22:18:38 +02:00
Cătălin Mariș
c0de8e873a Update Apache Server Configs to v2.13.0 2015-03-04 15:51:05 +02:00
Cătălin Mariș
2a6bb8d219 Update Apache Server Configs to v2.12.0 2015-03-02 23:45:20 +02:00
drKraken
b4bbee5468 Exclude .htaccess from GitHub's language stats
Ref https://github.com/github/linguist#using-gitattributes
Close h5bp/html5-boilerplate#1678
2015-03-02 11:05:19 +02:00
Cătălin Mariș
6443483dd2 Update .travis.yml
* Redirect all output from `export $(cat .to_export_back)` to
  `/dev/null` in order to prevent `export` from leaking the access
  token in the case when, for some odd reason, the `.to_export_back`
  file is not created.

* Regenerate the `secure` key based on a new access token.
2015-02-25 01:09:04 +02:00
Mark Macdonald
192d7fed39 Docs: Add missing period in js.md
Close #1669
2015-02-10 07:12:58 +01:00
Cătălin Mariș
e7465be638 Update .travis.yml
* Add `io.js` runtime.
  https://iojs.org/

* Ensure that the `commit_build_changes.sh` script is only
  executed if the tests pass in all runtimes.
2015-02-09 12:39:44 +02:00
Cătălin Mariș
3575a69db6 Update .travis.yml
* Start using Travis CI's container-based infrastructure.
  http://docs.travis-ci.com/user/workers/container-based-infrastructure/

* Update `Node.js` to `v0.12.0`.
2015-02-08 21:31:24 +02:00
Cătălin Mariș
3be7fe5c01 Update devDependencies 2015-02-07 13:41:05 +02:00
Alex Wigmore
78c84ce701 Docs: Add info about <meta name="theme-color"...>
Ref: https://github.com/whatwg/meta-theme-color
     https://bugzilla.mozilla.org/show_bug.cgi?id=1013913
     https://twitter.com/ahmednefzaoui/status/492344698493997057
     http://updates.html5rocks.com/2014/11/Support-for-theme-color-in-Chrome-39-for-Android

Close: h5bp/html5-boilerplate#1642
2015-02-07 13:33:58 +02:00
Cătălin Mariș
ad26878202 CHANGELOG.md: Add date for the v5.0.0 release 2015-02-07 11:42:42 +02:00
Arthur Verschaeve
60a8ff0336 v5.0.0 2015-02-01 21:56:31 +01:00
H5BP
f61c062ff8 Update content from the dist directory [skip ci] 2015-02-01 20:26:28 +00:00
Paul Irish
4af329eedb changelog: HEAD -> 5.0 2015-02-01 12:25:31 -08:00
Paul Irish
0d5c32fb8b TOC.md - small tweaks in wording 2015-02-01 12:22:23 -08:00
gokulkrishh
db639fd0ec Docs: fix spelling mistake in misc.md
Fix #1652
Close #1652
2014-12-23 07:47:27 +01:00
Arthur Verschaeve
001a6c909a Docs: add info on browserconfig.xml and tile images
Ref #1554
    #1639
2014-12-22 15:02:33 +01:00
Arthur Verschaeve
2fcde1ef33 Docs: add new files to usage.md
Updated `usage.md` to include 4 new files included with the project:

* `.editorconfig`
* `tile-wide.png`, `tile.png` and `browserconfig.xml`

Ref 80530d6b46
    a99d8563dd
Close #1647
2014-12-21 22:54:27 +01:00
Arthur Verschaeve
330b60c212 Update to jQuery 1.11.2
Ref http://blog.jquery.com/2014/12/18/jquery-1-11-2-and-2-1-3-released-safari-fail-safe-edition/
Close #1650
2014-12-21 19:12:45 +01:00
Cătălin Mariș
c97c23c06e Update devDependencies 2014-12-08 17:37:45 +02:00
Cătălin Mariș
0dab796231 Update .travis.yml
Use `commit_build_changes.sh` v0.6.0 and make all the necessary changes
that come with the update.
2014-12-08 17:33:58 +02:00
Arthur Verschaeve
45798ee7f8 README.md: Use https:// where possible
Close h5bp/html5-boilerplate#1640
2014-11-30 19:59:27 +02:00
Cătălin Mariș
598ac20128 Update .travis.yml
Use `commit_build_changes.sh` v0.5.0 and make all the necessary changes
that come with the update.
2014-11-29 23:52:07 +02:00
Cătălin Mariș
10f58216b0 Update devDependencies 2014-11-29 16:18:32 +02:00
Cătălin Mariș
be023b8e2d Clean up package.json
Remove `update_dist_directory` from the `scripts` property as it no
longer works, nor it is needed¹.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

¹ d2740f3c6b
2014-11-21 19:53:21 +02:00
Fagner Brack
7275f79fbc Docs: Link to pages that explain certain concepts
Close h5bp/html5-boilerplate#1637
2014-11-21 11:05:39 +02:00
Fagner Brack
91dc924163 Docs: Remove the extra "this" from CONTRIBUTING.md
Close h5bp/html5-boilerplate#1638
2014-11-21 10:50:58 +02:00
Cătălin Mariș
078a37ae38 Docs: Add link to the GA Demos and Tools website
Ref: https://googledevelopers.blogspot.com/2014/11/google-analytics-demos-tools.html
2014-11-21 00:43:31 +02:00
Cătălin Mariș
1318b71cdf Docs: Remove some outdated info from extend.md 2014-11-21 00:35:45 +02:00
Arthur Verschaeve
45a3adcb2e Docs: Add information about including polyfills
Close h5bp/html5-boilerplate#1636
2014-11-21 00:15:17 +02:00
Morten Bengtson
1d0d78509d Docs: Update information about X-UA-Compatible
Remove statement about

    `<meta http-equiv="X-UA-Compatible" content="IE=edge">`

breaking validation.

Ref: validator/validator#12
     h5bp/html5-boilerplate#1630

Close h5bp/html5-boilerplate#1631
2014-11-09 20:19:23 +02:00
Cătălin Mariș
f6efcf0783 Update .travis.yml
Update the link to the `commit_build_changes.sh` script so
that it points to version 0.4.0.
2014-11-08 03:54:24 +02:00
Cătălin Mariș
98fc61b9d1 Use octothorpes (#) for comments in .editorconfig
For consistency, only use octothorpes (#) for comments in the
`.editorconfig` file.

Ref: http://editorconfig.org/#file-format-details
2014-11-07 22:28:25 +02:00
Cătălin Mariș
8d901e6fb8 Improve inline comments from .travis.yml
Add more information about the `secure` key and what the
`commit_build_changes.sh` script does.
2014-11-07 19:36:13 +02:00
Cătălin Mariș
f1503cb6c3 Update devDependencies 2014-11-07 19:15:21 +02:00
Bo-Yi Wu
eba30f07ac Add informational inline comments in .jshintrc
Close h5bp/html5-boilerplate#1628
2014-11-02 20:09:54 +02:00
Cătălin Mariș
d2740f3c6b Remove update_dist_directory.sh script
Use the more configurable form of the `update_dist_directory.sh`
script the has been added in a separate repository.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Note: The `update_dist_directory.sh` was moved into a different
repository in order to:

  * be more easily maintained
  * allow other projects with similar needs to use it
2014-10-28 19:16:24 +02:00
Cătălin Mariș
3c2aac8001 Split tests based on what they check 2014-10-28 13:35:42 +02:00
Cătălin Mariș
61015dbbea Update Apache Server Configs to v2.11.0 2014-10-27 00:47:30 +02:00
Cătălin Mariș
918c88e372 Update devDependencies 2014-10-23 14:01:08 +03:00
Cătălin Mariș
345925f043 Rename Apple touch icon & add <link> in index.html
Until now we recommended to our users to include an image named
`apple-touch-icon-precomposed.png` in the root of their website.

Since the iOS 8 release however, Safari will no longer request¹
the `/apple-touch-icon-precomposed.png` by default, and instead,
it will make the following requests¹:

    /apple-touch-icon-152x152-precomposed.png
    /apple-touch-icon-152x152.png
    /apple-touch-icon.png

In order to fix this issue we decided¹ to rename
`apple-touch-icon-precomposed.png` to `apple-touch-icon.png`,
and include a `<link>` element in the `index.html`:

    <link rel="apple-touch-icon" href="apple-touch-icon.png">

Notes:

  * Just renaming `apple-touch-icon-precomposed.png` to
    `apple-touch-icon.png` would have also worked², even with
    older version of iOS. Unfortunately, it wouldn't have
    represented a good solution as Apple may change again what
    is requested by default, plus, it would have generated quite
    a few 404s³.

  * We decided to rename the touch icon because most iOS users⁴
    are on iOS 7+, so the `precomposed` keyword no longer brings
    much benefit (as of iOS 7, no special effects are applied to
    touch icons).

  * Adding `<link rel="apple-touch-icon" ...>` in `index.html`
    will also allow⁵ (some of) the default Android 2.2+ browsers
    to use the touch icon.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

¹ h5bp/html5-boilerplate#1615

² https://mathiasbynens.be/notes/touch-icons
  https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html

³ https://code.google.com/p/chromium/issues/detail?id=259681
  h5bp/html5-boilerplate#1615

⁴ According to Apple (as measured by the App Store on October 13, 2014):

    * 5%  iOS < 7
    * 47% iOS 7
    * 48% iOS 8

  From: https://developer.apple.com/support/appstore/
        https://cloud.githubusercontent.com/assets/1223565/4720999/2aa8ba26-5935-11e4-9492-92ff6a50ad7d.pnghttp://www.ravelrumba.com/blog/android-apple-touch-icon/

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Close h5bp/html5-boilerplate#1622
2014-10-22 00:02:26 +03:00
Cătălin Mariș
d7976c3f75 Update Apache Server Configs to v2.10.0 2014-10-20 17:33:02 +03:00
Cătălin Mariș
ad27d2e6b2 Enforce LF newlines also for hidden files 2014-10-20 16:57:18 +03:00
Cătălin Mariș
6f50688c1c Enforce LF newlines
This change is done in order to ensure that Windows users don't
encounter any newline related issues.

e.g.: Prior to this change, after the build script was run, files
from `node_modules` (having `LF` newlines, and which wouldn't have
be normalized by `git`) would be copied to the `dist/` directory
and would appear to Windows users as if they where changed.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Thanks to @XhmikosR for pointing this out!

Ref http://git-scm.com/docs/gitattributes#_effects
    http://en.wikipedia.org/wiki/Newline

Close h5bp/html5-boilerplate#1618
2014-10-15 21:55:01 +03:00
Cătălin Mariș
697fa65431 Replace short links with original links
While the short links look "nicer" and can be useful (e.g.: stats),
when our site (http://h5bp.com) goes down, it prevents users from
accessing the information they point to.

Close h5bp/html5-boilerplate#1619
2014-10-15 16:00:52 +03:00
Cătălin Mariș
695e8d9f82 Update Apache Server Configs to v2.9.0 2014-10-15 15:43:43 +03:00
XhmikosR
c3d52666d0 Remove lint options covered by JSCS from .jshintrc
Ref https://github.com/jscs-dev/node-jscs#rules
Close h5bp/html5-boilerplate#1617
2014-10-14 23:48:19 +03:00
XhmikosR
f2d9182155 Add JSCS JavaScript code style checker to build
Ref https://github.com/jscs-dev/node-jscs#readme
    h5bp/html5-boilerplate#1617
2014-10-14 23:48:09 +03:00
Cătălin Mariș
f3a94f5f6e Separate jQuery URL test into two different tests 2014-10-14 22:18:59 +03:00
XhmikosR
768a15235f Add test to the list of dirs from package.json 2014-10-13 12:57:55 +03:00
H5BP
c9ac4325bb Update content from the dist directory [skip ci] 2014-10-13 08:30:54 +00:00
XhmikosR
9d127a2c82 Add test/tests.js in the JSHint check 2014-10-13 11:26:33 +03:00
XhmikosR
2b69bde024 Make consistency changes in test/tests.js 2014-10-13 11:26:11 +03:00
XhmikosR
80ee26d734 Further losslessly compress images
* apple-touch-icon-precomposed.png

   before:         3962 B
   after:          3959 B
   ──────────────────────
   reduction:         3 B [0.07%]

 * tile.png

   before:         3495 B
   after:          3482 B
   ──────────────────────
   reduction:        13 B [0.37%]

 * tile-wide.png

   before:         1864 B
   after:          1854 B
   ──────────────────────
   reduction:        10 B [0.53%]
2014-10-13 11:26:11 +03:00
H5BP
4b07bb3f8b Update content from the dist directory [skip ci] 2014-10-12 08:30:11 +00:00
Chris Rebert
c2abc3f6e0 Docs: Fix wrong homophone in html.md
Close h5bp/html5-boilerplate#1616
2014-10-12 11:29:14 +03:00
Cătălin Mariș
3d4c3da5d9 Move update_dist_directory.sh into bin/travis
Make it even more clear that the `update_dist_directory.sh`
is intended for Travis¹, and not for the user to run it.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

¹ http://docs.travis-ci.com/
2014-10-12 11:27:31 +03:00
slavanga
f3ecc0c67f Add vertical centering for iframe
Remove gap between the `iframe` elements and the bottom
of their containers by vertically centering them.

Close h5bp/html5-boilerplate#1613
2014-10-11 18:04:31 +03:00
Cătălin Mariș
1cac1c9ecc Docs: Improve info regarding IE's document modes
Ref h5bp/html5-boilerplate#1554
Close h5bp/html5-boilerplate#1446
2014-10-10 14:06:59 +03:00
Cătălin Mariș
f8ee8fec3f Docs: Make minor update regarding touch icons 2014-10-06 19:01:40 +03:00
Andrew Brinker
d5e0625312 Change the outdated browser prompt classname
While the outdated browser prompt currently links to `browsehappy.com`,
users are free and even encouraged to substitute the link with their own
page or site of preference.

This commit changes the `browsehappy` specific classname with the more
agnostic `browserupgrade` in order to make the link substitution
easier, but more importantly to hint to the users that they don't have
to stick with the currently default provided `browsehappy.com` link.

Ref: h5bp/html5-boilerplate#1582
     h5bp/html5-boilerplate#1608

Close h5bp/html5-boilerplate#1608
2014-10-06 12:15:16 +03:00
Cătălin Mariș
c9a5fb4d70 Docs: Make minor correction regarding touch icons
Clarify that the iPad and iPad mini with @1x display running iOS 8 are
also using the `76×76px` touch icon.

Ref: h5bp/html5-boilerplate#1599.
2014-10-06 10:52:26 +03:00
Arthur Verschaeve
7aa92ea5f6 Update to normalize.css v3.0.2
Close h5bp/html5-boilerplate#1609
2014-10-05 17:03:42 +03:00
Cătălin Mariș
d3e9cbfcec Update devDependencies 2014-10-05 16:54:13 +03:00
Cătălin Mariș
66d5b120d6 Update devDependencies 2014-09-28 23:34:19 +03:00
Cătălin Mariș
32c0b2b160 Docs: Use https:// where possible 2014-09-28 14:34:17 +03:00
Cătălin Mariș
1c4fcf3214 Update apple-touch-icon-precomposed.png and docs
* Update the documentation regarding the Apple touch icons, by
   reflecting the recent changes brought by the release of iOS 8 and the
   new iPhone 6 and 6 Plus.

   Note: The changes do not follow all Apple's iOS Human Interface
   Guidelines¹, as in practice, the images used by the different devices
   are different² from the ones specified in the Apple documentation.

 * Update the `apple-touch-icon-precomposed.png` to be `180×180px` (this
   is now the largest image size used by any Apple device running iOS).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

¹ https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/IconMatrix.html
² h5bp/html5-boilerplate#1599

Close h5bp/html5-boilerplate#1599.
2014-09-25 11:29:05 +03:00
Arthur Verschaeve
712568f229 Futher optimize tile.png and tile-wide.png
* `tile.png`:

    before:        13743 B
    after:          3495 B
    ──────────────────────
    reduction:     10248 B [74.56%]

 * `tile-wide.png`

    before:         6774 B
    after:          1864 B
    ──────────────────────
    reduction:      4910 B [72.48%]

Close h5bp/html5-boilerplate#1604.
2014-09-22 20:09:01 +03:00
Cătălin Mariș
215bebe5e5 Remove the cross-domain phrase from README.md
The part about `Cross-domain Ajax and Flash` from the `README.md` file
isn't accurate, as by default:

 * the `crossdomain.xml` file doesn't grant a web client — such as Adobe
   Flash Player, Adobe Reader, etc. — permission to handle data across
   multiple domains

 * the Apache server configs, do not allow cross-origin access to all
   resources, unless the user enables that behavior
2014-09-20 17:51:12 +03:00
Cătălin Mariș
f134545b95 Docs: Provide link to Google's docs on robots.txt
Ref: h5bp/html5-boilerplate#1554
2014-09-19 17:56:57 +03:00
Arthur Verschaeve
3e3b770b0d Docs: Add information about the robots.txt file
Ref: h5bp/html5-boilerplate#1554
Close: h5bp/html5-boilerplate#1598
2014-09-19 17:56:24 +03:00
H5BP
a8fabc504b Update content from the dist directory [skip ci] 2014-09-18 20:37:29 +00:00
Chris Rebert
ed6ba6d8ba Docs: Fix typos
Close h5bp/html5-boilerplate#1600
2014-09-18 23:35:25 +03:00
Paul Irish
c35f8d3c2e Update update_dist_directory.sh 2014-09-17 11:45:42 -07:00
H5BP
6cd8083b15 Update content from the dist directory [skip ci] 2014-09-14 07:35:01 +00:00
Arthur Verschaeve
75d6ea62a0 Docs: Fix broken link in misc.md
Close h5bp/html5-boilerplate#1596
2014-09-14 10:33:52 +03:00
Cătălin Mariș
59911a536d Update Apache Server Configs to v2.8.0 2014-09-13 14:06:40 +03:00
H5BP
e830ce22b5 Update content from the dist directory [skip ci] 2014-09-11 17:59:04 +00:00
Arthur Verschaeve
d352b37ac1 Docs: Fix broken link in usage.md
Close h5bp/html5-boilerplate#1595
2014-09-11 20:57:03 +03:00
Cătălin Mariș
77684b1638 Docs: Add info on disabling phone no. formatting
By default Safari on iOS will automatically inject a `<a href="tel:…">`
when it detects any string formatted like a phone number on the web page
(see: https://cloud.githubusercontent.com/assets/1223565/4230929/90243cd8-398a-11e4-9363-67faf5cb355c.png).

This commit improves the documentation by providing information on
how to disable the automatic detection and formatting of possible phone
numbers in Safari on iOS.

Ref: https://twitter.com/marcosc/status/507897299587313665/
     https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariHTMLRef/Articles/MetaTags.html/#//apple_ref/doc/uid/TP40008193-SW5
2014-09-11 12:37:22 +03:00
H5BP
029093fdc4 Update content from the dist directory [skip ci] 2014-09-10 20:02:20 +00:00
Cătălin Mariș
a3baca2367 Make Travis automatically update dist directory
Configure Travis to automatically update the content from the `dist`
directory by executing a script¹ that will regenerate the content from
the `dist` directory and commit any new changes to the `master` branch.

This change will help in the development process by:

  * ensuring that the content from the `dist` directory is always
    in sync with the rest of the content

  * removing the need to execute the build step locally everytime
    a change is made (especially in the case of trivial changes,
    such as, typos)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

¹ The script (`bin/update_dist_directory.sh`) will only be executed
  if the tests pass, and will only run if the changes are made in the
  `master` branch.

See also: http://docs.travis-ci.com/user/encryption-keys/

Close h5bp/html5-boilerplate#1593
2014-09-10 22:59:48 +03:00
QWp6t
93c3ec4480 Docs: Add more info regarding servers and stacks
Ref: h5bp/html5-boilerplate#1572
Close: h5bp/html5-boilerplate#1572
2014-09-10 15:04:40 +03:00
Hans Christian Reinl
a44c533d55 Minor fix: Use short version of shorthand for margin declaration in 404 template 2014-09-01 22:42:25 +02:00
Haller, Christian
176aa951d5 Remove unneeded comma from gulpfile.js
Close h5bp/html5-boilerplate#1591
2014-09-01 14:12:23 +03:00
Cătălin Mariș
2a09bdf3e3 Update the content from the dist directory 2014-08-30 20:30:29 +03:00
Cătălin Mariș
9c03754490 Make Travis CI limit the Git clone depth even more
In order to speed up the tests a little bit more, inform Travis CI
to limit the Git clone depth to 10 commits (default is 50).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

e.g.:

  $ time g clone --depth 10 git@github.com:h5bp/html5-boilerplate.git
  ...

  real    0m2.636s
  user    0m0.052s
  sys     0m0.040s

  $ time g clone --depth 50 git@github.com:h5bp/html5-boilerplate.git
  ...

  real    0m3.542s
  user    0m0.064s
  sys     0m0.072s

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Ref: http://git-scm.com/docs/git-clone
     https://twitter.com/travisci/status/288390896339267584
2014-08-30 20:30:23 +03:00
Antoine Leblanc
927df9df01 Docs: Update icon size for Chrome Mobile web apps
The recommended size for the icon that Chrome Mobile uses to
install to the homescreen was recently changed to 192×192px.

Ref: https://developer.chrome.com/multidevice/android/installtohomescreen#icon
     h5bp/html5-boilerplate#1587

Close: h5bp/html5-boilerplate#1587
2014-08-28 08:35:10 +03:00
Arthur Verschaeve
77d43a3d5d Fix typo in gulpfile.js
Close h5bp/html5-boilerplate#1586.
2014-08-27 18:13:06 +03:00
Grant
fccfbbbbdc Add pseudo-elements to universal selector in print media query
The pseudo-elements `:before` and `:after` are not targeted by the
universal `*` selector. When the page is printed the CSS properties of
any pseudo-elements will only be overridden if they are being inherited
from their selector. Any styles that have been defined directly on a
pseudo-element are unaffected.

Closes #1585.
2014-08-27 15:24:45 +02:00
Cătălin Mariș
268611e33a Fix Modernizr path in index.html
Thanks @juukie14.
2014-08-18 14:29:09 +03:00
Thomas Krug
287f12229e Update to Modernizr 2.8.3
Close h5bp/html5-boilerplate#1580.
2014-08-15 09:14:23 +03:00
Cătălin Mariș
954eef1b1e Allow Travis to send email notifications
Travis has a pretty decent default behavior when it comes to sending
email notifications.

Ref: http://docs.travis-ci.com/user/notifications/#Email-notifications
2014-08-06 01:40:11 +03:00
Cătălin Mariș
641586aaca Include gulpfile.js to be run through JSHint 2014-08-05 16:27:36 +03:00
Will
3928548dc4 Update gulpfile to use del instead of gulp-rimraf
Ref: robrich/gulp-rimraf#14
Close: h5bp/html5-boilerplate#1578
       h5bp/html5-boilerplate#1579
2014-08-05 15:44:42 +03:00
Cătălin Mariș
4b779d3ed9 Fix link in README.md 2014-08-04 19:29:59 +03:00
Cătălin Mariș
c73ae71db4 Add badges
* Add Travis CI status icon.
  http://docs.travis-ci.com/user/status-images/

* Add `devDependencies` status icon.
  https://david-dm.org/
2014-08-04 19:02:40 +03:00
Cătălin Mariș
2bf27eb108 Add dist/ directory
The `dist/` directory is added in order to allow even less experienced
users (users that may not want to deal with the build script) to get
the latest changes, namely, what is in the `master` branch, but is not
yet released.
2014-08-04 19:02:40 +03:00
Cătălin Mariș
9318c6321a Change project architecture
* Move all the H5BP source files into the `src/` directory and remove
  all external components that can be fetch via `npm`, namely: the
  Apache Server Configs, jQuery, and Normalize.css.

* Add `package.json`, and move to using `npm` for managing dependencies
  (for more information about `npm`, see: https://www.npmjs.org/doc/).

* Add `gulp` based build script to allows us to automatically create
  the distribution files as well as an archive that can then be attached
  to the release - https://github.com/blog/1547-release-your-software
  (for more information about gulp, see: http://gulpjs.com/).

* Add other miscellaneous files to help us in our development process:

   * `.editorconfig` - to define and maintain consistent coding styles
                       http://editorconfig.org/

   * `.jshintrc`     - to specify JSHint configuration options
                       http://www.jshint.com/docs/

   * `.travis.yml`   - to specify Travis CI configuration options
                       http://docs.travis-ci.com/

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

These changes:

  * automate some of the tedious work (e.g.: updating the external
    components, updating some of the inline content such as version
    numbers, etc.)

  * will allow us to experiment more (e.g.: allow us to create different
    builds of H5BP, builds that can contain different components)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Ref h5bp/html5-boilerplate#1563
Close h5bp/html5-boilerplate#1563
2014-08-04 19:02:30 +03:00
Arthur Verschaeve
da7bf0d530 Make minor correction in README.md
Close h5bp/html5-boilerplate#1576.
2014-08-02 13:03:29 +03:00
Evgeny Orekhov
c3a72ff882 Remove need to readjust margins in 404.html
Since some of the users prefer to just modify the placeholder 404
page instead of replacing it with their own, this commit makes it
easier to do that by allowing them to modify the content without
worrying about readjusting the margins.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Note: The different in size compared to the old 404 is negligible:

 * old 404:

   original size:         1242 B
   gzipped size:           574 B

 * new 404:

   original size:         1274 B
   gzipped size:           570 B

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Ref: h5bp/html5-boilerplate#1567.
Close: h5bp/html5-boilerplate#1567.
2014-07-31 21:28:49 +03:00
Arthur Verschaeve
8ef199adf6 Docs: Add information about PHP's built-in server
Ref: http://php.net/manual/en/features.commandline.webserver.php
Close: h5bp/html5-boilerplate#1569.
2014-07-29 14:34:37 +03:00
Cătălin Mariș
ef48601262 Update to Apache Server Configs 2.7.0 2014-07-28 04:28:43 +03:00
₍˄ุ.͡˳̫.˄ุ₎
c3d967ab25 Docs: Remove gendered pronoun from faq.md
Close: h5bp/html5-boilerplate#1566.
2014-07-27 12:41:58 +03:00
Cătălin Mariș
3c3c5e6460 Docs: Remove minimal-ui related information
The `minimal-ui` viewport property was introduced in iOS 7.1,
but it will no longer be supported in iOS 8.

Ref: https://developer.apple.com/library/prerelease/ios/releasenotes/General/RN-iOSSDK-8.0/#//apple_ref/doc/uid/TP40014223-CH1-SW83
Close: h5bp/html5-boilerplate#1565
2014-07-23 01:55:04 +03:00
Jonathan Neal
a99d8563dd Add /.editorconfig file
The addition of the `/.editorconfig` file is made in order to
encourage and help developers and their teams define and maintain
consistent coding styles between their different editors and IDEs.

By default, `/.editorconfig` includes some basic properties that
reflect the coding styles from the files provided by default, but
users can easily change them to better suit their needs.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Since users need to install a editor/IDE plugin in order for the
properties from the `/.editorconfig` to be applied, we were reluctant
to add this file in the past (see: h5bp/html5-boilerplate#1124).
Nowadays however, the EditorConfig project provides plugins for most
of the popular editors/IDEs (see: http://editorconfig.org/#download),
plus, more and more developers are using it.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Ref: http://editorconfig.org/

Close: h5bp/html5-boilerplate#1561
       h5bp/html5-boilerplate#1564
2014-07-21 23:08:02 +03:00
Cătălin Mariș
973b8453de Docs: Make minor improvments in html.md 2014-07-19 03:35:08 +03:00
Philip Walton
4fca586fae Add auto to the GA tracker create method
The Google Universal Analytics now supports automatic cookie domain
configuration simply by adding `auto` to the analytics tracker create
method: `ga('create', 'UA-XXXX-Y', 'auto');`.

From https://developers.google.com/analytics/devguides/collection/analyticsjs/domains#auto:

  "Automatic Cookie Domain Configuration simplifies cross domain
   tracking implementations by automatically writing cookies to the
   highest level domain possible when the auto parameter is used.
   When used on the domain www.example.co.uk, it will try to write
   cookies in the following order:

     1. co.uk
     2. example.co.uk
     3. www.example.co.uk

   Analytics.js will fail to write a cookie on co.uk but will succeed
   on example.co.uk. Since a cookie was succesfully written on a higher
   level domain, www.example.co.uk will be skipped"

So, when this parameter is omitted (as it was prior to this commit),
Google Universal Analytics will default to using `location.hostname`,
which will include the subdomain, preventing websites with multiple
subdomains from being able to automatically track unique users across
those subdomains.

Note: The `auto` parameter is now officially part of the recommended
Google Universal Analytics snippet.
https://developers.google.com/analytics/devguides/collection/analyticsjs/

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Ref: https://developers.google.com/analytics/devguides/collection/analyticsjs/domains#auto
Close: h5bp/html5-boilerplate#1562.
2014-07-17 15:20:12 +03:00
ltodorov
8daaa56023 Add timeline & timelineEnd in plugins.js
In Chrome and Opera the console object now includes two new methods:

 * `timeline`
    https://developer.chrome.com/devtools/docs/console-api#consoletimelinelabel

 * `timelineEnd`
    https://developer.chrome.com/devtools/docs/console-api#consoletimestamplabel

Close: h5bp/html5-boilerplate#1559.
2014-07-11 22:39:37 +03:00
Arthur Verschaeve
5027eeaab2 Docs: Update info from js.md regarding plugins.js
Add information about the script from the `plugins.js` file.

Ref   h5bp/html5-boilerplate#1554
Close h5bp/html5-boilerplate#1558
2014-07-11 18:00:34 +03:00
Arthur Verschaeve
ff27f8c563 Docs: Add basic info about .htaccess in misc.md
Ref   h5bp/html5-boilerplate#1554
Close h5bp/html5-boilerplate#1557
2014-07-10 13:15:57 +03:00
Cătălin Mariș
8935453014 Docs: Update jQuery CDN related info from faq.md
Update documentation to include the information from the recent
jQuery team announcement:

   "To mitigate the risk of “breaking the web”, the jQuery team
    decided back in 2013 that jquery-latest.js could not be
    upgraded to the 2.0 branch even though that is technically
    the latest version. There would just be too many sites that
    would mysteriously stop working with older versions of Internet
    Explorer, and many of those sites may not be maintained today.

    As jQuery adoption has continued to grow, even that safeguard
    seems insufficient to protect against careless use of
    http://code.jquery.com/jquery-latest.js. So we have decided to
    stop updating this file, as well as the minified copy, keeping
    both files at version 1.11.1 forever ...

    The Google CDN team has joined us in this effort to prevent
    inadvertent web breakage and no longer updates the file at
    http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js. That
    file will stay locked at version 1.11.1 as well."

   (from: http://blog.jquery.com/2014/07/03/dont-use-jquery-latest-js/)

Ref: h5bp/html5-boilerplate#1554
2014-07-05 17:48:11 +03:00
Cătălin Mariș
1c5be4d307 Update to Apache Server Configs 2.6.0
Changelog: 155b0b68c0/CHANGELOG.md (260-july-3-2014).
2014-07-03 20:29:57 +03:00
Cătălin Mariș
0443e50892 Docs: Update and improve css.md 2014-07-01 00:18:55 +03:00
Cătălin Mariș
0efb9fb4df Docs: Update and improve TOC.md
* Make minor updates and improvements.
* Remove `.htaccess` mention as the Apache server configs are no longer
  part of the HTML5 Boilerplate core, plus, more information about them
  will be included in the `misc.md` file.
2014-06-28 00:52:55 +03:00
Cătălin Mariș
296b0bbf25 Docs: Update and improve faq.md 2014-06-25 00:08:04 +03:00
Cătălin Mariș
3220cf1d63 Docs: Move crossdomain.xml info into misc.md
Update and improve the `crossdomain.xml` related documentation,
as well as move it into the `misc.md` file.

The move is made in order to be more consistent (we don't have
special pages for any of the other "miscellaneous" files).
2014-06-24 23:52:35 +03:00
Cătălin Mariș
d2b86f78a4 Mention Apache Server Configs in humans.txt
The Apache server configs have evolved into their own separate
project, and thus, they are now considered an external component.
2014-06-24 21:02:44 +03:00
Cătălin Mariș
5e0b0d642b Update links 2014-06-21 03:18:30 +03:00
Cătălin Mariș
8c4b71e6c6 Update to Apache Server Configs 2.5.0 2014-06-14 14:00:37 +03:00
Ismay
a82c61fb3e Docs: Update content regarding Google Analytics
* Explain the reason for providing the Google Universal Analytics
  snippet by default.

* Make it more clear that users are encouraged to use whatever
  tracking solution suits their needs best.

Ref h5bp/html5-boilerplate#1547
Close h5bp/html5-boilerplate#1548
2014-06-13 01:17:30 +03:00
Cătălin Mariș
261f8dd398 Update to Apache Server Configs v2.4.1 2014-06-07 00:33:09 +03:00
Cătălin Mariș
d916a72025 Add lang="" to <html>
In the past we decided¹ to remove the `lang` attribute due to the fact
that developers were often forgetting to update its value. This change
turned out not to be the best solution because some of the users:

 * didn't read the documentation, and thus, they found the absence
   of the `lang` attribute confusing, or didn't even knew they had
   to add it

 * didn't notice the absence of the `lang` attribute, and thus, forgot
   to include it (expecting it to be there)

To make things more clearer and to remind users that they need to
specify the primary language of the document, this commit reintroduces
the `lang` attribute, while leaving its value to `""`.

Using `lang=""` has the exact same effect as not specifying the `lang`
attribute at all, in both cases the language being treated as unknown².

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

¹ https://github.com/h5bp/html5-boilerplate/issues/1110
² From WHATWG (http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#attr-lang):

  "To determine the language of a node, user agents must look at the
   nearest ancestor element (including the element itself if the node
   is an element) that has a lang attribute in the XML namespace set
   or is an HTML element and has a lang in no namespace attribute set.
   That attribute specifies the language of the node (regardless of
   its value).

   If both the lang attribute in no namespace and the lang attribute
   in the XML namespace are set on an element, user agents must use
   the lang attribute in the XML namespace, and the lang attribute in
   no namespace must be ignored for the purposes of determining the
   element's language.

   If neither the node nor any of the node's ancestors, including the
   root element, have either attribute set, but there is a pragma-set
   default language set, then that is the language of the node. If there
   is no pragma-set default language set, then language information from
   a higher-level protocol (such as HTTP), if any, must be used as the
   final fallback language instead. In the absence of any such language
   information, and in cases where the higher-level protocol reports
   multiple languages, the language of the node is unknown, and the
   corresponding language tag is the empty string.

   If the resulting value is not a recognized language tag, then it
   must be treated as an unknown language having the given language tag,
   distinct from all other languages."

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Close h5bp/html5-boilerplate#1542.
2014-05-13 22:51:29 +03:00
Cătălin Mariș
c0ea65101a Update to jQuery 1.11.1
See also: http://blog.jquery.com/2014/05/01/jquery-1-11-1-and-2-1-1-released/

Close h5bp/html5-boilerplate#1535.
2014-05-13 08:26:05 +03:00
Cătălin Mariș
11262ec742 Update CONTRIBUTING.md
* Remove extra `the`.
* Remove IRC reference as it does not help the user in
  any way, plus, we don't have an official IRC channel.
2014-05-09 20:07:09 +03:00
Mateusz Jagiełło
2d443d853f Remove empty line from main.js
Close h5bp/html5-boilerplate#1538.
2014-05-03 19:18:14 +03:00
Mateusz Jagiełło
f067d5eec5 Fix file system permissions for normalize.css
Close #1537.
2014-05-03 17:16:29 +03:00
Cătălin Mariș
2e8a977d2c Update print related comments in main.css file
Use correct terminology and remove the outdated parts of the comments.

See also:

 * JavaScript URIs:
   https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void#JavaScript_URIs

 * URL fragments:
   http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#scroll-to-fragid

 * `href` attribute:
   http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#attr-link-href
   https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-href
2014-05-01 12:48:36 +03:00
Cătălin Mariș
e12fc689a5 Add newline at the end of the gitattributes file
Under UNIX-like OSes, a text file consists of a series of lines, each
of which ends with a `newline` character (`\n`). A file that is not
empty and does not end with a `newline` is therefore considered not to
be a text file.

Because of this, utilities that are supposed to operate on text files
may not cope well with files that don't end with a `newline` (e.g.: they
might ignore the text after the last `newline`).

Adding the `newline` character at the end of the file ensures that users
won't encounter any odd behavior when using it.

Reference/Source: http://unix.stackexchange.com/a/18789.
2014-05-01 01:16:07 +03:00
Hans Christian Reinl
41b9f1a36a Update to Modernizr v2.8.0 2014-04-29 23:23:01 +02:00
XhmikosR
dcc5958a39 Further optimize tile images
* tile.png

     before:        13767 B
     after:         13743 B
     ──────────────────────
     reduction:        24 B [0.17%]

 * tile-wide.png

     before:         6781 B
     after:          6774 B
     ──────────────────────
     reduction:         7 B [0.10%]
2014-04-27 11:53:31 +03:00
Cătălin Mariș
d01c26fd13 Make inline comments from main.css more consistent 2014-04-25 14:46:32 +03:00
Cătălin Mariș
861c359e40 Update to Apache Server Configs v2.3.0 2014-04-10 11:05:21 +03:00
Cătălin Mariș
e67e9cc7c1 Use <!doctype html> instead of <!DOCTYPE html>
Return back to the lowercase doctype in order to be more consistent
with the lowercase of the html tags.

References:

  * h5bp/html5-boilerplate#1522
  * http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html#the-doctype

Close h5bp/html5-boilerplate#1522.
2014-04-02 12:32:49 +03:00
Cătălin Mariș
06b4df40e2 Update to Normalize.css 3.0.1 2014-03-28 08:22:55 +02:00
Alastair Hole
ee0de7541f Docs: Make minor grammar change in extend.md
Close h5bp/html5-boilerplate#1517.
2014-03-13 19:55:17 +02:00
Tom Fuertes
7997c1b9a1 Docs: Update content regarding Google Analytics
Close: h5bp/html5-boilerplate#1490
       h5bp/html5-boilerplate#1515
2014-03-02 09:41:57 +02:00
Cătălin Mariș
dea7690774 Update CHANGELOG.md
Include missing reference.
2014-02-25 22:13:17 +02:00
Rob Larsen
f639653d3d Docs: Improve content about use of CDN for jQuery
Ref: https://github.com/h5bp/html5-boilerplate/issues/1498#issuecomment-33163993.
Close: #1511, #1514.
2014-02-25 09:48:00 +02:00
XhmikosR
106bb43c37 Docs: Fix typo in extend.md
Close #1510.
2014-02-23 13:49:57 +02:00
Cătălin Mariș
4d7ba31ada Docs: Use Bootstrap instead of "Twitter Bootstrap"
"Twitter Bootstrap" is now simply known as "Bootstrap".

Ref: http://getbootstrap.com/about/#brand

Thanks @cvrebert.
2014-02-23 13:46:07 +02:00
Cătălin Mariș
80530d6b46 Add /browserconfig.xml and tile images
By default, starting with IE11 on Windows 8.1, IE will request the
`/browserconfig.xml` file when a user clicks/touches the `pin site`
button (same as Safari for iOS does with the `apple-touch-icons` when
the user touches the `share` button).

Adding the `/browserconfig.xml` file and the tile images:

* reduces the number of 404s, especially as IE11 on Windows 8.1 gets
  more market share
* provides a starting point for dealing with Windows tiles
* reminds users about the tile images, so that their website doesn't
  end up having as a tile the default IE11 logo, or (if the favicon
  is 32×32px or bigger and not `.ico`) the website's favicon
* unlike using `<meta>` tags, offers a way that doesn't increase the
  page size

Only two images are provided since:

* `tile.png` (558×558px) - can be used for the `Small`, `Medium`,
  and `Large` tiles, being automatically resized where necessary
* `tile-wide.png` (558×270px) - can be used for the `Wide` tile
  as, in this case, resizing the 558×558px image would just end up
  looking weird

The two images are 558×558px and 558×270px because those are the
recommended image sizes in order for the tiles to look good on a wide
range of devices.

For more in depth information, please refer to the MSDN documentation:

 * http://msdn.microsoft.com/en-us/library/ie/dn455106.aspx
 * http://msdn.microsoft.com/en-us/library/ie/dn255024.aspx

Close #1481.
2014-02-19 00:12:39 +02:00
Cătălin Mariș
f73bb1f614 Update to Apache Server Configs 2.2.0 2014-02-03 11:16:28 +02:00
Cătălin Mariș
ab0a9ea391 Make consistency changes
Change code indentation in `normalize.css` from 2 to 4 spaces. This
is done in order to be consistent with the indentation used in the
other files.
2014-02-01 12:33:26 +02:00
Abhinay Rathore
cacfa08050 Docs: Add Separate mobile URLs subsection
Inform users that, if they use separate URLs for desktop and mobile
users, they should consider helping search engine algorithms better
understand the configuration on their web site.

See also:

 * https://developers.google.com/webmasters/smartphone-sites/details#separateurls
 * https://developers.google.com/webmasters/smartphone-sites/feature-phones

Close #1504.
2014-02-01 12:16:39 +02:00
Cătălin Mariș
e70ee31d2b Update to jQuery 1.11.0
Close #1499.
2014-01-29 22:50:49 +02:00
Cătălin Mariș
185b730edd Update CHANGELOG.md 2014-01-29 22:44:48 +02:00
Nicolas Gallagher
3c216951d4 Update to Normalize.css 3.0.0 2014-01-28 14:40:30 -08:00
Cătălin Mariș
f5d58728e1 Further optimize apple-touch-icon-precomposed
before:         1226 B
  after:          1076 B
  ──────────────────────
  reduction:      -150 B [-12.23%]
2014-01-27 22:36:58 +02:00
Cătălin Mariș
4e5f438e1e Add Disallow: to robots.txt
The addition of `Disallow:` is made in order to be compliant with:

  * the `robots.txt` specification (http://www.robotstxt.org/), which
    specifies that: "At least one Disallow field needs to be present
    in a record"
  * what is suggested in the documentation of most of the major search
    engines, e.g.:

      - Baidu:  http://www.baidu.com/search/robots_english.html
      - Google: https://developers.google.com/webmasters/control-crawl-index/docs/getting_started
                http://www.youtube.com/watch?v=P7GY1fE5JQQ
      - Yandex: help.yandex.com/webmaster/controlling-robot/robots-txt.xml

Besides the addition specified above, this commit also:

  * adds a comment making it clear to everyone that the directives from
    the `robots.txt` file allow all content on the site to be crawled
  * updates the URL to `www.robotstxt.org`, as `robotstxt.org` doesn't
    quite work:

      curl -LsS robotstxt.org
      curl: (7) Failed connect to robotstxt.org:80; Operation timed out

Close #1487.
2014-01-15 22:14:06 +02:00
David Alexander
a20a3c76d5 Combine the html selectors into one rule
Close #1492.
2014-01-14 23:36:27 +02:00
Cătălin Mariș
76d3021d19 Docs: Update the Apple Touch Icons section
* Add note about `precomposed` not being required anymore, as starting
  with iOS 7, no special effects are applied to the touch icons.

* Add missing touch icon sizes.

Close #1488
2014-01-10 21:15:04 +02:00
Cătălin Mariș
0a04171137 Update to Apache Server Configs v2.1.0 2014-01-07 10:32:55 +02:00
Cătălin Mariș
3da500d5e5 Update 404.html
* Link to a more official page for the information regarding Internet
  Explorer's "friendly HTTP error pages", namely:
  http://blogs.msdn.com/b/ieinternals/archive/2010/08/19/http-error-pages-in-internet-explorer.aspx.

* Remove the indentation for the `<head>` and `<body>` tags in order
  to reduce the file size even closer to the 512 bytes limit. This is
  particularly helpful when compression is not enabled.

* Stats:

  - before:

     original size:         1409 B
     gzipped size:           580 B
     ─────────────────────────────
     reduction:              829 B [58.8%]

  - after:

     original size:         1242 B
     gzipped size:           580 B
     ─────────────────────────────
     reduction:              662 B [53.3%]

Ref: #1443.
2014-01-07 10:28:19 +02:00
timmytofu
1c4df2aa07 Remove default foreground color from form elements
Specifying a default foreground color for the form elements can be
problematic when users (often with visual impairments) use a darker
OS/browser theme. Also, the color set on the form elements is quite
opinionated, so developers tend to change it anyway.

Ref: #1390.
Close: #1390.
2013-12-29 21:18:19 +02:00
Hans Christian Reinl
a557ea0513 Docs: Add note about Chrome Mobile web apps
"Add to Homescreen" feature in Chrome Mobile

Closes #1441.
2013-12-26 13:42:34 +01:00
Cătălin Mariș
57be193031 Remove default margin from print styles
Providing a default value (such as `5cm`) for the print margins is
problematic because:

 1) in some browsers, it prevents users from customizing the browser
    print settings
 2) in some contexts (browser/os/printer), the value may be too:
    * small, and the margins may collide with all the different
      headers/footers (URL, date, etc) that are usually printed
      by default
    * big, and the margins will just waste the space

Most browsers provide a default non-zero value for the print margins,
so it's better to not specify a value at all, and just let them handle
this themselves.

See also:

 * http://www.w3.org/TR/css3-page/#at-page-rule
 * https://developer.mozilla.org/en-US/docs/Web/CSS/@page

Close #1477.
2013-12-25 02:10:15 +02:00
Cătălin Mariș
34c7fbde74 Update CHANGELOG.md
* Include missing references.
* Improve consistency.
* Wrap text at 80 characters.
2013-12-23 11:47:13 +02:00
Connor McSheffrey
f4a2cbfcad Docs: Add note about iOS 7.1 minimal-ui property
Ref: #1485.
Close: #1485.
2013-12-20 13:13:30 +02:00
Cătălin Mariș
df2306766e Docs: Make minor improvements in extend.md
* Wrap text at 80 characters.
* Rephrase content from the `Apple Touch Icons` section to limit subject
  to only `apple-touch-icon`s (ref: #1486).
* Other improvements.
2013-12-20 12:56:49 +02:00
Hans Christian Reinl
15b5cb1b5c Docs: Add comment about lang attribute on <html>
We don't set a default `lang` attribute on `<html>` due to the
discussion in #1110. This commit adds a note about how to set it.

Close #1483.
2013-12-20 12:05:33 +02:00
Anselm Hannemann
d592953e7a Clarify the default of only 2 icons
In extend.md, which is linked as source for 'more details' on the
touch-icons and favicon, this commit clarifies that by default two
icons are enough if one doesn't want to use art-direction.
2013-12-19 22:47:51 +01:00
Hans Christian Reinl
49e4569d02 Docs: Add anchor for MDN link to meta charset 2013-12-15 22:03:01 +01:00
David Walsh
24420747fd Docs: Update MDN link paths 2013-12-15 22:00:24 +01:00
Felix
ec49630374 README.md: Add link to the list of releases
Close #1480.
2013-12-12 00:01:33 +02:00
Cătălin Mariș
9fab0f9990 Update .htaccess file 2013-12-11 23:50:35 +02:00
Hans Christian Reinl
73ea9a5e68 Update Modernizr to v2.7.1 2013-12-03 10:31:38 +01:00
Cătălin Mariș
fbffd2322d Docs: Update links and reorganize extend.md
* Update various links.
* Remove link to the `Node build script` repository as the project is no
  longer maintained.
* Better organize the information provided in `extend.md` by rearranging
  the sections alphabetically by title, and including a table of content
  for faster navigation.
2013-11-19 16:22:16 +02:00
Cătălin Mariș
ca1ced9654 Docs: Update server configs links
* Replace links to the Apache Server Configs `doc`
  directory, as it no longer exists:
  4f778c4a22.

* Provide missing links under the `X-UA-Compatible`
  section in the `html.md` file.
2013-11-19 10:56:54 +02:00
Hans Christian Reinl
f1a8e914be Remove image replacement helper class .ir
This class was removed because it doesn't provide enough use
cases within modern web development. Cases are mostly handled
indiviually by developers.

Reference #1472.
Closes #1475.
2013-11-18 23:39:22 +01:00
Rob Larsen
94c3540ce6 Update to Modernizr 2.7.0 2013-11-18 09:01:34 +01:00
Cătălin Mariș
96d7c99762 Update to Apache Server Configs v2.0.0 2013-11-12 13:32:32 +02:00
Cătălin Mariș
e039cf4275 Remove phrase about IE conditional classes 2013-11-12 13:30:57 +02:00
Jeffrey Godwyll
87274cb181 Fix typo in doc/css.md 2013-11-03 16:13:35 -08:00
Joseph Jaber
3f91469e7f Fix typo in header of doc/html.md (promt → prompt)
Close #1459.
2013-11-01 10:51:34 +02:00
Cătălin Mariș
5e090e0db5 Add note about legacy browser support in v4
Close #1050.
2013-10-21 21:37:53 +03:00
Cătălin Mariș
dc752d7952 Docs: Remove outdated info on Skype highlighting
The snippet provided in the docs about how to prevent the Skype
plugin from formatting numbers on a web pages is outdated and no
longer works.

Nowadays, the Skype plugin makes it more difficult to overwrite
its injected styles (class names include timestamps, e.g.:
`skype_pnh_print_container_1381964168`, `!important` is used, etc.).

Providing a solution for this use case isn't viable. Also, users
that install such a plugin usually expect the behavior.

Close #1454.
2013-10-17 18:21:29 +03:00
Benoît Chantre
8565264a4d Add vertical centering for svg
Remove gap between the `svg` elements and the bottom of their containers
by vertically centering them.

Ref #1326.
Close #1453.
2013-10-16 00:10:51 +03:00
Cătălin Mariș
782aefab7e Redesign 404 page
Changes:

* simplify the overall design
* remove the Google search functionality as in most cases, it does not
  provide much value
* reduce the overall file size while keeping the gzipped size over 512
  bytes to prevent IE from displaying its own custom error page (thanks
  @mikealmond and @patrickkettner):
  http://www.404-error-page.com/404-error-page-too-short-problem-microsoft-ie.shtml

Benefits include:

* small file size (1409 bytes / 580 bytes gzipped), which is particular-
  ly useful when users are on a data plan and / or the server is wrongly
  configured (e.g.: tries to redirect to a "mobile" version of the web
  page and ends up serving a 404 page) or developers forget to provide
  certain files (e.g.: /favicon.ico -
  http://zoompf.com/blog/2012/04/instagram-and-optimizing-favicons)
* improved performance (less HTTP requests, less memory consumption,
  faster rendering, etc.)
* designed to work with all kinds of screen sizes and support IE 6+

Close #1443.
2013-10-12 22:54:14 +03:00
Cătălin Mariș
6d10fc8cce Docs: Add info about how to block Google Translate
Inform users on how to disable the translation prompt in Chrome or
block Google Translate from translating a web page or any particular
section of the web page.

See also: https://support.google.com/translate/?hl=en#2641276.

Close: #1440.
2013-10-03 21:29:02 +03:00
Oskar S. Jakieła
f07a80011b Fix comment in index.html about apple-touch-icons
Close #1438.
2013-09-29 12:04:53 +03:00
Cătălin Mariș
18d3a9dd9e Update documentation and README.md
Remove content regarding legacy browsers.

Ref: #1050.
2013-09-29 12:01:42 +03:00
Cătălin Mariș
b96191e590 Show outdated browser prompt to IE 6 and 7 users
Ref: #1050.
2013-09-24 20:19:08 +03:00
Nicolas Gallagher
afaed48700 Remove IE 6/7 hacks from main.css
Ref: #1050.
2013-09-24 09:30:20 -07:00
Cătălin Mariș
b7208f1e01 Update to normalize.css v2.1.3
Ref: #1050.
2013-09-24 15:33:08 +03:00
Cătălin Mariș
13f17a737a Remove IE conditional classes
The reasons behind this decision include the following:

* This project will drop legacy browser support (see #1050), therefore,
  the use for conditional classes for IE 8+, becomes much more limited.
* IE 10+ does not support conditional comments:
  http://msdn.microsoft.com/en-us/library/ms537512%28v=VS.85%29.aspx.
* Users do and can develop easily without using the conditional
  classes, this technique being very limited in scope as no other
  browser versions are explicitly target in the same way.
* It fixes the issue that prevents IE from honouring
  `<meta http-equiv="X-UA-Compatible" content="IE=edge">` (see: #1187).

This change also removes the related documentation.

Close #1290 and #1187.
2013-09-24 11:38:05 +03:00
Hans Christian Reinl
fdbff109c9 Remove notes about Google Chrome Frame from docs
Currently we don't use Google Chrome Frame anymore as support for
it will end at the end of the year.
This commit removes references to Chrome Frame within the
documentation. It is related to 2cf1ef7.

Reference #1433.
2013-09-20 16:18:55 +02:00
Hans Christian Reinl
72cdf1e96c v4.3.0 2013-09-10 21:33:07 +02:00
Cătălin Mariș
f033325bac Update CHANGELOG
Include all changes that are not yet mentioned in the `CHANGELOG.md`.
0adda79fee...d144341003
2013-09-10 22:24:36 +03:00
Cătălin Mariș
d144341003 Add version & license info in .htaccess / main.css
Make it easier for people to know what version of the `.htaccess`
and `main.css` files they are using and under what license these
are provided, by adding this information within the files.

This is useful primarily when developers only copy these files from
the HTML5 Boilerplate project, forget to update their project's change
log or simply do not use anything similar to a change log.

Fix h5bp/html5-boilerplate#1424.
2013-09-10 20:24:31 +03:00
Hans Christian Reinl
71ca9fb7a0 Use one apple-touch-icon instead of six
This commit removes five Apple Touch Icons with different sizes for
the same icon and adds a new icon `apple-touch-icon-precomposed.png`
with a resolution of 152×152px.
Apart from that it adds documentation on how to add more icons if
you need them within your project.
Using only one Apple Touch Icon saves time and is enough in most
cases.

Closes #1367.
Closes #1425.
2013-09-04 14:09:47 +02:00
Hans Christian Reinl
23f5e084e5 Update normalize.css to v1.1.3 2013-08-30 10:14:08 +02:00
Nicolas Gallagher
da9528e568 Update CHANGELOG 2013-08-25 23:58:18 -07:00
Rob Wierzbowski
ab6b2fc4aa Move font-related base declarations to html 2013-08-25 23:55:11 -07:00
XhmikosR
ab05d000f8 Compress .png files losslessly
Use `zopfli-png` with 1000 iterations, `pngout /r` with various block sizes and deflopt.

apple-touch-icon-114x114-precomposed.png | Bin 865 -> 751 bytes
apple-touch-icon-144x144-precomposed.png | Bin 947 -> 939 bytes
apple-touch-icon-57x57-precomposed.png   | Bin 495 -> 450 bytes
apple-touch-icon-72x72-precomposed.png   | Bin 575 -> 512 bytes
apple-touch-icon-precomposed.png         | Bin 495 -> 450 bytes
apple-touch-icon.png                     | Bin 495 -> 450 bytes

The total difference is -320 bytes.

Closes #1418.
2013-08-16 11:20:24 +02:00
Roland Warmerdam
8a68443746 Docs: Update the Track JS errors in GA section
Add column number parameter to the example to reflect the recent changes
in the specification and in the Chrome and IE 10 implementations.

http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#errorevent
https://code.google.com/p/chromium/issues/detail?id=264197

Close #1417.
2013-08-15 13:31:35 +03:00
Pere Orga
cd981e52f7 Further optimize the apple touch icons
Reduce the total size of the icons by 172 bytes using zopfli.

Close #1415.
2013-08-15 09:19:45 +03:00
Hans Christian Reinl
2cf1ef7cea Docs: Update section about the X-UA-Compatible meta option
Chrome Frame is not supported anymore and we removed the option in
8fc2650.
This commit removes the documentation about Chrome Frame in the
X-UA-Compatible meta tag docs.

Related to #1396.
2013-08-14 14:30:49 +02:00
Cătălin Mariș
5bc2a985c7 Docs: Update .htaccess related info and links 2013-08-01 19:24:27 +03:00
Cătălin Mariș
21c614849a Update to Apache Server Configs v1.1.0 2013-08-01 14:35:05 +03:00
Cătălin Mariș
01624d71f5 Update CONTRIBUTING.md
* Reflect the recent changes in @necolas's Issue Guidelines:
  https://github.com/necolas/issue-guidelines.
* Add note about not opening issues and pull requests regarding the code
  in the Apache Server Configs, jQuery, Modernizr and Normalize.css.
2013-08-01 14:23:22 +03:00
Sindre Sorhus
be4484add0 Further optimize the apple touch icons
Reduce the total size of the icons by 1.7KB using ImageAlpha
(16 colors - no visible difference) and ImageOptim.

Close #1406.
2013-07-21 21:37:44 +03:00
bmcustodio
ce7c3c5c15 Updating jQuery to 1.10.2. 2013-07-03 18:40:15 +01:00
Snugug
ff37dba6bf Add initial-scale=1 to meta viewport
iOS 6 fixes the infamous orientation change bug, so a better experience
is provided by reintroducing `initial-scale=1`.
2013-06-30 13:45:20 -07:00
Bommeli
8fc26501f4 Remove Chrome Frame meta tag and HTTP header hints
See also `Retiring Chrome Frame - developer FAQ`:
https://developers.google.com/chrome/chrome-frame/

Close #1396.
2013-06-26 13:56:45 +03:00
Hans Christian Reinl
9ec546569b Add vertical centering for audio-, canvas- and video-tags
Remove the gap between videos, audio and canvas and the bottom of
their containers by vertically centering the tags.

Closes #1326.
2013-06-25 21:42:49 +02:00
Gustavo Rodrigues
02713eedd2 Remove Google Frame message
As said at http://blog.chromium.org/2013/06/retiring-chrome-frame.html Google Frame was retired/obsolete.

Changed "chromeframe" class to "browsehappy"
2013-06-24 13:25:18 -07:00
alrra
8f743702f6 Docs: update information about print styles
Fix: h5bp/html5-boilerplate#1386
2013-06-14 12:03:52 +03:00
Mathias Bynens
48d49e96d6 Update to Google Universal Analytics
This is an optimized version of the official Google Universal Analytics snippet,
based on http://mathiasbynens.be/notes/async-analytics-snippet.
The only difference is that this version still uses
`document.getElementsByTagName('script')[0]` instead of `document.scripts[0]`
for Firefox < 9 support.

Unminified, optimized code:

    (function(window, document, script, variableName, scriptElement, firstScript) {
      window['GoogleAnalyticsObject'] = variableName;
      window[variableName] || (window[variableName] = function() {
        (window[variableName].q = window[variableName].q || []).push(arguments)
      });
      window[variableName].l = +new Date;
      scriptElement = document.createElement(script);
      firstScript = document.getElementsByTagName(script)[0];
      scriptElement.src = '//www.google-analytics.com/analytics.js';
      firstScript.parentNode.insertBefore(scriptElement, firstScript)
    }(window, document, 'script', 'ga'));

    ga('create', 'UA-XXXX-Y');
    ga('send', 'pageview');

Minified:

    (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-XXXX-Y');ga('send','pageview');

Closes #1347 and #1369.
2013-06-03 19:29:37 +02:00
Hans Christian Reinl
deec362213 Update to jQuery 1.10.1 2013-05-31 21:30:44 +02:00
bmcustodio
713abf57a9 Update to jQuery 1.10.0 2013-05-30 17:00:49 +03:00
Hans Christian Reinl
f27c2b7372 Update to Normalize.css 1.1.2 2013-05-12 13:24:19 +02:00
Hans Christian Reinl
52f17087f9 Add documentation for iOS web applications
Add several options to improve iOS web apps with meta tags when
adding a web page to the Home Screen.

Closes #1352.
2013-05-10 10:48:25 +02:00
alrra
7a22a33d40 Docs: fix broken links 2013-04-12 17:40:55 +03:00
Nicolas Gallagher
0adda79fee v4.2.0 2013-04-07 19:41:59 -07:00
Nicolas Gallagher
d94e506189 Update CHANGELOG 2013-04-07 19:35:51 -07:00
George Gooding
fa7527fb26 Remove Google Analytics protocol check
Google now serves all Analytics scripts via SSL also so the protocol
check is no longer necessary.

Close #1319
2013-04-07 19:33:37 -07:00
Nicolas Gallagher
2a8e5828af Update normalize.css to v1.1.1 2013-04-07 17:40:59 -07:00
alrra
6cfbc95cd6 Docs: replace htaccess.md with link (fix #1344)
Remove `htaccess.md` and link to the Apache `README.md` in
the `server-configs` repository as the documentation for the
configurations is now officially maintained in that repository.
2013-04-01 13:29:14 +03:00
Nicolas Gallagher
a7a4d0685c Fix Grunt link in docs
The repo has moved from 'cowboy/grunt' to 'gruntjs/grunt'.
2013-03-30 17:49:47 -07:00
alrra
c8b0431c7d Import latest .htaccess configurations
Update the Apache configurations to include the
latest changes in the canonical `.htaccess` file.
2013-03-30 11:19:28 +02:00
Nicolas Gallagher
1b0f042e06 Update CHANGELOG 2013-03-04 21:25:20 -08:00
Alfred Xing
a10460934d Fix 404 widget script URL
Fix 404 widget script URL to be compatible with HTTPS by replacing
`http://` with `//`. The script hosted by Google is available on both
protocols.
2013-03-04 09:00:53 -08:00
Drew Noakes
b83ce3b1b4 Fixed typo in main.css 2013-02-17 18:05:40 +02:00
Nicolas Gallagher
c01aa0474d Merge pull request #1313 from impressivewebs/patch-1
Corrected terminology in comment
2013-02-15 21:27:48 -08:00
Louis Lazaris
2f966781d8 Corrected terminology in comment
Really, really nitpicky change here but ... the comment was referring to the selection rule sets as "declarations", which isn't exactly the correct term. See:

http://nimbupani.com/css-vocabulary.html
http://www.impressivewebs.com/css-terms-definitions/
2013-02-15 20:58:23 -05:00
Noah Bass
b4587434f8 Fix link to Pull Request help in CONTRIBUTING.md
GitHub changed their help page URLs and did not correctly redirect the
old Pull Request help URL.
2013-02-10 17:56:56 -08:00
brianblakely
522fa645c3 Added IE10 tap highlight disable & WebKit→IE10 doc 2013-02-09 12:32:51 +02:00
Alexander Zonov
19c03c4bf0 Recommend version-specific python server commands 2013-02-09 12:11:08 +02:00
Hans Christian Reinl
7dae637800 Update jQuery to version 1.9.1 2013-02-05 09:04:19 +01:00
Nicolas Gallagher
922df45999 Use relative paths in README
GitHub recently fixed a problem where relative paths in Markdown files
didn't behave as desired.

Fix gh-1296
2013-01-30 19:28:18 -08:00
Nicolas Gallagher
aa9bcbeb5b v4.1.0 2013-01-20 18:58:04 -08:00
Nicolas Gallagher
c3358e2399 Update to Normalize.css v1.1.0. 2013-01-20 17:55:13 -08:00
Kevin Martensson
3a7de0b41a Update to jQuery 1.9.0 2013-01-15 11:12:23 +01:00
Nicolas Gallagher
964c929ef0 Improve copy in CONTRIBUTING.md
Reflect some of the recent changes in necolas/issue-guidelines that tidy
up the language and simplify parts of the guidelines.
2013-01-13 11:56:44 -08:00
Gregory Pakosz
e9a471bc3f Mention Normalize.css in humans.txt
Normalize.css was missing from the stock humans.txt's technology
colophon.
2013-01-13 10:24:50 -08:00
Nicolas Gallagher
29315016dc v4.0.3 2013-01-12 16:16:35 -08:00
Nicolas Gallagher
90f99e1587 Update CHANGELOG 2013-01-12 16:15:15 -08:00
Jonathan Neal
fb9166461b Merge pull request #1286 from jonathantneal/issue-1285
HiDPI (32x32px) favicon.ico - Issue #1285
2013-01-09 17:15:30 -08:00
Jonathan Neal
21702c4198 HiDPI (32x32px) favicon.ico
32x32-only version. Tested in IE6+, Safari 4+, and the latest Chrome,
Firefox, and Opera.
2013-01-09 17:12:19 -08:00
Simon Owen Design
7bc8241f51 Minor amend, closing a missing bracket. 2013-01-04 19:43:31 +00:00
Devin Rhode
a2b3d06e8b Remove named function expression in plugins.js
Details on various bugs with named function expressions:
http://kangax.github.com/nfe/#jscript-bugs
2012-12-28 12:58:11 +00:00
Nicolas Gallagher
081f8aa0de Adjust CSS image-replacement
Make sure that any text-highlight, or other factors that may break the
illusion, are far enough outside the element to be unnoticed.

Fix gh-1239
2012-12-28 12:39:19 +00:00
Nicolas Gallagher
1987e5a1ee Update HiDPI CSS @media rule
Provide greater cross-browser support. Thanks to Wordpress -
http://core.trac.wordpress.org/changeset/22629 - and @marcedwards - see
issue #1127.
2012-12-28 12:31:58 +00:00
Nicolas Gallagher
46446727b2 v4.0.2 2012-12-09 15:12:30 -08:00
Nicolas Gallagher
3d5d852697 Update placeholder icons
Apply the latest design of the H5BP logo to each of the touch icons and
the favicon.
2012-12-08 10:54:17 -08:00
Hans Christian Reinl
052ecc4b29 Update Normalize.css to 1.0.2
This update corrects `h6` font size normalization.
2012-11-25 20:54:13 +01:00
Frederic Hemberger
dac15682b3 Add note about AddOutputFilterByType in Apache < v2.3.7 2012-11-18 22:30:45 +02:00
Hans Christian Reinl
8c08445487 Merge pull request #1253 from bmcustodio/jquery-1.8.3
Updated 'jQuery' to 1.8.3.
2012-11-14 01:38:33 -08:00
bmcustodio
d141f70910 Updated 'jQuery' to 1.8.3. 2012-11-14 09:06:22 +00:00
Nicolas Gallagher
e9f6a9890c Remove broken link to PDF in cross-domain docs
Adobe have changed the location of the PDF. There is no gaurantee that
it will remain at the new location either. Since we already link to an
Adobe article about the cross-domain policy spec (that links to a PDF)
we don't need to link to both.
2012-11-04 09:44:33 -08:00
alrra
e85301270f htaccess: for consistency, use mod_php5.c 2012-11-01 15:48:09 +02:00
Christian Bundy
0615b940c3 htaccess: sort the values of directives alphabetically 2012-10-30 12:58:54 +02:00
Thomas Bassetto
551dd5c5d6 Fix missing parenthesis to CHANGELOG.md 2012-10-29 15:12:34 +02:00
Nicolas Gallagher
25c1073d13 v4.0.1 2012-10-20 16:01:31 -07:00
Nicolas Gallagher
7b04f32d5a Update CHANGELOG 2012-10-18 21:59:54 -07:00
Hans Christian Reinl
750bf0e093 Further improvements to console stubbing method
These improvements are:

- cache current method in `while`-loop to reduce property look-ups
- use `if` as the conditional assignment in `while`-loop in order to improve performance and readability

Reference: commit 578f377
Closes gh-1229
2012-10-14 21:06:53 +02:00
bmcustodio
dc00673b7c Fix console stubbing method in oldIE
Expose `console` object to global scope in IE6 and IE7

Reference: gh-1229
2012-10-14 15:00:32 +02:00
Nicolas Gallagher
5bed678da0 Update CHANGELOG 2012-09-22 03:15:45 -07:00
Devin Rhode
578f377849 Improve console method stubbing
Avoid browsers with `console` and `console.log` throwing errors for some
of the other methods that they did not support.

Fix gh-1206
Close gh-1218
2012-09-22 03:04:03 -07:00
Nicolas Gallagher
e1b163041e Merge pull request #1219 from ryanve/master
Disambiguate chromeframe prompt wording.
2012-09-22 02:58:52 -07:00
bmcustodio
4ac3ffef5c Updated jQuery to 1.8.2
jQuery 1.8.2 has just been released. Google's CDN has not yet
been updated, but it shouldn't take too long before it is.
2012-09-21 22:41:35 +02:00
Ryan Van Etten
6be0119cd2 Disambiguate chromeframe prompt wording. 2012-09-20 15:14:13 -04:00
Nicolas Gallagher
e6c64a238d Remove duplicate markTimeline from plugins.js
Fix gh-1211
2012-09-19 23:28:55 +01:00
Alec Rust
b378ce239d Enforce coding style in main.css print styles 2012-09-19 23:25:40 +01:00
Nicolas Gallagher
2c079ae144 Add a CONTRIBUTING.md file
Move the information on contributing from the bundled documentation to a
new root file - CONTRIBUTING. This is both a more meaningful location
(not part of code documentation) and allows us to take advantage of
GitHub's latest UI changes that prompt people to read a repo's
guidelines before reporting issues or opening pull requests.
2012-09-17 20:40:46 +01:00
Haralan Dobrev
2dd1153cfc Fix SymLinksIfOwnerMatch typo in .htaccess
Ref. gh-1209
2012-09-17 10:42:15 +02:00
Nicolas Gallagher
bfeac11c9a Update CHANGELOG 2012-09-16 12:07:31 +01:00
Nicolas Gallagher
bb7b3577b1 Remove outdated URL from .htaccess
Fix gh-1201
2012-09-16 12:06:36 +01:00
paulwithap
d20a342c95 Add Apache configuration instructions for Mac 2012-09-16 12:04:08 +01:00
Nicolas Gallagher
0dcd9d120e Rename doc/README to doc/TOC
Avoid the problem with links in a directory README on github.com. GitHub
displays a directory's README when at the dir level, which results in
incorrect URLs when links are using relative paths. This is causing some
confusion for people who browse to the documentation on GitHub and try
to browse the docs from the automatically displayed README.
2012-09-16 11:45:57 +01:00
Nicolas Gallagher
cb0bb16eb7 Revert "fixed all the broken links to doc"
This reverts commit dd420ef187.

The commit itself broken all the links in the documentation README when
the README was viewed directly (as intended). This meant people coming
to the documentation from the html5boilerplate.com site, or those
generating HTML from the markdown docs, were not able to view the docs.
2012-09-16 11:38:04 +01:00
shichuan
dd420ef187 fixed all the broken links to doc 2012-09-16 13:28:42 +08:00
Hans Christian Reinl
1c6485adb9 Update Modernizr to v2.6.2
See http://modernizr.com/news/modernizr-262/ for more information on what changed since v2.6.1.
2012-09-05 22:14:00 +02:00
Hans Christian Reinl
d4467ad7f2 Fix typo in .htaccess documentation, fixes gh-1198 2012-09-03 16:48:46 +02:00
Mathias Bynens
5735ee396d Update to jQuery 1.8.1 2012-08-31 16:16:46 +02:00
Nicolas Gallagher
0b60046431 v4.0.0 2012-08-28 23:41:15 +01:00
Nicolas Gallagher
07ee69683c Fix broken links to issues in CHANGELOG 2012-08-27 19:21:32 +01:00
Nicolas Gallagher
19c8065b6a Small adjustments to documentation 2012-08-27 11:53:46 +01:00
Nicolas Gallagher
6f5ed6f921 Remove placeholder link styles
The placeholder link styles don't add much value but do introduce
potentially unwanted specificity issues. By specifying `a:visited` it
forces subsequent styles for components (like buttons) to have a greater
specificity than this selector if they are to avoid the color changing
once it has been visited.

A similar problem is also evident if a user builds their link styles
upon the project styles (rather than editing the ones included).

This was also an issue in Normalize.css and was fixed in the same way.
2012-08-27 11:38:31 +01:00
Nicolas Gallagher
6415ccd9b0 Remove duplicate line from htaccess
Fix gh-1177
2012-08-27 10:16:05 +01:00
Divya Manian
39a1801a88 Adding a link to Issue Tracker in Reporting Issues section 2012-08-26 08:46:31 -07:00
Divya Manian
dfca687243 Adding link to issues from Changelog
The Regex is 
Find: (#([0-9]+)) 
Replace: [$1](https://github.com/h5bp/html5-boilerplate/$2)
2012-08-26 08:32:34 -07:00
Divya Manian
42f16dfaa1 Formatting headings. 2012-08-26 08:27:39 -07:00
alrra
a36b296b89 More general compression configuration for Apache
Works with Apache ≥ 2.1 and requires `mod_deflate` and `mod_filter` to
be enabled. However, use of Apache < 2.2 is no longer recommended.

For Apache ≥ 2.1 → 2.3.7, `mod_filter` isn't needed, but requiring it
and using this solution is the best way going forward (plus, it doesn't
introduce other dependencies to other modules like, for example,
`mod_version`).

Fix gh-1012
Ref gh-1173
2012-08-23 00:00:24 +01:00
Nicolas Gallagher
68197bc42d Correct typo in the clearfix code 2012-08-22 15:31:48 +01:00
Nicolas Gallagher
adecc5da03 New image replacement approach
This approach uses a pseudo-element to force the element's content
downwards without covering the background of the element. The overflow
is hidden. For IE 6/7, fallback to the cruder `text-indent` method.

Known advantages:

* Works in IE6+ (although better in IE8+).

* Replaces any content in IE8+, including inner HTML.

* Nothing new for people to learn. Works just like all "traditional" IR
  techniques (unlike NIR, which needs you to add the image using a
  pseudo-element's `content` and relies margins for sprite positioning).

* Doesn't draw a large out-of-element box in modern browsers. You can
  even mix in something like `font: 10px/1 a` to reduce ce the size of
  the "off-screen" box, if you really need to.

* Doesn't have any potential SEO problems from `font-size:0`.

* Doesn't care about any minimum font-size that a browser might have.

* Doesn't have any potential failed-IR problems from inherited styles,
  like text being positioned within the element's visible box (i.e., if
  you use other properties like `text-stroke`).

Known issues:

* Doesn't work when images are off or fail to load (same as every other
  IR technique apart from NIR).

* If the IR'ed element has bottom-padding, then either it needs to be
  removed or the height of the pseudo-element needs to be bumped up
  (e.g., set to 200%).

* Doesn't avoid the `inline-block` bug in IE 6/7 due to the text-indent
  fallback for those browsers.

* Doesn't work on input elements (but they shouldn't be the subject of
  IR anyway).

* There is the potential for some final-result differences between
  IE 6/7 and modern browsers, but this is already the case with other IR
  techniques.

Fix gh-1149
2012-08-21 23:37:37 +01:00
Nicolas Gallagher
fac03ef28f Minor update to README 2012-08-21 22:54:40 +01:00
Nicolas Gallagher
38c7a90cbf Minor update to clearfix 2012-08-20 23:38:35 +01:00
Nicolas Gallagher
7b0ba6b083 Update to Normalize.css 1.0.1 2012-08-20 22:57:28 +01:00
Nicolas Gallagher
28f922ff3c Add a HiDPI example media query
`-webkit-device-pixel-ratio` targets WebKit browsers.
`min-resolution` targets everything else.

Reference: http://www.w3.org/blog/CSS/2012/06/14/unprefix-webkit-device-pixel-ratio/

Fix gh-1127
2012-08-18 18:56:42 +01:00
Nicolas Gallagher
445037ccf4 Docs: update FAQ
Remove the section on "profiling" which was incomplete and not directly
linked to the code in this project. Also fix the headings so that
they're all of the same level.

Fix gh-1170
2012-08-18 18:56:29 +01:00
Nicolas Gallagher
920e52a5d4 Add "Hello world" to index.html
This avoids the default template rendering a completely blank page and
makes it easy for people to know straight away that things are
"working".

Fix gh-1165
2012-08-15 22:52:37 +01:00
Nicolas Gallagher
456211dc54 htaccess: include a SymLinksIfOwnerMatch comment
Some web hosts disallows the use of the FollowSymLinks option in
.htaccess files, and suggest the use of SymLinksIfOwnerMatch.

Close gh-1147
2012-08-15 20:48:39 +01:00
Nicolas Gallagher
e52927a03e Docs: adjust line length and whitespace 2012-08-15 00:33:21 +01:00
Nicolas Gallagher
596d9a9dcc Update to normalize.css v1.0.0 2012-08-15 00:21:11 +01:00
brianblakely
50b46d6fa2 Update doc/extend.md
Added:
* IE10/Win8 badges
* Twitter Cards
* Chrome Web Store inline install
* iOS 6 Safari's Smart App Banners
2012-08-14 11:34:55 -03:00
Nicolas Gallagher
1d96e32876 Docs: minor tweaks 2012-08-12 15:17:58 +01:00
Nicolas Gallagher
8e90c33cef Simplify apple touch icons
Remove the radial gradient from around the star symbol.
2012-08-12 15:04:11 +01:00
Nicolas Gallagher
66b137083f Minor HTML indentation change 2012-08-10 12:29:22 +01:00
Nicolas Gallagher
02bdaea124 Docs: add info about using Metro tiles
Thanks to @Kroc for raising this issue and providing extra details. It
has been included in the 'extend' documentation alongside other IE tips.

Close gh-1136
2012-08-10 10:36:23 +01:00
Nicolas Gallagher
5ed4dadf5c Update CHANGELOG
Ref gh-1161
2012-08-10 10:34:12 +01:00
Jonathan Fielding
1c30c5a660 Update jQuery 1.7.2 to jQuery 1.8.0
Ref gh-1161
2012-08-10 09:44:01 +02:00
Nicolas Gallagher
d590b0efe9 Separate normalize.css from main.css
Benefits of disentangling  normalize.css from the rest of the project's
CSS:

* Easier to track normalize.css version.
* Easier to update normalize.css.
* Easier to remove normalize.css if the user wants.
* Clearer distinction between normalizing CSS and the additions that
  HTML5 Boilerplate provides.

Drawback is the additional HTTP request incurred from the extra
stylesheet referenced in the HTML. However, we already do something
similar for the JS, and anyone serious about performance is going to
employ a build process to concatenate and minify CSS/JS.

Ref gh-1132
Ref gh-1140
2012-08-09 21:48:57 +01:00
Nicolas Gallagher
f23340ed9b Add MIT license
Provide a proper, highly permission license, recognized by the OSI, to
remove any potential for ambiguity. Addresses concerns around the
inability to elect to place work in the Public Domain.

Fix gh-1139
2012-08-08 23:56:10 +01:00
Nicolas Gallagher
3ce6e98cde Clean up .gitignore
Remove all the ignores from `.gitignore`. The default boilerplate
doesn't generate any project-specific files that need to be ignored. All
OS and Editor-generated files should be globally ignored rather than
polluting the local project ignores.

Further information on using git ignore's appropriately can be found in
the miscellaneous part of the bundled docs.
2012-08-05 12:22:32 +01:00
Nicolas Gallagher
703d0b8651 Add CHANGELOG
Keep the project history available within the repo; make it easier to
track what is currently changed over the last tagged release.
2012-08-05 11:11:02 +01:00
Nicolas Gallagher
1e3be1842b Rewrite documentation and add to repo
Include all documentation related to the project and its code. This
ensures that docs are available offline and that any future download
will have docs that relevant for the version in use.

This change involves a documentation rewrite to update, simplify,
clarify, and consolidate it.
2012-08-02 14:06:13 +01:00
Nicolas Gallagher
cc265d4511 Remove uncompressed jQuery
Not referenced anywhere else in the project and is unlikely to ever get
used since the CDN version of jQuery is used by default.

Fix gh-1153
2012-07-31 23:39:27 +01:00
Nicolas Gallagher
889e377b2d Remove superfluous code comments
Reduce the perceived complexity and verbosity of certain files by
stripping unneccessary inline comments.

Relevant documentation may end up in a `doc/` directory such that any
download has an accurate and matching code documentation bundle.

Ref gh-1048
2012-07-29 14:48:14 +01:00
Paul Irish
d3969484ff update modernizr to 2.6.1. fixes #1146. ref #1086 2012-07-19 14:17:26 +01:00
Mathias Bynens
5370479476 Create stubbed console methods
Remove the previous `log()` wrapper method as it changed the reported
line position in logs. Instead, avoid `console` errors in browsers
without `console` by setting its methods to empty functions.

Ref. #1107.
2012-07-08 20:20:17 +01:00
alrra
83f4f28186 .htaccess: Serve WebVTT files as text/vtt with UTF-8 encoding 2012-06-24 11:46:06 +02:00
AD7six
288f9922c0 Remove excessive ExpiresByType rule
Ref. #1122.
2012-06-14 09:14:13 +02:00
Hans Christian Reinl
2a60c6b3d1 Add a comment and link to more .gitignore info
A repository's `.gitignore` should be focused on ignoring files within
the repo that we do not want to be committed. For example, a build
directory.

A global ignore is a better place for ignoring OS-level files, editor
extensions, and files that you are always likely to want ignored (e.g.
zip).

Close #1065
Close #1120
2012-06-11 09:21:33 +01:00
Nicolas Gallagher
49089be067 Merge pull request #1119 from alrra/h5bp
Smaller file size favicon.ico
2012-06-10 05:08:38 -07:00
alrra
ca30a53977 replace the 'favicon.ico' with a smaller size one 2012-06-10 14:33:29 +03:00
Nicolas Gallagher
7aa306c0b3 Rename style.css to main.css
Make it consistent with the naming of main.js

Close #1116
2012-06-09 12:32:47 +01:00
Nicolas Gallagher
0c52750ea6 Remove the lang attribute from html
The boilerplate is used with many different languages, not just English.
This makes it inappropriate to have `lang="en"` included by default.

Fix #1110
2012-06-09 11:27:39 +01:00
Hans Christian Reinl
cbde32f684 Typo in .htaccess: Keep-Alive has to be capitalized in the comment too 2012-06-08 13:21:16 +02:00
Hans Christian Reinl
4505fa12b1 Capitalize "Keep-Alive" to match the HTTP-spec
thanks @mathiasbynens
2012-06-05 19:27:22 +02:00
Hans Christian Reinl
5a2585f42c Include Keep-Alive header in .htaccess
as discussed in #1115
2012-06-05 19:07:33 +02:00
Nicolas Gallagher
d2d5fd1eac Merge pull request #1113 from nchaves/master
Fixing two bugs introduced into plugins.js during reformatting to multiline
2012-06-04 02:58:38 -07:00
Nick Chaves
d242bd27cd Fixing two bugs introduced in the multiline reformat
First bug is that the "c" is expected by the for loop condition to be
the array, not the string.  Second bug is that the new semicolon on
line 36 (after the first anonymous function declaration) separated the
calling parentheses and the return result of the second function, which
was intentionally attached as a parameter to be passed in as "a" to the
first.
2012-06-04 00:38:12 -06:00
Nicolas Gallagher
7a2f9dcf8b Formatting and consistency improvements
- Consistent use of quotes in HTML.
- Consistent use of hex for color values in CSS.
- Multi-line CSS and JS.
- 4 spaces for indentation.
- Always use closing tags.
- Use common DOCTYPE capitalization.

These are steps toward reducing the number of repeat issues we get
around inconsistencies or uncommon patterns; making diffs more readable;
and using common conventions.
2012-06-02 11:29:38 +01:00
Nicolas Gallagher
6bfd7948c6 Humans.txt prettification
Simplify the template a bit. Switch to hash-style comments to mirror
robots.txt standard.
2012-06-01 21:47:17 +01:00
Nicolas Gallagher
3942ee1775 Merge pull request #1095 from clarkni5/master
Add [OR] to rewrite condition

The first condition checks to see if the request matches a directory and the second condition checks to see if it matches a file. Without the [OR], the condition always fails.
2012-05-28 07:44:41 -07:00
Mathias Bynens
e53c1df9cf Merge pull request #1097 from karlpcrowley/patch-1
.htaccess: Prevent mobile network providers from modifying your site (disabled by default)
2012-05-20 23:03:02 -07:00
Karl Crowley
d055e4e6c1 Updated .htaccess:
Prevent mobile network providers from modifying your site
2012-05-20 12:55:49 +02:00
Nicholas Clark
4934c5defd Update documentation. 2012-05-18 16:33:33 -04:00
Nicholas Clark
b2b24c351e Add missing or next condition. 2012-05-18 16:24:27 -04:00
Hans
c20eb1a6fa Merge pull request #1071 from mikealmond/master
Add some MIME-types (JSON, JSONP, audio, video and flash), a note about a custom 404-file and a PHP flag (magic_quotes_gpc)
2012-04-25 09:54:05 -07:00
Mike Almond
09dc03ae17 Merge branch 'master' of git://github.com/h5bp/html5-boilerplate
* 'master' of git://github.com/h5bp/html5-boilerplate:
  Update .gitignore to include AppleDouble (dot underscore) files
  Update .gitignore to include Rubinius's compiled files.
2012-04-25 09:03:26 -04:00
Mike Almond
6e1417b857 Adding JSONP 2012-04-25 09:02:49 -04:00
Hans
509648b8a5 Merge pull request #1073 from lekkerduidelijk/patch-3
Update .gitignore to include AppleDouble (dot underscore) files
2012-04-25 02:27:36 -07:00
Rutger Laurman
e1e53cf83c Update .gitignore to include AppleDouble (dot underscore) files 2012-04-25 09:51:21 +03:00
Hans
1ab8d64169 Merge pull request #1055 from danielgrippi/patch-1
Include Rubinius' compiled files in .gitignore
2012-04-24 15:18:54 -07:00
Mike Almond
e49353b05f Adding new MIME types, a note about 404, and a PHP flag
Fixes #1062 and #1053
2012-04-24 16:19:51 -04:00
Hans Christian Reinl
a95f300ac8 Change selection-color in 404 error template, closes #1067
The selection-color was changed in 1d320b5. Add this background-color in the 404 error template and remove the text-color. Thanks to @elexx.
2012-04-23 23:33:31 +02:00
Nicolas Gallagher
1d320b59a3 R.I.P. Hot pink text-selection highlight
Replace hot pink with a more neutral selection background color: the
default found on OS X.

A number of high-profile sites have failed to customize the hot pink
default that HTML5 Boilerplate used to include. People should be able to
trust the project to include sensible defaults. Keeping hot pink in
there by default breaks the "no surprises" expectation of amateur and
professional developers.

Ref #610
Ref #969
2012-04-22 15:08:46 +01:00
Nicolas Gallagher
eb2dc2fe90 Remove HTML comment about appcache
Using appcache is complicated and can have unexpected consequences if
you do not have a good grasp of the spec. The way that this project
suggested using appcache was likely to be problematic.

Ref #1060
2012-04-20 23:39:14 +01:00
Daniel Grippi
1b581aff02 Update .gitignore to include Rubinius's compiled files. 2012-04-18 18:44:18 -07:00
Nicolas Gallagher
c264d91c6c Merge pull request #1051 from sjonnet/patch-1
Additional changes to index.html for rename libs to vendor
2012-04-14 07:10:37 -07:00
Shawn Jonnet
02bf76cd16 Additional changes to index.html for rename libs to vendor 2012-04-14 10:06:54 -03:00
Nicolas Gallagher
3606c8345f JS: rename libs/ and script.js
The dir name `vendor/` is increasingly common and this small change
might save some people a bit of time when it comes to using the project
with RequireJS et al.

See:

http://www.javascriptu.org/decks/sd/building_the_foundation/#slide-51
2012-04-13 20:16:20 +01:00
Nicolas Gallagher
cfae00adab Merge pull request #963 from ProBackup-nl/master
Remove * {filter:none} from media print due to IE9 repositioning and float issues
2012-04-10 16:42:58 -07:00
Nicolas Gallagher
5469e272a4 Remove placeholder content from <body>
Lengthy previous discussion in #203

Close #926
Close #1033
2012-04-11 00:35:29 +01:00
Nicolas Gallagher
21e77285e2 Merge pull request #998 from Calvein/patch-1
Added a link to explain why to put the JavaScript file at the bottom
2012-04-10 16:28:42 -07:00
Paul Irish
b0db5d5eb6 Merge pull request #1043 from Kvakes/master
Espresso generated files
2012-04-08 07:46:51 -07:00
Max Izmailov
060ac246fd Ignore files generated by Espresso 2012-04-08 15:18:19 +02:00
Nicolas Gallagher
339b6c96ad Remove .htaccess comment about query params
Using query params to version files is not recommended. This removes
a stray reference to that technique.

Close #997
2012-04-07 00:52:52 +01:00
Paul Irish
086280e6fd linking up some docs for the RewriteBase cloud issues. ref #1015 2012-04-06 15:57:29 -07:00
Hans
ce64453057 Merge pull request #1015 from WraithKenny/patch-1
Add RewriteBase to .htaccess - commented out by default as it allows for use w/o configuration.
2012-04-06 15:52:38 -07:00
Hans
00ee25c1be Merge pull request #1036 from alecrust/patch-1
Corrected spacing
2012-04-04 13:39:39 -07:00
Ken Newman
6c1c1db5a2 Comment-out RewriteBase by default. This allows for "no-configuration" flexible deployment. Some servers need this setting configured, but the value depends on deployment location. 2012-04-03 12:55:40 -03:00
Alec Rust
263af0b468 Corrected spacing 2012-04-03 11:57:00 +02:00
Hans
4026f03249 Merge pull request #1026 from jonathan-fielding/master
Updated the jQuery to 1.7.2
2012-03-29 13:54:23 -07:00
Divya Manian
258cbef93c Merge pull request #1029 from philipwalton/strict-log
added a try/catch block to make log work with 'use strict'
2012-03-28 15:51:56 -07:00
Philip Walton
9cb7e46f32 added a try/catch block to make log work with 'use strict' 2012-03-22 23:29:10 -07:00
Divya Manian
863de294e8 Actually fixing #1028. Thnx @niftylettuce 2012-03-22 21:20:25 -07:00
Divya Manian
7912513084 Fixing typo in css class. Fixes #1028 2012-03-22 21:07:39 -07:00
Jonathan Fielding
1c55518def Updated jQuery to 1.7.2
Signed-off-by: Jonathan Fielding <j.fielding@me.com>
2012-03-21 23:42:54 +00:00
Mathias Bynens
9cf989542c Further optimize the new touch icons
apple-touch-icon-114x114-precomposed.png |  Bin 3247 -> 3242 bytes
   apple-touch-icon-144x144-precomposed.png |  Bin 3779 -> 3777 bytes

Ref. #1025.
2012-03-21 08:35:50 +01:00
Mathias Bynens
9ced71e8ef Merge pull request #1025 from richardcornish/master
Redesigned touch icons and favicon
2012-03-21 00:31:17 -07:00
Richard Cornish
e2fff6fe07 Redesigned touch icons and favicon
New icons designed to be sharper on the pixel grid, with slight light
source variations that are pleasing to the eye in a touch environment.
Also put through ImageAlpha and ImageOptim for added optimization.
Please see
http://dl.dropbox.com/u/2066483/h5bp-icons/docs/comparison.png for
before/after comparison.
2012-03-21 00:41:50 -05:00
Mathias Bynens
923b0f3adc Add 144×144px touch icon for third-generation iPad
See http://mathiasbynens.be/notes/touch-icons. Closes #1020.
2012-03-16 16:44:15 +01:00
Ken Newman
767dc09916 Add RewriteBase subdirectory note. 2012-03-13 15:11:02 -03:00
Ken Newman
efe88dfbf2 Update .htaccess 2012-03-13 14:33:13 -03:00
Ken Newman
1ec581885a Cloud Sites (and probably other cloud/shared hosting) needs a RewriteBase set for rewrites to work. See http://www.rackspace.com/knowledge_center/index.php/Why_is_mod_rewrite_not_working_on_my_site 2012-03-08 14:38:57 -05:00
Nicolas Gallagher
aa0396eae7 Update CSS image replacement technique
The new technique avoids various problems with any text-indent method.
The benefits are:

* No box of any kind is drawn offscreen, so there is no risk of
  related performance problems in old iOS devices.

* No need to specify a text-alignment and hide overflow since the text
  is crushed to take up no space.

* No need to hide `br` or make all fallback HTML `display:inline`
  because unlike the text-indent approaches, this method is not
  affected by those scenarios.

* Fewer styles are needed as a result of these improvements.

The function of the new CSS is as follows:

* `font: 0/0 a` is a shorthand property that reduces the font-size and
  line-height to 0. The `a` value acts as a font-family. The CSS
  validator complains that using `0/0` in the shorthand `font` property
  is not valid, but every browser accepts it.

* `text-shadow: none` makes sure than any inherited text shadow is
  removed, otherwise it will show over the image.

* `color: transparent` is only really needed in browsers than don't
  completely crush the text to the point of being invisible. Safari 4 is
  such a browser (but extremely rare). Leaving it in for now in case
  there are any mobile browsers that require it. Upon further testing,
  it may be possible to remove this declaration.

Some parts of the pre-existing image replacement technique have been
retained. The border and background resets are useful when using IR on
form submit inputs or buttons, as well as when links use default borders
or backgrounds

Close #1005
2012-03-06 00:12:12 +00:00
Nicolas Gallagher
758eab9f35 Merge pull request #1010 from richardcornish/master
Added `application/xml` for RSS MIME types
2012-03-05 01:46:27 -08:00
Richard Cornish
c448cc03e7 Added application/xml for RSS MIME types
Based on research on the [issue
list](https://github.com/h5bp/html5-boilerplate/issues/989)
2012-03-05 03:43:08 -06:00
Mathias Bynens
db1574059d Merge pull request #1003 from alrra/h5bp
Updated link in the "robots.txt" file
2012-02-28 13:35:52 -08:00
alrra
ca4bf4793d updated the "Controlling Crawling and Indexing" link from the "robots.txt" file 2012-02-28 23:14:17 +02:00
François Robichet
1aad336ef7 Added a link to explain why put the JavaScript file at the bottom 2012-02-26 20:48:02 +01:00
Paul Irish
1929462a39 Merge pull request #994 from Jakobud/master
Changed Cache-Busting help url in the .htaccess
2012-02-21 18:56:06 -08:00
Jake Wilson
5bbd604930 Changed cache-busting help url 2012-02-21 19:32:16 -07:00
Paul Irish
b0ddd13910 Merge pull request #992 from mikealmond/master
Removing the <Location> tag from the P3P Header - Fixes issue #975
2012-02-21 11:18:15 -08:00
Mike Almond
fe6c2f56ec Removing the <Location> tags from the P3P Header
The Location tag was causing a 500 error.
2012-02-21 13:59:16 -05:00
Paul Irish
f8f347e392 new modernizr. 2012-02-19 11:00:08 -08:00
Paul Irish
080026e4f4 modernizr 2.5.2. includes html5shiv 3.3. 2012-02-07 18:28:52 -08:00
Paul Irish
9434b5bc79 upgrade Modernizr to 1.5.1 which includes IE7 fix. also yepnope 1.5.2 2012-02-07 17:35:49 -08:00
Mathias Bynens
f9ebf5d2e9 Merge branch 'master' of github.com:h5bp/html5-boilerplate
* 'master' of github.com:h5bp/html5-boilerplate:
  2.5 version string in modernizr.
  update index for upgraded modernizr.
  update modernizr and yepnope to brand new latest.
2012-02-06 14:28:16 +01:00
Mathias Bynens
c93f45ff38 Normalize short URLs pointing to GitHub issues
Ref. #954.
2012-02-06 14:25:02 +01:00
Paul Irish
5dbb3b4b0a 2.5 version string in modernizr. 2012-02-05 22:20:28 -08:00
Paul Irish
deeb952314 update index for upgraded modernizr. 2012-02-05 22:03:22 -08:00
Paul Irish
0659528100 update modernizr and yepnope to brand new latest. 2012-02-05 22:03:01 -08:00
Mathias Bynens
4d65006439 .htaccess: Block access to Vim backup files correctly
Fixes #937.
2012-02-05 13:46:28 +01:00
Nicolas Gallagher
ab117fc461 Merge pull request #966 from dhaigh/master
Whitespace removal
2012-02-04 03:43:09 -08:00
Declan Haigh
5d2a6dbe3a obsessive compulsive whitespace removal 2012-02-04 21:31:25 +10:00
ProBackup-nl
a2240384c7 Remove @media print "filter:none !important; -ms-filter: none !important;".
In combination with html form input tags, having float:left style applied, Modernizr 2.0.6, IE9 and PIE-1.0beta6 (for rendering CSS3 properties in IE) the setting of "filter:none" causes the input elements to disappear. See it for yourself (in IE9):

http://www.kbrbeheer.nl/bugs/h5bp/stylesheet-media-print/with-filter.html
http://www.kbrbeheer.nl/bugs/h5bp/stylesheet-media-print/without-filter.html
Or when you haven't got IE9 at your disposal:
http://www.kbrbeheer.nl/bugs/h5bp/stylesheet-media-print/with-filter.pdf
http://www.kbrbeheer.nl/bugs/h5bp/stylesheet-media-print/without-filter.pdf
2012-02-03 17:23:35 +01:00
Nicolas Gallagher
cedd640083 Avoid using @defer on interdependent <script>s
Whenever a deferred script makes HTML be parsed into the DOM tree
(e.g. when innerHTML, insertAdjacentHTML(), appendChild(),
insertBefore(), replaceChild() etc. are used), IE < 10 may start
looking for more deferred scripts to run, immediately executing
them before the first deferred script has completed.

More information: https://github.com/paulirish/lazyweb-requests/issues/42

Close #961
2012-02-03 15:15:19 +00:00
Nicolas Gallagher
ac50fbc1e2 Update readme 2012-02-03 13:43:07 +00:00
Nicolas Gallagher
f96fed6942 Remove ant build script. Close #826
The ant build script is now in a separate, dedicated repo at:
http://github.com/h5bp/ant-build-script
2012-02-03 12:38:26 +00:00
Nicolas Gallagher
f2924da1b1 Merge pull request #960 from alrra/h5bp
added a more informative page link in the 'robots.txt' file
2012-02-03 03:45:37 -08:00
alrra
a111a79500 added a more informative page link in the 'robots.txt' file 2012-02-03 12:50:06 +02:00
Paul Irish
ce0c28932b update plugins.js to be jshint compliant. fixes #952 2012-01-31 17:31:07 -08:00
Paul Irish
d7e668235f Chromeframe prompt doesnt reccomend IE6 -> IE8. We need mitigate IE8's role as a boat anchor browser as much as possible 2012-01-31 12:26:54 -08:00
Nicolas Gallagher
8552d9543e Re-set default cursor for disabled input and button. Fix #887 2012-01-31 16:12:19 +00:00
Divya Manian
af3bd79de5 fixing the regexes, hopefully for the last time. Unsure where last night's commit went. Thanks @kblomqvist 2012-01-31 07:14:54 -08:00
Divya Manian
2dcdaf0104 fixing conflicts 2012-01-30 19:17:43 -08:00
Divya Manian
3cebea1671 fixing build script AGAIN. Wondering why it worked the first time around? :/ 2012-01-29 20:35:16 -08:00
Divya Manian
a5e31d6132 Updating build tools to their latest versions 2012-01-29 20:26:32 -08:00
Divya Manian
37470f8da6 Merge pull request #949 from adeelejaz/issue/201
Fixes #201 (finally!)
2012-01-29 19:55:50 -08:00
Adeel Ejaz
e1b81302bd Fixes #201 (finally!) 2012-01-30 03:23:23 +00:00
Divya Manian
965f3f1636 Fixing the appending of manifest when php tags exist. Fixes #912 2012-01-29 16:58:14 -08:00
Nicolas Gallagher
fddbaa3487 Move base font-family and color declaration to html.
Applying these shared styles to `html` ensures that people can set
their own overrides on `html` later in the CSS. If the starting
styles were on `body`, then setting them on `html` later in the
CSS would not have the intended effect.
2012-01-29 23:15:33 +00:00
Nicolas Gallagher
26d6be2479 Remove initial-scale from meta viewport. Fix #824 2012-01-29 23:09:12 +00:00
Divya Manian
611162c891 fixing damned whitespaces 2012-01-29 14:22:24 -08:00
Divya Manian
f5d13045c0 cleaning up style.css for chrome frame 2012-01-29 13:14:43 -08:00
Divya Manian
cff92881a8 updated the regex pattern to only look for href=<folder path>/style.css, so it doesnt matter where href is present in the link. Fixes #927 2012-01-29 13:06:10 -08:00
Divya Manian
2eb19a9c99 need opts.extra to be always present to stop build script from throwing an error that it is not found 2012-01-29 13:05:05 -08:00
Divya Manian
2b5f881ecc Made all the arguments for htmlcompressor part of config file. Also added optional additional arguments list in project.properties. Fixes #672 2012-01-29 11:21:39 -08:00
Divya Manian
6a304122b7 Reports of crashes using the chrome frame script check. Instead using the prompt message with a link to chrome frame or a newer IE. Fixes #695 2012-01-29 08:44:45 -08:00
Divya Manian
8b1f5ebe50 copying over the libraries, fixes #944 2012-01-29 08:19:50 -08:00
Nicolas Gallagher
4b213f9050 Merge branch 'master' of github.com:h5bp/html5-boilerplate 2012-01-26 15:33:29 +00:00
Nicolas Gallagher
0bf9143cd1 Additional tweaks to 404.
Simplify CSS styling the Google Search inputs. Improve the
appearance of the keyword input. Use `body` as wrapper. Add `lang`
attribute to `html`.

Thanks to @sindresorhus for suggestions and improvements in #941
2012-01-26 15:29:10 +00:00
Divya Manian
d269a55d45 OK, so this commit ensures that after removing mylibs. the build script works.
What it also ensures is that the file.js.bypass also still works. This means the script looks for these files within the parent js directory. Also finally these files will actually remain untouched compared to previous versions where they were minified/concatenated but just not included.

This means any js file in any folder not included by default in h5bp will be concatenated and minified and output as a single script-hsa.js file. If you do not want this, make sure to do <folder>/* in file.js.bypass in config/project.properties
2012-01-25 23:24:44 -08:00
Nicolas Gallagher
c04b0b57b5 Remove reference to Respond from HTML comment in head 2012-01-24 19:33:13 +00:00
Nicolas Gallagher
f6ccd1032d Simplify JS folder structure. Close #807 2012-01-24 19:31:12 +00:00
Nicolas Gallagher
af98e6fc51 Update Modernizr to remove Respond. Change placeholder Media Query.
Previous version of Respond was known to cause problems in IE8.
It was not necessary for developers who chose to write their CSS
in a 'mobile first' manner. Furthermore, there are some concerns
about the performance penalty Respond imposes upon legacy versions
of IE. If a future version of Respond is shown to be performant
and more reliable, it may be reconsidered for inclusion.

Along with this change is a simplification of the placeholder
Media Queries. Now there is only 1 Media Query example and it is
more clearly labelled as an example. The use of `em` units in the
condition is to reinforce the idea that Media Query breakpoints
should not be device-specific.

Fix #816
2012-01-24 19:19:52 +00:00
Nicolas Gallagher
f0358b52a5 Merge pull request #923 from muiku/gh-920
Fix gh-920
2012-01-24 03:27:27 -08:00
Nicolas Gallagher
1dd911f06a Update design of 404. Close #931
Implement and build upon the design provided by @sindresorhus.
Thanks!
2012-01-24 01:29:06 +00:00
Nicolas Gallagher
1738287ce9 Remove WebKit search cancel button from OS X
This WebKit pseudo-element is only displayed on OS X and is poorly
positioned once you begin to customise the style of a `search`
type input.
2012-01-22 22:01:18 +00:00
Nicolas Gallagher
5c02f406e4 Remove forced scrollbars on html element. Fix #918
This can cause problems for JavaScript plugins (such as modal or
drag-and-drop UIs) in Firefox.
2012-01-22 18:11:34 +00:00
Nicolas Gallagher
2dc1493df6 Allow legend text to wrap in older versions of Firefox. Fix #883 2012-01-22 18:09:44 +00:00
Nicolas Gallagher
79beb6c91c Merge pull request #762 from smashercosmo/master
Removing extra space around checkboxes and radio buttons in IE7
2012-01-22 10:06:28 -08:00
Paul Irish
26ea01971c buildscript properties file. inline example for excluding folders 2012-01-20 11:07:26 -08:00
Kim Blomqvist
4932b4070f It should have been a negative lookbehind
- In addition greater than character (>) in the regexp had to been escaped
2012-01-20 18:42:53 +02:00
Kim Blomqvist
27d1fda0dc Fix gh-920 2012-01-19 21:22:34 +02:00
Kim Blomqvist
e80a3e0637 Fix gh-912
- Add regexp lookahead to skip ?> (php-tag)
2012-01-19 20:41:01 +02:00
Paul Irish
a36d558702 Merge pull request #906 from gzoller/master
Support for js modules with cachebusting
2012-01-18 18:06:05 -08:00
Greg Zoller
3e0b0de9da Removed index.html example mods for module support. Comments in wiki. 2012-01-17 21:01:57 -06:00
Paul Irish
ce9c57c105 CFInstall: cannot have [defer] on a external/inline script combo. fixes #913 2012-01-17 08:47:11 -08:00
Mathias Bynens
f4cd5c18a3 Merge pull request #910 from mikealmond/master
Adding php dist files to the blocked extensions list
2012-01-12 22:06:13 -08:00
Mike Almond
0f9507774b Adding .dist files to the list of filetypes blocked to a user 2012-01-12 20:46:56 -05:00
Mathias Bynens
01296493e7 Revert e2ca1bf931
Ref. #891.
2012-01-07 21:18:58 +01:00
Nicolas Gallagher
8c4ce42af3 Remove author meta tag from head 2012-01-06 15:40:09 +00:00
Greg Zoller
3719f56c86 Added support for js modules 2012-01-05 17:46:14 -06:00
Divya Manian
b3755703b7 Merge pull request #873 from lukeb/patch-1
Requests shouldn't fail if the file or directory beginning with a period...
2011-12-31 07:18:15 -08:00
Divya Manian
f6830c199b Merge pull request #884 from tralston/master
Added target "copyall" in build.xml for the "dev" environment
2011-12-30 17:01:41 -08:00
Divya Manian
f93c8e1636 adding basedir for all tasks. Fixes #437 2011-12-30 07:48:38 -08:00
Divya Manian
5884c3a5fd Updating intermediate folder to not minify the bypassed files. Fixes. #694 2011-12-30 07:31:35 -08:00
Divya Manian
d5c0d33d10 removing imgcopy from buildscript as it is a remnant and not useful. Fixes #845 2011-12-30 07:18:15 -08:00
Divya Manian
b780098073 Merge pull request #881 from splendeo/fix-htaccess
make .htaccess (a bit) less restrictive
2011-12-30 06:53:34 -08:00
Divya Manian
2e1a7bf567 Merge pull request #872 from mikemorris/patch-1
Removed ' <!--<![endif' from regex search string for adding manifest attribute
2011-12-30 06:42:00 -08:00
Mathias Bynens
481dfc1966 Merge pull request #891 from laukstein/patch-2
Apache performance tweak with -SymLinksIfOwnerMatch and +FollowSymLinks
2011-12-28 02:45:25 -08:00
Binyamin Laukstein
71d5229611 Added Apache docs URL 2011-12-28 11:20:24 +02:00
Addy Osmani
32aabb23f7 Merge pull request #830 from mattyclarkson/master
404.html updates.
2011-12-27 16:46:03 -08:00
Mathias Bynens
fd52982efd Escape the . character correctly in FilesMatch directives
Fixes #898.
2011-12-24 08:56:42 +01:00
Mathias Bynens
9feb29f465 Omit .html and .txt from the AddCharset statement
As AddDefaultCharset already takes care of text/plain and text/html. This reverts 024600fd57.
2011-12-22 07:51:26 +01:00
Mathias Bynens
23bd766955 Only send CORS headers for images by default
Ref. #797.
2011-12-20 08:20:04 +01:00
Paul Irish
024600fd57 force utf-8 for .txt for funsies. 2011-12-17 12:06:58 -08:00
Binyamin Laukstein
e2ca1bf931 Apache Performance Tuning http://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks
Set -SymLinksIfOwnerMatch to avoid Apache extra system calls to check up on symlinks.
2011-12-14 21:58:54 +02:00
Paul Irish
2b5eeeef27 adding mimetype for .webapp, Mozilla's new app manifest type. more:
This content-type is neccessary apparently:
  https://developer.mozilla.org/en/Apps/The_Manifest
2011-12-13 11:51:33 -08:00
Nicolas Gallagher
e97689d7aa Merge pull request #885 from elexx/master
createproject.sh - removed test
2011-12-10 04:21:28 -08:00
elexx
791734033f Removed test from copy, because the directory has been removed long ago (0a80ebafd0). 2011-12-10 13:13:39 +01:00
Taylor Ralston
cafea9f090 Added target "copyall" in build.xml for the "dev" environment
Fixes issue with not copying non-optimized .css and .js files into the publish folder. If dev environment is selected, .css and .js aren't minified, thus they aren't copied over with existing "copy" target.
2011-12-09 13:04:21 -07:00
Enrique García Cota
d582fe5d8e made .htaccess less restrictive
The rule that made .htaccess restrict access to files (.log, .bak,
.sh, ...) was missing an escape sequence on its dot.

As a result, in addition filtering problematic files, it also filtered
some very valid urls. For example:

    mysite.com/blog        <- satisfies /.log$/ and gets filtered
    mysite.com/hit-refresh <- satisfies /.sh$/ and gets filtered

This change modifies .htacces so the dot is interpreted as a literal dot
character, avoiding those issues.
2011-12-07 19:02:42 +01:00
Luke Brookhart
a835a4dbb0 Requests shouldn't fail if the file or directory beginning with a period doesn't exist. Some CMS's will allow for appending ".qr" to a URL to get a QR code. 2011-11-30 11:54:35 -05:00
mikemorris
ba7d47f931 Removed ' <!--<![endif' from regex search string for adding manifest attribute. Works fine without this segment, and no longer prevents the build script from adding the manifest attribute if the IE conditional comments are removed. 2011-11-29 13:17:50 -05:00
Paul Irish
b1e3aa5fe4 Merge pull request #871 from drublic/master
Update jQuery to 1.7.1
2011-11-28 16:04:50 -08:00
drublic
a8e96a79a1 Update jQuery from version 1.7.0 to 1.7.1
Signed-off-by: drublic <hans@sa-designz.de>
2011-11-29 00:17:26 +01:00
drublic
d8e28f2f2e Merge branch 'master' of https://github.com/h5bp/html5-boilerplate 2011-11-29 00:10:18 +01:00
Mathias Bynens
2727fa23a6 Send CORS headers if browsers request them. This enables CORS-enabled images (@crossorigin). Closes #797. 2011-11-28 20:00:09 +01:00
Nicolas Gallagher
fdb58e6815 Merge pull request #866 from AD7six/feature/slim-gitignore
git ignore files do not need to ignore ignoring themselves
2011-11-23 04:45:00 -08:00
AD7six
875df4e9b5 git ignore files do not need to ignore ignoring themselves
To ensure the dir exists with git, a file is required - but it can be
completely empty.

Since the git ignore file is already in the repo it is not necessary to
not-ignore it - it is already tracked.

Though trivial these !.gitignore files are being understood by some to
mean that they must contain this exact syntax to ensure an empty folder
exists.
2011-11-23 13:20:56 +01:00
Nicolas Gallagher
a0cf284836 Merge pull request #862 from martinsik/master
removed _trackPageLoadTime - it's now enabled by default in Google Analytics
2011-11-20 12:05:52 -08:00
martinsik
a7b1a71624 removed _trackPageLoadTime because it's not necessary any more 2011-11-20 20:42:41 +01:00
Paul Irish
f40da1b529 minor. filename typo. 2011-11-17 12:37:37 -08:00
drublic
9efe695f4d jQuery minified was still 1.6.4. fixes #852
I don't know why pretty sure I updated it.
Anyway… here comes the latest version.

Signed-off-by: drublic <hans@sa-designz.de>
2011-11-17 09:32:53 -08:00
Paul Irish
05965584fc hey filename, take it easy. use your inside voice. 2011-11-17 09:32:22 -08:00
drublic
2dd8ad97f8 jQuery minified was still 1.6.4. fixes #852
I don't know why pretty sure I updated it.
Anyway… here comes the latest version.

Signed-off-by: drublic <hans@sa-designz.de>
2011-11-17 10:42:23 +01:00
Mathias Bynens
78533f248c Update Modernizr header with a more specific build link. 2011-11-11 09:09:34 +01:00
Paul Irish
8bf92b0989 Merge pull request #852 from drublic/master
Update jQuery to the latest version
2011-11-10 15:20:44 -08:00
drublic
8074f1584f Update jQuery form 1.6.4 to 1.7.0
Signed-off-by: drublic <hans@sa-designz.de>
2011-11-11 00:10:21 +01:00
Matt Clarkson
6122ef5ab1 Added the 'px' back in for the things that need it. Added consistent spacing to the styling. 2011-11-09 01:35:07 +00:00
Matt Clarkson
212afb9d43 Added padding to the inputs so that they look better. 'look' is always a personal opinion though... 2011-11-08 01:34:51 +00:00
Matt Clarkson
8278b4552d Updated styling to be more consistent and terse 2011-11-08 00:45:56 +00:00
Divya Manian
ce11ab3f8e Merge pull request #846 from mikealmond/master
Block access to backup/source/config files. Fixes issue #648
2011-11-07 07:44:14 -08:00
Mike Almond
8b634157e3 Block access to backup/source/config files. Fixes issue #648 2011-11-07 09:38:37 -05:00
Divya Manian
588e82c8dc Adding Opera extension to mimetypes and unsetting X-UA-Compatible for opera extensions. Fixes #827 2011-11-06 14:08:45 -08:00
Divya Manian
07634ccaf1 Merge pull request #838 from dplesca/master
Fix for issue #837
2011-11-06 01:33:54 -07:00
Paul Irish
1c18e9e8ca Merge pull request #842 from akavlie/master
Link fixes
2011-11-04 19:43:03 -07:00
Aaron Kavlie
821f3449aa Fix a couple of links in build files that still point to github.com/paulirish 2011-11-04 19:27:14 -07:00
Nicolas Gallagher
4a69c41694 Update urls in .htaccess to reference the new repo and wiki locations 2011-11-04 21:26:42 +00:00
dplesca
6290f4018c Fix for Issue #837. 2011-11-03 12:30:23 +02:00
Mathias Bynens
5718718cdd Use h5bp.com short URL for the viewport discussion. Closes #836. 2011-11-02 08:53:20 +01:00
Mathias Bynens
d526c488ea Merge pull request #836 from kridolfo/patch-1
Update short link for X-UA-Compatible issue in GitHub to point to new repo.
2011-11-02 00:51:53 -07:00
Kyle Ridolfo
e0b5b1c93d Update short link for X-UA-Compatible issue in GitHub to point to new repository. 2011-11-01 12:32:48 -03:00
Matt Clarkson
0eb2dc932a Removed dynamic URL 2011-10-31 09:07:41 +00:00
Paul Irish
fb6d9387ed Merge pull request #832 from adrienkohlbecker/master
Fixed PNG optimization on unix & macos
2011-10-30 11:24:56 -07:00
Adrien Kohlbecker
b0fd587b26 PNGs weren't optimized on unix & macos 2011-10-30 13:12:17 +01:00
Matt Clarkson
5347f874ed Added the URL to the mistyped address and some nicer styling to the text box and button 2011-10-28 17:15:20 +01:00
Nicolas Gallagher
d32dfb7a48 Update README repo urls 2011-10-26 22:00:32 +01:00
Nicolas Gallagher
380c4f80d8 Add default font-size and line-height styles.
Redeclare default font-size using ems (equates to 16px if user
has not altered their prefs). Set a common line-height value to
improve readability in most cases. Should keep people happy.

Ref #723
Close #825
2011-10-25 20:35:19 +01:00
Nicolas Gallagher
125a7a6840 Remove default font-size and line-height. Close #724
The previous font-size and line-height were fairly arbitrary
values taken from the much earlier use of YUI font defaults.
Remove them in favour of developers specifying their own values
based on the typographic requirements of their design.
2011-10-23 20:29:19 +01:00
Nicolas Gallagher
1437e0fefd Remove demo folder.
The demo files haven't been well maintained and are of limited
use. Remove them to simplify the boilerplate.

Ref #808
2011-10-23 20:19:47 +01:00
Nicolas Gallagher
0a80ebafd0 Remove test folder.
Over 80% of people polled are not using the qunit testing
provided. Remove it in favour of people using their unit testing
framework of choice.

Ref #808
2011-10-23 20:05:31 +01:00
Divya Manian
5fdb99f91b adding a depends -clean. fixes #692 2011-10-19 22:40:21 +05:30
Divya Manian
b72f114d95 Merge pull request #813 from dflydev/master
Handle absolute path for name and optionally accept name on command line
2011-10-19 09:52:41 -07:00
Divya Manian
90734c0b45 Adding all images in the img folder to the manifest. Fixes #760 2011-10-19 21:57:58 +05:30
Beau Simensen
f022785b64 Added internal documentation per #813 2011-10-19 10:25:24 -05:00
Paul Irish
d20c503e08 Merge pull request #818 from localpcguy/patch-1
Use REM for comments to avoid error messages on the DOS prompt for Window
2011-10-18 15:46:47 -07:00
localpcguy
a37f57addb Use REM for comments to avoid error messages on the DOS prompt for Windows users 2011-10-18 19:37:30 -03:00
Mathias Bynens
a87078d406 Cleaner, more obvious indentation in .htaccess. Closes #817. 2011-10-18 22:39:58 +03:00
Nicolas Gallagher
ecdb8d79ac Add line-height:0 to .ir helper class. Close #811
The .ir helper class's use of a negative text-indent is not enough
to hide the text of submit inputs in IE6/7. This deals with that
scenario.
2011-10-15 14:50:08 +01:00
Nicolas Gallagher
f3cc3a28e4 Rewrite the README.
Previous version was acting more like a changelog. This update
provides a better overview of the project, more useful information,
clearer description of how to get involved, and links to the
various project resources.
2011-10-15 12:03:26 +01:00
Beau Simensen
8d50ceb127 Handle absolute directories for "name" and optionally take name as command line argument. 2011-10-14 15:10:58 -05:00
Paul Irish
f1e9bb3f94 QUnit updated to 1.2.0pre - which is master, which is 1 day past the 1.1.0 release. :) 2011-10-11 16:19:51 -07:00
Mathias Bynens
5e213a872c Merge pull request #805 from samuelcarlton/patch-1
Added sublime-project and sublime-workspace files to ignore list
2011-10-10 21:41:53 -07:00
Sam Carlton
638f77206f Added sublime-project and sublime-workspace files to ignore list 2011-10-10 19:43:28 -05:00
Divya Manian
25fa9bedd7 Merge pull request #800 from jakearchibald/master
Changing IE class names to target browsers less than a version.
2011-10-09 13:40:09 -07:00
Jake Archibald
b230b84043 Changing IE class names to fall-back rather than target specifically.
Almost all layout bugs that exist in IE8 also exist in 6 & 7, almost all layout bugs in 7 exist in 6. With class names that target versions specifically I end up repeating my selectors for IE6, 7 & 8. This pattern of selectors avoids that. Developers should be more familiar with this behaviour, as this is how it works with the underscore & star hacks.

If a style needs to be applied to IE8 specifically, it could be set on .ltie9 then overridden in .ltie8 - this isn't pretty, but I've never had to target a specific IE in practice, so I'm going on the assumption that it's an edge-case.
2011-10-08 11:51:05 +01:00
Paul Irish
362eb87946 Merge pull request #799 from rigelglen/master
Validate 404 Page's HTML
2011-10-07 10:22:41 -07:00
rigelglen
eaf87bb500 Now Valid HTML 2011-10-07 22:20:22 +05:30
Divya Manian
5c85e31a21 Merge pull request #789 from unfinisheddev/master
Ammendment to CSS @import regex. This will now allow media queries like (min-width: 240px).
2011-10-06 06:07:54 -07:00
Dave Kirk
e17dc838a2 Ammended the regex used to match media queries for imported stylesheets as it wasn't matching qeuries containing certain characters 2011-09-26 10:39:07 +01:00
Nicolas Gallagher
3cdf17e1bc Prevent text inputs growing as you type in IE6/7.
Applying *overflow:visible to button/input causes text inputs to
grow to fit their content, even if an explicit, fixed width is
applied. It was originally included to remove excess inner
spacing on buttons and submit/reset/button-type inputs in IE6/7.

Fixing this bug in IE6 requires dropping the fix entirely because
there is no way to avoid it being applied to text inputs. If
there is a need to fix this excess spacing bug in IE6, then it
should be done using a class that is applied to the
necessary elements.

For IE7, the excess spacing fix can be moved into the ruleset
that targets button and submit/reset/button-type inputs. This
prevents text inputs from growing.
2011-09-22 18:47:24 +01:00
Divya Manian
994cd0801d Merge pull request #768 from mathiasbynens/master
.htaccess improvement: check if mod_headers is available before matching webfont files (instead of the other way around)
2011-09-18 07:02:47 -07:00
Divya Manian
e130ae32c2 Merge pull request #767 from whitman/master
Add -p flag to mkdir
2011-09-18 06:58:16 -07:00
Mathias Bynens
d8a3970e14 Check if mod_headers is available before matching webfont files. This tweak also makes it more consistent with the rest of the .htaccess file. 2011-09-18 10:21:33 +03:00
Alex Whitman
d98f4ae88e Add -p flag to mkdir
- Allows parent directories to be automatically created if necessary
2011-09-17 16:18:39 +02:00
Nicolas Gallagher
6673ce68ff Merge pull request #766 from rigelglen/master
Update Demo Pages with jQuery 1.6.4
2011-09-17 02:17:41 -07:00
Rigel Glen
535918a3ed Updated Demo Page with jQuery 1.6.4 2011-09-17 14:41:22 +05:30
Mathias Bynens
32fcb33604 Merge pull request #765 from rigelglen/master
Added jQuery version 1.6.4
2011-09-17 00:59:46 -07:00
Rigel Glen
d13dfdef40 Added jQuery 1.6.4 2011-09-17 13:05:54 +05:30
Rigel Glen
b23de068c5 Added jQuery 1.6.4 2011-09-17 13:03:30 +05:30
rigelglen
7f94518f6b Added jQuery 1.6.4 2011-09-17 12:52:39 +05:30
Vladislav Shkodin
53aded7bf3 added fixed sizes for checkbox and radio button. this will remove extra space around them in IE7 2011-09-16 04:49:49 +04:00
Divya Manian
7a984c7f84 Changing the default elements inside body. Fixes #203 2011-09-15 17:35:35 -07:00
Divya Manian
8aa70882b4 Removing prefixed box-shadow resets in print styles. 2011-09-13 17:48:53 -03:00
Divya Manian
fe2d67c9c0 Merge pull request #754 from lekkerduidelijk/patch-2
Reset box shadow, including vendor prefixes, for @media print.
2011-09-13 13:48:08 -07:00
RL
115bce064e Reset box shadow, including vendor prefixes, for @media print. 2011-09-13 14:06:55 +03:00
Paul Irish
4994e375a1 Merge pull request #748 from santry/patch-1
A couple grammatical fixes to README.md
2011-09-10 15:51:34 -07:00
Sean Santry
64c9e797b8 A couple grammatical fixes to README.md 2011-09-10 18:52:28 -03:00
Paul Irish
ceb6e819d3 Merge pull request #742 from owilliams/master
Fix small typo in createproject.sh
2011-09-06 14:49:44 -07:00
owilliams
ea716a8f46 Fixed small typo in createproject.sh
Fixed small typos in build/createproject.sh comments: "sucess" -> "success"
2011-09-06 18:20:45 -03:00
Mathias Bynens
715957bffc Correct Expires header to application/x-font-ttf. Fixes #740. 2011-09-06 18:43:15 +03:00
Divya Manian
981e448b36 Merge pull request #733 from inxilpro/master
Added project.xml to build process
2011-09-05 07:02:03 -07:00
Divya Manian
439778a2be Updated the readme to remove duplicate reference to modernizr.load Fixes #737 2011-09-04 15:52:12 -07:00
Mathias Bynens
7b3c30d8c8 Merge pull request #736 from philipvonbargen/master
Added new version of jQuery (1.6.3)
2011-09-03 04:54:26 -07:00
Shi Chuan
70a836c34d added new console api methods to console.log protection 2011-09-03 14:02:43 +08:00
Shi Chuan
75ac1ea512 Merge pull request #735 from joeytrapp/master
Modify .esproj ignore rule.
2011-09-01 20:46:59 -07:00
Philip von Bargen
d07c233422 Added new version of jQuery 2011-09-01 22:08:37 +02:00
Paul Irish
bd72320946 Merge pull request #734 from Danmer/master
Set the file encoding for ant
2011-09-01 09:14:36 -07:00
Joey Trapp
2ba5f9d80d Added * to .esproj as Espresso saves the file as [Project Name].esproj. 2011-09-01 08:16:55 -05:00
Egor Kotlyarov
9b32ced2b4 build script: set the default file encoding for ant. Closes #729. 2011-09-01 10:39:19 +06:00
Chris Morrell
a6bc1d4e69 Added project.xml for custom build targets
Added a project.xml file which should be used for custom build targets
that are specific to your project, and updated build.xml to import that
file.
2011-08-31 17:45:04 -04:00
Divya Manian
2df9a9a863 Merge pull request #732 from Zearin/patch-2
Not 100% complete, but added lots of backticks to make files, paths, and
2011-08-29 13:05:23 -07:00
Tony
19dd8f8318 Not 100% complete, but added lots of backticks to make files, paths, and inline code easier to spot (and read!). 2011-08-29 22:04:00 -03:00
Mathias Bynens
4caa411f01 Switch back to the optimized asynchronous Google Analytics snippet.
Don’t set .async = true, since it only makes a difference in Firefox 3.6. See http://mathiasbynens.be/notes/async-analytics-snippet#async for details.

This reverts commit d9cc711ea1 and fixes #720.
2011-08-25 23:02:07 +02:00
Nicolas Gallagher
fccc4824cc Merge pull request #721 from callum85/patch-1
Move media query placeholders to follow immediately after the primary styles, and before the helper classes
2011-08-24 05:44:18 -07:00
callum85
ef3c095baf Moved media queries placeholder immediately after primary (mobile-first) styles... and before the non-semantic helper classes. 2011-08-25 00:22:08 +02:00
Rutger de Knijf
3f22747dfb Changed -rev target description and renamed to -intro 2011-08-23 10:11:56 +03:00
Paul Irish
ca028d751f Merge pull request #716 from rdeknijf/master
build.xml -rev target clarity
2011-08-22 13:24:37 -07:00
Divya Manian
97c7ae774a adding .esproj to gitignore. Fixes #709 2011-08-21 10:40:31 -07:00
Divya Manian
6727b542ac changing hash length to 7 from 40 2011-08-21 10:24:25 -07:00
Matthew Donoughe
ad423ae3fd add hash.length property to control hash lengths
re: issue gh-696
2011-08-21 16:39:00 +00:00
Paul Irish
e88011b49b closure compiler. renamed the jar. fixup of 3233fdeeec 2011-08-20 22:42:46 -07:00
Divya Manian
01f0a9f999 Adding * to scope zoom to only IE6,7. fixes #710 2011-08-20 20:08:52 -07:00
Divya Manian
d2223de26a Merge branch 'master' of https://github.com/roblarsen/html5-boilerplate into closurecompiler 2011-08-20 19:44:44 -07:00
Rob Larsen
8cbb3e7155 moved the two options (warning_level and compilation_level) into the properites files 2011-08-17 22:03:33 -04:00
Paul Irish
7467f9c041 script.js and style.css both retain their path prefix when being swapped out for the concatenated/minified versions.
by @darktable.
https://github.com/paulirish/html5-boilerplate/pull/705

fixes #705.

Squashed commit of the following:

commit 6a77f5ad7e
Author: calvin <calvin@darktable.com>
Date:   Tue Aug 16 21:12:10 2011 -0700

    adding file.root.script property to default.properties

    this allows people to rename script.js and not have to hack through
    build.xml to keep everything working.

commit 27011c0a1a
Author: calvin <calvin@darktable.com>
Date:   Tue Aug 16 20:51:48 2011 -0700

    revert to normal css and js paths

    had testing paths in the previous commit.

(and some other merge happiness)
2011-08-17 16:14:07 -07:00
Rob Larsen
3233fdeeec issue #658 switch to Closure Compiler for js minification 2011-08-17 12:42:24 -04:00
Paul Irish
2aabc1a276 Merge pull request #697 from nwtn/master
Typo in index.html
2011-08-16 12:22:21 -07:00
David Newton
c8b87abd01 Comment typo: "an manifest" -> "a manifest" 2011-08-16 15:14:10 -03:00
Divya Manian
94b065fb97 okay so it uses the css.sha to replace just style.css to sha.css now 2011-08-15 23:51:52 -07:00
Divya Manian
9fe23b3f82 removed css prefixers, doing this with regex now. Updated regex to not add another /css/ 2011-08-15 23:37:13 -07:00
Paul Irish
c4ef2f3810 build script: tweak script replacement regex for whitespace. Thank You @kevva !
@kevva wins the award for fastest bug report. 118 minutes after a bug was committed,
  he reported it in #html5. And then I was a dunce and couldn't identify the fix
  and so he provided that too.

Not a trivial bug either.

Best bug reporter ever. :D

--

This is a fix for 2fb6ac3369...bf52178981 (L2R62)
2011-08-15 11:52:53 -07:00
calvin
2fef4ad3ee concatenated style.css retains the prefix from the pre-concat style.css.
fixes #686
2011-08-15 10:43:58 -07:00
Paul Irish
20976f7af4 minor. comment wording cleanup. 2011-08-15 10:39:06 -07:00
Paul Irish
64561534a6 kill off misleading css concat statements. build script docs will more clearly illuminate how css concat/importing works.
fixes #687
2011-08-15 10:10:08 -07:00
Paul Irish
bf52178981 Merge pull request #685 from drublic/master
Prefixing CSS/JS resources automatically, idea from @drublic, technique from @darktable
2011-08-15 09:42:11 -07:00
drublic
e1702af5ee Make gae_css.dir property available to use prefixes for any build type
Thanks to @darktable for commit 67d427c1a9

Signed-off-by: drublic <hans@sa-designz.de>
2011-08-15 10:09:04 +02:00
drublic
014b6d4153 Revert "Add option to prefix CSS and JS references in buildscript"
This reverts commit b139b59797.

Signed-off-by: drublic <hans@sa-designz.de>
2011-08-15 10:05:47 +02:00
drublic
b139b59797 Add option to prefix CSS and JS references in buildscript
Syntax: add `(prefix: /file/to/dir/)` in comment before reference
Signed-off-by: drublic <hans@sa-designz.de>
2011-08-14 20:53:16 +02:00
drublic
6c1e80d6dd Whitespace in comments surrounding CSS and JS references
Add whitespace before closing tags of comments surrounding CSS and JS references to maintain consistency with other comments

Signed-off-by: drublic <hans@sa-designz.de>
2011-08-14 20:50:52 +02:00
Paul Irish
2fb6ac3369 Merge pull request #682 from anthracite/cleanup
whitespace .. global code cleanup.. random protip: I use `git gui blame filename.ext` because the git gui has a Blame Previous Commit feature so i can go back beyond the blame commit it found. Useful with commits like this.
2011-08-14 11:25:49 -07:00
Martin Balfanz
50daa07400 Added blank lines to script.js 2011-08-14 20:18:14 +02:00
Mathias Bynens
b44a12d78c Enable gzip compression for favicons. Closes #684. 2011-08-14 11:04:32 +03:00
Martin Balfanz
fa785e0ef0 global code cleanup
includes: - tab removal from html/css
          - fixing indention
          - removing unnecessary whitespaces
2011-08-13 16:19:01 +02:00
Nicolas Gallagher
c86f2b52c0 Remove excess space around radio and checkbox in IE8/9 2011-08-13 02:55:02 +01:00
Paul Irish
0062417c59 Merge pull request #681 from philipvonbargen/master
@import url() starting with // did break build process
2011-08-12 08:53:05 -07:00
philipvonbargen
98e4ca1edf @import urls in the CSS starting with "//" were breaking the build process 2011-08-12 17:31:31 +02:00
Mathias Bynens
21933ec1ee Simplify .gitattributes. Thanks, @jeffbyrnes! See 7f31896fd4 (commitcomment-525963) for more details. 2011-08-11 14:29:58 +03:00
Mathias Bynens
85d8cc0ac0 Check if mod_autoindex.c is available before disabling the Indexes option. Fixes #676. Thanks, @sstok! 2011-08-11 12:42:35 +03:00
Nicolas Gallagher
1311138f3e Update monospace font stack fix to work in Safari 4 2011-08-11 10:40:27 +01:00
Divya Manian
1b3690933e Merge pull request #671 from chendrix/master
Clarified the wording on the new Modernizr build with Respond.js
2011-08-10 15:32:45 -07:00
Christopher Hendrix
b87096669b Clarified wording on the custom Modernizr build containing Respond.js 2011-08-10 18:29:28 -04:00
Paul Irish
7344d57029 Merge pull request #669 from SlexAxton/master
Defer chromeframe too.
2011-08-10 12:17:32 -07:00
Alex Sexton
060315b591 Add the defer attribute to the CF scripts at the bottom. 2011-08-10 14:12:08 -05:00
Divya Manian
5f2b327595 Adding Gavrismo to contrib list 2011-08-10 10:30:43 -07:00
Paul Irish
1e79f7b7df update readme. :) 2011-08-10 00:17:59 -07:00
Paul Irish
c6dbb2892b appcache improvements. :) details below:
* reduce extra code via <isset>
* `manifest` becomes its own ant task now
* html files are populated into the manifest based on ant config
* add manifest attribute to the HTML tag via Ant. So only the config switch is neccessary
* appcache back to disabled by default. toggling it on in config/project.properties is all that's neccessary
2011-08-09 23:07:03 -07:00
Paul Irish
c996f0e685 manifest: js files now include path, correctly. manifest file now named manifest.appcache. 2011-08-09 22:09:45 -07:00
Paul Irish
f10f81a241 build script: manifest improvements (and others).. details:
manifest:
* use a manifest template from build/config/cache.appcache each time
* the only css we are dropping in is the style.css (SHA'd), no more
* we include all js/mylibs/bypass files and all js/libs/*.min.js files
* change default name of manifest to `cache.appcache` but im gonna change it to `manifest.appcache` next commit ;)
* state of repo temporarily includes a manifest but that will revert soon

other:
* rename libs-concat.js to mylibs-concat.js for logic's sake
* add @defer attribute to concated script
2011-08-09 21:59:47 -07:00
Paul Irish
00be05ad18 minor. whitespace in build script following manifest commit (with tabs! omg!) 2011-08-09 19:53:52 -07:00
Nicolas Gallagher
5fe1dda97c Make .hidden class more robust. Update a couple of helper class links to point to better and/or more up-to-date explanations. 2011-08-10 02:10:06 +02:00
calvin
113c98f849 excluding the mylibs directory was preventing minification/concatenation of libs. 2011-08-09 16:50:46 -07:00
Paul Irish
341992913b Merge pull request #652 from gmoulin/master
appcache manifest generation via Ant
2011-08-09 16:49:07 -07:00
Mathias Bynens
1c9145c9a7 Correct Modernizr reference in the test file. Fixes #662. Thanks @jaimie-van-santen! 2011-08-09 15:46:33 +03:00
Mathias Bynens
e13f5c4b37 Add a note saying php_flag expose_php Off should be moved to php.ini since it doesn’t work in .htaccess files. Closes #611. 2011-08-09 10:25:10 +03:00
Paul Irish
d9cc711ea1 google analytics now uses Modernizr.load/yepnope for great justice. fixes #542 2011-08-08 23:03:16 -07:00
Paul Irish
55a7fc2466 Merge pull request #646 from ngryman/master
generic rewrite rules (for virtual host context)
2011-08-08 22:52:06 -07:00
Paul Irish
99e140ded4 Merge pull request #659 from Zearin/patch-1
Mostly lots of <code> additions for consistency.  (I think it also
2011-08-08 08:34:37 -07:00
Tony
b77d30c2f0 Mostly lots of &lt;code&gt; additions for consistency. (I think it also enhances readability, so inline code snippets are obvious.) Few minor capitalization & typographical fixes. 2011-08-08 11:46:58 -03:00
Paul Irish
b191777977 @import inlining should skip anything starting with http.. fixes #657 2011-08-07 18:28:54 -07:00
Divya Manian
6241a72722 Fixing typo in .htaccess file 2011-08-07 18:23:52 -07:00
Paul Irish
2db692e752 build script. flexibility in @import syntax parsing. fixes #649 forreal forreal 2011-08-05 09:20:29 -07:00
Guillaume Moulin
6c5b7719a6 optionnal manifest declaration 2011-08-05 13:44:00 +02:00
Guillaume Moulin
a314d2a374 modifications for manifest awareness in build.xml
with variables in project.properties for handling manifest file name,
javascripts files names and stylesheets files names

the javascripts files will be replaced by the concatened and minified
version
idem for the stylesheets
2011-08-05 13:24:11 +02:00
Guillaume Moulin
a81061aa37 modifications for manifest awareness in build.xml
with variable in project.properties for handling manifest file name

the javascripts files replaced are those concatened and minified by the
build
idem for the stylesheets
2011-08-05 13:00:13 +02:00
Guillaume Moulin
0d4f6b5261 Merge remote-tracking branch 'upstream/master'
Conflicts resolved:
	build/build.xml
	index.html
2011-08-05 10:58:57 +02:00
Guillaume Moulin
a556e26cb5 changes for site.manifest awareness 2011-08-05 10:50:39 +02:00
Paul Irish
cde1dc4f5c build script. flexibility in @import syntax parsing. fixes #649 2011-08-04 17:13:23 -07:00
Paul Irish
601fbc59e4 build script. flexibility in @import syntax parsing. fixes #649 2011-08-04 16:41:53 -07:00
Paul Irish
28b1ca4b8c build script. slightly cleaner css comment style, because we can. credit: darktable, again. 2011-08-04 16:39:46 -07:00
Nicolas Gallagher
ce89a01bef Separate [hidden] from .hidden helper class. Slight tidy up of CSS comments and consistently use h5bp.com shorturl throughout the file 2011-08-03 10:44:29 +01:00
Nicolas Gallagher
7b95c57e2d Remove webkit-overflow-scrolling inserted after a merge. See #577 2011-08-03 09:34:55 +01:00
Nicolas Gallagher
44bc2bdbf2 Leave default webkit-tap-highlight-color in place. Modify vertical alignment of td. Add a:hover color. 2011-08-03 09:32:56 +01:00
Nicolas Gryman
00d8b84570 generic rewrite rules (working in virtual host context) 2011-08-02 18:12:28 +02:00
Paul Irish
458cd36309 build script. protect legacy stylesheets from being consumed and digested by the css-split task. thx darktable. 2011-08-01 23:43:52 -07:00
Paul Irish
586dc13ee3 build script. update @import regex for max compat. 2011-08-01 23:08:23 -07:00
Paul Irish
4238aed87d Merge branch 'css-split' 2011-08-01 22:49:13 -07:00
Paul Irish
a48bd3ebaf Merge branch 'css-split' of https://github.com/darktable/html5-boilerplate into css-split 2011-08-01 21:29:32 -07:00
calvin
19450d9d59 using ==|== syntax to mark export delimiters 2011-08-01 21:21:38 -07:00
calvin
7fca5a5adf using ==|== syntax to mark export delimiters 2011-08-01 21:20:59 -07:00
Paul Irish
7668263695 improved gzip detection for turtletappers. thx @bluesmoon and @marcelduran. fixes #624 2011-08-01 14:40:11 -07:00
Paul Irish
d15376de77 merge in latest darktable. 2011-08-01 13:20:59 -07:00
Mathias Bynens
413822acbc Update demo pages so they use the smaller viewport <meta>. 2011-08-01 15:03:18 +02:00
calvin
11158f1bc4 the css-split method was using @import syntax that isn't standard. 2011-07-31 22:50:25 -07:00
calvin
0b15ec7d6d now the "url" chunk of the @import is optional. 2011-07-31 22:29:19 -07:00
calvin
05d83fcfeb there was a rogue "url" in the replacement regexp. 2011-07-31 22:13:40 -07:00
Gavrisimo
53f28cf87d moved border rule to .ir ruleset 2011-08-01 11:53:58 +08:00
Gavrisimo
4c9e90e730 added small fix for buttons and inputs that have .ir class 2011-08-01 11:53:58 +08:00
Jonathan Fielding
c537194736 jQuery updated to 1.6.2 2011-08-01 11:53:58 +08:00
Rob Larsen
fd345072df Added a task to test for ant version and fail (with instructions) if it's below 1.8.2. 2011-08-01 11:53:57 +08:00
meleyal
51d121e79a fix formatting 2011-08-01 11:53:57 +08:00
meleyal
777f14fa93 remove redundant color rule 2011-08-01 11:53:57 +08:00
meleyal
0a7a6f82bf also use black for links when printing, refs #147 2011-08-01 11:53:57 +08:00
Robert Ros
2792309862 Use substring matching in gzip filter_module and re-enable gzip for some common MIME-types 2011-08-01 11:53:56 +08:00
Robert Ros
976fc0f9ba Workaround for broken regexes in mod_filter
More info: #549
Fixes: #441 #499 #535
2011-08-01 11:53:56 +08:00
darktable
aee2fa8f29 fixes issue where I was including the for task using a namespace 2011-07-31 20:41:05 -07:00
Paul Irish
73f6f66039 minor. buildscript whitespace. 2011-07-31 19:51:50 -07:00
Paul Irish
e7e087854b merged in darktable's css-split branch. 2011-07-31 19:05:13 -07:00
Paul Irish
b14b4a60d1 Normalize javascript mimetype to application/javascript. Reduces cruft. Thx @danbeam for the work. Fixes #485 2011-07-31 18:50:38 -07:00
Paul Irish
8b168ad3b1 Merge pull request #642 from roblarsen/master
two changes for issue  #615
2011-07-31 18:49:20 -07:00
Rob Larsen
f2f59b04ec added a quick example to the file.bypass.js explanation 2011-07-31 19:44:10 -04:00
Paul Irish
727ef92941 htmlcompressor up to 1.4.3 because he fixed #550, #641 for us. \o/ 2011-07-31 15:23:01 -07:00
Mathias Bynens
5c97f98709 Smaller viewport <meta> — 1 is the new 1.0. 2011-07-31 23:32:30 +03:00
Paul Irish
41246db22b build script: htmlcompressor preserves SSI comments by default. fixes #640, #503. 2011-07-31 12:06:15 -07:00
Rob Larsen
3611b4c4e0 issue 615 "files.bypass does not work." It was a case of unraveling where/when the scripts were getting copied over and changing the way, slightly, that the excluded file list was fed to the script. 2011-07-31 09:12:28 -04:00
Nicolas Gallagher
299291e6be Add defer where possible to demo page scripts. Ref #542 2011-07-31 11:26:32 +01:00
Nicolas Gallagher
0d1c066177 Update demo pages to use modernizr 2.0.6 custom build including respond.js 2011-07-31 11:01:32 +01:00
Paul Irish
ffb7b8e359 update to htmlcompressor 1.4.2. fixes #608 2011-07-30 20:11:42 -07:00
Paul Irish
401e66acb4 script defer added where possible. H5BP is now faster!! thx @beverloo. fixes #542 2011-07-30 20:05:07 -07:00
Paul Irish
e49793fdc9 upgrade modernizr to 2.0.6 custom build including respond.js. 2011-07-30 19:53:03 -07:00
Paul Irish
a36c13a732 update the (disabled) SSI for better windows compatibility. fixes #628. code from @aldomx. 2011-07-30 19:40:59 -07:00
Paul Irish
9a6433f92f Vary: User-Agent is no more. We send our X-UA-Compat to everyone, but only for html payloads.. fixes #414 2011-07-30 19:22:39 -07:00
Paul Irish
bd88d3e457 update htmlcompressor to 1.4.1 from 1.1. Outstanding issue upstream but tracked in #608 2011-07-30 19:21:29 -07:00
Paul Irish
58816dd249 golf down the size of @kirbysayshi's log() improvement. ref #498.
I steal log's apply method instead of reaching all the way into Function.prototype.apply.. timesaver and bytesaver. just really ugly.
And then a nasty ( omg ? ternary : action); as a statement. But hey.. sometimes you feel like a nut.

kirby, plz code review this. :p
tested in Chrome 14.
2011-07-30 17:32:47 -07:00
Paul Irish
8175a1c468 console.markTimeline() is now console.timeStamp(). http://webk.it/63317 2011-07-30 17:19:20 -07:00
Paul Irish
ebe10aef34 improve the console.log nerfing for ff3.6. thx @drewcovi. fixes #455 2011-07-30 17:19:20 -07:00
Paul Irish
e52f6af093 Merge pull request #498 from kirbysayshi/master
log() arguments are no longer wrapped in extraneous array
2011-07-30 17:19:04 -07:00
Nicolas Gallagher
559bc56768 Re-fix IE6/7 list-style:none problem. See #263 2011-07-30 15:56:26 +01:00
Mathias Bynens
78641b530f Change the short URL for more <head> tips to something that works in all browsers. Fixes #631. 2011-07-27 19:55:38 +03:00
Paul Irish
6fee66d751 more docs for php_flag html_errors Off. thx @leek. fixes #622 2011-07-23 19:25:54 -07:00
Shi Chuan
c23caaf1d8 #614 changed replace directory to intermediate 2011-07-24 01:24:03 +08:00
Paul Irish
b4229a4d49 Merge pull request #619 from Phize/patch/3
allow access from all domains for .ttc webfont.
2011-07-22 10:56:05 -07:00
Phize
3f3f95de4e allow access from all domains for .ttc webfont. 2011-07-23 02:08:21 +09:00
Phize
acdae81735 add settings for Atom. 2011-07-22 10:00:53 -07:00
Nicolas Gallagher
7f52ddf680 Reintroduce search input normalization. Avoids significant WebKit styling limitations. 2011-07-22 17:22:49 +01:00
Nicolas Gallagher
dc1604c697 Ensure IE6 applies styles for <audio>, <canvas>, and <video>; ensure modern browsers hide <audio> without controls 2011-07-20 20:38:37 +01:00
Nicolas Gallagher
d965db4c5e Add {background-color: transparent} to .ir helper class. Removes default background-color from elements like <button>. Ref #609 2011-07-20 14:56:51 +01:00
Nicolas Gallagher
f78016f555 Make HTML5 [hidden] attribute hide an element from screenreaders and browsers that support the attribute selector. Close #607 2011-07-20 14:27:48 +01:00
Mathias Bynens
c72a81c5e9 Use example.com instead of domain.com, as per RFC 2606. Fixes #613. 2011-07-20 02:03:51 -07:00
Mathias Bynens
639cb05ba0 Typo. Fixes #612. 2011-07-19 23:16:45 -07:00
Nicolas Gallagher
5416bcd103 Add {resize: vertical} to <textarea> 2011-07-16 11:46:46 +02:00
Divya Manian
37446e28af Merge pull request #599 from Gavrisimo/master
Fix buttons and inputs that have .ir class attached
2011-07-12 10:09:09 -07:00
Nicolas Gallagher
a709725b06 Set {overflow:auto} for <button> and <input> in <table> in IE6/7. Avoids numerous layout and whitespace issues that result from setting {overflow:visible} to fix the odd inner spacing of those form elements. 2011-07-12 14:00:11 +02:00
Nicolas Gallagher
d3dc77b211 Add link to CSS wiki in style.css. Close #575 2011-07-12 13:54:04 +02:00
Mathias Bynens
7db1acaeb5 Follow the H5BP coding style guidelines for quotes. http://h5bp.com/docs/#The-markup 2011-07-11 03:00:55 -07:00
Gavrisimo
29c7e128cd moved border rule to .ir ruleset 2011-07-09 21:32:23 +02:00
Gavrisimo
09a8c715cb added small fix for buttons and inputs that have .ir class 2011-07-09 20:53:16 +02:00
Divya Manian
536b6ace6b Merge pull request #595 from rros/master
Modify apache mod_deflate .htaccess triggers
2011-07-06 06:20:28 -07:00
Mathias Bynens
f4a43fd2e4 Merge pull request #596 from jonathan-fielding/master
jQuery Updated to 1.6.2
2011-07-06 04:17:30 -07:00
Jonathan Fielding
c80cc610e2 jQuery updated to 1.6.2 2011-07-06 12:15:11 +01:00
Robert Ros
fca04b1e3e Merge remote-tracking branch 'rmsr/master'
Conflicts:
	.htaccess
2011-07-06 00:48:08 +02:00
Divya Manian
e150d87944 updating csslint to latest version 2011-07-05 15:26:41 -07:00
Divya Manian
b131981d84 Now you can set images.bypass with a list of image files or folders within the img directory that you do not want to be optimized. Fixes #564 2011-07-04 13:56:44 -07:00
Divya Manian
d19dea0572 1. Added a bypass option that lets you bypass certain folders/files in mylibs dir. 2. Cleaned up the human error fix from yesterday to use if else conditions like rest of the targets. 3. Cleaned up usage of mylibs to refer to dir.js.mylibs everywhere 2011-07-04 12:54:51 -07:00
Divya Manian
f5e2524c96 Merge pull request #593 from roblarsen/master
Test for ant version to head off problems with ant < 1.8.2
2011-07-04 07:55:01 -07:00
Rob Larsen
3fb77e0cfa Added a task to test for ant version and fail (with instructions) if it's below 1.8.2. 2011-07-04 10:04:45 -04:00
Divya Manian
e3367bc021 removing concatinated css files from wherever they are linked to with link tag. Fixes #452 2011-07-04 01:42:37 -07:00
Divya Manian
e12930a242 removing unnecessary check on -clean for -invalid 2011-07-04 01:01:25 -07:00
Divya Manian
8e0864f509 with great trepidation I have tested this build conditions to make sure these values ., .., ./, ../, / for dir.publish do not result in a successful build. I have tested all the combinations. Fixes #393 2011-07-04 00:49:33 -07:00
Paul Irish
93f0e38c51 update chromeframe install to 1.0.3. thx @davidmurdoch. 2011-07-01 12:27:19 -04:00
Nicolas Gallagher
705493215e Merge pull request #586 from meleyal/print-styles
Use black for links when printing, refs #147
2011-07-01 09:13:48 -07:00
meleyal
02e749a3f4 fix formatting 2011-06-29 22:58:33 +02:00
meleyal
d9146777db remove redundant color rule 2011-06-29 22:52:19 +02:00
Paul Irish
f7da334d36 Merge pull request #589 from BrunoDeBarros/master
csslint without whitespace
2011-06-29 13:03:44 -07:00
Bruno De Barros
8628fef73e csslint
Does the same as https://github.com/paulirish/html5-boilerplate/pull/567 but without the whitespace, as per @paulirish's request.
2011-06-29 20:58:36 +01:00
meleyal
35872f2e58 also use black for links when printing, refs #147 2011-06-29 13:00:10 +02:00
Mike Almond
ddd7ae43a5 Updating TTF mimetype to fix Google Chrome warning 2011-06-28 20:46:08 -07:00
Divya Manian
954d45cbcb added vertical-align: middle to fix borders on image containers. Fixes #440 2011-06-28 20:29:49 -07:00
Paul Irish
f569ad9813 Merge pull request #585 from rros/master
Workaround for bug in mod_filter

Fixes #441. Fixes #499. Fixes #535.
Closes #549. (the grouping ticket)
Ref #576 (the similar PR)
2011-06-28 17:25:47 -07:00
Robert Ros
210fbe0947 Merge remote-tracking branch 'upstream/master' 2011-06-29 01:13:10 +02:00
Robert Ros
86581681eb Use substring matching in gzip filter_module and re-enable gzip for some common MIME-types 2011-06-29 01:12:12 +02:00
Paul Irish
26a391c60d Revert "Added native iOS inertia scrolling" Details below:
We had discussion here: fbfbbd5dad
and here: https://github.com/paulirish/html5-boilerplate/pull/577

And @irae's explanation helped clarify why this is a bad call as a default:
https://github.com/paulirish/html5-boilerplate/pull/577#issuecomment-1444977

Thanks everyone for weighing and sorry for jumping on the excitement train a bit too fast! :)

This reverts commit 14ba59535e.
Ref #577
2011-06-26 22:26:18 -07:00
darktable
b125225228 added css-split task to split a tagged css file into multiple files
added 'css-split' task to build.xml and changed style.css back to the main version, with "- h5bp-export: filename - " tags in it to allow automated splitting into root file with @imports and satellite files.
2011-06-26 13:15:14 -07:00
Nicolas Gallagher
b61671ccc6 Merge pull request #580 from thatcoolguy/master
Format svg ruleset the same way other rulesets are formatted
2011-06-26 09:43:17 -07:00
Frank
91f39213da changed svg formatting 2011-06-26 12:48:44 -03:00
darktable
036b1e5e4b more robust @import regexp. 2011-06-25 22:15:08 -07:00
darktable
401250356e swapped style.css for property name ${file.root.stylesheet}
swapped to property name to make the build process more flexible.
2011-06-25 20:08:14 -07:00
darktable
2d09367d64 another experimental method for concatenating css files
This build converts the @import statement in style.css to tags that are then swapped for the file contents.
It also converts the media types after the import to @media ... {} style tags.
2011-06-25 19:38:14 -07:00
darktable
0928889ddc new way to concat css files together
adding css/concat directory with the css files named in the order they should be included.
the build script then concats these files in alphabetical order and replaces their block with the concated file using the same method as the .js swap (looks for the surrounding comments).
2011-06-25 12:53:03 -07:00
Paul Irish
fbfbbd5dad Merge pull request #577 from joeybaker/master
Added native iOS inertia scrolling (avaliable in iOS5 beta2)
2011-06-25 12:28:32 -07:00
Joey Baker
14ba59535e Added native iOS inertia scrolling (avaliable in iOS5 beta2) 2011-06-25 12:11:28 -07:00
Robert Ros
6edd2cb9b2 Workaround for broken regexes in mod_filter
More info: #549
Fixes: #441 #499 #535
2011-06-25 11:55:11 +02:00
Mathias Bynens
5e26749118 Encourage people to send the X-UA-Compatible HTTP header instead of leaving it in the HTML, to avoid edge case issues. Fixes #378. 2011-06-24 12:00:32 -07:00
Paul Irish
b84c9aeb50 Merge pull request #573 from retlehs/master
protocol-relative URL for Chrome Frame install prompt
2011-06-23 22:39:52 -07:00
Ben Word
4c8e51a459 protocol-relative URL for the Chrome Frame install prompt 2011-06-23 23:08:35 -06:00
Paul Irish
8ace459e0e move chromeframe to bottom of page after the other scripts. also reference exact version # for higher expires headers. 2011-06-23 21:13:25 -07:00
Paul Irish
c03be7e137 Merge pull request #572 from adeelejaz/upstream
Prompt IE 6 users to install Chrome Frame. #495
2011-06-23 21:09:24 -07:00
Adeel Ejaz
bca1d30716 Prompt IE 6 users to install Chrome Frame. #495 2011-06-24 01:47:06 +01:00
Paul Irish
82c2125692 Merge pull request #570 from botskonet/master
very minor gitignore additions of textmate project folder, and older CVS folders
2011-06-23 09:20:48 -07:00
Mike Botsko
5572931889 adding back in lost sass_cache gitignore 2011-06-23 08:58:18 -07:00
Shi Chuan
b37d518d81 removed trailing slash redirects in htacess
a wiki page is created for people who want to use it: https://github.com/paulirish/html5-boilerplate/wiki/Proper-usage-of-trailing-slash-redirects
it is also under the Make it better section of the wiki https://github.com/paulirish/html5-boilerplate/wiki/Make-it-better
this has been discussed at many issues/tickets/mailinglist posts #493 #515
2011-06-23 22:57:34 +08:00
Paul Irish
d5d05a36cd if you type <input type=search> then you're getting a search input. ohmagawd. 2011-06-22 21:21:02 -07:00
Mike Botsko
94c63ee571 adding textmate project and CVS folders to gitignore 2011-06-22 15:21:35 -07:00
Nicolas Gallagher
b49ca17032 Add <svg> overflow fix for IE9. Group <img> and <svg> rules in an 'embedded content' section of CSS file. Add {cursor:pointer} to <label> element. 2011-06-21 18:53:11 +01:00
Nicolas Gallagher
6aba703c89 Add <img> and <svg> to elements.html 2011-06-21 18:49:34 +01:00
Nicolas Gallagher
73b878bf9e Merge branch 'master' of github.com:paulirish/html5-boilerplate 2011-06-21 00:36:34 +01:00
Nicolas Gallagher
ddaf66a515 Major: Now using css normalization instead of css reset + building up default styles
We're pulling in http://github.com/necolas/normalize.css/ developed by Nicolas Gallagher along with Jonathan Neal.

normalize.css retains useful browser defaults and includes several common fixes to improve cross-browser (desktop and mobile) styling consistency.

Lots of research has gone into normalize, verifying what are the default user agent styles provided by each browser. We can very specifically change only the ones we need to instead of the bulldozer approach.

Why this is great news:

* Who likes being so damn redudant and declaring: em, i { font-style: italic; }
* By using normalization instead of a reset + building up default styles, we use less styles and save bytes
* Less noise in your dev tools: when debugging, you don't have to trawl through every reset selector to reach the actual style that is causing the issue.
* More details here: http://necolas.github.com/normalize.css/

We're really happy to get user feedback on this, as we think style normalization is a better direction than resetting; and want to make sure you do too. :) Leave a comment here or in the Google Group: http://h5bp.com/group

Fixes #412
Fixes #500
Fixes #534
Closes #456

Links #566
2011-06-21 00:34:58 +01:00
Nicolas Gallagher
e9f342b91f Update HTML elements demo: reduce repetition, remove deprecated elements, add certain HTML5 elements, add more comprehensive collection of HTML5 input types, include different form markup styles, add form elements box-sizing test 2011-06-20 22:11:06 +01:00
Paul Irish
6d8a8ef805 Merge pull request #548 from darktable/master
minify css and js files that are not being concatenated and fix optipng reference.
2011-06-20 11:21:45 -07:00
Divya Manian
31025414e9 Merge pull request #568 from disusered/master
.htaccess comment normalization & ignore .sass-cache in Git
2011-06-20 09:58:41 -07:00
Carlos Rosquillas
4f2003b5fe Added SASS Cache to git exclusion list 2011-06-20 09:39:18 -07:00
Carlos Rosquillas
bfe9a84023 Modified htaccess for consistent capitalization and comment style 2011-06-20 09:35:34 -07:00
Nicolas Gallagher
929eeccc5f Add simpler escape for to demo html files 2011-06-19 23:42:14 +01:00
Paul Irish
2f370b8156 Merge pull request #565 from toddhgardner/patch-1
Added DOCTYPE so Eclipse and other IDE's do not complain about the lack o
2011-06-16 21:45:17 -07:00
toddhgardner
d97a2ff818 Added DOCTYPE so Eclipse and other IDE's do not complain about the lack of schema.
http://stackoverflow.com/questions/363768/disable-dtd-warning-for-ant-scripts-in-eclipse
2011-06-16 20:20:39 -07:00
Nicolas Gallagher
ff68f939b6 Merge branch 'master' of github.com:paulirish/html5-boilerplate 2011-06-15 23:12:45 +01:00
Nicolas Gallagher
1a54c57370 Remove unnecessary units from 0 values in box-shadow. Remove unnecessary h1-6 {font-weight:bold} declaration. Improve white-space consistency. 2011-06-15 23:12:01 +01:00
Mathias Bynens
0b5d68c0af Merge pull request #559 from rdeknijf/patch-1
typo
2011-06-14 08:31:06 -07:00
rdeknijf
bec3000690 typo 2011-06-14 08:25:26 -07:00
Nicolas Gallagher
bc1b720915 Switch to outline:0 for accesible focus treatment. Avoids Opera bug when combined with transitions. Also saves bytes. 2011-06-14 12:35:03 +01:00
Nicolas Gallagher
dab7d7ebc7 Merge pull request #557 from johnattebury/master
Correct comment typo
2011-06-12 03:11:10 -07:00
John Attebury
b4432895b5 typo 2011-06-12 00:32:35 -05:00
Mathias Bynens
7610e41dad Typo. 2011-06-08 11:29:16 -07:00
Mathias Bynens
b10c7c04c4 Simpler escape for </script>. See http://mths.be/etago for more information. 2011-06-07 13:32:25 -07:00
Paul Irish
83f3d6ab09 move tap-highlight to hang with the other hot pinks. 2011-06-06 19:17:47 -07:00
darktable
ef41c51637 updating windows optipng and jpegtran paths to include ${basedir} 2011-06-06 13:47:42 -07:00
darktable
a2c89c0964 removed duplicated block. 2011-06-06 10:18:15 -07:00
Calvin Rien
dc31d7c852 build doesn't fail in mylibs directory doesn't exist.
removed undefined property from css swap regexp.
2011-06-06 10:13:48 -07:00
Calvin Rien
e02dd35b51 minification affects all .css and .js files in /css and /js dirs,
not just the ones explicitly included in concatenation.

using a more flexible regexp to replace style.css in html files.
2011-06-06 10:00:20 -07:00
Audioname
452c2836b2 Merge branch 'master' of github.com:darktable/html5-boilerplate
Conflicts:
	build/build.xml
2011-06-06 09:49:13 -07:00
Audioname
2834081fac Merge https://github.com/paulirish/html5-boilerplate 2011-06-06 09:42:41 -07:00
Mathias Bynens
7f31896fd4 Add .gitattributes. 2011-06-06 08:51:25 +02:00
Divya Manian
9cba6fcae9 Merge pull request #547 from thatryan/patch-1
Removed comment stating closing media query comment was required for respond.js
2011-06-05 00:41:27 -07:00
Ryan
26463fe491 Removed comment stating closing media query comment was required for respond.js. 2011-06-05 00:39:04 -07:00
Mathias Bynens
0a3456758b Fix typo. 2011-06-04 06:06:25 -07:00
necolas
ab3abb63db Update Respond.js to improved, comment-free version. Remove the CSS comments that the old version of Respond required. 2011-06-02 18:48:21 +01:00
necolas
4504c11445 Update demo files to reference Modernizr 2.0 2011-06-02 18:44:29 +01:00
Mathias Bynens
695d2ca304 Encourage people to use a custom Modernizr build containing only the features they need for that particular project. 2011-06-02 01:43:38 -07:00
Mathias Bynens
7b37e95341 Merge pull request #543 from daylerees/master
Modernizr 2.0 Update.
2011-06-02 01:39:32 -07:00
Dayle Rees
7227e7fb27 Updated to Modernizr 2.0 Complete, Production minified. 2011-06-02 09:28:54 +01:00
darktable
fdbbc12871 merging from main 2011-05-31 20:48:42 -07:00
Paul Irish
bad4fb5288 build script: compress all images in subfolders, too. thx calvin rien. 2011-05-30 19:02:45 -07:00
darktable
d9f114c019 added gae.js_dir and gae.css_dir so that App Engine projects can have the correct directory names swapped in their templates.
added a second replace token statement so that "/css/style.css" gets swapped too.
2011-05-30 14:49:12 -07:00
darktable
5c93b03069 swapped "apply rm" for delete task. much faster.
change *.png and *.jpg to **/*.png and **/*.jpg so that optimize commands reach subdirectories.
2011-05-30 14:41:24 -07:00
Ryan Smith-Roberts
c7f763c966 mod_deflate trigger rules modifications
* Add gzip support for xhtml, rss, atom
* Move font & svg compression from FilesMatch to FilterProvider / AddOutputFilterByType
2011-05-28 13:04:07 -07:00
Paul Irish
c24b78462a Merge pull request #530 from brianblakely/patch-1
Issue 482: https://github.com/paulirish/html5-boilerplate/issues/482
2011-05-28 02:06:07 -07:00
brianblakely
3300a6847f Issue 482: https://github.com/paulirish/html5-boilerplate/issues/482 2011-05-27 22:09:28 -07:00
Audioname
347e0c0053 testing123 2011-05-26 15:20:47 -07:00
Audioname
1d0ec96931 Adding properties to project.properties so that
Google App Engine builds don't have "static"
prepended when swapping for minified versions.
2011-05-26 15:02:51 -07:00
Paul Irish
fdb8f6aced Merge pull request #527 from heff/master
Added additional mp4 extensions to MIME types
2011-05-26 11:41:52 -07:00
Steve Heffernan
a30e338dc5 Added m4a (Need it for IE9) and m4v (HandBrake default) MIME types. 2011-05-26 11:18:38 -07:00
Paul Irish
14608f44cf Merge pull request #421 from JoeMorgan/master
Added JSLint target to build script
2011-05-25 15:10:27 -07:00
necolas
cbbaaecc0e Add 'oldie' class to conditional <html> classnames. Fix #522 2011-05-24 20:53:51 +01:00
necolas
7f53f98ec7 Revert "Change our conditional comments around the HTML tag to use a single .oldie class."
This reverts commit e5e057e538.
2011-05-24 20:47:21 +01:00
Paul Irish
b4a91bda9f build script is compatible with php files now. it appears. fixes #392. thx robbyrice. 2011-05-20 14:13:23 -07:00
necolas
e5e057e538 Change our conditional comments around the HTML tag to use a single .oldie class.
http://mathiasbynens.be/notes/safe-css-hacks

We're doing this because that quadruple conditional comment <html> tag definition looks pretty scary and especially when combined with namespace augmenting stuff like Facebook's gross xmlns:fb="http://www.facebook.com/2008/fbml" bullshit.

We are trying to simplify the markup we use in H5BP and a combination of conditional classnames with IE-specific hacks would be much simpler than the markup bloat we currently have.

We'll target IE6 and IE7 specifically with attribute syntax hacks.
http://paulirish.com/2009/browser-specific-css-hacks/


    /* CLEAN NO HACKS */
    div { color: blue; }

    /* HACKS FOR IE */
    .oldie div {
      color: blue; /* IE 8 and below */
      *color: blue; /* IE 7 and below */
      _color: blue; /* IE 6 */
    }

    /* IE6, IE7 - star hack */
    .oldie div { *color: blue; }

    /* IE8 - winning hack */
    .oldie div { color: blue\0/; } /* must be last declaration in the selector's ruleset */

Using these attribute hacks by themselves does not change the selector specificity. If you've worked with a large, long-term codebase, you'll know managing your specificity wisely is critical. Also watch Nicole Sullivan's talks.
2011-05-20 01:32:42 +01:00
Divya Manian
362d0b78d3 Merge pull request #513 from barneycarroll/patch-1
Fix .ir fringe case failure when <br>s are used in the .ir text.
2011-05-19 10:53:22 -07:00
Barney Carroll
bb94ded9f3 Hard breaks in image-replaced text negate the negative text indent. This fix causes line breaks in image-replaced text not to be displayed, fixing the effect. 2011-05-19 08:53:00 -07:00
Shi Chuan
9ee01e94dc moved ETag removal configs closer 2011-05-19 15:10:34 +08:00
Paul Irish
91ff0b8fec Merge pull request #511 from gormus/patch-1
added Header unset ETag
2011-05-18 22:53:23 -07:00
Osman Gormus
1f94b05317 added Header unset ETag
In some servers setting "FileETag None" alone, is not enough. Removing header and setting it to None fixes the issue.
2011-05-18 22:45:11 -07:00
Paul Irish
648026d780 Tweaking our hot pink ::selection based on a suggestion from David Murdoch and research from Adam Diehm.
It is now #fe57a1, which is Festal (adj): pertaining to or befitting a feast, festival, holiday, or gala occasion.

Party!! Party in your webpage! With Festal!!!!

thx also to lexidecimal.com for putting a name to this damn thing and inspiring david to inspire others.
2011-05-18 12:09:51 -07:00
necolas
24f174de59 Fix incorrect paths to Modernizr and Respond in demo pages 2011-05-17 19:24:54 +01:00
necolas
1cec539712 Use minified CDN jQuery by default on demo pages 2011-05-17 19:24:08 +01:00
necolas
b6a8dec0e4 Further quote consistency changes 2011-05-17 19:23:11 +01:00
Paul Irish
0e1c7ba929 Use minified jQuery by default.
While I personally prefer developing with an unminified jQuery (as
it makes debugging easier) I understand that most people don't need that.

So the onus is now on more advanced developers to s/.min.js/.js/
Though they're safe with the build script which will switch the refs back to the min.

And everyone else will default to min'd js, regardless of if they use the
build script.

:)
2011-05-17 09:40:24 -07:00
Paul Irish
f467a7e84b minor whitespace. 2011-05-17 09:38:20 -07:00
Mathias Bynens
c5289aad2b Consistent quotes. Hat tip: @walker. 2011-05-17 09:20:08 -07:00
Paul Irish
4c3301b9cc Merge pull request #505 from jtokoph/master
Fixing broken link to wiki in the changelog
2011-05-16 14:04:23 -07:00
Jason Tokoph
e3d389a171 Fixed URL typo in the changelog 2011-05-16 13:36:59 -07:00
necolas
974d1e2d0b Merge branch 'master' of git://github.com/paulirish/html5-boilerplate 2011-05-15 19:25:58 +01:00
Paul Irish
3522122e31 Merge pull request #502 from sguolin/master
Build script compatibility with Netbeans
2011-05-15 10:59:41 -07:00
See Guo Lin
fb41ccd538 Improved build script compatibility with Netbeans IDE. 2011-05-15 19:15:23 +08:00
See Guo Lin
4bbbfc88de default.properties: added IDE generated files/folders to exclude from build script 2011-05-15 19:14:20 +08:00
See Guo Lin
0c9eec9b52 .gitignore: Filename case correction for Windows generated Thumb.db 2011-05-15 19:13:06 +08:00
necolas
5cad48ced5 Fix #374 2011-05-13 15:39:59 +01:00
necolas
8a3955dae6 Normalize <b> font-weight 2011-05-13 15:05:03 +01:00
necolas
59b993abe9 Update to jQuery 1.6.1 2011-05-13 15:04:11 +01:00
Shi Chuan
b0685726da fixes to pull requests 427 2011-05-13 19:54:50 +08:00
Drew Petersen
0e41abd9e2 formatting style correction 2011-05-12 13:02:27 -04:00
Drew Petersen
caab9d30bd don't wrap all args from log to console.log with array 2011-05-12 12:48:09 -04:00
Nicolas Gallagher
e10e3f04b4 Merge pull request #491 from jphustman/patch-3
typo line 41: buidling a development environment
2011-05-09 01:05:19 -07:00
Jeremey Hustman
98180a91f9 typo line 41: buidling a development environment 2011-05-08 17:50:23 -07:00
necolas
0e2062cb4a Add placeholder CSS MQs for mobile-first approach 2011-05-08 20:50:34 +01:00
necolas
7d792b6845 Add respond.js as part of shift to 'mobile first' approach 2011-05-08 20:42:41 +01:00
necolas
e65c1ad37f Remove icon links in demo files 2011-05-08 20:06:16 +01:00
Divya Manian
9c1188592a Editing the comment for adding touch icons 2011-05-08 11:29:52 -07:00
Divya Manian
1faa76a804 Merge pull request #490 from jamwil/touch-icons
Removing touch icon link tags and retaining only the comment.
2011-05-08 11:28:05 -07:00
James Williams
f4283547f8 Removed redundant icon links and cleaned up the comment 2011-05-08 10:30:16 -06:00
Mathias Bynens
2833b89914 Add Options +FollowSymlinks when RewriteEngine is used. Fixes #489. 2011-05-07 23:42:48 -07:00
James Williams
d284eac8fd Improved the comment. 2011-05-07 22:14:52 -06:00
James Williams
6a71a7e9d5 Added maximum touch-icon support as per http://mathiasbynens.be/notes/touch-icons#sizes 2011-05-07 21:58:28 -06:00
necolas
cf2ee8e826 Update demo tests file 2011-05-07 11:31:54 +01:00
necolas
ef83a0481e Update qunit test page to reference jQuery 1.6 2011-05-07 11:27:31 +01:00
necolas
758f2f4f4c Update elements.html template to match that of index.html 2011-05-07 11:13:37 +01:00
Nicolas Gallagher
e7089e8cf8 Merge pull request #484 from jsma/master
Removed reference to handheld.css
2011-05-05 15:36:58 -07:00
John-Scott Atlakson
8e36358c04 Removed reference to handheld.css now that this has been removed. 2011-05-05 15:32:48 -07:00
Divya Manian
496898500c Merge pull request #483 from jsma/master
Removed dd_belatedpng.js from index.html
2011-05-05 15:32:28 -07:00
John-Scott Atlakson
fe1d2a3f70 Removed dd_belatedpng.js from index.html now that the file has been removed from the project. 2011-05-05 15:24:58 -07:00
necolas
dbed4dacf7 Remove handheld.css and belatedpng fix 2011-05-05 19:04:35 +01:00
necolas
fd2a816d53 Change form element alignments; group and reduce repetition of form element selectors 2011-05-05 18:33:28 +01:00
necolas
a7361c1a13 Remove font:inherit from reset. Fix #451 2011-05-05 18:01:41 +01:00
Divya Manian
3180b3f3dd Merge pull request #439 from clemos/master
trailing slash redirections should be relative
2011-05-04 21:05:16 -07:00
slavic
1a398b3eaf some more security for php - turn off error display and turn on error logging 2011-05-05 11:17:03 +08:00
slavic
61557bbe09 some more security for php 2011-05-05 11:13:33 +08:00
Divya Manian
1d229e42d1 Merge pull request #480 from walker/master
jQuery 1.6 update
2011-05-04 19:39:02 -07:00
Mathias Bynens
d96d5b6c8b Merge pull request #481 from jsma/patch-1
Added Site Speed tracking for Google Analytics.
2011-05-04 12:52:24 -07:00
John-Scott Atlakson
7bc7e96d96 Added Site Speed tracking for Google Analytics.
See => http://www.google.com/support/analyticshelp/bin/answer.py?hl=en&answer=1205784&topic=1120718
2011-05-04 12:51:19 -07:00
Paul Irish
edd1da8572 Merge pull request #478 from Calvein/master.
Moved the ::selection declaration
2011-05-04 12:08:32 -07:00
walker
ffa8bc9438 Updated links for 1.6 2011-05-04 12:17:23 -04:00
walker
c1e3a7e6b4 jQuery 1.6 2011-05-04 11:42:06 -04:00
François Robichet
6ce2a0f9f9 You might tweak the ::selection's color too. 2011-05-04 02:11:53 -07:00
necolas
ac92ae7a5f Update micro clearfix method 2011-04-26 22:59:45 +01:00
Paul Irish
37462b1bcc Merged pull request #469 from leobetosouza/patch-1.
Allow blackberry to read vcards
2011-04-26 12:34:06 -07:00
leobetosouza
fc7d9e1ebb Allow blackberry to read vcards 2011-04-26 12:25:51 -07:00
Mathias Bynens
b2faa1fc3c Add img { max-width: 100%; } to print styles to prevent images from getting cut off.
Hat tip: http://twitter.com/dontcallmedom/status/40413256942235648
2011-04-25 13:18:46 -07:00
necolas
1b78ceb957 Add overflow:hidden to pseudo-elements for clearfix. Avoids edge case of space at top of body in Firefox. 2011-04-21 19:57:53 +01:00
necolas
9a9660b2f9 Tidied up link to clearfix explanation 2011-04-21 17:09:22 +01:00
necolas
5373835d17 Update clearfix to use 'micro' clearfix 2011-04-21 11:32:49 +01:00
Matthew Donoughe
7e5efcc23c change jpeg task so it doesn't run unnecessarily
on my computer, unlike the old warning said, jpegtran was being run even
if the image had not changed
2011-04-16 18:49:47 +00:00
Matthew Donoughe
a2274d1993 copy files last
This slightly simplifies copying because we don't have to exclude png,
jpeg, or html files from the copy stage.
2011-04-16 18:43:57 +00:00
Matthew Donoughe
a59a243eda dd_belatedpng should be dd_belatedpng.min
it comes preminified, and we don't need to minify it again

This also updates the html so that the script is not missing if the
unminified scripts are unavailable on the server

This commit requires a change to existing html files :/
2011-04-16 18:38:39 +00:00
Shi Chuan
c0d3d939d7 Merge remote branch 'danielfilho/master' 2011-04-16 14:54:44 +08:00
Patrick Hall
b62ca34b72 curly quotes hates us 2011-04-14 16:48:55 -07:00
Daniel Filho
5b0dd0f4df fixing the order of stylesheets on build.xml as suggested by @shichuan. Fixes #435 2011-04-14 16:37:03 -03:00
Divya Manian
6ee79bc4ba making nicolas comment less wordy 2011-04-14 12:20:55 -07:00
necolas
72bb744064 Group link styles. Group form styles. Simplify the way input, button, textarea normalisation is done 2011-04-15 03:03:34 +08:00
necolas
0e18366fc5 Add input and button padding fixes for IE and Firefox 2011-04-15 03:03:33 +08:00
AD7six
45cd0378d5 don't add the callee - unless you're going to use it 2011-04-15 01:14:28 +08:00
walker
24b0f14ca0 Added in jquery 1.5.2 2011-04-15 00:55:44 +08:00
Daniel Filho
0843a608eb Put the -strip-console.log right befor all js.* calls on build.xml 2011-04-13 19:07:55 -03:00
Clément
1cf9f7487f removed slash to allow relative redirections 2011-04-12 12:23:07 +02:00
necolas
d2acfe0654 Simplify the conditional comment containing code for IE 9+ and modern browsers 2011-04-09 23:58:31 +08:00
Matthew Donoughe
eab37feb45 fix the recursive concatination properly
don't minify scripts-concat and libs-concat and there won't be a
scripts-concat.min.js to include into the next scripts-concat.js
2011-04-09 05:17:43 +00:00
Matthew Donoughe
f1a8fbf649 don't include scripts-concat in scripts-concat
otherwise your scripts duplicate and pile up
2011-04-08 21:51:20 +00:00
Matthew Donoughe
043491dea5 fix imgcopy 2011-04-08 18:30:24 +00:00
Matthew Donoughe
b817d1758c work around OptiPNG #2671422
delete old optimized pngs because optipng does not support overwriting
2011-04-08 18:29:19 +00:00
Matthew Donoughe
a0ac99a4d9 optimize build process
Intermediate stages are stored in a new intermediate folder, and only
files that should be published are copied into the publish folder.

Files are not deleted at the beginning of every build, and files that
have already been processed will not be reprocessed unless the source
has changed.

Versioned files are referenced by a SHA-1 hash of the content rather
than a build number. This means that changing your HTML and rebuilding
will not cause your users to redownload the same CSS and Javascript, and
a reverted change may cause users to use a copy that was previously
downloaded. It may be better to use only part of the hash so the HTTP
request is shorter.

Cleaning must be done manually to delete unreferenced files, or you will
eventually fill your publish folder with unreferenced files. AFAIK this
is a very hard problem to solve properly with Ant because there's no
file dependency tree available to show which files are not products of
the current build. It's doable by creating a map from source to publish
and excluding those files while deleting everything from publish, but it
may be better to just delete the publish directory?

console.log statements are no longer commented out. The regular
expression responsible did not work properly if there were parenthesis
inside the console.log, and it put comments into the scripts that had
just been minimized, so they weren't really minimal anymore.
2011-04-07 23:10:28 +00:00
Matthew Donoughe
96d7b26406 change the source htaccess rather than updating it 2011-04-07 23:10:28 +00:00
Matthew Donoughe
c35755b8d6 try not to reoptimize the same images every time 2011-04-07 23:09:48 +00:00
Paul Irish
e3007f0b31 nerf the serverconfig manip by checking to make sure it exists. fixes #423 2011-04-07 13:38:30 -07:00
Joe Morgan
2d4ddfeca9 Added JSHint as separate target and added ability to configure options in the project.properites file 2011-04-05 11:48:26 -04:00
Joe Morgan
164dcab88b Added JSHint target (separate from JSLint, so users could call either without having to make edits to the properties file) 2011-04-05 10:53:51 -04:00
Joe Morgan
5ea8b6446b Added JSLint target to build script (runs independently on source JS, excludes *.min.js and libs/*.js files) 2011-04-05 09:15:48 -04:00
Joe Morgan
ce6878eeb4 added comment 2011-04-05 09:11:33 -04:00
Joe Morgan
7ef42605c2 added some globals for rhino functions 2011-04-05 09:09:18 -04:00
Joe Morgan
b736756a92 prettied up the JSLint code 2011-04-05 09:06:51 -04:00
Joe Morgan
3820568da4 added config options to jslint 2011-04-04 21:50:14 -04:00
Joe Morgan
ce7e249ae4 added jslint target 2011-04-04 21:40:49 -04:00
Paul Irish
8185bc313a Update htmlcompressor to 1.1 which uses the new yuicompressor for CSS. fixing a @media query bug (for inline style tags.) 2011-03-30 12:51:52 -07:00
Paul Irish
bb22ca66a8 Remove the cache-busting query parameters from the HTML. Details below:
In case you were wondering what ?v=2 was for.. read this:
http://html5boilerplate.com/docs/#Version-Control-with-Cachebusting

Query param revving is bad news:
http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/

Even though that warning is from 2008, I've confirmed with Souders (a few months ago)
that this is still a concern.

The build script automatically revs filenames for you, so this is taken care of.
If you need to manually cachebust, then feel free to add the query params yourself, but
be aware of the small consequences. It shouldn't be a regular thing. ;)
2011-03-30 08:26:45 -07:00
Mike Almond
5b6db9d0bd Disable directory browsing by default 2011-03-29 12:01:22 -07:00
Han Lin Yap
edf9c3fbdb httponly 2011-03-29 22:53:34 +08:00
Gregg Gajic
9b1a477b12 Fix typo in Changelog 2011-03-28 17:55:11 -05:00
Paul Irish
41c657a05a adjust attribution byline. 2011-03-26 16:54:40 -07:00
Samus_
b9341fe4ce protecting against git rev-parse silly behavior on unrecognized options 2011-03-25 23:25:50 -04:00
Samus_
91fa216839 protect commands from weird filenames 2011-03-25 22:55:25 -04:00
Paul Irish
e4edeff4fa Revert "Fixing input type="search" behaviour in Safari by John Lein http://diveintohtml5.org/forms.html thanks to MarcHaunschild and hoopyfrood fixes #396"
This reverts commit 4dc87b52c2.

Based on the conversation here:
https://github.com/paulirish/html5-boilerplate/commit/4dc87b52c2
2011-03-23 13:30:34 -07:00
Shi Chuan
4dc87b52c2 Fixing input type="search" behaviour in Safari by John Lein http://diveintohtml5.org/forms.html thanks to MarcHaunschild and hoopyfrood fixes #396 2011-03-24 00:33:24 +08:00
Shi Chuan
71880dee16 fixed missing letter t in properties files in build tool 2011-03-23 00:49:08 +08:00
Shi Chuan
5c9fa3a83d fixed typo styleshee to stylesheet in build default properties 2011-03-23 00:32:14 +08:00
alrra
19fec34e0d modified the 404 page (it can cause some problems in IE if the user decided to use the html5shiv: e.g.: http://i.imgur.com/iK5ad.png) 2011-03-22 21:49:55 +08:00
Paul Irish
50fb1a7870 update yuicompressor to 2.4.5. fixes media query minification issue.
Basically ...

@media screen and (max-width:980px){

was getting minified to

@media screen and(max-width:980px){

Which webkit was rejecting.. So.. now the updated yuicompressor leaves that space in place.
And all is well with the world.
<3z
2011-03-21 23:19:13 -07:00
Paul Irish
69039d03b9 build script: spruced up the echo messages to make it a little friendlier. 2011-03-20 18:47:13 -07:00
Paul Irish
2fedc604cc createproject shoudl also copy build and test folders. 2011-03-20 16:24:36 -07:00
Dmitry Gladkov
aa3068c8e0 fix createproject.sh directory copying 2011-03-20 15:54:37 -07:00
Paul Irish
7f73ae3d72 build script: go back to yuicompressor for CSS. php dependency is a little awkward. temporary goodbye to css @import inlining. :/ au revoir. 2011-03-20 10:23:53 -07:00
Paul Irish
94cb8195b7 build script: change search/replace to be a global task. 2011-03-20 10:20:27 -07:00
Divya Manian
5b4ddd3a58 updated read me with translators, contributors 2011-03-19 21:34:34 -07:00
Paul Irish
dc5379c0c9 delete build.properties. consider it vestigal. 2011-03-19 15:01:37 -07:00
Paul Irish
828141a41d build script: adjust images path in case folder structure is unique. 2011-03-19 15:01:36 -07:00
David Murdoch
d7d467e69e Replace single-quotes with double-quotes for consistency and to save a few extra bytes during GZIP/DEFLATE compression 2011-03-16 05:50:07 +08:00
jbueza
ff3ed8f402 Fixed demo elements page with whitespace fix. 2011-03-16 05:47:10 +08:00
Marcel Turi
caeb9138fc Description corrections for "Built-in filename-based cache busting" section. 2011-03-16 00:49:03 +08:00
Shi Chuan
17894ff685 added separate task prodcopy to handle buildkit and build with jpgtran 2011-03-08 01:23:23 +08:00
Paul Irish
a39f656d95 Revert " removing demo/ and readme temporarily to tag."
That was just temporary so i could tag the release.

This reverts commit f93c3a5b87.
2011-03-07 00:38:05 -08:00
Paul Irish
f93c3a5b87 h5bp 1.0rc - removing demo/ and readme temporarily to tag. 2011-03-06 23:57:06 -08:00
Paul Irish
6ac62b0846 build script. typo for folder. we werent excluding it from the publish. 2011-03-06 23:53:30 -08:00
Divya Manian
9f7b4b6091 updating links for dependencies in the build script 2011-03-06 23:53:08 -08:00
Paul Irish
28c06a9fb9 build script: css compressor update to handle absolute paths. thx corey for the fix. 2011-03-06 23:36:51 -08:00
Corey Ward
22333ab6e0 Update createproject script to include img/ instead of images/ 2011-03-07 00:15:38 +08:00
Divya Manian
2404601c72 updated woff mime-type in ExpiresByType rule in .htaccess. fixes #349 2011-03-05 21:14:13 -08:00
Paul Irish
56cefd41e4 rename /images/ to /img/. If you're upgrading to the new build script from the old one you'll have to update this path. 2011-03-05 20:53:28 -08:00
Paul Irish
67dfe6f47a build script. strip root favicon reference with replaceregexp instead, due to recent Ant change. 2011-03-05 20:53:28 -08:00
Divya Manian
339c2a64ea adding all the touch icons as per mathias exhaustive post. thnx mathias. fixes #302 2011-03-05 20:35:01 -08:00
Paul Irish
3090a50f72 minor fixes from mike almond's very useful 404 page upgrade. thx mike. 2011-03-05 19:55:52 -08:00
Paul Irish
cdfbffc199 Merge branch 'master' of https://github.com/mikealmond/html5-boilerplate into mikealmond-master 2011-03-05 19:34:50 -08:00
Paul Irish
e81479ba2f add filename revving mapped to real asset into htaccess. (disabled by default). thx marcel. fixes #355 2011-03-05 19:33:33 -08:00
Paul Irish
eb091e9f80 minor. syncing up demo/test files with latest changes. 2011-03-05 19:20:55 -08:00
Paul Irish
a638ad6f0c Revert "kill off plugins.js. "
This reverts commit 937c886b99.

Back due to popular demand. Fixes #357
2011-03-05 19:14:47 -08:00
Paul Irish
cada0b681a simpler local jQuery injection. thx cowboy, snover, mathias. this will break in XHTML, btw. fixes #359 2011-03-05 19:14:20 -08:00
Paul Irish
6a4a1e25b1 build script: handy .bat file for windows users. 2011-03-05 18:52:01 -08:00
Paul Irish
d9801c57e1 build script: enabling css @import inlining. fixing relative path issue.
Sorry Corey. There is probably a better way to do both things. :)
2011-03-05 18:28:16 -08:00
Paul Irish
10ee9c474c build script: update css-compressor to latest version. 2011-03-05 17:36:52 -08:00
Paul Irish
758b714783 build script: jpegtran now works everywhere! Waa hoo!
Also added a jpgcopy task that is used in "text" builds.

Also:
Quieted windows optipng output. More helpful echo's.
Updated to htmlcompressor-0.9.9.jar (1 very minor fix)

Short summary of the jpegtran workaround:
jpegtran doesnt like to overwrite files. It thinks they are already optimized.
So, we exclude JPGs from the copy task at the beginning,
then we copy them over while we chuck them through jpegtran.
Fun.

Fixes #338
2011-03-05 17:29:43 -08:00
Paul Irish
5ed87b9881 build script: jpegtran fun. default to stripping metadata. make the output WORK on mac. Oh and we actually want it to compress the files. :) 2011-03-05 15:59:57 -08:00
Paul Irish
37f0ac6fe3 build script: mega whitespace commit. huge thanks to craigbarnes. 2011-03-05 15:09:11 -08:00
Paul Irish
315586244c build script: quiet the optipng output 2011-03-05 14:49:49 -08:00
mikealmond
598a1c9633 Added Google's enhance 404 widget and some copy to help users understand the error more. 2011-03-02 07:38:54 -08:00
mikealmond
2ea8ab2bec Edited 404.html via GitHub 2011-03-02 07:36:50 -08:00
Paul Irish
b26e8bbd5b remove favicon reference from HTML only if favicon is in the domain root. 2011-03-02 00:07:31 -08:00
Samus_
df5722ee73 fix nonsensical copy process 2011-03-01 11:10:07 -08:00
Samus_
7d39c44830 removing noise from comment 2011-03-01 11:10:07 -08:00
Samus_
8ef7f55c4e fixing indentation 2011-03-01 11:10:07 -08:00
Samus_
b68861f48d adding check for cpio 2011-03-01 11:10:07 -08:00
Samus_
1f60eae914 adding loop to prevent empty $name 2011-03-01 11:10:07 -08:00
Samus_
11827ed646 shebang indicates bash usage, swithing to modern [[ keyword 2011-03-01 11:10:07 -08:00
Samus_
96c1155fa3 changed capitalization of var names (caps are for environment and/or bash reserved vars) 2011-03-01 11:10:07 -08:00
Samus_
5e25d85bcf fixing quotes 2011-03-01 11:10:06 -08:00
Shi Chuan
c13b80dd9c merged build.xml 2011-03-01 22:18:21 +08:00
Paul Irish
937c886b99 kill off plugins.js. Didn't seem to make sense for anyone but me. :) Comment on this commit if you lurve it and want it back. 2011-02-28 22:36:58 -08:00
Paul Irish
c1f064c0fe comprehensive protection against stray console.log()s. thx henrik. fixes #244 2011-02-28 22:33:03 -08:00
Paul Irish
a2c48898b5 more docs for trailing slash problem. 2011-02-28 22:30:12 -08:00
Paul Irish
18be2cf89a Merge branch 'master' of https://github.com/jingman/html5-boilerplate into jingman-master 2011-02-28 22:29:29 -08:00
Divya Manian
6875bb5be7 oops. using old jquery refs from an older pull req. fixed. 2011-02-28 22:05:42 -08:00
Divya Manian
8def09ffda making the world a positive place. thnx aristidesfl. fixes #332 2011-02-28 21:53:49 -08:00
Divya Manian
7a5705b57a window.log enhancement. thnx trevnorris. fixes #313 2011-02-28 21:32:49 -08:00
Divya Manian
2a2f1d6d8b moving lang back to html, also consistent spacing in css. fixes #286 2011-02-28 21:03:06 -08:00
Divya Manian
ce120b5902 killing whitespace: pre-line; does more harm than good. I trust webdevs who use bp to use pre with the care it deserves. fixes #294 2011-02-28 20:51:01 -08:00
Divya Manian
cf4726e7c2 fixing clearfix. fixes #340 2011-02-28 20:34:21 -08:00
Mathias Bynens
b0bb456eeb Update to jQuery 1.5.1. 2011-02-25 14:15:39 +01:00
Shi Chuan
d88d40dd20 fixed jpegtran issue 2011-02-23 23:46:40 +08:00
Andrew Le
e124b48fb0 Friendly error messages when optipng or jpegtrans not installed
On *nix's and Mac OS X display a helpful error message with instructions
and do not fail the build if either optipng or jpegtrans is not
installed or not in the execution path.
2011-02-22 16:49:37 -08:00
Paul Irish
792430393c build script: less verbose html comment required. 2011-02-22 14:12:20 -08:00
Shi Chuan
ccf437a7c2 added DIRECTORY_SEPARATOR 2011-02-23 01:54:50 +08:00
Paul Irish
ad3d734149 Merge branch 'master' of https://github.com/jonathan-fielding/html5-boilerplate into jonathan-fielding-master 2011-02-21 18:11:34 -06:00
Jonathan Fielding
964f1b44a3 Updated modernizr-1.6.min.js to modernizr-1.7.min.js 2011-02-21 20:36:45 +00:00
Jonathan Fielding
899e1a817e Updated modernizr-1.6.min.js to modernizr-1.7.min.js 2011-02-21 15:09:15 +00:00
Paul Irish
7df2afc560 minor. slight tweak to whitespace around the document structure. 2011-02-18 19:58:33 -08:00
Paul Irish
8d402bbe88 bring tweakable styles a little closer to the primary author styles, for usability. & note the protocol-relative URL in use. 2011-02-18 19:51:05 -08:00
kblomqvist
696a6126b7 Add missing ending div-tag in demopage 2011-02-16 18:27:44 +02:00
Shi Chuan
5e69fa5bc6 changed from strrpos to strpos 2011-02-16 21:59:44 +08:00
Paul Irish
6f2d5058f8 Merge branch 'master' of https://github.com/nicpottier/html5-boilerplate into nicpottier-master 2011-02-15 08:40:09 -08:00
Nic Pottier
5b4f0aa34b add a source directory option in the build config. This allows you to put your files in a different directory than the directory immediately above /build. Useful if you have a different layout than is assumed by boilerplate, for example, in Django 2011-02-15 17:28:53 +02:00
Shi Chuan
369e439a0f fixed the CSS Compressor issue 2011-02-15 22:29:35 +08:00
Divya Manian
9b29109f2c Merge branch 'master' of https://github.com/beverloo/html5-boilerplate into beverloo-master 2011-02-15 10:19:12 +01:00
Andrew Le
5bf99e4fef Clean up build targets so target dependencies are resolved correctly 2011-02-14 06:38:32 -08:00
Sam S
eebdfffecb minor alteration to ssi js include illustrate that path should be relative from location of the combined asset file 2011-02-13 16:31:32 -08:00
Sam S
779bc0283e komodo projects files ignore 2011-02-13 16:30:19 -08:00
Paul Irish
993440dd1b Merge branch 'mverbaar-master' 2011-02-12 21:26:26 -08:00
Paul Irish
07e5589e1d Merge branch 'master' of https://github.com/johnbacon/html5-boilerplate into johnbacon-master 2011-02-12 21:24:23 -08:00
Chris Hager
3c97e05b0c fix for build.xml to set version number on minified css filename 2011-02-12 19:07:22 -05:00
John Bacon
20f25adb70 Corrected misspelling. 2011-02-11 19:40:25 -05:00
John Bacon
1b6e010c1a Fixed spelling error in build.properties... 2011-02-11 19:30:02 -05:00
Paul Irish
3a41223daf note: you can add page handlers for 500, 403 errors easily. fixes #299 2011-02-11 14:11:23 -08:00
Paul Irish
2fe0b745d5 caching of .htc files. thx rich. fixes #303 2011-02-11 14:09:19 -08:00
Paul Irish
e75f023662 fix demo/tests script. fixes #304 2011-02-11 14:00:34 -08:00
Paul Irish
d9afd22990 killing superfluous punctuation. 2011-02-11 13:54:17 -08:00
Maarten Verbaarschot
ff29c10051 Standardize comment syntax and grammar. 2011-02-10 00:23:09 +08:00
Maarten Verbaarschot
0729f0abdb Merge branch 'master' of https://github.com/paulirish/html5-boilerplate 2011-02-09 14:07:03 +01:00
Shi Chuan
33139c8012 added default environment in project.properties 2011-02-08 23:48:31 +08:00
Maarten Verbaarschot
84161236ea Adjust Drupal code to Boilerplate code. 2011-02-07 21:14:42 +01:00
Maarten Verbaarschot
7588f53379 Add .focusable helper class that extends .visuallyhidden to allow the element to be focusable when navigated to via the keyboard. 2011-02-07 21:02:37 +01:00
Mathias Bynens
1733fc8acd Update to jQuery 1.5 now that ajax.googleapis.com finally hosts it as well. 2011-02-03 13:23:37 +01:00
Shi Chuan
8c9e80188a removed x in the buildkit prod/test that blocked execution 2011-02-02 17:38:11 +08:00
Mathias Bynens
de50e81376 Use the .appcache extension instead of .manifest, as per http://html5.org/r/5812. 2011-01-31 16:54:11 -08:00
Jake Ingman
70a1c04805 new RewriteCond simplified RewriteRule regex 2011-01-26 19:27:19 -08:00
Jake Ingman
7217a506e7 using better check for file /via paularmstrong 2011-01-26 19:16:38 -08:00
Jake Ingman
cebeb1f81b always add/remove trailing slashes on URLs
http://googlewebmastercentral.blogspot.com/2010/04/to-slash-or-not-to-slash.html
2011-01-26 11:30:14 -08:00
Peter Beverloo
dab3e71f99 Hello world from application/x-font-woff!
- P
2011-01-26 03:14:22 -08:00
Paul Irish
38d79ac945 adding humans.txt. see http://humanstxt.org for more info
fixes #289
2011-01-25 14:10:09 -08:00
ashnur
55495513b7 Bugfix. Header directive appeared without IfModule mod_headers.c causing Internal Server Error when mod_headers was not available. 2011-01-26 05:51:01 +08:00
Paul Irish
15b32829ca build script. fix up a few dependency breaks. Lesson learned: ant depends implies ORDER, not just dependency. 2011-01-23 21:12:07 -08:00
Paul Irish
78f4ec5517 htaccess: block access to .git and .svn folders. 2011-01-23 19:07:43 -08:00
Paul Irish
2496a8e8f1 whitespace formatting in style.css 2011-01-23 19:07:43 -08:00
Paul Irish
46a9bad46b fix incorrect closing tag. thx sammyk! fixes #287 2011-01-23 19:07:42 -08:00
Kenneth Nordahl
80d6d58306 Fixed a spelling error of a name in the thanks
Signed-off-by: Kenneth Nordahl <kenneth@nordahl.me>
2011-01-23 12:32:35 +08:00
Paul Irish
2cdb10c472 Using Corey Hart's css-compressor (php-based) script for our css-min. Stoyan's research has proved it to be the best.
http://twitter.com/#!/stoyanstefanov/status/29517474600
^ was tweeted after he did http://www.phpied.com/css-minifiers-comparison/

Also clarified the text in project.properties and killed off old Optipng files.
2011-01-22 18:37:35 -08:00
Paul Irish
eea85ed4cf build script upgrades the Expires headers for you. 2011-01-22 17:45:25 -08:00
Paul Irish
c50f6e0a7e DRY up htmlcompressor references. Detail on ignoring more files. Fixes #267 2011-01-22 17:02:13 -08:00
Paul Irish
98335ab5a0 build script. os x matches on osfamily=unix, in fact. kill redundant call. fixes #272 2011-01-22 16:57:30 -08:00
Paul Irish
71b308c30a Making the build script happier. Changes below:
1) Production build by default. (like previous version)
2) Main script gets minified correctly (a bug)
3) We were deleting the wrong files (whoops)
4) dir.js.main is now specified (and can be moved around)
5) Did I mention that spaces are always better than tabs because not even tabs people can agree on 2 vs 4 and this causes PROBLEMS gosh damn it. >:|
2011-01-22 16:43:02 -08:00
Paul Irish
3b9dd052fa update build script to account for latest changes. 2011-01-22 12:45:40 -08:00
Paul Irish
b32b3710e2 eradicating chrome console warning on WOFF font downloads. fixes #273 2011-01-20 12:59:36 -08:00
Paul Irish
16e9b7d61c move @lang attribute from HTML elem to BODY. fixes #286
thx davidmurdoch
2011-01-20 12:30:01 -08:00
Paul Irish
5d67f6499a updating htmlcompressor version to address some html minification errors. fixes #279 2011-01-20 12:28:42 -08:00
Divya Manian
d7ed897097 removed outline: 0 inline with Eric Meyer's new reset. 2011-01-19 13:41:34 -08:00
Divya Manian
e9d6b996ee removed the resetting of anchor links. 2011-01-19 13:34:25 -08:00
Divya Manian
31fb49c0fb space crunch 2011-01-19 12:47:45 -08:00
Paul Irish
044bd7c1e7 Applying list-style-image:none to nav ul in all browsers. (Not just IE6+7)
It is actually only neccessary to force the `none` in IE6+7, but for declarative
consistency we'll give it to everyone.

We've documented the little quirk on both the FAQ and Style wiki pages.

This is related to issue #263.

Testcase before: http://jsfiddle.net/9DtcX/2/ after: http://jsfiddle.net/9DtcX/3/
2011-01-19 12:33:22 -08:00
Divya Manian
c5f92fa2af added list-style-image: none to prevent IE7 and 6 from rendering list bg images for nav uls 2011-01-19 10:59:54 -08:00
Divya Manian
6da1bd8b43 Moved helper classes after primary styles to make sure they override author styles. Fixes #265 & #194 2011-01-19 09:23:15 -08:00
timemachine3030
c3175aacea check for mod_headers before calling RequestHeaders 2011-01-19 02:44:57 +08:00
Paul Irish
4971aa0ae0 servertokens doesnt work in .htaccess.. only httpd.conf. 2011-01-14 09:57:00 -08:00
Paul Irish
4b67ea5cab The order of <meta> tags, <title>, and charset has been documented more extensively now:
https://github.com/paulirish/html5-boilerplate/wiki/The-markup see The order of charset, meta tags, and <title>...

Because the boilerplate markup enforces the document structure,
we can intentionally place the charset above the title (and other content)
and avoid the XSS issues that caused the HTML5 spec to specify that
"charset must be in the first 512 bytes".

So even if you throw the xmlns:fb="http://www.facebook.com/2008/fbml" bullshit
into ALL the html tags, and the validator says your document is now invalid
because charset is after the first 512 bytes, we'll.. it's okay. You're still safe.
And so are the kittens.
2011-01-12 13:57:59 -08:00
Mathias Bynens
3c07677ab3 Fixed a typo in the asynchronous Google Analytics snippet and optimized the protocol check. 2011-01-07 13:49:52 +01:00
simshaun
db9da49bb3 Removed comment that seems to have been meant for a specific application. 2011-01-07 00:18:35 +08:00
Paul Irish
4ab1c3d327 ServerTokens Prod added to htaccess. thx alrra. 2011-01-05 14:52:42 -08:00
Paul Irish
e4183675f1 scrunch up the analytics snippet some more. it doesnt need to be so readable IMO 2011-01-05 14:52:42 -08:00
Divya Manian
e7ad33ce89 fixing conflicts 2011-01-03 15:30:03 -08:00
Divya Manian
1f4f4f41d7 Updated reset to latest updates to Eric Meyer's reset css. Removed camelcase from the classname visuallyhidden to be consistent with other classname formats 2011-01-03 15:25:31 -08:00
Paul Irish
342c27d1dc minor whitespace formatting in style.css 2011-01-03 15:19:40 -08:00
Paul Irish
5e3a844b1d removing YUI profiling. you probably weren't using it anyway. 2011-01-03 14:49:20 -08:00
Paul Irish
990e5bdcfb cleaning up what's in plugins.js. no more closure wrap, no more document.write whitelisting. 2011-01-03 14:49:19 -08:00
Paul Irish
9670091104 minor. filename rename. 2011-01-03 14:49:19 -08:00
Divya Manian
b12c895705 removed reset on the image in a table cell as it looks terrible with multiple lines. Browser defaults to baseline alignment for images which works better than top alignment. Fixes #259 2010-12-31 12:42:54 -08:00
Paul Irish
58490fe18c removing qunit's unit tests. no need to ship with them, really. 2010-12-18 20:00:16 -08:00
Divya Manian
2a49d6fb16 Merge branch 'master' of github.com:paulirish/html5-boilerplate 2010-12-16 10:29:22 -08:00
Divya Manian
4504b435c3 marking HTML5Doctor CSS Reset as Public Domain. WOOOHOO. 2010-12-16 10:28:47 -08:00
Paul Irish
37b5fec090 changing mimetype of .ico files to "image/x-icon". Details follow:
While Wikipedia would lead you to be believe one thing...
  http://en.wikipedia.org/wiki/ICO_(file_format)#MIME_type
... specifically that the vnd.microsoft.icon mime type is correct..

Well that's wrong.

It does work in the address bar, IE can also use an .ico file as an
<img src> in some cases. But it has to be served as image/x-icon
instead.

So thanks a lot wikipedia & jimmy wales' face. Psh.

Thanks a bunch Jonathan Neal. Fixes #219
2010-12-15 10:25:41 -08:00
Paul Irish
977c042164 going back to non-$.getScript'd DD_belatedPNG, due to some messy race conditions. fixes #245 2010-12-14 21:27:42 -08:00
Paul Irish
961ec5435d Moved all server configurations (except apache's .htaccess) over to a new repo:
https://github.com/paulirish/html5-boilerplate-server-configs

This should make things much cleaner for most people who download the boilerplate.
But we'll keep the .htaccess in here as it's the most common setup.
2010-12-14 21:15:51 -08:00
Paul Irish
e5f76306df force deflate for mangled accept-encoding headers 2010-12-13 22:18:42 -08:00
Paul Irish
63d8a6ca86 tightening up michael van laar's apache changes 2010-12-13 22:15:26 -08:00
Michael van Laar
94712defc8 .htaccess: some additional features and more structure for easier readability
I added some features to .htaccess (mostly taken from the MODx CMS sample .htaccess file) as well as a little more structure for easier readability.
I tested most of the features myself (as far as possible). The MODx CMS sample .htaccess is also well tested, so these things should work.

Signed-off-by: Michael van Laar <michael@van-laar.de>
2010-12-07 22:58:08 +01:00
Shi Chuan
c29ae78388 Merge branch 'master' of github.com:paulirish/html5-boilerplate 2010-12-07 04:16:27 +08:00
Shi Chuan
e7a7e5119e added Flash video mime types to IIS server 2010-12-07 04:09:10 +08:00
Shi Chuan
a623bb284e added Flash video mine types to IIS server 2010-12-07 00:41:01 +08:00
Craig Barnes
eefe8d9b5a Clean up cache expires directives in nginx.conf 2010-12-06 04:23:54 +08:00
Divya Manian
89055740c8 Merge branch 'master' of github.com:paulirish/html5-boilerplate 2010-12-05 08:34:30 -08:00
Divya Manian
02a5762d5f increased margin-left on ol, to allow for 2-digit list numbers. Thanks MichaelvanLaar. 2010-12-05 08:16:25 -08:00
Jeremy Balch
13a90524b8 added dreamweaver added files to .gitignore 2010-12-05 23:44:50 +08:00
S Anand
211da4667f Ensure that .htaccess works even if mod_headers is not installed 2010-12-05 23:41:19 +08:00
Divya Manian
2db11b3cde added a reset on filters for print styles. fixes #225 2010-12-01 08:43:47 -08:00
Divya Manian
a6885b5125 comment update 2010-12-01 07:23:10 -08:00
Divya Manian
797a347977 Merge branch 'master' of github.com:paulirish/html5-boilerplate 2010-12-01 07:21:22 -08:00
Divya Manian
7c81999b78 Updated sub/sup css to make them not be impacted by line-height. Fixes #227 2010-12-01 07:20:49 -08:00
Divya Manian
ae070b6802 Updated sub/sup css to make them not be impacted by line-height. Fixes #227 2010-12-01 07:17:07 -08:00
Divya Manian
876673322c implemented some of the formatting changes of craigbarnes. Fixes #220 2010-11-30 21:13:16 -08:00
Divya Manian
f7c3ea6e08 added role to div#main for elemental ARIA. Fixes #204 2010-11-30 20:10:38 -08:00
Divya Manian
07768edc28 Updated visuallyHidden rule to make sure it overrides all other declarations. Thanks Jonathan Neal. Fixes #194 2010-11-30 18:12:11 -08:00
Divya Manian
43c3719cd7 Added comment on tackling transparent PNGs for IE. Fixes #149 2010-11-30 16:10:16 -08:00
Divya Manian
96a53956eb cleaning up print link styles 2010-11-24 12:35:42 -08:00
Martin Hintzmann
093b5d5c97 Do not print hash-links. 2010-11-25 04:32:18 +08:00
Martin Hintzmann
5fc91dfe44 Do not print href-values for javascript links. 2010-11-25 04:32:01 +08:00
Craig Barnes
9cd21210f7 Changed nginx.conf to include SVG and font formats for gzipping 2010-11-23 22:22:26 +08:00
Paul Irish
732779413e Merge branch 'build' of https://github.com/AD7six/html5-boilerplate into AD7six-build 2010-11-19 17:56:50 +09:00
Paul Irish
146dd4fd76 removing disabled mod_pagespeed reference. it doesn't help us out much.
I would much rather promote usage the build script rather than mod_pagespeed. I didn't find anything in there that was particularly useful for us..

i wrote more about it here: http://groups.google.com/group/html5boilerplate/browse_thread/thread/4c832ffcef0da433
2010-11-19 17:46:42 +09:00
Paul Irish
822709f4f6 thumbS.db. lol. thx rizkysyazuli 2010-11-19 17:42:57 +09:00
Paul Irish
8f1245d027 clean up new async DD_belated call. 2010-11-19 17:37:54 +09:00
Jaime Bueza
c956187004 Fixed modernizr path issue. It was 404ing because it didn't have 'libs' 2010-11-19 00:14:33 -08:00
Jaime Bueza
9c9089879c Merge branch 'master' of https://github.com/paulirish/html5-boilerplate 2010-11-19 00:13:20 -08:00
Jaime Bueza
11aec5b373 Updated jQuery 1.4.2 to 1.4.4 in all occurrences of the project. 2010-11-19 00:11:26 -08:00
Paul Irish
379d9233b1 Merge branch 'master' of github.com:paulirish/html5-boilerplate 2010-11-19 16:31:45 +09:00
Paul Irish
e863583cae update css reset version to what we've been using. 2010-11-19 16:31:34 +09:00
Rob Larsen
773e064e45 cleaning up that mark of the web commit. 2010-11-19 00:41:32 -05:00
Jaime Bueza
bea990b340 Removed test 32bit png from #main as I was testing whether dd_belated png could work through $.getScript(). 2010-11-18 20:56:15 -08:00
Rob Larsen
df1e4b833b oops, forgot the jar 2010-11-18 23:30:49 -05:00
Rob Larsen
9ac07e0e42 Moving the following changes into git
"Dave Kirk just added a bunch of stuff but he's not too sharp on Git so i have it in a zip here....

You can download the build directory from http://dl.dropbox.com/u/9273778/build.zip

    You can now add multiple stylesheets to the project (defined in the project.properties file) and they will be concatenated into 1 file, with any default stylesheets defined in the default.properties file being added at the end.

    Adding new 'pages' (html, php, etc) is handled in the same way and the script should iterate through any files listed here and update the css / javascript references as per the original script

    I have also added the ability to define 'environments' for the build process as this fits in with the way I work. The original targets still exist, and run the same functions, however each target now has a prod, test and dev environment too. This has come at a as it requires using the ant-contrib library and due to the way Ant works you can no longer use the depends model, and the sub targets have to be called with antcall.

Here is how the environments work:

    * dev (default) - Increases build number, cleans and copies the build and optimises any images if the target originally did
    * test - Runs everything that the original target did, however it does not strip the console.log or profiling parts
    * prod - Runs everything the original target did

    To run it you simply use ant <target> -Denv=<environment>

ant build -Denv=prod

    If you don't provide the env variable it will use the development environment, but that would be pretty easy to change to run another environment as default.

    Like I say, it could probably still be improved no end but it is getting to the limits of Ant without writing a java library with extra tasks, which I may look at in the future.."
2010-11-18 23:25:11 -05:00
Divya Manian
decb4b5591 moved the documentation below the meta elements 2010-11-17 07:08:24 -08:00
Divya Manian
850e08efd1 adding more documentation to why charset and X-UA-Compatible meta tags are before the title element 2010-11-17 06:57:24 -08:00
Jaime Bueza
ea80fce0c1 added test image to see if ie6 actually apply transparency to a 24-bit ie logo 2010-11-16 05:02:31 -08:00
Jaime Bueza
d7522e937c added test image to see if ie6 actually apply transparency to a 24-bit ie logo 2010-11-16 05:01:07 -08:00
Jaime Bueza
f19e32e00b Implement async load for dd_belated 2010-11-16 01:56:00 -08:00
Divya Manian
a54714fd0b fixing the filter module to reflect only html, txt, css, js, json, xml, htc 2010-11-11 06:35:49 -08:00
Craig Barnes
4d65b4dcf2 Fixed regression where EOT fonts had been excluded from DEFLATE compression 2010-11-11 21:29:59 +08:00
Divya Manian
5fb5af9fd2 removed rss/atom & MS formats not necessary for generic use 2010-11-10 19:13:10 -08:00
Divya Manian
473af90bdb updated .htaccess regex for filter_module thanks to unwiredbrain 2010-11-10 18:47:20 -08:00
Daniel Schildt
84774e88ae Fixed small typo from README.markdown
URL had extra space character that caused it to point to wrong location.
2010-11-10 00:23:56 +02:00
AD7six
724e24e1b3 typo 2010-11-07 01:42:23 +08:00
AD7six
0d51c7a4e2 ignore more files and folders
add ignores for most common editors so that swap files don't show up as
untracked files.
2010-11-07 01:42:04 +08:00
Craig Barnes
170b0da912 Add note and link regarding best practices for Apache config 2010-11-07 01:25:24 +08:00
Divya Manian
55daf5a0d5 removed \b as per unwiredbrain's latest comment 2010-11-06 09:53:44 -07:00
Divya Manian
9bae730ec3 Merge branch 'master' of github.com:paulirish/html5-boilerplate 2010-11-06 09:52:18 -07:00
Divya Manian
45cb5a9aef black color prints faster. Fixes #147 2010-11-06 09:49:21 -07:00
Adeel Ejaz
168d2eb7e0 Use mod_filter for compression, with fallback to AddOutputFilterByType directive for legacy versions 2010-11-07 00:11:40 +08:00
Divya Manian
81179481bc reverting comments about double scrollbar as it has nothing to do with boilerplate styles 2010-11-06 09:10:45 -07:00
Divya Manian
a0bbe45a51 added input type=image based on Ivannikolic's suggestion 2010-11-06 07:44:12 -07:00
Divya Manian
af71023adc adding double quotes to all attribute selectors, fixes #174 2010-11-06 07:41:28 -07:00
Divya Manian
9520ab8296 Removed IE9 conditional on html file, added comment to style.css for Opera. Fixes #142, #183 2010-11-06 07:39:00 -07:00
Shi Chuan
fea0fdd547 added Apache mod_pagespeed developed by Google 2010-11-06 18:21:16 +08:00
Alex Dunae
72f5b495c0 Append instead of setting Cache-Control:public header so it doesn't get clobbered by ExpiresByType 2010-11-04 02:01:06 +08:00
AD7six
f6c8c0ab33 exclude config files from build process
exclude config files from being copied to the publish folder
2010-10-31 23:53:42 +01:00
Manuel Strehl
ed8d1fad8a print styles: additional info only if present 2010-10-29 22:27:12 +08:00
Paul Irish
e3db0c0c57 .gitignore - dont ignore contents of empty folders. fixes #160 2010-10-28 22:21:19 -07:00
Paul Irish
45e892ff8c nginx already gzips text/html. we can avoid a warning. fixes #153 2010-10-28 22:15:00 -07:00
Paul Irish
252d117fa7 nginx config expires bugfix. fixes #154 2010-10-28 22:13:49 -07:00
Paul Irish
c4c638f7d7 Merge branch 'master' of github.com:paulirish/html5-boilerplate 2010-10-28 18:51:45 -07:00
Paul Irish
b57c5c8620 minor. htaccess comment 2010-10-28 18:47:25 -07:00
Dustin Whittle
3d95cfa01e added plugin/extension mime types for safari, chrome, firefox 2010-10-29 09:37:43 +08:00
Paul Irish
6794dc3c10 adding a bit mroe around the commented out CORS 2010-10-28 14:46:49 -07:00
Paul Irish
3f3d6f4ae9 Merge branch 'master' of github.com:paulirish/html5-boilerplate 2010-10-28 14:35:31 -07:00
Rob Larsen
71df119772 Merged with 0.95 master
Plenty of goodness from master. Want to try out the new smushit command line tool, so I need to be up to date on my branch.
2010-10-28 13:37:11 -04:00
Paul Irish
d96229ca17 minor. credits update 2010-10-27 10:47:45 -07:00
Divya Manian
dc6978a8dc formatting comments on .htaccess 2010-10-27 09:24:34 -07:00
Ben Truyman
e2c718cc0f According to RFC 5334 ( http://tools.ietf.org/html/rfc5334 ), the 'ogg'
extension is reserved for Ogg audio, while Ogg video is 'ogv'. 'oga' is also
acceptable for Ogg audio. I've updated the .htaccess and mime.types
files to reflect this.
2010-10-28 00:18:03 +08:00
Ben Truyman
1754717e5b Added nginx mime.types config file. The default that ships with nginx
misses several "newer" MIME types such as oga/g/v, webm/p, mp4, fonts,
etc. This file contains all of the MIME type additions made in the
.htaccess file.
2010-10-28 00:17:43 +08:00
AD7six
7b96c314bd initial commit of a lighttpd config file
intended to be equivalent in functionality to the apache and nginx
config files
2010-10-27 23:58:20 +08:00
Paul Irish
f19dab3f9c idea added to gitignore for IDE from jetbrains called Webstorm (or WebIDE). 2010-10-26 11:18:14 -07:00
Shi Chuan
637d25b16d Merge github.com:paulirish/html5-boilerplate 2010-10-27 01:03:40 +08:00
Shi Chuan
7226d7e6ce filter Windows image thumb and .hg files from .gitignore 2010-10-27 01:01:41 +08:00
rwldrn
373dd13bb0 Fixing incorrect path in first run instructions 2010-10-27 01:01:19 +08:00
Paul Irish
c59f163cd5 readme update for credits and changelog 2010-10-26 09:38:39 -07:00
Divya Manian
e90971b6bb updated Readme with Sirupsen 2010-10-25 22:47:14 -07:00
Divya Manian
73df984047 added sirupsen to contributors list 2010-10-25 22:45:50 -07:00
Paul Irish
fbc29b3184 Update Modernizr to v1.6 2010-10-25 22:21:28 -07:00
Paul Irish
b1ab6fedac remove AIR app for now. will add back soon when its updated 2010-10-25 22:16:36 -07:00
Paul Irish
231c448384 update readme with highlights. 2010-10-25 22:15:27 -07:00
Paul Irish
c873907cfa DRY up the build script a little more. 2010-10-25 22:15:04 -07:00
Divya Manian
f0e4dbeaf7 Merge branch 'master' of github.com:paulirish/html5-boilerplate 2010-10-25 12:35:04 -07:00
Divya Manian
c37eaaa9b0 adding mylibs folder for build script to not squeak 2010-10-25 12:34:49 -07:00
Shi Chuan
1cd1a2507d added version auto update 2010-10-26 00:18:14 +08:00
Paul Irish
bc08925c1d update demo files to use latest boilerplate markup. 2010-10-24 13:13:20 -07:00
Paul Irish
2571f188e3 optimize all pngs in the project. why not? 2010-10-23 22:56:27 -07:00
Paul Irish
72c0e59671 dont remove too many js files in build.. might be needless deletions. 2010-10-23 22:30:26 -07:00
Paul Irish
90ef7c944b optipng can ignore gitignore. :) 2010-10-23 22:19:36 -07:00
Paul Irish
8694236447 remove any versioning query args in the build script. 2010-10-23 22:15:17 -07:00
Paul Irish
42420bb93a docs on how to use html comments that beat the minifier. 2010-10-23 21:45:30 -07:00
Paul Irish
5be6f1f3b1 ico serving, webp, and other bits. thx iszak 2010-10-23 21:43:20 -07:00
Paul Irish
9b79047a00 clear images folder. gitignore needed to maintain empty folder. 2010-10-23 19:38:42 -07:00
Paul Irish
a63e92273f createproject.sh fixes to clean up after itself and now live in the build folder. doesnt need sudo. 2010-10-23 19:21:35 -07:00
Paul Irish
985cdfa107 js/helpers ==> js/libs (These files ship with boilerplate and are not concat'd)
js/libs    ==> js/mylibs (These are your own library code. They are concat'd)
2010-10-23 19:05:49 -07:00
Paul Irish
1a37db2d2b console.logs are killed pre-minification. 2010-10-23 19:01:13 -07:00
Paul Irish
7f0bb87d7a build script refactor. much cleaner js build. 2010-10-23 18:45:34 -07:00
Paul Irish
ac10328814 build refactor.. minify first. only concat .min.js files 2010-10-23 18:23:30 -07:00
Paul Irish
40f0056971 Merge branch 'master' of github.com:paulirish/html5-boilerplate 2010-10-23 17:16:54 -07:00
Paul Irish
8f5642f76b build script: lots of comments.. killing some unncessary tasks.. everything is almost all in order but not yet. 2010-10-23 17:16:44 -07:00
Paul Irish
22b8ab5215 use the unminified jQuery in dev because the build script fixes that for us. 2010-10-23 17:16:04 -07:00
Divya Manian
49e3ec0f6e fixing clearfix, was missing a vital clear:both 2010-10-23 16:41:12 -07:00
Paul Irish
2acb0c81fd test suite cleanup. happy toggle links. 2010-10-23 14:39:55 -07:00
Paul Irish
107e463934 Revert "edited some styles and moved boilerplate css nav to top"
I liked those buttons... :(

This reverts commit a991b1c2b0.
2010-10-23 14:34:28 -07:00
Paul Irish
a105038907 brand new test suite to demonstrate the consistency in action. thx Shi Chuan! 2010-10-23 14:31:39 -07:00
Paul Irish
8bc38becb6 Merge branch 'master' of github.com:paulirish/html5-boilerplate 2010-10-23 14:25:23 -07:00
Paul Irish
88ae83698a script locations changed up a little bit. 2010-10-23 14:24:03 -07:00
Paul Irish
aae80dc83c move primary scripts out of main subfolder. 2010-10-23 14:21:34 -07:00
Paul Irish
a9e055cf38 changed viewport meta to comma to avoid webkit being so damn bitchy.
based on convo from 7a33f72819
thx david murdoch!
2010-10-23 14:17:58 -07:00
Paul Irish
bc8ac592ee media queries deliberately placed after primary styles as they do not increase selector specificity. 2010-10-23 14:11:51 -07:00
Paul Irish
10d0ea87a7 byline for credit in the style.css 2010-10-23 13:56:39 -07:00
Paul Irish
c3fea3d385 markup whitespace and comment cleanup. 2010-10-23 13:50:15 -07:00
Divya Manian
9329282b42 added margin: 0 for nav ul and nav lis. Fixes #95 2010-10-23 13:27:50 -07:00
Paul Irish
9312c89f72 .gitignore tweaks. fixes #138 2010-10-23 13:15:56 -07:00
Paul Irish
ae5b9e5935 AIR installer app to create new projects. Done by Shi Chuan. Fixes #109 2010-10-23 13:14:09 -07:00
Paul Irish
1259e6e686 update createproject.sh based on rwaldrons commits. fixes #130 2010-10-23 13:06:54 -07:00
Paul Irish
aa1a03d135 build script. woo aah 2010-10-23 12:45:27 -07:00
Paul Irish
1939649ef7 move license in readme for better linkability 2010-10-23 12:30:06 -07:00
Paul Irish
09f5134651 readme update with 0.9.5 changelog 2010-10-23 12:27:19 -07:00
Paul Irish
73489ab49f added some extra wording to crossdomain.xml 2010-10-23 12:08:08 -07:00
Paul Irish
7914e53a6a js should be gzipped under a few different mimetypes. boilerplate doesnt take a stance on the correct mimetype for js, yet.
fixes #139
2010-10-23 09:31:27 -07:00
Sirupsen
24b3781738 Improved comments in the Nginx config regarding in the workers/events
Documentation primarily found at nginx.org:
http://wiki.nginx.org/HttpMainModule
http://wiki.nginx.org/HttpEventsModule

accept_mutex at:
http://stackoverflow.com/questions/1293652/accept-with-sockets-shared-between-multiple-processes-based-on-apache-preforki
2010-10-21 20:35:16 +02:00
Sirupsen
8f4a2982e9 Improved the Nginx configuration
Stole some of the comments and configurations found in the example
Nginx configuration file shipped with Unicorn. http://unicorn.bogomips.org/
2010-10-21 16:08:51 +02:00
Divya Manian
2502c9ff75 editing comment to be grammatically correct 2010-10-20 21:31:41 -07:00
Divya Manian
57ace15674 Fixed Clearfix to prevent margin-collapsing. Fixes #126. Thanks Ivannikolic! 2010-10-20 21:29:03 -07:00
Paul Irish
a1bb78d83c Merge branch 'master' of github.com:paulirish/html5-boilerplate 2010-10-19 15:36:16 -04:00
Paul Irish
8194797659 crx support for chrome extensions, Chrome Web Store apps 2010-10-19 15:35:55 -04:00
Rick Waldron
a576b24268 Request For Comment release: createproject.sh; command line tool to clone html5-boilerplate into new project directories, keeps your repo clone safe from YOU 2010-10-14 13:19:34 +08:00
Paul Neave
b87d0fbddf Updated crossdomain.xml file to so the most restrictive policy is the default, with an option to have a more liberal policy file (commented out). Also updated the doctype to the most recent version. 2010-10-13 02:54:21 -07:00
Paul Irish
afaf14304e protocol independent absolute path for cdn jquery. better when page is on SSL 2010-10-10 00:33:55 +02:00
Paul Irish
4e12ba48c2 Merge branch 'master' of github.com:paulirish/html5-boilerplate 2010-10-05 18:01:25 -04:00
Irakli
3faa71c1a7 changed one of the h3s to be h2, so h2s can be tested as well 2010-10-06 06:00:24 +08:00
Paul Irish
e72efceb50 improve jquery fallback codeo to protect against edge case IE bug. fixes #101 2010-10-05 17:58:21 -04:00
grigio
e15dd09c30 fixed unclosed comment 2010-10-01 03:09:10 +08:00
Paul Irish
83cbe16c59 default.props indentation (yay tabs) and inline docs 2010-09-30 13:16:39 -04:00
Paul Irish
821f848246 remove profiling js in published folder 2010-09-30 13:05:24 -04:00
Paul Irish
ac77f5306c move modernizr into helpers 2010-09-30 13:01:54 -04:00
Paul Irish
abd9fa2f27 normalize all min files to .min.js for consistency and to fix a weird bug 2010-09-30 13:00:07 -04:00
Paul Irish
bfdcb52047 reorg js files based on mikko's new structure 2010-09-30 12:38:14 -04:00
Yann Mainier
50f7cc2ebf Fix favicon display in IE6.
Accept encoding is added automatically by mod deflate, cf. http://httpd.apache.org/docs/2.2/mod/mod_deflate.html#proxies.
2010-09-29 21:47:22 +08:00
Weston Ruter
7db47878f8 Using appropriate AddOutputFilterByType instead of incorrect(?) AddOutputFilterto compress output 2010-09-29 03:57:53 +08:00
mikkotikkanen
f85869bebf 2010-09-26 14:21:04 -07:00
Divya Manian
d019e266d2 fixed spelling error 2010-09-23 16:01:29 -07:00
crappish
13a7871230 New build file 2010-09-23 21:40:01 +03:00
Paul Irish
f6ee7c0865 update docs link to yui fonts. fixes #105 2010-09-20 18:37:18 +00:00
Rob Larsen
6d7669feea added the "mark of the web" which stops the annoying security dialog when debugging in Internet Explorer on the local file system 2010-09-17 08:08:43 -04:00
Divya Manian
a991b1c2b0 edited some styles and moved boilerplate css nav to top 2010-09-10 08:30:40 -07:00
paulirish
17104e5882 tighten up testsuite for usability. 2010-09-09 16:13:27 -07:00
paulirish
b6761011fc move over pngfix test to the new test suite page. 2010-09-09 15:24:01 -07:00
paulirish
2ada12eecd update content and disable accordion for testsuite page. 2010-09-09 15:16:31 -07:00
Shi Chuan
e10e662a48 tests page for a visual view of boilerplate normalization. 2010-09-09 15:09:06 -07:00
unknown
6af1777227 land new test page to test the hacks 2010-09-09 15:08:48 -07:00
paulirish
4828e62772 cleanup of Joe Sak's awesome pngfix addition 2010-09-09 11:36:51 -07:00
Joe Sak
4c8819de50 IE6 dd_belatedpng call added for posterity
Tested in demo/elements.html at the bottom. spoon.net/browsers IE6 used to confirm.
2010-09-09 13:22:16 -05:00
paulirish
7c53e93f5b update htmlcompressor to 0.9.3 to fix IE cond comments bug. simplify html minification. 2010-09-09 07:14:11 -07:00
paulirish
3ddc6fd603 expand build options based on html minification configurations.
this could probably be done with more DRY..
2010-09-09 07:05:44 -07:00
paulirish
cffb3e67d2 adding .svn folders to gitignore and the publish prune 2010-09-09 06:06:22 -07:00
paulirish
1e0419a502 Added best practices of build version incrementing
Referencing http://www.ibmpressbooks.com/articles/article.aspx?p=519946

default.properties was added
as well as build.properties (now used for overiding values in default.properties). Using the new
buildinfo.properties file which is created dynamically to track the build number and build date.

Also added a few comments and spaces between tasks to make the file easier to read. Changed .gitignore
to ignore the buildinfo file not the build file.

Originally committed at ff3d10eaff
2010-09-09 05:53:33 -07:00
paulirish
8596d5ea5b AddOutputFilterByType is deprecated. switching to AddOutputFilter instead.
http://httpd.apache.org/docs/current/mod/core.html#addoutputfilterbytype
2010-09-08 01:02:07 -07:00
paulirish
9f9d6ee051 Header append Vary Accept-Encoding - thx aaron peters.
fixes #39
2010-09-07 23:41:34 -07:00
paulirish
6ce800b6b9 tweaks to avoid apache errors a bit more. 2010-09-07 23:39:13 -07:00
paulirish
4d486dec16 Merge branch 'master' of github.com:paulirish/html5-boilerplate 2010-09-07 18:02:01 -07:00
Adeel Ejaz
7dacbd42cd Remove any references to application/x-javascript 2010-09-07 18:00:03 -07:00
Divya Manian
56067ff042 Fixes #85 2px margin for webkit form elements. Thanks Kaelig. 2010-09-07 17:49:41 -07:00
Divya Manian
df703d6efa Merge branch 'master' of git@github.com:paulirish/html5-boilerplate 2010-09-07 17:39:08 -07:00
Divya Manian
20cef6944d IE conditional classes moved to html tag. Fixes #44 2010-09-07 17:38:50 -07:00
Divya Manian
970744f8b9 Revert "IE conditional classes moved to html tag. Fixes #44"
This reverts commit 35ababe186.
2010-09-07 17:35:37 -07:00
Divya Manian
35ababe186 IE conditional classes moved to html tag. Fixes #44 2010-09-07 17:30:16 -07:00
paulirish
2bb7d6c6e7 textarea stylings for :valid/invalid. fixes #82 2010-09-07 15:44:34 -07:00
paulirish
541c6c02f1 make default font styling clearer to the user 2010-09-07 15:40:53 -07:00
paulirish
9cbbe837c3 Merge branch 'master' of github.com:paulirish/html5-boilerplate 2010-09-07 12:11:31 -07:00
paulirish
021504bc30 clarified license 2010-09-07 12:11:20 -07:00
Divya Manian
62d8c0dadd added comment on changes in yui font css for table reset removal 2010-09-07 08:37:27 -07:00
Rob Flaherty
6b33019dfb removed redundant font-size for table element 2010-09-07 23:31:03 +08:00
Rob Flaherty
fa0e26e9b4 added omitted font-family vavalue to table element 2010-09-07 23:31:02 +08:00
Divya Manian
3b1b1b61b6 commented out handheld.css. Fixes #73 2010-09-07 00:04:59 -07:00
Divya Manian
52ee26c459 edited the clearfix for the more elegant space than the . Fixes #93 2010-09-07 00:01:07 -07:00
Divya Manian
19482bafb6 added select suggestions of ivannikolic with additional references 2010-09-06 23:25:05 -07:00
Divya Manian
35849021d4 fixing formatting 2010-09-06 15:24:26 -07:00
Divya Manian
7d2fa8d98b table row now with print style page-break-avoid and thead explicitly specified display mode for IE6. fixes #90 2010-09-06 15:23:52 -07:00
paulirish
cfbd24a704 ifmodule headers for all those jerkfaces out there who dont have mod_headers installed. (thx swaroopch)
WHO ARE THESE PEOPLE!?
also fixes #77.
thx simshaun as well.
2010-08-30 19:27:42 -04:00
Rob Larsen
79ecbfbd63 somehow dropped the -o option, so htmlcompression was running to stdout. opps. 2010-08-28 22:58:58 -04:00
paulirish
2c0dce9143 fix up mimetypes for expires on webfonts. thx Holek. 2010-08-28 19:40:51 -07:00
Rob Larsen
4de69a3378 html compression and some windows cleanup 2010-08-28 22:20:47 -04:00
paulirish
a77e668cfc htaccess: Header append Vary User-Agent. thx Marco d'Itri 2010-08-26 21:57:00 -07:00
paulirish
8c3477d199 htaccess tweaks to make chrome bitch less about font mimetypes. not a big deal. thx mike lamb. 2010-08-26 16:09:10 -07:00
paulirish
33aeaab7b1 analytics snippet must work in IE6 in SSL without certificate dialog.
screenshot: http://paulirish.com/i/2a70.png
testpage: https://gadomain2.appspot.com/static/https.html
2010-08-26 15:56:33 -07:00
paulirish
0cec104e42 no more -webkit-font-smoothing: antialiased;
We even removed this from the html5boilerplate.com.. made monospace too thin.

More:
http://peterc.org/blog/2010/235-webkit-font-smoothing-antialiased-is-shit.html
http://www.usabilitypost.com/2010/08/26/font-smoothing/
2010-08-26 15:52:54 -07:00
paulirish
5a8f128592 apache tricks from perishablepress. also a no-www fix from jstnryan 2010-08-25 23:15:58 -07:00
paulirish
d9fcb27dd8 git rm --cached build/build.properties 2010-08-25 16:27:11 -07:00
paulirish
b8670a8024 any ! comments will go back to normal comments 2010-08-24 22:44:20 -07:00
paulirish
f0d67b7964 use uncompressed jquery by default. switch to minified in build. also prefer CDN hosted. 2010-08-24 22:41:45 -07:00
paulirish
75b34e5962 minified dd_belated png... you probably dont need the full one. 2010-08-24 22:12:59 -07:00
paulirish
40c8077401 Merge branch 'master' of github.com:paulirish/html5-boilerplate 2010-08-24 15:53:15 -07:00
Adeel Ejaz
b59c1cc00e Add Expires header for .gif 2010-08-25 06:52:53 +08:00
paulirish
387f71e533 revised invalid form field treatment. still not sure this belongs in boilerplate... 2010-08-24 15:52:09 -07:00
paulirish
6735c0ee74 404 page enhancements suggested by Andreas Madsen 2010-08-24 15:47:39 -07:00
paulirish
e24de7ffa9 expires for webm. hattip kroc camen. 2010-08-23 08:16:54 -07:00
paulirish
05aa1e4af4 Merge branch 'master' of github.com:paulirish/html5-boilerplate 2010-08-23 00:40:14 -07:00
James A. Rosen
997150e4d3 added more example inputs: required text, text with placeholder and pattern requirement, search, email, URL, and submit 2010-08-23 15:34:28 +08:00
daveatnclud
79a96886ae ul, ol, { margin-left: 1.8em; } 2010-08-23 15:33:56 +08:00
paulirish
a470eef75a correct expires value for nginx. thx bigfolio. fixes #58 2010-08-23 00:24:49 -07:00
paulirish
3a61723140 welcome back, gitignore. peace and calm return. 2010-08-23 00:08:04 -07:00
paulirish
c43f559253 clarification of jpegtran metadata stripping 2010-08-22 23:56:41 -07:00
paulirish
8e7a4773a0 apply html minification to all .html inside publish 2010-08-22 23:53:18 -07:00
paulirish
b22c209427 redefine the minified script/style filenames so unminified versions are findable 2010-08-22 23:40:21 -07:00
paulirish
1019c7f604 basic html minification (just kill the comments) 2010-08-22 23:17:25 -07:00
paulirish
4cb7f310d0 put html optimizations before images. correct css filesname to minified. 2010-08-22 23:10:15 -07:00
paulirish
b731516046 adapt build.xml to new folder stucture. break out jpg and png to separate tasks 2010-08-22 22:59:09 -07:00
paulirish
7ae590b005 moving build files into build folder. new files 2010-08-22 22:44:48 -07:00
paulirish
48cce7cee7 moving build files into build folder. 2010-08-22 22:44:15 -07:00
paulirish
70769f5e9a Merge branch 'master' of http://github.com/roblarsen/html5-boilerplate into build 2010-08-22 22:34:55 -07:00
Rob Larsen
ac1f74ede2 Added a few new wrinkles. This is working now. Yes, it is. 2010-08-22 01:39:40 -04:00
unknown
c2d222decc jpeg + random other enhancement. This now basically works. There are two targets "build" which does everything needed for a production/build kit type build. "text" just does the text tasks. 2010-08-22 01:34:13 -04:00
paulirish
30e0d834bd cant do the SSI with .js files and NOEXEC. thx Philip von Bargen 2010-08-21 10:54:48 -07:00
Divya Manian
62a17ea8d0 adding direction: ltr for image replacement to work on rtl text 2010-08-21 08:27:58 -07:00
unknown
52cb17be69 OptiPNG BINARY 2010-08-21 10:30:05 -04:00
unknown
f050dc98ca got the optipng task working on windows 2010-08-21 10:29:07 -04:00
daveatnclud
d780598fb3 added text-align: left for image replacement class 2010-08-21 05:41:43 +08:00
James A. Rosen
34c0003bae added default background colors for input:valid and input:invalid 2010-08-21 02:42:46 +08:00
WraithKenny
7c63a523b5 Removed "Star Hack" in favor of .ie7 selector. fixes #59 2010-08-21 02:42:35 +08:00
Rob Larsen
ee56b5414b got the optipng running, added some sample images to work with 2010-08-20 17:58:08 +00:00
paulirish
7827a908cc nerfing the rewrite rules with ifModule. thx meander 2010-08-19 21:56:44 -07:00
paulirish
1acecc461c kill .gitignore file for now. 2010-08-19 21:29:35 -07:00
paulirish
ce1d7e0455 readme clarification for the stripped rls 2010-08-19 21:29:07 -07:00
paulirish
d3b7e404ba adding meter/progress elements to element demo page. 2010-08-18 19:56:32 -07:00
paulirish
f4a9c70f05 update demo page to be using latest markup 2010-08-18 12:24:38 -07:00
paulirish
f62ec90943 normalizing the reset with rich clark. border removed via Faruk Ates. 2010-08-18 10:58:19 -07:00
paulirish
33d032c2b9 Merge branch 'master' of github.com:paulirish/html5-boilerplate 2010-08-17 23:29:18 -07:00
paulirish
a884c21838 new clearfix revision from paul hayes. cleaner and no IE 5.5 hack. same basic thing. fixes #45 2010-08-17 23:29:05 -07:00
Divya Manian
fa7dbb9c5b Merge branch 'master' of git@github.com:paulirish/html5-boilerplate 2010-08-17 23:25:48 -07:00
Divya Manian
7f4b38824d adding default icon for iOS 2010-08-17 23:25:37 -07:00
paulirish
04a706273b add default favicon.ico. fixes #49 2010-08-17 23:21:13 -07:00
paulirish
7a33f72819 adjust mobile viewport and textsize styles per group feedback. fixes #37 2010-08-17 23:16:29 -07:00
paulirish
88044f40d7 updating web.config for primetime. IE=edge,chrome=1 added. fixes #61 2010-08-17 23:08:16 -07:00
unknown
c307935b4c Formatting changes 2010-08-18 13:57:50 +08:00
unknown
7169d3dd41 Adding IIS web.config 2010-08-18 13:57:50 +08:00
paulirish
34f15fe328 resolving merge conflict. 2010-08-17 22:54:17 -07:00
paulirish
b75228bdcb update yui fonts normalization to 3.2.0 PR1. fixes #64 2010-08-17 22:52:53 -07:00
Divya Manian
f6cd10e7f2 adding CSS comment to handheld.css 2010-08-17 22:49:23 -07:00
Divya Manian
4d022ee471 reducing font-size only on the body element fixes #47 2010-08-17 22:47:04 -07:00
paulirish
f9e53ffa77 updating reset css to account for some newer elements. v1.5.1 (minus canvas's display block) 2010-08-17 22:28:08 -07:00
paulirish
cb7fb6dbce revising gzip list. adding .htc files. 2010-08-17 22:26:57 -07:00
paulirish
6faf486006 updating reset css to account for some newer elements. v1.5.1 (minus canvas's display block) 2010-08-17 22:21:45 -07:00
Divya Manian
81accd09fd fixes #60 2010-08-16 00:14:49 -07:00
unknown
140f672a93 nicer comments around the concatenated scripts 2010-08-16 00:01:25 -04:00
paulirish
0d7f8d775a optimizeLegibility isnt ready for primetime. text goes invisible on webos, breaks small-caps, and is weird on linux. I hope we can add it back after the bugs are fixed. 2010-08-15 12:12:50 -07:00
paulirish
280b11a3f8 htaccess: serving of htc. fixes #55 2010-08-15 12:04:33 -07:00
Divya Manian
65426765e0 Merge branch 'master' of git@github.com:paulirish/html5-boilerplate 2010-08-14 09:34:57 -07:00
paulirish
ec1bf21c19 data (json/xml) should not be cached (good tip, SirFunk) 2010-08-13 22:29:35 -07:00
paulirish
0cf1d90c7c readme tweak 2010-08-13 16:50:53 -07:00
paulirish
a8549e5ebb readme updated with changelog 2010-08-13 16:49:14 -07:00
Rob Larsen
5c8f106330 build script. concats, minifies, revs javascript and css. 2010-08-13 15:24:16 -04:00
paulirish
f313936e8b v0.9.1 tagged. 2010-08-13 11:38:45 -07:00
paulirish
fcf8374f6e correct serving of cache manifest 2010-08-13 10:24:14 -07:00
Divya Manian
c53c96748e Merge branch 'master' of git@github.com:paulirish/html5-boilerplate 2010-08-13 09:49:59 -07:00
paulirish
9182b30a3a Merge branch 'master' of github.com:paulirish/html5-boilerplate 2010-08-13 09:37:31 -07:00
paulirish
0d40d843ef license change to public domain. 2010-08-13 09:37:14 -07:00
paulirish
deaa08400f changed monospace normalization. fixes #38 2010-08-13 09:32:21 -07:00
paulirish
bd20b78646 minor. rename demo file. 2010-08-13 08:39:10 -07:00
paulirish
bffa2952f4 simplify base font styles.. *only* sans-serif in the font stack. 2010-08-13 08:38:37 -07:00
Divya Manian
30c6544b5f Merge branch 'master' of git@github.com:paulirish/html5-boilerplate 2010-08-13 08:30:17 -07:00
paulirish
43abda835a ServerSideIncludes disabled by default. Strengthened them up, too. fixes #46 2010-08-13 08:18:42 -07:00
paulirish
154f5e116e escaping fix in p3p section. (thx daniel harttman). fixed otfS typo. (thx rse) 2010-08-13 08:13:42 -07:00
Bruno Aguirre
4da4cf0f7e added nginx configuration from: https://gist.github.com/raw/225907185304dba63f38/8b8944192a8e39dbc9143152c2d9cbef7e1d3558/htmlnginxboilerplate.conf 2010-08-13 13:45:20 +08:00
Divya Manian
2e03575209 adding important to text-shadow:none on print css. 2010-08-12 13:10:14 -07:00
paulirish
e1f6987b3d clarifications around the .combined. stuff 2010-08-11 14:09:17 -07:00
Adam J. McIntyre
9fc563ab47 Con. comm. for >IE9 / no-IE body tag. 2010-08-12 04:30:15 +08:00
Divya Manian
96ab97e167 adding semi-colons to be consistent in the CSS 2010-08-11 13:09:54 -07:00
paulirish
44d45649ec removing backgroundImageCache fix as dd_belated handles that as well. fixes #25 2010-08-11 12:32:40 -07:00
paulirish
078e29150d dd_belatedPNG++ to new version for extra bugfixes. (keep in mind that it and all other JS is unminified and they should clearly be minified when going out into production.) fixes #41 2010-08-11 12:19:50 -07:00
paulirish
59fca99d2f proper accessible a:focus styles. using browser default, too. fixes #32 2010-08-11 12:15:25 -07:00
paulirish
5274efc335 simplify IE=edge chromeframe header setting, based on feedback from Alex Russell 2010-08-11 12:04:01 -07:00
paulirish
0af551cb89 close frowny tag. thx @timwillison 2010-08-11 11:58:45 -07:00
paulirish
60bdf64d33 background-repeat: none to background-repeat: no-repeat. 2010-08-11 11:53:00 -07:00
paulirish
b62226ae73 QUnit updated to master. Cleaned out the existing tests some. fixes #23 2010-08-11 11:00:26 -07:00
paulirish
641beda175 webm mimetype. thx ken nordahl. fixes #31 2010-08-11 10:39:04 -07:00
paulirish
7e20a576b7 dont deflate svgz or woff. thx erik dahlstrom. fixes #22 2010-08-11 10:34:03 -07:00
paulirish
b7a287b712 999px to 999em. thx christopherjacob and mathias 2010-08-11 09:43:05 -07:00
paulirish
c0ec8f8c22 document.write bugfix from fearphage. 2010-08-11 08:24:44 -07:00
93 changed files with 6599 additions and 7779 deletions

22
.editorconfig Normal file
View File

@@ -0,0 +1,22 @@
# For more information about the properties used in
# this file, please see the EditorConfig documentation:
# http://editorconfig.org/
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[{.travis.yml,package.json}]
# The indent size used in the `package.json` file cannot be changed
# https://github.com/npm/npm/pull/3180#issuecomment-16336516
indent_size = 2
indent_style = space

21
.gitattributes vendored Normal file
View File

@@ -0,0 +1,21 @@
# Automatically normalize line endings for all text-based files
# http://git-scm.com/docs/gitattributes#_end_of_line_conversion
* text=auto
# For the following file types, normalize line endings to LF on
# checkin and prevent conversion to CRLF when they are checked out
# (this is required in order to prevent newline related issues like,
# for example, after the build script is run)
.* text eol=lf
*.css text eol=lf
*.html text eol=lf
*.js text eol=lf
*.json text eol=lf
*.md text eol=lf
*.sh text eol=lf
*.txt text eol=lf
*.xml text eol=lf
# Exclude the `.htaccess` file from GitHub's language statistics
# https://github.com/github/linguist#using-gitattributes
dist/.htaccess linguist-vendored

5
.gitignore vendored
View File

@@ -1,3 +1,2 @@
.DS_Store
.sass-cache
archive
node_modules

184
.htaccess
View File

@@ -1,184 +0,0 @@
# Apache configuration file
# httpd.apache.org/docs/2.2/mod/quickreference.html
# Techniques in here adapted from all over,
# including Kroc Camen: camendesign.com/.htaccess
# 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" env=ie
BrowserMatch chromeframe gcf
Header append X-UA-Compatible "chrome=1" env=gcf
</IfModule>
</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
# Proper svg serving. Required for svg webfonts on iPad
# twitter.com/FontSquirrel/status/14855840545
AddType image/svg+xml svg svgz
# webfonts
AddType application/vnd.ms-fontobject eot
AddType font/ttf ttf
AddType font/otf otf
AddType font/x-woff woff
# 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
<FilesMatch "\.combined\.js">
Options +Includes
SetOutputFilter INCLUDES
</FilesMatch>
<FilesMatch "\.combined\.css">
Options +Includes
SetOutputFilter INCLUDES
</FilesMatch>
# gzip compression.
<IfModule mod_deflate.c>
# html, xml, css, and js:
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript text/javascript application/javascript application/json
# webfonts and svg:
<FilesMatch "\.(ttf|otf|woff|eot|svg|svgz)$" >
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-reqeusts in FF 3.6 (thx Remy ~Introducing HTML5)
ExpiresByType text/cache-manifest "access plus 0 seconds"
# your document html
ExpiresByType text/html "access"
# 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/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"
# webfonts
ExpiresByType font/ttf "access plus 1 month"
ExpiresByType font/woff "access plus 1 month"
ExpiresByType image/svg+xml "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
# <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>
# </IfModule>
# you probably want www.example.com to forward to example.com -- shorter URLs are sexier.
# no-www.org/faq.php?q=class_b
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
# 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
# custom 404 page
ErrorDocument 404 /404.html
# use utf-8 encoding for anything served text/plain or text/html
AddDefaultCharset utf-8
# force utf-8 for a number of file formats
AddCharset utf-8 .html .css .js .xml .json .rss

68
.jscsrc Normal file
View File

@@ -0,0 +1,68 @@
{
"disallowEmptyBlocks": true,
"disallowKeywords": [
"with"
],
"disallowMixedSpacesAndTabs": true,
"disallowMultipleLineStrings": true,
"disallowMultipleVarDecl": true,
"disallowSpaceAfterPrefixUnaryOperators": [
"!",
"+",
"++",
"-",
"--",
"~"
],
"disallowSpaceBeforeBinaryOperators": [
","
],
"disallowSpaceBeforePostfixUnaryOperators": true,
"disallowSpacesInNamedFunctionExpression": {
"beforeOpeningRoundBrace": true
},
"disallowSpacesInsideArrayBrackets": true,
"disallowSpacesInsideParentheses": true,
"disallowTrailingComma": true,
"disallowTrailingWhitespace": true,
"requireCamelCaseOrUpperCaseIdentifiers": true,
"requireCapitalizedConstructors": true,
"requireCommaBeforeLineBreak": true,
"requireCurlyBraces": true,
"requireDotNotation": true,
"requireLineFeedAtFileEnd": true,
"requireParenthesesAroundIIFE": true,
"requireSpaceAfterBinaryOperators": true,
"requireSpaceAfterKeywords": [
"catch",
"do",
"else",
"for",
"if",
"return",
"switch",
"try",
"while"
],
"requireSpaceAfterLineComment": true,
"requireSpaceBeforeBinaryOperators": true,
"requireSpaceBeforeBlockStatements": true,
"requireSpacesInAnonymousFunctionExpression": {
"beforeOpeningCurlyBrace": true
},
"requireSpacesInConditionalExpression": true,
"requireSpacesInFunctionDeclaration": {
"beforeOpeningCurlyBrace": true
},
"requireSpacesInFunctionExpression": {
"beforeOpeningCurlyBrace": true
},
"requireSpacesInNamedFunctionExpression": {
"beforeOpeningCurlyBrace": true
},
"requireSpacesInsideObjectBrackets": "allButNested",
"validateIndentation": 4,
"validateLineBreaks": "LF",
"validateParameterSeparator": ", ",
"validateQuoteMarks": "'"
}

32
.jshintrc Normal file
View File

@@ -0,0 +1,32 @@
{
// Enforcing options
// http://www.jshint.com/docs/options/#enforcing-options
"bitwise": true,
"eqeqeq": true,
"forin": true,
"latedef": true,
"noarg": true,
"nonbsp": true,
"nonew": true,
"undef": true,
"unused": true,
// - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Relaxing options
// http://www.jshint.com/docs/options/#relaxing-options
"esnext": true,
// - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Environments
// http://www.jshint.com/docs/options/#environments
"browser": true,
"jquery": true,
"node": true
}

82
.travis.yml Normal file
View File

@@ -0,0 +1,82 @@
# For more information about the configurations used
# in this file, please see the Travis CI documentation:
# http://docs.travis-ci.com
after_success:
# Temporary workaround for:
# https://github.com/travis-ci/travis-ci/issues/929
- python travis_after_all.py
- export $(cat .to_export_back) &> /dev/null
- |
# If all the tests pass in all the runtimes, make Travis
# automatically download and execute the following script
if [ "$BUILD_LEADER" == "YES" ]; then
if [ "$BUILD_AGGREGATE_STATUS" == "others_succeeded" ]; then \
# Clean up helper files
rm -rf travis_after_all.py .to_export_back && \
# The `commit_build_changes.sh` script will run the build,
# and if that generates changes, it will commit them to the
# `master` branch:
#
# * ensuring that the content from the `dist/` directory
# is always in sync with the rest of the content
#
# * removing the need to execute the build step locally
# everytime a change is made (especially in the case
# of trivial changes such as typos)
#
# Note: The `commit_build_changes.sh` script will only run
# if the commit was made to the `master` branch.
curl -sSL "https://raw.githubusercontent.com/h5bp-bot/scripts/0.6.1/commit_build_changes.sh" |
bash -s -- --branch "master" \
--commands "npm install && npm run build" \
--commit-message "Update content from the \`dist\` directory [skip ci]";
fi
fi
env:
global:
# The `secure` key contains three encrypted environment variables
# (GH_TOKEN, GH_USER_EMAIL and GH_USER_NAME), the values of which
# are used by the scripts that are automatically executed by Travis.
#
# Note: The `secure` key will only work for this repository, so if
# you create your own fork, you will need to generate your own key:
#
# travis encrypt -r "<username>/<repository>" \
# GH_TOKEN="<your_github_access_token>" \
# GH_USER_EMAIL="<your_email>" \
# GH_USER_NAME="<your_name>"
#
# To learn more about how to generate the:
#
# * `secure` key, see:
# http://docs.travis-ci.com/user/encryption-keys/
#
# * GitHub access token, see:
# https://help.github.com/articles/creating-an-access-token-for-command-line-use/
- secure: "OQnRHkXKdvSujTPm0DSXJFrso0zKltkso0e8zF/2GLI7ouv60ELHhYCrWFuoeefSJFbiPeH/9GXnTAv7y+gC08Ba/DSlXGaHl4db5xU/7AazzQR4YaTks6z0CfvlftdlimGOY27tuDU8hMfqHJKybJGcEvFKCVJms/7udYYh+CA="
git:
depth: 10
language: node_js
node_js:
- "iojs"
- "0.12"
script:
- curl -sSLo travis_after_all.py https://raw.github.com/dmakhno/travis_after_all/master/travis_after_all.py
sudo: false

View File

@@ -1,19 +0,0 @@
<!doctype html>
<title>not found</title>
<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)}
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>
<details>
<summary><h1>Not found</h1></summary>
<p><span frown>:(</p>
</details>

244
CHANGELOG.md Normal file
View File

@@ -0,0 +1,244 @@
### 5.1.0 (April 1, 2015)
* Update Normalize.css to `v3.0.3`.
* Use `https://` in the Google Universal Analytics snippet
([eee759b](https://github.com/h5bp/html5-boilerplate/commit/eee759bfe175e850bbc8e4ad0682ec4fe4bd05d6)).
* Remove the `visibility: hidden` declaration from `.hidden`
([#1663](https://github.com/h5bp/html5-boilerplate/issues/1663)).
* Use `<meta http-equiv="x-ua-compatible" content="ie=edge">`<br>
instead of `<meta http-equiv="X-UA-Compatible" content="IE=edge">`
([#1656](https://github.com/h5bp/html5-boilerplate/issues/1656)).
* Update Apache Server Configs to `v2.13.0`.
### 5.0.0 (February 1, 2015)
* Update to jQuery 1.11.2.
* Update Apache Server Configs to v2.11.0.
* Rename Apple touch icon to `apple-touch-icon.png` and add
`<link>` in `index.html`
([#1622](https://github.com/h5bp/html5-boilerplate/issues/1622)).
* Add vertical centering for `iframe`
([#1613](https://github.com/h5bp/html5-boilerplate/issues/1613)).
* Change the outdated browser prompt classname to `browserupgrade`
([#1608](https://github.com/h5bp/html5-boilerplate/issues/1608)).
* Update to Normalize.css 3.0.2.
([#1050](https://github.com/h5bp/html5-boilerplate/issues/1050)).
* Update `apple-touch-icon-precomposed.png` and the _"Apple touch
icons"_ related documentation
([#1599](https://github.com/h5bp/html5-boilerplate/pull/1599)).
* Add pseudo-elements to universal selector in print media query
([#1585](https://github.com/h5bp/html5-boilerplate/pull/1585)).
* Update to Modernizr 2.8.3.
* Remove need to readjust margins in `404.html`
([#1567](https://github.com/h5bp/html5-boilerplate/pull/1567)).
* Add `/.editorconfig` file
([#1561](https://github.com/h5bp/html5-boilerplate/issues/1561),
[#1564](https://github.com/h5bp/html5-boilerplate/issues/1564)).
* Add `auto` to the Google Universal Analytics tracker create method
([#1562](https://github.com/h5bp/html5-boilerplate/issues/1562)).
* Add `timeline` and `timelineEnd` to the list of `console` methods
([#1559](https://github.com/h5bp/html5-boilerplate/issues/1559)).
* Add `lang=""` to `<html>`
([#1542](https://github.com/h5bp/html5-boilerplate/issues/1542)).
* Use `<!doctype html>` instead of `<!DOCTYPE html>`
([#1522](https://github.com/h5bp/html5-boilerplate/issues/1522)).
* Add `/browserconfig.xml` file and tile images
([#1481](https://github.com/h5bp/html5-boilerplate/issues/1481)).
* Add `Disallow:` to `robots.txt`
([#1487](https://github.com/h5bp/html5-boilerplate/issues/1487)).
* Remove default foreground color from form elements
([#1390](https://github.com/h5bp/html5-boilerplate/issues/1390)).
* Remove default margin from print styles
([#1477](https://github.com/h5bp/html5-boilerplate/issues/1477)).
* Remove image replacement helper class `.ir`
([#1472](https://github.com/h5bp/html5-boilerplate/issues/1472),
[#1475](https://github.com/h5bp/html5-boilerplate/issues/1475)).
* Add vertical centering for `svg`
([#1453](https://github.com/h5bp/html5-boilerplate/issues/1453)).
* Redesign 404 page
([#1443](https://github.com/h5bp/html5-boilerplate/pull/1443)).
* Remove IE 6/7 hacks from `main.css`
([#1050](https://github.com/h5bp/html5-boilerplate/issues/1050)).
* Remove IE conditional classes
([#1187](https://github.com/h5bp/html5-boilerplate/issues/1187),
[#1290](https://github.com/h5bp/html5-boilerplate/issues/1290)).
### 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.

153
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,153 @@
# 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](https://stackoverflow.com/questions/tagged/html5boilerplate)).
* 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** &mdash; check if the issue has already been
reported.
2. **Check if the issue has been fixed** &mdash; try to reproduce it using the
latest `master` or development branch in the repository.
3. **Isolate the problem** &mdash; 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 process is the best way to get your work
included in the project:
1. [Fork](https://help.github.com/articles/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/about-git-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 terms of the [MIT License](LICENSE.md).

19
LICENSE.txt Normal file
View 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.

View File

@@ -1,36 +0,0 @@
### HTML5 Boilerplate
## CHANGELOG:
v0.9 -August 10th, 2010 - Initial release
## LICENSE:
Copyright Paul Irish
Dual licensed under MIT and GPL
## INSTALLATION:
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
There will be two releases: a documented release, which is exactly what you see here, and a production release, with most of the descriptive comments stripped out.

83
README.md Normal file
View File

@@ -0,0 +1,83 @@
# [HTML5 Boilerplate](https://html5boilerplate.com)
[![Build Status](https://travis-ci.org/h5bp/html5-boilerplate.svg)](https://travis-ci.org/h5bp/html5-boilerplate)
[![devDependency Status](https://david-dm.org/h5bp/html5-boilerplate/dev-status.svg)](https://david-dm.org/h5bp/html5-boilerplate#info=devDependencies)
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: [https://html5boilerplate.com](https://html5boilerplate.com)
* Twitter: [@h5bp](https://twitter.com/h5bp)
## Quick start
Choose one of the following options:
1. Download the latest stable release from
[html5boilerplate.com](https://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](https://github.com/h5bp/html5-boilerplate/releases) you'd like to
use.
## Features
* HTML5 ready. Use the new elements with confidence.
* 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](https://jquery.com/) via CDN, with a local fallback.
* The latest [Modernizr](http://modernizr.com/) build for feature detection.
* Placeholder CSS Media Queries.
* Useful CSS helpers.
* Default print CSS, performance optimized.
* Protection against any stray `console` statements causing JavaScript errors
in older browsers.
* An optimized Google Analytics snippet.
* Apache server caching, compression, and other configuration defaults for
Grade-A performance.
* "Delete-key friendly." Easy to strip out parts you don't need.
* Extensive inline and accompanying documentation.
## Browser support
* Chrome *(latest 2)*
* Firefox *(latest 2)*
* Internet Explorer 8+
* Opera *(latest 2)*
* Safari *(latest 2)*
*This doesn't mean that HTML5 Boilerplate cannot be used in older browsers,
just that we'll ensure compatibility with the ones mentioned above.*
If you need legacy browser support (IE 6+, Firefox 3.6+, Safari 4+) you can use
[HTML5 Boilerplate v4](https://github.com/h5bp/html5-boilerplate/tree/v4), but
is no longer actively developed.
## Documentation
Take a look at the [documentation table of contents](dist/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.
## License
The code is available under the [MIT license](LICENSE.txt).

View File

@@ -1,16 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<!--
If you host a crossdomain.xml file with allow-access-from domain=“*”
and dont understand all of the points described here, you probably
have a nasty security vulnerability. ~ simon willison
Please read: www.adobe.com/devnet/flashplayer/articles/cross_domain_policy.html
<allow-access-from domain="*" to-ports="*" />
-->
</cross-domain-policy>

View File

@@ -1,7 +0,0 @@
* {
float: none; /* Screens are not big enough to account for floats */
font-size: 80%; /* Slightly reducing font size to reduce need to scroll */
background: #fff; /* As much contrast as possible */
color: #000;
}

View File

@@ -1,264 +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, figure, footer, header,
hgroup, menu, nav, section, menu,
time, mark, audio, video {
margin:0;
padding:0;
border:0;
outline:0;
font-size:100%;
vertical-align:baseline;
background:transparent;
}
article, aside, figure, footer, header,
hgroup, 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; border: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 #000; 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 two custom edits:
* make the line-height relative and unit-less
* remove the pre,code styles as we use a recommendation from Eric Meyer instead
*/
body { font:13px arial,helvetica,"Nimbus Sans L", "Bitstream Vera Sans", sans-serif; *font-size:small; *font:x-small; line-height:1.22; }
table { font-size:inherit; font:100%; }
select, input, textarea { font:99% arial,helvetica,"Nimbus Sans L", "Bitstream Vera Sans", sans-serif; }
/* normalize monospace sizing
* meyerweb.com/eric/thoughts/2010/02/12/fixed-monospace-sizing/
*/
code, pre { font-family: "Courier New", monospace, serif; font-size: 1em; }
/*
* minimal base styles
*/
/* #444 looks better than black: twitter.com/H_FJ/statuses/11800719859 */
body, select, input, textarea { color:#444; }
/* Headers (h1,h2,etc) have no default font-size or margin,
you'll want to define those yourself. */
/* www.aestheticallyloyal.com/public/optimize-legibility/ */
h1,h2,h3,h4,h5,h6 { font-weight: bold; text-rendering: optimizeLegibility; }
/* maxvoltar.com/archive/-webkit-font-smoothing */
html { -webkit-font-smoothing: antialiased; }
/* Accessible focus treatment: people.opera.com/patrickl/experiments/keyboard/test */
a:active { outline: none; }
a:focus { outline: thin dotted; }
a, a:active, a:visited { color:#607890; }
a:hover { color:#036; }
ul { margin-left:30px; }
ol { margin-left:30px; list-style-type: decimal; }
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 */
}
/* 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; *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; }
/* 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; }
/* always force a scrollbar in non-IE */
html { overflow-y: scroll; }
/* 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:-999px; overflow:hidden; background-repeat: none; }
/* 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/
Solution from: j.mp/visuallyhidden - Thanks Jonathan Neal! */
.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 << */
.clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
.clearfix { display: inline-block; }
* html .clearfix { height: 1%; } /* Hides from IE-mac \*/
.clearfix { display: block; }
/* Primary Styles
Author:
*/
/*
* 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; }
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; }
img { page-break-inside: avoid; }
@page { margin: 0.5cm; }
p, h2, h3 { orphans: 3; widows: 3; }
h2, h3{ page-break-after: avoid; }
}
/*
* Media queries for responsive design
*/
@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) {
/* Prevent iOS, WinMobile from adjusting font size */
html { -webkit-text-size-adjust:none; -ms-text-size-adjust:none; }
}

View File

@@ -1,401 +0,0 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge;chrome=1"><![endif]-->
<title></title>
<meta name="robots" content="index, follow">
<meta name="description" content="">
<meta name="author" content="">
<!-- iPhone/iPad/Opera Mobile Viewport Fix:
device-width : Make sure webpages occupy full width of the screen in its current orientation (portrait or landscape)
initial-scale = 1.0 retains dimensions of the page instead of zooming out if page height is larger than device height
maximum-scale = 1.0 retains dimensions of the page instead of zooming in if page width is smaller than device width
More at: http://j.mp/mobileviewport
http://davidbcalhoun.com/2010/viewport-metatag -->
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0;">
<!-- Place favicon.ico and apple-touch-icon.png in the root of your domain
and delete these references -->
<link rel="shortcut icon" href="">
<link rel="apple-touch-icon" href="">
<!-- CSS : implied media="all" -->
<link rel="stylesheet" href="../css/style.css">
<!-- For the less-enabled mobile browsers like Opera Mini -->
<link rel="stylesheet" media="handheld" href="../css/handheld.css">
<!-- All JavaScript at the bottom, except for.. -->
<script>
// http://paulirish.com/2009/avoiding-the-fouc-v3/ && http://remysharp.com/2009/01/07/html5-enabling-script
// alternatively using Moderizr does both of these.
(function(B,C){B[C]=B[C].replace(/\bno-js\b/,'js');if(!/*@cc_on!@*/0)return;var e = "abbr article aside audio canvas command datalist details figure figcaption footer header hgroup mark meter nav output progress section summary time video".split(' '),i=e.length;while(i--){document.createElement(e[i])}})(document.documentElement,'className');
</script>
</head>
<!-- http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!--[if lt IE 7 ]> <body class="ie6"> <![endif]-->
<!--[if IE 7 ]> <body class="ie7"> <![endif]-->
<!--[if IE 8 ]> <body class="ie8"> <![endif]-->
<!--[if IE 9 ]> <body class="ie9"> <![endif]-->
<!--[if gt IE 9]> <body> <![endif]-->
<!--[if !IE]><!--> <body> <!--<![endif]-->
<div id="container">
<div id="header">
</div>
<div id="body">
<!-- demo content lovingly lifted from the azbuka project
http://code.google.com/p/azbuka/
and the bluetrip project
http://bluetrip.org/
-->
<h1>Title 01 Heading</h1>
<hr />
<h3>Level 03 Heading</h3>
<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>
<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>&lt;strong&gt;</strong><br>
<del>&lt;del&gt; deleted</del><br>
<dfn>&lt;dfn&gt; dfn</dfn><br>
<em>&lt;em&gt; emphasis</em>
</p>
<pre>
<code>&lt;html&gt;</code>
<code>&lt;head&gt;</code>
<code>&lt;/head&gt;</code>
<code>&lt;body&gt;</code>
<code>&lt;div class = "main"&gt; &lt;div&gt;</code>
<code>&lt;/body&gt;</code>
<code>&lt;/html&gt; </code>
</pre>
<tt>&lt;tt&gt;
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">Text input:</label><input type="text" id="f1" value="input text" /></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>
</fieldset>
</form>
</div>
<div id="footer">
</div>
</div>
<!-- JavaScript -->
<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>
<!--[if lt IE 7 ]>
<script src="../js/dd_belatedpng.js"></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 -->
</body>
</html>

13
dist/.editorconfig vendored Normal file
View File

@@ -0,0 +1,13 @@
# editorconfig.org
root = true
[*]
charset = utf-8
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false

1
dist/.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
* text=auto

2
dist/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
# Include your project-specific ignores in this file
# Read about how to use .gitignore: https://help.github.com/articles/ignoring-files

998
dist/.htaccess vendored Normal file
View File

@@ -0,0 +1,998 @@
# Apache Server Configs v2.13.0 | MIT License
# https://github.com/h5bp/server-configs-apache
# (!) Using `.htaccess` files slows down Apache, therefore, if you have
# access to the main server configuration file (which is usually called
# `httpd.conf`), you should add this logic there.
#
# https://httpd.apache.org/docs/current/howto/htaccess.html.
# ######################################################################
# # CROSS-ORIGIN #
# ######################################################################
# ----------------------------------------------------------------------
# | Cross-origin requests |
# ----------------------------------------------------------------------
# Allow cross-origin requests.
#
# https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
# http://enable-cors.org/
# http://www.w3.org/TR/cors/
# <IfModule mod_headers.c>
# Header set Access-Control-Allow-Origin "*"
# </IfModule>
# ----------------------------------------------------------------------
# | Cross-origin images |
# ----------------------------------------------------------------------
# Send the CORS header for images when browsers request it.
#
# https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image
# https://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
<FilesMatch "\.(bmp|cur|gif|ico|jpe?g|png|svgz?|webp)$">
SetEnvIf Origin ":" IS_CORS
Header set Access-Control-Allow-Origin "*" env=IS_CORS
</FilesMatch>
</IfModule>
</IfModule>
# ----------------------------------------------------------------------
# | Cross-origin web fonts |
# ----------------------------------------------------------------------
# Allow cross-origin access to web fonts.
<IfModule mod_headers.c>
<FilesMatch "\.(eot|otf|tt[cf]|woff2?)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>
# ----------------------------------------------------------------------
# | Cross-origin resource timing |
# ----------------------------------------------------------------------
# Allow cross-origin access to the timing information for all resources.
#
# If a resource isn't served with a `Timing-Allow-Origin` header that
# would allow its timing information to be shared with the document,
# some of the attributes of the `PerformanceResourceTiming` object will
# be set to zero.
#
# http://www.w3.org/TR/resource-timing/
# http://www.stevesouders.com/blog/2014/08/21/resource-timing-practical-tips/
# <IfModule mod_headers.c>
# Header set Timing-Allow-Origin: "*"
# </IfModule>
# ######################################################################
# # ERRORS #
# ######################################################################
# ----------------------------------------------------------------------
# | Custom error messages/pages |
# ----------------------------------------------------------------------
# Customize what Apache returns to the client in case of an error.
# https://httpd.apache.org/docs/current/mod/core.html#errordocument
ErrorDocument 404 /404.html
# ----------------------------------------------------------------------
# | Error prevention |
# ----------------------------------------------------------------------
# Disable the pattern matching based on filenames.
#
# This setting prevents Apache from returning a 404 error as the result
# of a rewrite when the directory with the same name does not exist.
#
# https://httpd.apache.org/docs/current/content-negotiation.html#multiviews
Options -MultiViews
# ######################################################################
# # INTERNET EXPLORER #
# ######################################################################
# ----------------------------------------------------------------------
# | Document modes |
# ----------------------------------------------------------------------
# Force Internet Explorer 8/9/10 to render pages in the highest mode
# available in the various cases when it may not.
#
# https://hsivonen.fi/doctype/#ie8
#
# (!) Starting with Internet Explorer 11, document modes are deprecated.
# If your business still relies on older web apps and services that were
# designed for older versions of Internet Explorer, you might want to
# consider enabling `Enterprise Mode` throughout your company.
#
# https://msdn.microsoft.com/en-us/library/ie/bg182625.aspx#docmode
# http://blogs.msdn.com/b/ie/archive/2014/04/02/stay-up-to-date-with-enterprise-mode-for-internet-explorer-11.aspx
<IfModule mod_headers.c>
Header set X-UA-Compatible "IE=edge"
# `mod_headers` cannot match based on the content-type, however,
# the `X-UA-Compatible` response header should be send only for
# HTML documents and not for the other resources.
<FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|woff2?|xloc|xml|xpi)$">
Header unset X-UA-Compatible
</FilesMatch>
</IfModule>
# ----------------------------------------------------------------------
# | Iframes cookies |
# ----------------------------------------------------------------------
# Allow cookies to be set from iframes in Internet Explorer.
#
# https://msdn.microsoft.com/en-us/library/ms537343.aspx
# http://www.w3.org/TR/2000/CR-P3P-20001215/
# <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>
# ######################################################################
# # MEDIA TYPES AND CHARACTER ENCODINGS #
# ######################################################################
# ----------------------------------------------------------------------
# | Media types |
# ----------------------------------------------------------------------
# Serve resources with the proper media types (f.k.a. MIME types).
#
# https://www.iana.org/assignments/media-types/media-types.xhtml
# https://httpd.apache.org/docs/current/mod/mod_mime.html#addtype
<IfModule mod_mime.c>
# Data interchange
AddType application/atom+xml atom
AddType application/json json map topojson
AddType application/ld+json jsonld
AddType application/rss+xml rss
AddType application/vnd.geo+json geojson
AddType application/xml rdf xml
# JavaScript
# Normalize to standard type.
# https://tools.ietf.org/html/rfc4329#section-7.2
AddType application/javascript js
# Manifest files
# If you are providing a web application manifest file (see
# the specification: https://w3c.github.io/manifest/), it is
# recommended that you serve it with the `application/manifest+json`
# media type.
#
# Because the web application manifest file doesn't have its
# own unique file extension, you can set its media type either
# by matching:
#
# 1) the exact location of the file (this can be done using a
# directive such as `<Location>`, but it will NOT work in
# the `.htaccess` file, so you will have to do it in the main
# server configuration file or inside of a `<VirtualHost>`
# container)
#
# e.g.:
#
# <Location "/.well-known/manifest.json">
# AddType application/manifest+json json
# </Location>
#
# 2) the filename (this can be problematic as you will need to
# ensure that you don't have any other file with the same name
# as the one you gave to your web application manifest file)
#
# e.g.:
#
# <Files "manifest.json">
# AddType application/manifest+json json
# </Files>
AddType application/x-web-app-manifest+json webapp
AddType text/cache-manifest appcache
# Media files
AddType audio/mp4 f4a f4b m4a
AddType audio/ogg oga ogg opus
AddType image/bmp bmp
AddType image/svg+xml svg svgz
AddType image/webp webp
AddType video/mp4 f4v f4p m4v mp4
AddType video/ogg ogv
AddType video/webm webm
AddType video/x-flv flv
# Serving `.ico` image files with a different media type
# prevents Internet Explorer from displaying then as images:
# https://github.com/h5bp/html5-boilerplate/commit/37b5fec090d00f38de64b591bcddcb205aadf8ee
AddType image/x-icon cur ico
# Web fonts
AddType application/font-woff woff
AddType application/font-woff2 woff2
AddType application/vnd.ms-fontobject eot
# Browsers usually ignore the font media types and simply sniff
# the bytes to figure out the font type.
# https://mimesniff.spec.whatwg.org/#matching-a-font-type-pattern
#
# However, Blink and WebKit based browsers will show a warning
# in the console if the following font types are served with any
# other media types.
AddType application/x-font-ttf ttc ttf
AddType font/opentype otf
# Other
AddType application/octet-stream safariextz
AddType application/x-bb-appworld bbaw
AddType application/x-chrome-extension crx
AddType application/x-opera-extension oex
AddType application/x-xpinstall xpi
AddType text/vcard vcard vcf
AddType text/vnd.rim.location.xloc xloc
AddType text/vtt vtt
AddType text/x-component htc
</IfModule>
# ----------------------------------------------------------------------
# | Character encodings |
# ----------------------------------------------------------------------
# Serve all resources labeled as `text/html` or `text/plain`
# with the media type `charset` parameter set to `UTF-8`.
#
# https://httpd.apache.org/docs/current/mod/core.html#adddefaultcharset
AddDefaultCharset utf-8
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Serve the following file types with the media type `charset`
# parameter set to `UTF-8`.
#
# https://httpd.apache.org/docs/current/mod/mod_mime.html#addcharset
<IfModule mod_mime.c>
AddCharset utf-8 .atom \
.bbaw \
.css \
.geojson \
.js \
.json \
.jsonld \
.rdf \
.rss \
.topojson \
.vtt \
.webapp \
.xloc \
.xml
</IfModule>
# ######################################################################
# # REWRITES #
# ######################################################################
# ----------------------------------------------------------------------
# | Rewrite engine |
# ----------------------------------------------------------------------
# (1) Turn on the rewrite engine (this is necessary in order for
# the `RewriteRule` directives to work).
#
# https://httpd.apache.org/docs/current/mod/mod_rewrite.html#RewriteEngine
#
# (2) Enable the `FollowSymLinks` option if it isn't already.
#
# https://httpd.apache.org/docs/current/mod/core.html#options
#
# (3) If your web host doesn't allow the `FollowSymlinks` option,
# you need to comment it out or remove it, and then uncomment
# the `Options +SymLinksIfOwnerMatch` line (4), but be aware
# of the performance impact.
#
# https://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks
#
# (4) Some cloud hosting services will require you set `RewriteBase`.
#
# https://www.rackspace.com/knowledge_center/frequently-asked-question/why-is-modrewrite-not-working-on-my-site
# https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
#
# (5) Depending on how your server is set up, you may also need to
# use the `RewriteOptions` directive to enable some options for
# the rewrite engine.
#
# https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions
#
# (6) Set %{ENV:PROTO} variable, to allow rewrites to redirect with the
# appropriate schema automatically (http or https).
<IfModule mod_rewrite.c>
# (1)
RewriteEngine On
# (2)
Options +FollowSymlinks
# (3)
# Options +SymLinksIfOwnerMatch
# (4)
# RewriteBase /
# (5)
# RewriteOptions <options>
# (6)
RewriteCond %{HTTPS} =on
RewriteRule ^ - [env=proto:https]
RewriteCond %{HTTPS} !=on
RewriteRule ^ - [env=proto:http]
</IfModule>
# ----------------------------------------------------------------------
# | Forcing `https://` |
# ----------------------------------------------------------------------
# Redirect from the `http://` to the `https://` version of the URL.
# https://wiki.apache.org/httpd/RewriteHTTPToHTTPS
# <IfModule mod_rewrite.c>
# RewriteEngine On
# RewriteCond %{HTTPS} !=on
# RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
# </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), and 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 would prefer to use `Option 2`, just comment out all the
# lines from `Option 1` and uncomment the ones from `Option 2`.
#
# (!) NEVER USE BOTH RULES AT THE SAME TIME!
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Option 1: rewrite www.example.com → example.com
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ %{ENV:PROTO}://%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>
# RewriteEngine On
# RewriteCond %{HTTPS} !=on
# RewriteCond %{HTTP_HOST} !^www\. [NC]
# RewriteCond %{SERVER_ADDR} !=127.0.0.1
# RewriteCond %{SERVER_ADDR} !=::1
# RewriteRule ^ %{ENV:PROTO}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# </IfModule>
# ######################################################################
# # SECURITY #
# ######################################################################
# ----------------------------------------------------------------------
# | Clickjacking |
# ----------------------------------------------------------------------
# Protect website against clickjacking.
#
# The example below sends the `X-Frame-Options` response header with
# the value `DENY`, informing browsers not to display the content of
# the web page in any frame.
#
# This might not be the best setting for everyone. You should read
# about the other two possible values the `X-Frame-Options` header
# field can have: `SAMEORIGIN` and `ALLOW-FROM`.
# https://tools.ietf.org/html/rfc7034#section-2.1.
#
# Keep in mind that while you could send the `X-Frame-Options` header
# for all of your websites pages, this has the potential downside that
# it forbids even non-malicious framing of your content (e.g.: when
# users visit your website using a Google Image Search results page).
#
# Nonetheless, you should ensure that you send the `X-Frame-Options`
# header for all pages that allow a user to make a state changing
# operation (e.g: pages that contain one-click purchase links, checkout
# or bank-transfer confirmation pages, pages that make permanent
# configuration changes, etc.).
#
# Sending the `X-Frame-Options` header can also protect your website
# against more than just clickjacking attacks:
# https://cure53.de/xfo-clickjacking.pdf.
#
# https://tools.ietf.org/html/rfc7034
# http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx
# https://www.owasp.org/index.php/Clickjacking
# <IfModule mod_headers.c>
# Header set X-Frame-Options "DENY"
# # `mod_headers` cannot match based on the content-type, however,
# # the `X-Frame-Options` response header should be send only for
# # HTML documents and not for the other resources.
# <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|woff2?|xloc|xml|xpi)$">
# Header unset X-Frame-Options
# </FilesMatch>
# </IfModule>
# ----------------------------------------------------------------------
# | Content Security Policy (CSP) |
# ----------------------------------------------------------------------
# Mitigate the risk of cross-site scripting and other content-injection
# attacks.
#
# This can be done by setting a `Content Security Policy` which
# whitelists trusted sources of content for your website.
#
# The example header below allows ONLY scripts that are loaded from
# the current website's origin (no inline scripts, no CDN, etc).
# That almost certainly won't work as-is for your website!
#
# To make things easier, you can use an online CSP header generator
# such as: http://cspisawesome.com/.
#
# http://content-security-policy.com/
# http://www.html5rocks.com/en/tutorials/security/content-security-policy/
# http://www.w3.org/TR/CSP11/).
# <IfModule mod_headers.c>
# Header set Content-Security-Policy "script-src 'self'; object-src 'self'"
# # `mod_headers` cannot match based on the content-type, however,
# # the `Content-Security-Policy` response header should be send
# # only for HTML documents and not for the other resources.
# <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|woff2?|xloc|xml|xpi)$">
# Header unset Content-Security-Policy
# </FilesMatch>
# </IfModule>
# ----------------------------------------------------------------------
# | File access |
# ----------------------------------------------------------------------
# Block access to directories without a default document.
#
# You should leave the following uncommented, as you shouldn't allow
# anyone to surf through every directory on your server (which may
# includes rather private places such as the CMS's directories).
<IfModule mod_autoindex.c>
Options -Indexes
</IfModule>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Block access to all hidden files and directories with the exception of
# the visible content from within the `/.well-known/` hidden directory.
#
# These types of files usually contain user preferences or the preserved
# state of an utility, and can include rather private places like, for
# example, the `.git` or `.svn` directories.
#
# The `/.well-known/` directory represents the standard (RFC 5785) path
# prefix for "well-known locations" (e.g.: `/.well-known/manifest.json`,
# `/.well-known/keybase.txt`), and therefore, access to its visible
# content should not be blocked.
#
# https://www.mnot.net/blog/2010/04/07/well-known
# https://tools.ietf.org/html/rfc5785
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} "!(^|/)\.well-known/([^./]+./?)+$" [NC]
RewriteCond %{SCRIPT_FILENAME} -d [OR]
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule "(^|/)\." - [F]
</IfModule>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Block access to files that can expose sensitive information.
#
# By default, block access to backup and source files that may be
# left by some text editors and can pose a security risk when anyone
# has access to them.
#
# http://feross.org/cmsploit/
#
# (!) Update the `<FilesMatch>` regular expression from below to
# include any files that might end up on your production server and
# can expose sensitive information about your website. These files may
# include: configuration files, files that contain metadata about the
# project (e.g.: project dependencies), build scripts, etc..
<FilesMatch "(^#.*#|\.(bak|conf|dist|fla|in[ci]|log|psd|sh|sql|sw[op])|~)$">
# Apache < 2.3
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
Satisfy All
</IfModule>
# Apache ≥ 2.3
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
</FilesMatch>
# ----------------------------------------------------------------------
# | HTTP Strict Transport Security (HSTS) |
# ----------------------------------------------------------------------
# Force client-side SSL redirection.
#
# If a user types `example.com` in their browser, even if the server
# redirects them to the secure version of the website, that still leaves
# a window of opportunity (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 browser's
# address bar.
#
# (!) Remove the `includeSubDomains` optional directive if the website's
# subdomains are not using HTTPS.
#
# http://www.html5rocks.com/en/tutorials/security/transport-layer-security/
# https://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14#section-6.1
# http://blogs.msdn.com/b/ieinternals/archive/2014/08/18/hsts-strict-transport-security-attacks-mitigations-deployment-https.aspx
# <IfModule mod_headers.c>
# Header always set Strict-Transport-Security "max-age=16070400; includeSubDomains"
# </IfModule>
# ----------------------------------------------------------------------
# | Reducing MIME type security risks |
# ----------------------------------------------------------------------
# Prevent some browsers from MIME-sniffing the response.
#
# This reduces exposure to drive-by download attacks and cross-origin
# data leaks, and should be left uncommented, especially if the server
# is serving user-uploaded content or content that could potentially be
# treated as executable by the browser.
#
# http://www.slideshare.net/hasegawayosuke/owasp-hasegawa
# http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx
# https://msdn.microsoft.com/en-us/library/ie/gg622941.aspx
# https://mimesniff.spec.whatwg.org/
<IfModule mod_headers.c>
Header set X-Content-Type-Options "nosniff"
</IfModule>
# ----------------------------------------------------------------------
# | Reflected Cross-Site Scripting (XSS) attacks |
# ----------------------------------------------------------------------
# (1) Try to re-enable the cross-site scripting (XSS) filter built
# into most web browsers.
#
# The filter is usually enabled by default, but in some cases it
# may be disabled by the user. However, in Internet Explorer for
# example, it can be re-enabled just by sending the
# `X-XSS-Protection` header with the value of `1`.
#
# (2) Prevent web browsers from rendering the web page if a potential
# reflected (a.k.a non-persistent) XSS attack is detected by the
# filter.
#
# By default, if the filter is enabled and browsers detect a
# reflected XSS attack, they will attempt to block the attack
# by making the smallest possible modifications to the returned
# web page.
#
# Unfortunately, in some browsers (e.g.: Internet Explorer),
# this default behavior may allow the XSS filter to be exploited,
# thereby, it's better to inform browsers to prevent the rendering
# of the page altogether, instead of attempting to modify it.
#
# https://hackademix.net/2009/11/21/ies-xss-filter-creates-xss-vulnerabilities
#
# (!) Do not rely on the XSS filter to prevent XSS attacks! Ensure that
# you are taking all possible measures to prevent XSS attacks, the
# most obvious being: validating and sanitizing your website's inputs.
#
# http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspx
# http://blogs.msdn.com/b/ieinternals/archive/2011/01/31/controlling-the-internet-explorer-xss-filter-with-the-x-xss-protection-http-header.aspx
# https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29
# <IfModule mod_headers.c>
# # (1) (2)
# Header set X-XSS-Protection "1; mode=block"
# # `mod_headers` cannot match based on the content-type, however,
# # the `X-XSS-Protection` response header should be send only for
# # HTML documents and not for the other resources.
# <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|woff2?|xloc|xml|xpi)$">
# Header unset X-XSS-Protection
# </FilesMatch>
# </IfModule>
# ----------------------------------------------------------------------
# | Server-side technology information |
# ----------------------------------------------------------------------
# Remove the `X-Powered-By` response header that:
#
# * is set by some frameworks and server-side languages
# (e.g.: ASP.NET, PHP), and its value contains information
# about them (e.g.: their name, version number)
#
# * doesn't provide any value as far as users are concern,
# and in some cases, the information provided by it can
# be used by attackers
#
# (!) If you can, you should disable the `X-Powered-By` header from the
# language / framework level (e.g.: for PHP, you can do that by setting
# `expose_php = off` in `php.ini`)
#
# https://php.net/manual/en/ini.core.php#ini.expose-php
<IfModule mod_headers.c>
Header unset X-Powered-By
</IfModule>
# ----------------------------------------------------------------------
# | Server software information |
# ----------------------------------------------------------------------
# Prevent Apache from adding a trailing footer line containing
# information about the server to the server-generated documents
# (e.g.: error messages, directory listings, etc.)
#
# https://httpd.apache.org/docs/current/mod/core.html#serversignature
ServerSignature Off
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Prevent Apache from sending in the `Server` response header its
# exact version number, the description of the generic OS-type or
# information about its compiled-in modules.
#
# (!) The `ServerTokens` directive will only work in the main server
# configuration file, so don't try to enable it in the `.htaccess` file!
#
# https://httpd.apache.org/docs/current/mod/core.html#servertokens
#ServerTokens Prod
# ######################################################################
# # WEB PERFORMANCE #
# ######################################################################
# ----------------------------------------------------------------------
# | Compression |
# ----------------------------------------------------------------------
<IfModule mod_deflate.c>
# Force compression for mangled `Accept-Encoding` request headers
# https://developer.yahoo.com/blogs/ydn/pushing-beyond-gzipping-25601.html
<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 media types.
#
# (!) For Apache versions below version 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.
#
# https://httpd.apache.org/docs/current/mod/mod_filter.html#addoutputfilterbytype
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE "application/atom+xml" \
"application/javascript" \
"application/json" \
"application/ld+json" \
"application/manifest+json" \
"application/rdf+xml" \
"application/rss+xml" \
"application/schema+json" \
"application/vnd.geo+json" \
"application/vnd.ms-fontobject" \
"application/x-font-ttf" \
"application/x-javascript" \
"application/x-web-app-manifest+json" \
"application/xhtml+xml" \
"application/xml" \
"font/eot" \
"font/opentype" \
"image/bmp" \
"image/svg+xml" \
"image/vnd.microsoft.icon" \
"image/x-icon" \
"text/cache-manifest" \
"text/css" \
"text/html" \
"text/javascript" \
"text/plain" \
"text/vcard" \
"text/vnd.rim.location.xloc" \
"text/vtt" \
"text/x-component" \
"text/x-cross-domain-policy" \
"text/xml"
</IfModule>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Map the following filename extensions to the specified
# encoding type in order to make Apache serve the file types
# with the appropriate `Content-Encoding` response header
# (do note that this will NOT make Apache compress them!).
#
# If these files types would be served without an appropriate
# `Content-Enable` response header, client applications (e.g.:
# browsers) wouldn't know that they first need to uncompress
# the response, and thus, wouldn't be able to understand the
# content.
#
# https://httpd.apache.org/docs/current/mod/mod_mime.html#addencoding
<IfModule mod_mime.c>
AddEncoding gzip svgz
</IfModule>
</IfModule>
# ----------------------------------------------------------------------
# | Content transformation |
# ----------------------------------------------------------------------
# Prevent intermediate caches or proxies (e.g.: such as the ones
# used by mobile network providers) from modifying the website's
# content.
#
# https://tools.ietf.org/html/rfc2616#section-14.9.5
#
# (!) If you are using `mod_pagespeed`, please note that setting
# the `Cache-Control: no-transform` response header will prevent
# `PageSpeed` from rewriting `HTML` files, and, if the
# `ModPagespeedDisableRewriteOnNoTransform` directive isn't set
# to `off`, also from rewriting other resources.
#
# https://developers.google.com/speed/pagespeed/module/configuration#notransform
# <IfModule mod_headers.c>
# Header merge Cache-Control "no-transform"
# </IfModule>
# ----------------------------------------------------------------------
# | ETags |
# ----------------------------------------------------------------------
# Remove `ETags` as resources are sent with far-future expires headers.
#
# https://developer.yahoo.com/performance/rules.html#etags
# https://tools.ietf.org/html/rfc7232#section-2.3
# `FileETag None` doesn't work in all cases.
<IfModule mod_headers.c>
Header unset ETag
</IfModule>
FileETag None
# ----------------------------------------------------------------------
# | Expires headers |
# ----------------------------------------------------------------------
# Serve resources with far-future expires headers.
#
# (!) If you don't control versioning with filename-based
# cache busting, you should consider lowering the cache times
# to something like one week.
#
# https://httpd.apache.org/docs/current/mod/mod_expires.html
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
# CSS
ExpiresByType text/css "access plus 1 year"
# Data interchange
ExpiresByType application/atom+xml "access plus 1 hour"
ExpiresByType application/rdf+xml "access plus 1 hour"
ExpiresByType application/rss+xml "access plus 1 hour"
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/ld+json "access plus 0 seconds"
ExpiresByType application/schema+json "access plus 0 seconds"
ExpiresByType application/vnd.geo+json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
# Favicon (cannot be renamed!) and cursor images
ExpiresByType image/vnd.microsoft.icon "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 week"
# HTML
ExpiresByType text/html "access plus 0 seconds"
# JavaScript
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType application/x-javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
# Manifest files
ExpiresByType application/manifest+json "access plus 1 year"
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
ExpiresByType text/cache-manifest "access plus 0 seconds"
# Media files
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType image/bmp "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 image/svg+xml "access plus 1 month"
ExpiresByType image/webp "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 fonts
# Embedded OpenType (EOT)
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType font/eot "access plus 1 month"
# OpenType
ExpiresByType font/opentype "access plus 1 month"
# TrueType
ExpiresByType application/x-font-ttf "access plus 1 month"
# Web Open Font Format (WOFF) 1.0
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType font/woff "access plus 1 month"
# Web Open Font Format (WOFF) 2.0
ExpiresByType application/font-woff2 "access plus 1 month"
# Other
ExpiresByType text/x-cross-domain-policy "access plus 1 week"
</IfModule>
# ----------------------------------------------------------------------
# | File concatenation |
# ----------------------------------------------------------------------
# Allow concatenation from within specific files.
#
# e.g.:
#
# If you have the following lines in a file called, for
# example, `main.combined.js`:
#
# <!--#include file="js/jquery.js" -->
# <!--#include file="js/jquery.timer.js" -->
#
# Apache will replace those lines with the content of the
# specified files.
# <IfModule mod_include.c>
# <FilesMatch "\.combined\.js$">
# Options +Includes
# AddOutputFilterByType INCLUDES application/javascript \
# application/x-javascript \
# text/javascript
# SetOutputFilter INCLUDES
# </FilesMatch>
# <FilesMatch "\.combined\.css$">
# Options +Includes
# AddOutputFilterByType INCLUDES text/css
# SetOutputFilter INCLUDES
# </FilesMatch>
# </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 `/style.12345.css` to `/style.css`.
#
# To understand why this is important and even a better solution than
# using something like `*.css?v231`, please see:
# http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/
# <IfModule mod_rewrite.c>
# RewriteEngine On
# RewriteCond %{REQUEST_FILENAME} !-f
# RewriteRule ^(.+)\.(\d+)\.(bmp|css|cur|gif|ico|jpe?g|js|png|svgz?|webp)$ $1.$3 [L]
# </IfModule>

60
dist/404.html vendored Normal file
View File

@@ -0,0 +1,60 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Page Not Found</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
* {
line-height: 1.2;
margin: 0;
}
html {
color: #888;
display: table;
font-family: sans-serif;
height: 100%;
text-align: center;
width: 100%;
}
body {
display: table-cell;
vertical-align: middle;
margin: 2em auto;
}
h1 {
color: #555;
font-size: 2em;
font-weight: 400;
}
p {
margin: 0 auto;
width: 280px;
}
@media only screen and (max-width: 280px) {
body, p {
width: 95%;
}
h1 {
font-size: 1.5em;
margin: 0 0 0.3em;
}
}
</style>
</head>
<body>
<h1>Page Not Found</h1>
<p>Sorry, but the page you were trying to view does not exist.</p>
</body>
</html>
<!-- IE needs 512+ bytes: http://blogs.msdn.com/b/ieinternals/archive/2010/08/19/http-error-pages-in-internet-explorer.aspx -->

19
dist/LICENSE.txt vendored Normal file
View 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.

BIN
dist/apple-touch-icon.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

12
dist/browserconfig.xml vendored Normal file
View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Please read: https://msdn.microsoft.com/en-us/library/ie/dn455106.aspx -->
<browserconfig>
<msapplication>
<tile>
<square70x70logo src="tile.png"/>
<square150x150logo src="tile.png"/>
<wide310x150logo src="tile-wide.png"/>
<square310x310logo src="tile.png"/>
</tile>
</msapplication>
</browserconfig>

15
dist/crossdomain.xml vendored Normal file
View File

@@ -0,0 +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: https://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"/>
-->
</cross-domain-policy>

279
dist/css/main.css vendored Normal file
View File

@@ -0,0 +1,279 @@
/*! HTML5 Boilerplate v5.1.0 | MIT License | https://html5boilerplate.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 {
color: #222;
font-size: 1em;
line-height: 1.4;
}
/*
* Remove text-shadow in selection highlight:
* https://twitter.com/miketaylr/status/12228805301
*
* 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 audio, canvas, iframes,
* images, videos and the bottom of their containers:
* https://github.com/h5bp/html5-boilerplate/issues/440
*/
audio,
canvas,
iframe,
img,
svg,
video {
vertical-align: middle;
}
/*
* Remove default fieldset styles.
*/
fieldset {
border: 0;
margin: 0;
padding: 0;
}
/*
* Allow only vertical resizing of textareas.
*/
textarea {
resize: vertical;
}
/* ==========================================================================
Browser Upgrade Prompt
========================================================================== */
.browserupgrade {
margin: 0.2em 0;
background: #ccc;
color: #000;
padding: 0.2em 0;
}
/* ==========================================================================
Author's custom styles
========================================================================== */
/* ==========================================================================
Helper classes
========================================================================== */
/*
* Hide visually and from screen readers:
*/
.hidden {
display: none !important;
}
/*
* Hide only visually, but have it available for screen readers:
* http://snook.ca/archives/html_and_css/hiding-content-for-accessibility
*/
.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:
* https://www.drupal.org/node/897638
*/
.visuallyhidden.focusable:active,
.visuallyhidden.focusable:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto;
}
/*
* Hide visually and from screen readers, 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;
}
/* ==========================================================================
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,
(-webkit-min-device-pixel-ratio: 1.25),
(min-resolution: 120dpi) {
/* Style adjustments for high resolution devices */
}
/* ==========================================================================
Print styles.
Inlined to avoid the additional HTTP request:
http://www.phpied.com/delay-loading-your-print-css/
========================================================================== */
@media print {
*,
*:before,
*:after {
background: transparent !important;
color: #000 !important; /* Black prints faster:
http://www.sanbeiji.com/archives/953 */
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 that are fragment identifiers,
* or use the `javascript:` pseudo protocol
*/
a[href^="#"]:after,
a[href^="javascript:"]:after {
content: "";
}
pre,
blockquote {
border: 1px solid #999;
page-break-inside: avoid;
}
/*
* Printing Tables:
* http://css-discuss.incutio.com/wiki/Printing_Tables
*/
thead {
display: table-header-group;
}
tr,
img {
page-break-inside: avoid;
}
img {
max-width: 100% !important;
}
p,
h2,
h3 {
orphans: 3;
widows: 3;
}
h2,
h3 {
page-break-after: avoid;
}
}

424
dist/css/normalize.css vendored Normal file
View File

@@ -0,0 +1,424 @@
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
/**
* 1. Set default font family to sans-serif.
* 2. Prevent iOS and IE text size adjust after device orientation change,
* without disabling user zoom.
*/
html {
font-family: sans-serif; /* 1 */
-ms-text-size-adjust: 100%; /* 2 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/**
* Remove default margin.
*/
body {
margin: 0;
}
/* HTML5 display definitions
========================================================================== */
/**
* Correct `block` display not defined for any HTML5 element in IE 8/9.
* Correct `block` display not defined for `details` or `summary` in IE 10/11
* and Firefox.
* Correct `block` display not defined for `main` in IE 11.
*/
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
display: block;
}
/**
* 1. Correct `inline-block` display not defined in IE 8/9.
* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
*/
audio,
canvas,
progress,
video {
display: inline-block; /* 1 */
vertical-align: baseline; /* 2 */
}
/**
* Prevent modern browsers from displaying `audio` without controls.
* Remove excess height in iOS 5 devices.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Address `[hidden]` styling not present in IE 8/9/10.
* Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
*/
[hidden],
template {
display: none;
}
/* Links
========================================================================== */
/**
* Remove the gray background color from active links in IE 10.
*/
a {
background-color: transparent;
}
/**
* Improve readability of focused elements when they are also in an
* active/hover state.
*/
a:active,
a:hover {
outline: 0;
}
/* Text-level semantics
========================================================================== */
/**
* Address styling not present in IE 8/9/10/11, Safari, and Chrome.
*/
abbr[title] {
border-bottom: 1px dotted;
}
/**
* Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
*/
b,
strong {
font-weight: bold;
}
/**
* Address styling not present in Safari and Chrome.
*/
dfn {
font-style: italic;
}
/**
* Address variable `h1` font-size and margin within `section` and `article`
* contexts in Firefox 4+, Safari, and Chrome.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/**
* Address styling not present in IE 8/9.
*/
mark {
background: #ff0;
color: #000;
}
/**
* 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;
}
/* Embedded content
========================================================================== */
/**
* Remove border when inside `a` element in IE 8/9/10.
*/
img {
border: 0;
}
/**
* Correct overflow not hidden in IE 9/10/11.
*/
svg:not(:root) {
overflow: hidden;
}
/* Grouping content
========================================================================== */
/**
* Address margin not present in IE 8/9 and Safari.
*/
figure {
margin: 1em 40px;
}
/**
* Address differences between Firefox and other browsers.
*/
hr {
box-sizing: content-box;
height: 0;
}
/**
* Contain overflow in all browsers.
*/
pre {
overflow: auto;
}
/**
* Address odd `em`-unit font size rendering in all browsers.
*/
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
/* Forms
========================================================================== */
/**
* Known limitation: by default, Chrome and Safari on OS X allow very limited
* styling of `select`, unless a `border` property is set.
*/
/**
* 1. Correct color not being inherited.
* Known issue: affects color of disabled elements.
* 2. Correct font properties not being inherited.
* 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
*/
button,
input,
optgroup,
select,
textarea {
color: inherit; /* 1 */
font: inherit; /* 2 */
margin: 0; /* 3 */
}
/**
* Address `overflow` set to `hidden` in IE 8/9/10/11.
*/
button {
overflow: visible;
}
/**
* 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 Firefox, IE 8/9/10/11, and Opera.
* Correct `select` style inheritance in Firefox.
*/
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.
*/
button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button; /* 2 */
cursor: pointer; /* 3 */
}
/**
* Re-set default cursor for disabled elements.
*/
button[disabled],
html input[disabled] {
cursor: default;
}
/**
* Remove inner padding and border in Firefox 4+.
*/
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
/**
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
* the UA stylesheet.
*/
input {
line-height: normal;
}
/**
* It's recommended that you don't attempt to style these elements.
* Firefox's implementation doesn't respect box-sizing, padding, or width.
*
* 1. Address box sizing set to `content-box` in IE 8/9/10.
* 2. Remove excess padding in IE 8/9/10.
*/
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Fix the cursor style for Chrome's increment/decrement buttons. For certain
* `font-size` values of the `input`, it causes the cursor style of the
* decrement button to change from `default` to `text`.
*/
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Address `appearance` set to `searchfield` in Safari and Chrome.
* 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
*/
input[type="search"] {
-webkit-appearance: textfield; /* 1 */
box-sizing: content-box; /* 2 */
}
/**
* Remove inner padding and search cancel button in Safari and Chrome on OS X.
* Safari (but not Chrome) clips the cancel button when the search input has
* padding (and `textfield` appearance).
*/
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* 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 8/9/10/11.
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
*/
legend {
border: 0; /* 1 */
padding: 0; /* 2 */
}
/**
* Remove default vertical scrollbar in IE 8/9/10/11.
*/
textarea {
overflow: auto;
}
/**
* Don't inherit the `font-weight` (applied by a rule above).
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
*/
optgroup {
font-weight: bold;
}
/* Tables
========================================================================== */
/**
* Remove most spacing between table cells.
*/
table {
border-collapse: collapse;
border-spacing: 0;
}
td,
th {
padding: 0;
}

29
dist/doc/TOC.md vendored Normal file
View File

@@ -0,0 +1,29 @@
[HTML5 Boilerplate homepage](https://html5boilerplate.com)
## Getting started
* [Usage](usage.md) — Overview of the project contents.
* [FAQ](faq.md) — Frequently asked questions along with their answers.
## HTML5 Boilerplate core
* [HTML](html.md) — Guide to the default HTML.
* [CSS](css.md) — Guide to the default CSS.
* [JavaScript](js.md) — Guide to the default JavaScript.
* [Everything else](misc.md).
## Development
* [Extending and customizing HTML5 Boilerplate](extend.md) — Going further
with the boilerplate.
## Related projects
The [H5BP organization](https://github.com/h5bp) maintains several projects
that complement HTML5 Boilerplate, projects that can help you improve different
aspects of your website/web app (e.g.: the performance, security, etc.).
* [Server Configs](https://github.com/h5bp/server-configs) — Fast and
smart configurations for web servers such as Apache and Nginx.
* [Ant Build Script](https://github.com/h5bp/ant-build-script) — Apache
Ant based build script.

162
dist/doc/css.md vendored Normal file
View File

@@ -0,0 +1,162 @@
[HTML5 Boilerplate homepage](https://html5boilerplate.com) | [Documentation
table of contents](TOC.md)
# The CSS
HTML5 Boilerplate's CSS includes:
* [Normalize.css](#normalizecss)
* [Useful defaults](#useful-defaults)
* [Common helpers](#common-helpers)
* [Placeholder media queries](#media-queries)
* [Print styles](#print-styles)
This starting CSS does not rely on the presence of
[conditional class names](https://www.paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/),
[conditional style sheets](https://css-tricks.com/how-to-create-an-ie-only-stylesheet/),
or [Modernizr](http://modernizr.com/), and it is ready to use no matter what
your development preferences happen to be.
## Normalize.css
In order to make browsers render all elements more consistently and in line
with modern standards, we include
[Normalize.css](https://necolas.github.io/normalize.css/) — a modern, HTML5-ready
alternative to CSS resets.
As opposed to CSS resets, Normalize.css:
* targets only the styles that need normalizing
* preserves useful browser defaults rather than erasing them
* corrects bugs and common browser inconsistencies
* improves usability with subtle improvements
* doesn't clutter the debugging tools
* has better documentation
For more information about Normalize.css, please refer to its [project
page](https://necolas.github.com/normalize.css/), as well as this
[blog post](http://nicolasgallagher.com/about-normalize-css/).
## Useful defaults
Several base styles are included that build upon `Normalize.css`. These
styles:
* provide basic typography settings that improve text readability
* protect against unwanted `text-shadow` during text highlighting
* tweak the default alignment of some elements (e.g.: `img`, `video`,
`fieldset`, `textarea`)
* style the prompt that is displayed to users using an outdated browser
You are free and even encouraged to modify or add to these base styles as your
project requires.
## Common helpers
Along with the base styles, we also provide some commonly used helper classes.
#### `.hidden`
The `hidden` class can be added to any element that you want to hide visually
and from screen readers. It could be an element that will be populated and
displayed later, or an element you will hide with JavaScript.
#### `.visuallyhidden`
The `visuallyhidden` class can be added to any element that you want to hide
visually, while still have its content accessible to screen readers.
See also:
* [CSS in Action: Invisible Content Just for Screen Reader
Users](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 #194](https://github.com/h5bp/html5-boilerplate/issues/194/).
#### `.invisible`
The `invisible` class can be added to any element that you want to hide
visually and from screen readers, but without affecting the layout.
As opposed to the `hidden` class that effectively removes the element from the
layout, the `invisible` class will simply make the element invisible while
keeping it in the flow and not affecting the positioning of the surrounding
content.
__N.B.__ Try to stay away from, and don't use the classes specified above for
[keyword stuffing](https://en.wikipedia.org/wiki/Keyword_stuffing) as you will
harm your site's ranking!
#### `.clearfix`
The `clearfix` class can be added to any element to ensure that it always fully
contains its floated children.
Over the years there have been many variants of the clearfix hack, but currently,
we use the [micro clearfix](http://nicolasgallagher.com/micro-clearfix-hack/).
## Media Queries
HTML5 Boilerplate makes it easy for you to get started with a
[_mobile first_](http://www.lukew.com/presos/preso.asp?26) 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://blog.cloudfour.com/css-media-query-for-mobile-is-fools-gold/).
We include placeholder media queries to help you 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 the _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` media queries instead (e.g.:
`@media only screen and (max-width: 480px)`).
For more features that can help you in your mobile web development, take a look
into our [Mobile Boilerplate](https://github.com/h5bp/mobile-boilerplate).
## Print styles
Lastly, we provide some useful print styles that will optimize the printing
process, as well as make the printed pages easier to read.
At printing time, these styles will:
* strip all background colors, change the font color to black, and remove the
`text-shadow` — done in order to [help save printer ink and speed up the
printing process](http://www.sanbeiji.com/archives/953)
* underline and expand links to include the URL — done in order to allow users
to know where to refer to<br>
(exceptions to this are: the links that are
[fragment identifiers](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-href),
or use the
[`javascript:` pseudo protocol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void#JavaScript_URIs))
* expand abbreviations to include the full description — done in order to allow
users to know what the abbreviations stands for
* provide instructions on how browsers should break the content into pages and
on [orphans/widows](https://en.wikipedia.org/wiki/Widows_and_orphans), namely,
we instruct
[supporting browsers](https://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28Cascading_Style_Sheets%29#Grammar_and_rules)
that they should:
* ensure the table header (`<thead>`) is [printed on each page spanned by the
table](http://css-discuss.incutio.com/wiki/Printing_Tables)
* prevent block quotations, preformatted text, images and table rows from
being split onto two different pages
* ensure that headings never appear on a different page than the text they
are associated with
* ensure that
[orphans and widows](https://en.wikipedia.org/wiki/Widows_and_orphans) do
[not appear on printed pages](https://css-tricks.com/almanac/properties/o/orphans/)
The print styles are included along with the other `css` to [avoid the
additional HTTP request](http://www.phpied.com/delay-loading-your-print-css/).
Also, they should always be included last, so that the other styles can be
overwritten.

663
dist/doc/extend.md vendored Normal file
View File

@@ -0,0 +1,663 @@
[HTML5 Boilerplate homepage](https://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.
* [App Stores](#app-stores)
* [DNS prefetching](#dns-prefetching)
* [Google Universal Analytics](#google-universal-analytics)
* [Internet Explorer](#internet-explorer)
* [Miscellaneous](#miscellaneous)
* [News Feeds](#news-feeds)
* [Search](#search)
* [Social Networks](#social-networks)
* [URLs](#urls)
* [Web Apps](#web-apps)
## 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://developer.chrome.com/webstore/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. Include the following [meta tag](https://developer.apple.com/library/IOS/documentation/AppleApplications/Reference/SafariWebContent/PromotingAppswithAppBanners/PromotingAppswithAppBanners.html#//apple_ref/doc/uid/TP40002051-CH6-SW2)
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">
```
## 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. Fewer 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-US/docs/Web/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">
```
### Further reading about DNS prefetching
* https://developer.mozilla.org/en-US/docs/Controlling_DNS_prefetching
* https://dev.chromium.org/developers/design-documents/dns-prefetching
* 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
## Google Universal Analytics
### More tracking settings
The [optimized Google Universal Analytics
snippet](https://mathiasbynens.be/notes/async-analytics-snippet#universal-analytics)
included with HTML5 Boilerplate includes something like this:
```js
ga('create', 'UA-XXXXX-X', 'auto'); ga('send', 'pageview');
```
To customize further, see Google's [Advanced
Setup](https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced),
[Pageview](https://developers.google.com/analytics/devguides/collection/analyticsjs/pages),
and [Event](https://developers.google.com/analytics/devguides/collection/analyticsjs/events) Docs.
### 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 Universal Analytics may have to ensure that
no personal (trackable) data is transferred to the US. You can do that with
[the `ga('set', 'anonymizeIp', true);`
parameter](https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced#anonymizeip)
before sending any events/pageviews. In use it looks like this:
```js
ga('create', 'UA-XXXXX-X', 'auto');
ga('set', 'anonymizeIp', true);
ga('send', 'pageview');
```
### 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 ga !== "undefined" && ga !== null) {
$(document).ajaxSend(function(event, xhr, settings){
ga('send', 'pageview', settings.url);
});
}
```
### Track JavaScript errors in Google Analytics
Add this function after `ga` 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;
ga('send', {
'hitType': 'event',
'eventCategory': (host == window.location.hostname || host == undefined || host == '' ? '' : 'external ') + 'error',
'eventAction': message,
'eventLabel': (file + ' LINE: ' + line + (column ? ' COLUMN: ' + column : '')).trim(),
'nonInteraction': 1
});
};
}(window));
```
### Track page scroll
Add this function after `ga` 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;
ga('send', 'event', 'scroll',
'Window: ' + $window.height() + 'px; Document: ' + $document.height() + 'px; Time: ' + Math.round((new Date - scrollTimeStart )/1000,1) + 's'
);
}
});
});
```
## 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,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](https://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](https://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 its
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/buildingapps/2012/11/15/adapting-your-webkit-optimized-site-for-internet-explorer-10/)
## Search
### Direct search spiders to your sitemap
[Learn how to make a sitemap](http://www.sitemaps.org/protocol.html)
```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](https://www.google.com/search?ie=UTF-8&q=how+to+make+browser+search+plugin).
```html
<link rel="search" title="" type="application/opensearchdescription+xml" href="">
```
## Miscellaneous
* Use [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
iOS 5+](http://www.johanbrook.com/articles/native-style-momentum-scrolling-to-arrive-in-ios-5/)
using `-webkit-overflow-scrolling: touch`.
* If you want to disable the translation prompt in Chrome or block Google
Translate from translating your web page, use [`<meta name="google"
value="notranslate">`](https://support.google.com/translate/?hl=en#2641276).
To disable translation for a particular section of the web page, add
[`class="notranslate"`](https://support.google.com/translate/?hl=en#2641276).
* If you want to disable the automatic detection and formatting of possible
phone numbers in Safari on iOS, use [`<meta name="format-detection"
content="telephone=no">`](https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariHTMLRef/Articles/MetaTags.html/#//apple_ref/doc/uid/TP40008193-SW5).
* 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.
## 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: https://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: https://web.archive.org/web/20131211032834/http://blog.perplexedlabs.com/2009/07/15/xmlrpc-pingbacks-using-php/
## 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">
```
### Separate mobile URLs
If you use separate URLs for desktop and mobile users, you should consider
helping search engine algorithms better understand the configuration on your
web site.
This can be done by adding the following annotations in your HTML pages:
* on the desktop page, add the `link rel="alternate"` tag pointing to the
corresponding mobile URL, e.g.:
`<link rel="alternate" media="only screen and (max-width: 640px)" href="http://m.example.com/page.html" >`
* on the mobile page, add the `link rel="canonical"` tag pointing to the
corresponding desktop URL, e.g.:
`<link rel="canonical" href="http://www.example.com/page.html">`
For more information please see:
* https://developers.google.com/webmasters/smartphone-sites/details#separateurls
* https://developers.google.com/webmasters/smartphone-sites/feature-phones
## 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](https://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariHTMLRef/Articles/MetaTags.html)
on Apple's site.
### Apple Touch Icons
The Apple touch icons can be seen as the favicons of iOS devices.
The main sizes of the Apple touch icons are:
* `57×57px` iPhone with @1x display and iPod Touch
* `72×72px` iPad and iPad mini with @1x display running iOS ≤ 6
* `76×76px` iPad and iPad mini with @1x display running iOS ≥ 7
* `114×114px` iPhone with @2x display running iOS ≤ 6
* `120×120px` iPhone with @2x and @3x display running iOS ≥ 7
* `144×144px` iPad and iPad mini with @2x display running iOS ≤ 6
* `152×152px` iPad and iPad mini with @2x display running iOS 7
* `180×180px` iPad and iPad mini with @2x display running iOS 8
Displays meaning:
* @1x - non-Retina
* @2x - Retina
* @3x - Retina HD
More information about the displays of iOS devices can be found
[here](https://en.wikipedia.org/wiki/List_of_iOS_devices#Display).
In most cases, one `180×180px` touch icon named `apple-touch-icon.png`
and including:
```html
<link rel="apple-touch-icon" href="apple-touch-icon.png">
```
in the `<head>` of the page is enough. If you use art-direction and/or
want to have different content for each device, you can add more touch
icons as written above.
For a more comprehensive overview, please refer to Mathias' [article on Touch
Icons](https://mathiasbynens.be/notes/touch-icons).
### 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/v4.1.0/js/helper.js#L336-L383)
for the implementation.
### Chrome Mobile web apps
Chrome Mobile has a specific meta tag for making apps [installable to the
homescreen](https://developer.chrome.com/multidevice/android/installtohomescreen)
which tries to be a more generic replacement to Apple's proprietary meta tag:
```html
<meta name="mobile-web-app-capable" content="yes">
```
Same applies to the touch icons:
```html
<link rel="icon" sizes="192x192" href="highres-icon.png">
```
### Theme Color
You can add the [`theme-color` meta extension](https://github.com/whatwg/meta-theme-color)
in the `<head>` of your pages to suggest the color that browsers and
OSes should use if they customize the display of individual pages in
their UIs with varying colors.
```html
<meta name="theme-color" content="#ff69b4">
```
The `content` attribute extension can take any valid CSS color.
Currently, the `theme-color` meta extension is supported by [Chrome 39+
for Android Lollipop](http://updates.html5rocks.com/2014/11/Support-for-theme-color-in-Chrome-39-for-Android)
and [Firefox OS 2.1+](https://twitter.com/ahmednefzaoui/status/492344698493997057).

93
dist/doc/faq.md vendored Normal file
View File

@@ -0,0 +1,93 @@
[HTML5 Boilerplate homepage](https://html5boilerplate.com) | [Documentation
table of contents](TOC.md)
# Frequently asked questions
* [Why is the URL for jQuery without
`http`?](#why-is-the-url-for-jquery-without-http)
* [Why don't you automatically load the latest version of jQuery from the Google
CDN?](#why-dont-you-automatically-load-the-latest-version-of-jquery-from-the-google-cdn)
* [Why is the Google Analytics code at the bottom? Google recommends it be
placed in the `<head>`.](#why-is-the-google-analytics-code-at-the-bottom-google-recommends-it-be-placed-in-the-head)
* [How can I integrate Bootstrap with HTML5
Boilerplate?](#how-can-i-integrate-bootstrap-with-html5-boilerplate)
* [Do I need to upgrade my site each time a new version of HTML5 Boilerplate is
released?](#do-i-need-to-upgrade-my-site-each-time-a-new-version-of-html5-boilerplate-is-released)
* [Where can I get help with support
questions?](#where-can-i-get-help-with-support-questions)
--
### Why is the URL for jQuery without `http`?
It is because of the use of [protocol-relative
URLs](http://paulirish.com/2010/the-protocol-relative-url/).
**N.B.** If you try to view the local web page directly in the browser, the
browser will fail to load the assets specified using protocol-relative URLs
as it will attempt to fetch them from the local file system. We recommend you
use a local HTTP server to test your web pages, or a file hosting service that
allows you to preview your web pages online (e.g.
[Dropbox](https://www.dropbox.com/)).
Setting up a local HTTP server can be done using there various
[one-liners](https://gist.github.com/willurd/5720255):
* PHP 5.4.0+ by running
[`php -S localhost:8080`](https://php.net/manual/en/features.commandline.webserver.php)
from your local directory
* Python 2.x by running `python -m SimpleHTTPServer` from your local directory
* Python 3.x by running `python -m http.server` from your local directory
* Ruby 1.9.2+ by running `ruby -run -ehttpd . -p8080` from your local directory
* Node.js by installing and running either
[`static -p 8080`](https://www.npmjs.org/package/node-static)
or [`http-server -p 8080`](https://www.npmjs.org/package/http-server)
A list of more complex HTTP servers can be found
[here](misc.md#servers-and-stacks).
### Why don't you automatically load the latest version of jQuery from the Google CDN?
The [file](https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js) to which
the Google [CDN](https://en.wikipedia.org/wiki/Content_delivery_network) points
to is [no longer updated and will stay locked at version `1.11.1` in order to
prevent inadvertent web
breakage](http://blog.jquery.com/2014/07/03/dont-use-jquery-latest-js/).
In general, version updating should be an intentional decision! You shouldn't
include a URL that will always point to the latest version, as that version:
* may not be compatible with the existing plugins/code on the site
* will have a very short cache time compare to the specific version,
which means that users won't get the benefits of long-term caching
### Why is the Google Analytics code at the bottom? Google recommends it be placed in the `<head>`.
The main advantage of placing it in the `<head>` is that you will track the
user's `pageview` even if they leave the page before it has been fully loaded.
However, having the code at the bottom of the page [helps improve
performance](http://stevesouders.com/efws/inline-scripts-bottom.php).
### How can I integrate [Bootstrap](http://getbootstrap.com/) with HTML5 Boilerplate?
One simple way is to use [Initializr](http://initializr.com) and create a
custom build that includes both HTML5 Boilerplate and
[Bootstrap](http://getbootstrap.com/).
Read more about how [HTML5 Boilerplate and Bootstrap complement each
other](https://www.quora.com/Is-Bootstrap-a-complement-or-an-alternative-to-HTML5-Boilerplate-or-viceversa/answer/Nicolas-Gallagher).
### Do I need to upgrade my site each time a new version of HTML5 Boilerplate is released?
No, same as you don't normally replace the foundation of a house once it
was built. However, 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 with support questions?
Please ask for help on
[StackOverflow](https://stackoverflow.com/questions/tagged/html5boilerplate).

223
dist/doc/html.md vendored Normal file
View File

@@ -0,0 +1,223 @@
[HTML5 Boilerplate homepage](https://html5boilerplate.com) | [Documentation
table of contents](TOC.md)
# The HTML
By default, HTML5 Boilerplate provides two `html` pages:
* [`index.html`](#indexhtml) - a default HTML skeleton that should form the
basis of all pages on your website
* [`404.html`](#404html) - a placeholder 404 error page
## `index.html`
### The `no-js` class
The `no-js` class is provided in order to allow you to more easily and
explicitly add custom styles based on whether JavaScript is disabled
(`.no-js`) or enabled (`.js`). Using this technique also helps [avoid the
FOUC](http://paulirish.com/2009/avoiding-the-fouc-v3/).
## Language attribute
Please consider specifying the language of your content by adding the `lang`
attribute to `<html>` as in this example:
```html
<html class="no-js" lang="en">
```
### The order of the `<title>` and `<meta>` tags
The order in which the `<title>` and the `<meta>` tags are specified is
important because:
1) the charset declaration (`<meta charset="utf-8">`):
* must be included completely within the [first 1024 bytes of the
document](https://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#charset)
* should be specified as early as possible (before any content that could
be controlled by an attacker, such as a `<title>` element) in order to
avoid a potential [encoding-related security
issue](https://code.google.com/p/doctype-mirror/wiki/ArticleUtf7) in
Internet Explorer
2) the meta tag for compatibility mode
(`<meta http-equiv="x-ua-compatible" content="ie=edge">`):
* [needs to be included before all other tags except for the `<title>` and
the other `<meta>`
tags](https://msdn.microsoft.com/en-us/library/cc288325.aspx)
### `x-ua-compatible`
Internet Explorer 8/9/10 support [document compatibility
modes](https://msdn.microsoft.com/en-us/library/cc288325.aspx) that affect the
way webpages are interpreted and displayed. Because of this, even if your site's
visitor is using, let's say, Internet Explorer 9, it's possible that IE will not
use the latest rendering engine, and instead, decide to render your page using
the Internet Explorer 5.5 rendering engine.
Specifying the `x-ua-compatible` meta tag:
```html
<meta http-equiv="x-ua-compatible" content="ie=edge">
```
or sending the page with the following HTTP response header
```
X-UA-Compatible: IE=edge
```
will force Internet Explorer 8/9/10 to render the webpage in the highest
available mode in [the various cases when it may
not](https://hsivonen.fi/doctype/#ie8), and therefore, ensure that anyone
browsing your site is treated to the best possible user experience that
browser can offer.
If possible, we recommend that you remove the `meta` tag and send only the
HTTP response header as the `meta` tag will not always work if your site is
served on a non-standard port, as Internet Explorer's preference option
`Display intranet sites in Compatibility View` is checked by default.
If you are using Apache as your webserver, including the
[`.htaccess`](https://github.com/h5bp/server-configs-apache) file takes care of
the HTTP header. If you are using a different server, check out our [other
server config](https://github.com/h5bp/server-configs).
Starting with Internet Explorer 11, [document modes are
deprecated](https://msdn.microsoft.com/en-us/library/ie/bg182625.aspx#docmode).
If your business still relies on older web apps and services that were
designed for older versions of Internet Explorer, you might want to consider
enabling [Enterprise Mode](http://blogs.msdn.com/b/ie/archive/2014/04/02/stay-up-to-date-with-enterprise-mode-for-internet-explorer-11.aspx) throughout your company.
## 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](https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html).
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.
## What about polyfills?
If you need to include [polyfills](https://remysharp.com/2010/10/08/what-is-a-polyfill)
in your project, you must make sure those load before any other JavaScript. If you're
using some polyfill CDN service, like [cdn.polyfill.io](https://cdn.polyfill.io/),
just put it before the other scripts in the bottom of the page:
```html
<script src="//cdn.polyfill.io/v1/polyfill.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.11.2.min.js"><\/script>')</script>
<script src="js/plugins.js"></script>
<script src="js/main.js"></script>
</body>
```
If you like to just include the polyfills yourself, you could include them in
`js/plugins.js`. When you have a bunch of polyfills to load in, you could
also create a `polyfills.js` file in the `js/vendor` directory. Also using
this technique, make sure the polyfills are all loaded before any other
Javascript.
There are some misconceptions about Modernizr and polyfills. It's important
to understand that Modernizr just handles feature checking, not polyfilling
itself. The only thing Modernizr does regarding polyfills is that the team
maintains [a huge list of cross Browser polyfills](https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills).
## 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.
### Browser Upgrade Prompt
The main content area of the boilerplate includes a prompt to install an up to
date browser for users of IE 6/7. If you intended to support IE 6/7, 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.
The Google CDN version is chosen over other [potential candidates (like the
jQuery CDN](https://jquery.com/download/#using-jquery-with-a-cdn)) because
it's fast in absolute terms and it has the best overall
[penetration](http://httparchive.org/trends.php#perGlibs) which increases the
odds of having a copy of the library in your user's browser cache.
While the Google CDN is a strong default solution your site or application may
require a different configuration. Testing your site with services like
[WebPageTest](https://www.webpagetest.org/) and browser tools like
[PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights/) or
[YSlow](https://developer.yahoo.com/yslow/) will help you examine the real
world performance of your site and can show where you can optimize your specific
site or application.
### Google Universal Analytics Tracking Code
Finally, an optimized version of the Google Universal 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, youll
be able to count users who dont fully load the page, and youll incur the max
number of simultaneous connections of the browser.
Further information:
* [Optimizing the Google Universal Analytics
Snippet](https://mathiasbynens.be/notes/async-analytics-snippet#universal-analytics)
* [Introduction to
Analytics.js](https://developers.google.com/analytics/devguides/collection/analyticsjs/)
* [Google Analytics Demos & Tools](https://ga-dev-tools.appspot.com/)
**N.B.** The Google Universal Analytics snippet is included by default mainly
because Google Analytics is [currently one of the most popular tracking
solutions](https://trends.builtwith.com/analytics/Google-Analytics) out there.
However, its usage isn't set in stone, and you SHOULD consider exploring the
[alternatives](https://en.wikipedia.org/wiki/List_of_web_analytics_software)
and use whatever suits your needs best!

37
dist/doc/js.md vendored Normal file
View File

@@ -0,0 +1,37 @@
[HTML5 Boilerplate homepage](https://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](https://learn.jquery.com/plugins/#Getting_Started).
By default the `plugins.js` file contains a small script to avoid `console`
errors in browsers that lack a `console`. The script will make sure that, if
a console method isn't available, that method will have the value of empty
function, thus, preventing the browser from throwing an error.
## 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/).

198
dist/doc/misc.md vendored Normal file
View File

@@ -0,0 +1,198 @@
[HTML5 Boilerplate homepage](https://html5boilerplate.com) | [Documentation
table of contents](TOC.md)
# Miscellaneous
* [.gitignore](#gitignore)
* [.editorconfig](#editorconfig)
* [Server Configuration](#server-configuration)
* [crossdomain.xml](#crossdomainxml)
* [robots.txt](#robotstxt)
* [browserconfig.xml](#browserconfigxml)
--
## .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: https://help.github.com/articles/ignoring-files
* Comprehensive set of ignores on GitHub: https://github.com/github/gitignore
## .editorconfig
The `.editorconfig` file is provided in order to encourage and help you and
your team define and maintain consistent coding styles between different
editors and IDEs.
By default, `.editorconfig` includes some basic
[properties](http://editorconfig.org/#supported-properties) that reflect the
coding styles from the files provided by default, but you can easily change
them to better suit your needs.
In order for your editor/IDE to apply the
[properties](http://editorconfig.org/#supported-properties) from the
`.editorconfig` file, you will need to [install a
plugin]( http://editorconfig.org/#download).
__N.B.__ If you aren't using the server configurations provided by HTML5
Boilerplate, we highly encourage you to configure your server to block
access to `.editorconfig` files, as they can disclose sensitive information!
For more details, please refer to the [EditorConfig
project](http://editorconfig.org/).
## Server Configuration
H5BP includes a [`.htaccess`](#htaccess) file for the Apache HTTP server. If you are not using
Apache as your web server, then you are encouraged to download a
[server configuration](https://github.com/h5bp/server-configs) that corresponds
to your web server and environment.
### Servers and Stacks
A comprehensive list of web servers and stacks are beyond the scope of this
documentation, but some common ones include:
* [Apache HTTP Server](https://httpd.apache.org/docs/trunk/getting-started.html)
* [LAMP](https://en.wikipedia.org/wiki/LAMP_%28software_bundle%29)
(Linux, Apache, MySQL, and PHP).
Other variants include [MAMP](https://www.mamp.info/en/index.html),
[WAMP](http://www.wampserver.com/en/),
or [XAMPP](https://www.apachefriends.org/index.html).
* LAPP uses PostgreSQL instead of MySQL
* [Nginx](http://wiki.nginx.org/GettingStarted)
* [LEMP](http://www.chrisjohnston.org/ubuntu-tutorials/setting-up-a-lemp-stack-ubuntu-904)
is similar to the LAMP stack but uses Nginx
* [IIS](https://en.wikipedia.org/wiki/Internet_Information_Services)
* [ASP.NET](https://www.asp.net/get-started)
* [MEAN](http://mean.io/) (MongoDB, Express, AngularJS, Node.js)
### .htaccess
A `.htaccess` (hypertext access) file is a
[Apache HTTP server configuration file](https://github.com/h5bp/server-configs-apache).
The `.htaccess` file is mostly used for:
* Rewriting URLs
* Controlling cache
* Authentication
* Server-side includes
* Redirects
* Gzipping
If you have access to the main server configuration file (usually called
`httpd.conf`), you should add the logic from the `.htaccess` file in, for
example, a <Directory> section in the main configuration file. This is usually
the recommended way, as using .htaccess files slows down Apache!
To enable Apache modules locally, please see:
https://github.com/h5bp/server-configs-apache/wiki/How-to-enable-Apache-modules.
In the repo the `.htaccess` is used for:
* Allowing cross-origin access to web fonts
* CORS header for images when browsers request it
* Enable `404.html` as 404 error document
* Making the website experience better for IE users better
* Media UTF-8 as character encoding for `text/html` and `text/plain`
* Enabling the rewrite URLs engine
* Forcing or removing the `www.` at the begin of a URL
* It blocks access to directories without a default document
* It blocks access to files that can expose sensitive information.
* It reduces MIME type security risks
* It forces compressing (gzipping)
* It tells the browser whether they should request a specific file from the
server or whether they should grab it from the browser's cache
When using `.htaccess` we recommend reading all inline comments (the rules after
a `#`) in the file once. There is a bunch of optional stuff in it.
If you want to know more about the `.htaccess` file check out
https://httpd.apache.org/docs/current/howto/htaccess.html.
Notice that the original repo for the `.htaccess` file is [this
one](https://github.com/h5bp/server-configs-apache).
## crossdomain.xml
The _cross-domain policy file_ is an XML document that gives a web client —
such as Adobe Flash Player, Adobe Reader, etc. — permission to handle data
across multiple domains, by:
* granting read access to data
* permitting the client to include custom headers in cross-domain requests
* granting permissions for socket-based connections
__e.g.__ If 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 in order to grant access
to the source domain and allow the client to continue with the transaction.
For more in-depth information, please see Adobe's [cross-domain policy file
specification](https://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html).
## robots.txt
The `robots.txt` file is used to give instructions to web robots on what can
be crawled from the website.
By default, the file provided by this project includes the next two lines:
* `User-agent: *` - the following rules apply to all web robots
* `Disallow:` - everything on the website is allowed to be crawled
If you want to disallow certain pages you will need to specify the path in a
`Disallow` directive (e.g.: `Disallow: /path`) or, if you want to disallow
crawling of all content, use `Disallow: /`.
The `/robots.txt` file is not intended for access control, so don't try to
use it as such. Think of it as a "No Entry" sign, rather than a locked door.
URLs disallowed by the `robots.txt` file might still be indexed without being
crawled, and the content from within the `robots.txt` file can be viewed by
anyone, potentially disclosing the location of your private content! So, if
you want to block access to private content, use proper authentication instead.
For more information about `robots.txt`, please see:
* [robotstxt.org](http://www.robotstxt.org/)
* [How Google handles the `robots.txt` file](https://developers.google.com/webmasters/control-crawl-index/docs/robots_txt)
## browserconfig.xml
The `browserconfig.xml` file is used to customize the tile displayed when users
pin your site to the Windows 8.1 start screen. In there you can define custom
tile colors, custom images or even [live tiles](https://msdn.microsoft.com/en-us/library/ie/dn455106.aspx#CreatingLiveTiles).
By default, the file points to 2 placeholder tile images:
* `tile.png` (558x558px): used for `Small`, `Medium` and `Large` tiles.
This image resizes automatically when necessary.
* `tile-wide.png` (558x270px): user for `Wide` tiles.
Notice that IE11 uses the same images when adding a site to the `favorites`.
For more in-depth information about the `browserconfig.xml` file, please
see [MSDN](https://msdn.microsoft.com/en-us/library/ie/dn320426.aspx).

130
dist/doc/usage.md vendored Normal file
View File

@@ -0,0 +1,130 @@
[HTML5 Boilerplate homepage](https://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))
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
├── .editorconfig
├── .htaccess
├── 404.html
├── apple-touch-icon.png
├── browserconfig.xml
├── index.html
├── humans.txt
├── robots.txt
├── crossdomain.xml
├── favicon.ico
├── tile-wide.png
└── tile.png
```
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
repository](https://github.com/h5bp/server-configs-apache).
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.
### browserconfig.xml
This file contains all settings regarding custom tiles for IE11.
For more info on this topic, please refer to
[MSDN](https://msdn.microsoft.com/en-us/library/ie/dn455106.aspx).
### .editorconfig
The `.editorconfig` file is provided in order to encourage and help you and
your team to maintain consistent coding styles between different
editors and IDEs. [Read more about the `.editorconfig` file](misc.md#editorconfig).
### 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 Universal 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](misc.md#crossdomainxml).
### Icons
Replace the default `favicon.ico`, `tile.png`, `tile-wide.png` 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](https://drublic.de/blog/html5-boilerplate-favicons-psd-template/).

BIN
dist/favicon.ico vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

15
dist/humans.txt vendored Normal file
View File

@@ -0,0 +1,15 @@
# humanstxt.org/
# The humans responsible & technology colophon
# TEAM
<name> -- <role> -- <twitter>
# THANKS
<name>
# TECHNOLOGY COLOPHON
CSS3, HTML5
Apache Server Configs, jQuery, Modernizr, Normalize.css

0
dist/img/.gitignore vendored Normal file
View File

40
dist/index.html vendored Normal file
View File

@@ -0,0 +1,40 @@
<!doctype html>
<html class="no-js" lang="">
<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">
<link rel="apple-touch-icon" href="apple-touch-icon.png">
<!-- Place favicon.ico in the root directory -->
<link rel="stylesheet" href="css/normalize.css">
<link rel="stylesheet" href="css/main.css">
<script src="js/vendor/modernizr-2.8.3.min.js"></script>
</head>
<body>
<!--[if lt IE 8]>
<p class="browserupgrade">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
<![endif]-->
<!-- Add your site or application content here -->
<p>Hello world! This is HTML5 Boilerplate.</p>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.11.2.min.js"><\/script>')</script>
<script src="js/plugins.js"></script>
<script src="js/main.js"></script>
<!-- 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='https://www.google-analytics.com/analytics.js';
r.parentNode.insertBefore(e,r)}(window,document,'script','ga'));
ga('create','UA-XXXXX-X','auto');ga('send','pageview');
</script>
</body>
</html>

0
dist/js/main.js vendored Normal file
View File

24
dist/js/plugins.js vendored Normal file
View File

@@ -0,0 +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',
'timeline', 'timelineEnd', 'timeStamp', 'trace', 'warn'
];
var length = methods.length;
var console = (window.console = window.console || {});
while (length--) {
method = methods[length];
// Only stub undefined methods.
if (!console[method]) {
console[method] = noop;
}
}
}());
// Place any jQuery/helper plugins in here.

5
dist/js/vendor/jquery-1.11.2.min.js vendored Normal file

File diff suppressed because one or more lines are too long

4
dist/js/vendor/modernizr-2.8.3.min.js vendored Normal file

File diff suppressed because one or more lines are too long

5
dist/robots.txt vendored Normal file
View File

@@ -0,0 +1,5 @@
# www.robotstxt.org/
# Allow crawling of all content
User-agent: *
Disallow:

BIN
dist/tile-wide.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
dist/tile.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

168
gulpfile.js Normal file
View File

@@ -0,0 +1,168 @@
var fs = require('fs');
var path = require('path');
var gulp = require('gulp');
var plugins = require('gulp-load-plugins')(); // Load all gulp plugins
// automatically and attach
// them to the `plugins` object
var runSequence = require('run-sequence'); // Temporary solution until gulp 4
// https://github.com/gulpjs/gulp/issues/355
var pkg = require('./package.json');
var dirs = pkg['h5bp-configs'].directories;
// ---------------------------------------------------------------------
// | Helper tasks |
// ---------------------------------------------------------------------
gulp.task('archive:create_archive_dir', function () {
fs.mkdirSync(path.resolve(dirs.archive), '0755');
});
gulp.task('archive:zip', function (done) {
var archiveName = path.resolve(dirs.archive, pkg.name + '_v' + pkg.version + '.zip');
var archiver = require('archiver')('zip');
var files = require('glob').sync('**/*.*', {
'cwd': dirs.dist,
'dot': true // include hidden files
});
var output = fs.createWriteStream(archiveName);
archiver.on('error', function (error) {
done();
throw error;
});
output.on('close', done);
files.forEach(function (file) {
var filePath = path.resolve(dirs.dist, file);
// `archiver.bulk` does not maintain the file
// permissions, so we need to add files individually
archiver.append(fs.createReadStream(filePath), {
'name': file,
'mode': fs.statSync(filePath)
});
});
archiver.pipe(output);
archiver.finalize();
});
gulp.task('clean', function (done) {
require('del')([
dirs.archive,
dirs.dist
], done);
});
gulp.task('copy', [
'copy:.htaccess',
'copy:index.html',
'copy:jquery',
'copy:license',
'copy:main.css',
'copy:misc',
'copy:normalize'
]);
gulp.task('copy:.htaccess', function () {
return gulp.src('node_modules/apache-server-configs/dist/.htaccess')
.pipe(plugins.replace(/# ErrorDocument/g, 'ErrorDocument'))
.pipe(gulp.dest(dirs.dist));
});
gulp.task('copy:index.html', function () {
return gulp.src(dirs.src + '/index.html')
.pipe(plugins.replace(/{{JQUERY_VERSION}}/g, pkg.devDependencies.jquery))
.pipe(gulp.dest(dirs.dist));
});
gulp.task('copy:jquery', function () {
return gulp.src(['node_modules/jquery/dist/jquery.min.js'])
.pipe(plugins.rename('jquery-' + pkg.devDependencies.jquery + '.min.js'))
.pipe(gulp.dest(dirs.dist + '/js/vendor'));
});
gulp.task('copy:license', function () {
return gulp.src('LICENSE.txt')
.pipe(gulp.dest(dirs.dist));
});
gulp.task('copy:main.css', function () {
var banner = '/*! HTML5 Boilerplate v' + pkg.version +
' | ' + pkg.license.type + ' License' +
' | ' + pkg.homepage + ' */\n\n';
return gulp.src(dirs.src + '/css/main.css')
.pipe(plugins.header(banner))
.pipe(plugins.autoprefixer({
browsers: ['last 2 versions', 'ie >= 8', '> 1%'],
cascade: false
}))
.pipe(gulp.dest(dirs.dist + '/css'));
});
gulp.task('copy:misc', function () {
return gulp.src([
// Copy all files
dirs.src + '/**/*',
// Exclude the following files
// (other tasks will handle the copying of these files)
'!' + dirs.src + '/css/main.css',
'!' + dirs.src + '/index.html'
], {
// Include hidden files by default
dot: true
}).pipe(gulp.dest(dirs.dist));
});
gulp.task('copy:normalize', function () {
return gulp.src('node_modules/normalize.css/normalize.css')
.pipe(gulp.dest(dirs.dist + '/css'));
});
gulp.task('lint:js', function () {
return gulp.src([
'gulpfile.js',
dirs.src + '/js/*.js',
dirs.test + '/*.js'
]).pipe(plugins.jscs())
.pipe(plugins.jshint())
.pipe(plugins.jshint.reporter('jshint-stylish'))
.pipe(plugins.jshint.reporter('fail'));
});
// ---------------------------------------------------------------------
// | Main tasks |
// ---------------------------------------------------------------------
gulp.task('archive', function (done) {
runSequence(
'build',
'archive:create_archive_dir',
'archive:zip',
done);
});
gulp.task('build', function (done) {
runSequence(
['clean', 'lint:js'],
'copy',
done);
});
gulp.task('default', ['build']);

View File

@@ -1,104 +0,0 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<!-- www.phpied.com/conditional-comments-block-downloads/ -->
<!--[if IE]><![endif]-->
<!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame
Remove this if you use the .htaccess -->
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><![endif]-->
<title></title>
<meta name="description" content="">
<meta name="author" content="">
<!-- Mobile Viewport Fix
j.mp/mobileviewport & davidbcalhoun.com/2010/viewport-metatag
device-width : Occupy full width of the screen in its current orientation
initial-scale = 1.0 retains dimensions instead of zooming out if page height > device height
maximum-scale = 1.0 retains dimensions instead of zooming in if page width < device width
-->
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0;">
<!-- Place favicon.ico and 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=1">
<!-- For the less-enabled mobile browsers like Opera Mini -->
<link rel="stylesheet" media="handheld" href="css/handheld.css?v=1">
<!-- All JavaScript at the bottom, except for Modernizr which enables HTML5 elements & feature detects -->
<script src="js/modernizr-1.5.min.js"></script>
</head>
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!--[if lt IE 7 ]> <body class="ie6"> <![endif]-->
<!--[if IE 7 ]> <body class="ie7"> <![endif]-->
<!--[if IE 8 ]> <body class="ie8"> <![endif]-->
<!--[if IE 9 ]> <body class="ie9"> <![endif]-->
<!--[if gt IE 9]> <body> <![endif]-->
<!--[if !IE]><!--> <body> <!--<![endif]-->
<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="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>!window.jQuery && document.write('<script src="js/jquery-1.4.2.min.js"><\/script>')</script>
<script src="js/plugins.js?v=1"></script>
<script src="js/script.js?v=1"></script>
<!--[if lt IE 7 ]>
<script src="js/dd_belatedpng.js?v=1"></script>
<![endif]-->
<!-- yui profiler and profileviewer - remove for production -->
<script src="js/profiling/yahoo-profiling.min.js?v=1"></script>
<script src="js/profiling/config.js?v=1"></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 = '//www.google-analytics.com/ga.js';
s.parentNode.insertBefore(g, s);
})(document, 'script');
</script>
</body>
</html>

View File

@@ -1,306 +0,0 @@
/**
* DD_belatedPNG: Adds IE6 support: PNG images for CSS background-image and HTML <IMG/>.
* Author: Drew Diller
* Email: drew.diller@gmail.com
* URL: http://www.dillerdesign.com/experiment/DD_belatedPNG/
* Version: 0.0.7a
* Licensed under the MIT License: http://dillerdesign.com/experiment/DD_belatedPNG/#license
*
* Example usage:
* DD_belatedPNG.fix('.png_bg'); // argument is a CSS selector
* DD_belatedPNG.fixPng( someNode ); // argument is an HTMLDomElement
**/
/*
PLEASE READ:
Absolutely everything in this script is SILLY. I know this. IE's rendering of certain pixels doesn't make sense, so neither does this code!
*/
var DD_belatedPNG = {
ns: 'DD_belatedPNG',
imgSize: {},
createVmlNameSpace: function() { /* enable VML */
if (document.namespaces && !document.namespaces[this.ns]) {
document.namespaces.add(this.ns, 'urn:schemas-microsoft-com:vml');
}
if (window.attachEvent) {
window.attachEvent('onbeforeunload', function() {
DD_belatedPNG = null;
});
}
},
createVmlStyleSheet: function() { /* style VML, enable behaviors */
/*
Just in case lots of other developers have added
lots of other stylesheets using document.createStyleSheet
and hit the 31-limit mark, let's not use that method!
further reading: http://msdn.microsoft.com/en-us/library/ms531194(VS.85).aspx
*/
var style = document.createElement('style');
document.documentElement.firstChild.insertBefore(style, document.documentElement.firstChild.firstChild);
var styleSheet = style.styleSheet;
styleSheet.addRule(this.ns + '\\:*', '{behavior:url(#default#VML)}');
styleSheet.addRule(this.ns + '\\:shape', 'position:absolute;');
styleSheet.addRule('img.' + this.ns + '_sizeFinder', 'behavior:none; border:none; position:absolute; z-index:-1; top:-10000px; visibility:hidden;'); /* large negative top value for avoiding vertical scrollbars for large images, suggested by James O'Brien, http://www.thanatopsic.org/hendrik/ */
this.styleSheet = styleSheet;
},
readPropertyChange: function() {
var el = event.srcElement;
if (event.propertyName.search('background') != -1 || event.propertyName.search('border') != -1) {
DD_belatedPNG.applyVML(el);
}
if (event.propertyName == 'style.display') {
var display = (el.currentStyle.display == 'none') ? 'none' : 'block';
for (var v in el.vml) {
el.vml[v].shape.style.display = display;
}
}
if (event.propertyName.search('filter') != -1) {
DD_belatedPNG.vmlOpacity(el);
}
},
vmlOpacity: function(el) {
if (el.currentStyle.filter.search('lpha') != -1) {
var trans = el.currentStyle.filter;
trans = parseInt(trans.substring(trans.lastIndexOf('=')+1, trans.lastIndexOf(')')), 10)/100;
el.vml.color.shape.style.filter = el.currentStyle.filter; /* complete guesswork */
el.vml.image.fill.opacity = trans; /* complete guesswork */
}
},
handlePseudoHover: function(el) {
setTimeout(function() { /* wouldn't work as intended without setTimeout */
DD_belatedPNG.applyVML(el);
}, 1);
},
/**
* This is the method to use in a document.
* @param {String} selector - REQUIRED - a CSS selector, such as '#doc .container'
**/
fix: function(selector) {
if (!$.browser.ie6) return; // just a doublecheck catch.
var selectors = selector.split(','); /* multiple selectors supported, no need for multiple calls to this anymore */
for (var i=0; i<selectors.length; i++) {
this.styleSheet.addRule(selectors[i], 'behavior:expression(DD_belatedPNG.fixPng(this))'); /* seems to execute the function without adding it to the stylesheet - interesting... */
}
},
applyVML: function(el) {
el.runtimeStyle.cssText = '';
this.vmlFill(el);
this.vmlOffsets(el);
this.vmlOpacity(el);
if (el.isImg) {
this.copyImageBorders(el);
}
},
attachHandlers: function(el) {
var self = this;
var handlers = {resize: 'vmlOffsets', move: 'vmlOffsets'};
if (el.nodeName == 'A') {
var moreForAs = {mouseleave: 'handlePseudoHover', mouseenter: 'handlePseudoHover', focus: 'handlePseudoHover', blur: 'handlePseudoHover'};
for (var a in moreForAs) {
handlers[a] = moreForAs[a];
}
}
for (var h in handlers) {
el.attachEvent('on' + h, function() {
self[handlers[h]](el);
});
}
el.attachEvent('onpropertychange', this.readPropertyChange);
},
giveLayout: function(el) {
el.style.zoom = 1;
if (el.currentStyle.position == 'static') {
el.style.position = 'relative';
}
},
copyImageBorders: function(el) {
var styles = {'borderStyle':true, 'borderWidth':true, 'borderColor':true};
for (var s in styles) {
el.vml.color.shape.style[s] = el.currentStyle[s];
}
},
vmlFill: function(el) {
if (!el.currentStyle) {
return;
} else {
var elStyle = el.currentStyle;
}
for (var v in el.vml) {
el.vml[v].shape.style.zIndex = elStyle.zIndex;
}
el.runtimeStyle.backgroundColor = '';
el.runtimeStyle.backgroundImage = '';
var noColor = (elStyle.backgroundColor == 'transparent');
var noImg = true;
if (elStyle.backgroundImage != 'none' || el.isImg) {
if (!el.isImg) {
el.vmlBg = elStyle.backgroundImage;
el.vmlBg = el.vmlBg.substr(5, el.vmlBg.lastIndexOf('")')-5);
}
else {
el.vmlBg = el.src;
}
var lib = this;
if (!lib.imgSize[el.vmlBg]) { /* determine size of loaded image */
var img = document.createElement('img');
lib.imgSize[el.vmlBg] = img;
img.className = lib.ns + '_sizeFinder';
img.runtimeStyle.cssText = 'behavior:none; position:absolute; left:-10000px; top:-10000px; border:none;'; /* make sure to set behavior to none to prevent accidental matching of the helper elements! */
img.attachEvent('onload', function() {
this.width = this.offsetWidth; /* weird cache-busting requirement! */
this.height = this.offsetHeight;
lib.vmlOffsets(el);
});
img.src = el.vmlBg;
img.removeAttribute('width');
img.removeAttribute('height');
document.body.insertBefore(img, document.body.firstChild);
}
el.vml.image.fill.src = el.vmlBg;
noImg = false;
}
el.vml.image.fill.on = !noImg;
el.vml.image.fill.color = 'none';
el.vml.color.shape.style.backgroundColor = elStyle.backgroundColor;
el.runtimeStyle.backgroundImage = 'none';
el.runtimeStyle.backgroundColor = 'transparent';
},
/* IE can't figure out what do when the offsetLeft and the clientLeft add up to 1, and the VML ends up getting fuzzy... so we have to push/enlarge things by 1 pixel and then clip off the excess */
vmlOffsets: function(el) {
var thisStyle = el.currentStyle;
var size = {'W':el.clientWidth+1, 'H':el.clientHeight+1, 'w':this.imgSize[el.vmlBg].width, 'h':this.imgSize[el.vmlBg].height, 'L':el.offsetLeft, 'T':el.offsetTop, 'bLW':el.clientLeft, 'bTW':el.clientTop};
var fudge = (size.L + size.bLW == 1) ? 1 : 0;
/* vml shape, left, top, width, height, origin */
var makeVisible = function(vml, l, t, w, h, o) {
vml.coordsize = w+','+h;
vml.coordorigin = o+','+o;
vml.path = 'm0,0l'+w+',0l'+w+','+h+'l0,'+h+' xe';
vml.style.width = w + 'px';
vml.style.height = h + 'px';
vml.style.left = l + 'px';
vml.style.top = t + 'px';
};
makeVisible(el.vml.color.shape, (size.L + (el.isImg ? 0 : size.bLW)), (size.T + (el.isImg ? 0 : size.bTW)), (size.W-1), (size.H-1), 0);
makeVisible(el.vml.image.shape, (size.L + size.bLW), (size.T + size.bTW), (size.W), (size.H), 1);
var bg = {'X':0, 'Y':0};
var figurePercentage = function(axis, position) {
var fraction = true;
switch(position) {
case 'left':
case 'top':
bg[axis] = 0;
break;
case 'center':
bg[axis] = .5;
break;
case 'right':
case 'bottom':
bg[axis] = 1;
break;
default:
if (position.search('%') != -1) {
bg[axis] = parseInt(position)*.01;
}
else {
fraction = false;
}
}
var horz = (axis == 'X');
bg[axis] = Math.ceil(fraction ? ( (size[horz?'W': 'H'] * bg[axis]) - (size[horz?'w': 'h'] * bg[axis]) ) : parseInt(position));
if (bg[axis] == 0) {
bg[axis]++;
}
};
for (var b in bg) {
figurePercentage(b, thisStyle['backgroundPosition'+b]);
}
el.vml.image.fill.position = (bg.X/size.W) + ',' + (bg.Y/size.H);
var bgR = thisStyle.backgroundRepeat;
var dC = {'T':1, 'R':size.W+fudge, 'B':size.H, 'L':1+fudge}; /* these are defaults for repeat of any kind */
var altC = { 'X': {'b1': 'L', 'b2': 'R', 'd': 'W'}, 'Y': {'b1': 'T', 'b2': 'B', 'd': 'H'} };
if (bgR != 'repeat') {
var c = {'T':(bg.Y), 'R':(bg.X+size.w), 'B':(bg.Y+size.h), 'L':(bg.X)}; /* these are defaults for no-repeat - clips down to the image location */
if (bgR.search('repeat-') != -1) { /* now let's revert to dC for repeat-x or repeat-y */
var v = bgR.split('repeat-')[1].toUpperCase();
c[altC[v].b1] = 1;
c[altC[v].b2] = size[altC[v].d];
}
if (c.B > size.H) {
c.B = size.H;
}
el.vml.image.shape.style.clip = 'rect('+c.T+'px '+(c.R+fudge)+'px '+c.B+'px '+(c.L+fudge)+'px)';
}
else {
el.vml.image.shape.style.clip = 'rect('+dC.T+'px '+dC.R+'px '+dC.B+'px '+dC.L+'px)';
}
},
fixPng: function(el) {
if (!$.browser.ie6) return; // just a doublecheck catch.
el.style.behavior = 'none';
if (el.nodeName == 'BODY' || el.nodeName == 'TD' || el.nodeName == 'TR') { /* elements not supported yet */
return;
}
el.isImg = false;
if (el.nodeName == 'IMG') {
if(el.src.toLowerCase().search(/\.png/) != -1) {
el.isImg = true;
el.style.visibility = 'hidden';
}
else {
return;
}
}
else if (el.currentStyle.backgroundImage.toLowerCase().search('.png') == -1) {
return;
}
var lib = DD_belatedPNG;
el.vml = {color: {}, image: {}};
var els = {shape: {}, fill: {}};
for (var r in el.vml) {
for (var e in els) {
var nodeStr = lib.ns + ':' + e;
el.vml[r][e] = document.createElement(nodeStr);
}
el.vml[r].shape.stroked = false;
el.vml[r].shape.appendChild(el.vml[r].fill);
el.parentNode.insertBefore(el.vml[r].shape, el);
}
el.vml.image.shape.fillcolor = 'none'; /* Don't show blank white shapeangle when waiting for image to load. */
el.vml.image.fill.type = 'tile'; /* Ze magic!! Makes image show up. */
el.vml.color.fill.on = false; /* Actually going to apply vml element's style.backgroundColor, so hide the whiteness. */
lib.attachHandlers(el);
lib.giveLayout(el);
lib.giveLayout(el.offsetParent);
/* set up element */
lib.applyVML(el);
}
};
try {
document.execCommand("BackgroundImageCache", false, true); /* TredoSoft Multiple IE doesn't like this, so try{} it */
} catch(r) {}
DD_belatedPNG.createVmlNameSpace();
DD_belatedPNG.createVmlStyleSheet();

154
js/jquery-1.4.2.min.js vendored
View File

@@ -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);

View File

@@ -1,28 +0,0 @@
/*!
* Modernizr JavaScript library 1.5
* http://www.modernizr.com/
*
* Copyright (c) 2009-2010 Faruk Ates - http://farukat.es/
* Dual-licensed under the BSD and MIT licenses.
* http://www.modernizr.com/license/
*
* Featuring major contributions by
* Paul Irish - http://paulirish.com
*/
window.Modernizr=function(i,e,I){function C(a,b){for(var c in a)if(m[a[c]]!==I&&(!b||b(a[c],D)))return true}function r(a,b){var c=a.charAt(0).toUpperCase()+a.substr(1);return!!C([a,"Webkit"+c,"Moz"+c,"O"+c,"ms"+c,"Khtml"+c],b)}function P(){j[E]=function(a){for(var b=0,c=a.length;b<c;b++)J[a[b]]=!!(a[b]in n);return J}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" "));j[Q]=function(a){for(var b=0,c,h=a.length;b<h;b++){n.setAttribute("type",a[b]);if(c=n.type!==
"text"){n.value=K;/tel|search/.test(n.type)||(c=/url|email/.test(n.type)?n.checkValidity&&n.checkValidity()===false:n.value!=K)}L[a[b]]=!!c}return L}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var j={},s=e.documentElement,D=e.createElement("modernizr"),m=D.style,n=e.createElement("input"),E="input",Q=E+"types",K=":)",M=Object.prototype.toString,y=" -o- -moz- -ms- -webkit- -khtml- ".split(" "),d={},L={},J={},N=[],u=function(){var a={select:"input",
change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"},b={};return function(c,h){var t=arguments.length==1;if(t&&b[c])return b[c];h=h||document.createElement(a[c]||"div");c="on"+c;var g=c in h;if(!g&&h.setAttribute){h.setAttribute(c,"return;");g=typeof h[c]=="function"}h=null;return t?(b[c]=g):g}}(),F={}.hasOwnProperty,O;O=typeof F!=="undefined"&&typeof F.call!=="undefined"?function(a,b){return F.call(a,b)}:function(a,b){return b in a&&typeof a.constructor.prototype[b]==="undefined"};
d.canvas=function(){return!!e.createElement("canvas").getContext};d.canvastext=function(){return!!(d.canvas()&&typeof e.createElement("canvas").getContext("2d").fillText=="function")};d.geolocation=function(){return!!navigator.geolocation};d.crosswindowmessaging=function(){return!!i.postMessage};d.websqldatabase=function(){var a=!!i.openDatabase;if(a)try{a=!!openDatabase("testdb","1.0","html5 test db",2E5)}catch(b){a=false}return a};d.indexedDB=function(){return!!i.indexedDB};d.hashchange=function(){return u("hashchange",
i)&&(document.documentMode===I||document.documentMode>7)};d.historymanagement=function(){return!!(i.history&&history.pushState)};d.draganddrop=function(){return u("drag")&&u("dragstart")&&u("dragenter")&&u("dragover")&&u("dragleave")&&u("dragend")&&u("drop")};d.websockets=function(){return"WebSocket"in i};d.rgba=function(){m.cssText="background-color:rgba(150,255,150,.5)";return(""+m.backgroundColor).indexOf("rgba")!==-1};d.hsla=function(){m.cssText="background-color:hsla(120,40%,100%,.5)";return(""+
m.backgroundColor).indexOf("rgba")!==-1};d.multiplebgs=function(){m.cssText="background:url(//:),url(//:),red url(//:)";return/(url\s*\(.*?){3}/.test(m.background)};d.backgroundsize=function(){return r("backgroundSize")};d.borderimage=function(){return r("borderImage")};d.borderradius=function(){return r("borderRadius","",function(a){return(""+a).indexOf("orderRadius")!==-1})};d.boxshadow=function(){return r("boxShadow")};d.opacity=function(){var a=y.join("opacity:.5;")+"";m.cssText=a;return(""+m.opacity).indexOf("0.5")!==
-1};d.cssanimations=function(){return r("animationName")};d.csscolumns=function(){return r("columnCount")};d.cssgradients=function(){var a=("background-image:"+y.join("gradient(linear,left top,right bottom,from(#9f9),to(white));background-image:")+y.join("linear-gradient(left top,#9f9, white);background-image:")).slice(0,-17);m.cssText=a;return(""+m.backgroundImage).indexOf("gradient")!==-1};d.cssreflections=function(){return r("boxReflect")};d.csstransforms=function(){return!!C(["transformProperty",
"WebkitTransform","MozTransform","OTransform","msTransform"])};d.csstransforms3d=function(){var a=!!C(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]);if(a){var b=document.createElement("style"),c=e.createElement("div");b.textContent="@media ("+y.join("transform-3d),(")+"modernizr){#modernizr{height:3px}}";e.getElementsByTagName("head")[0].appendChild(b);c.id="modernizr";s.appendChild(c);a=c.offsetHeight===3;b.parentNode.removeChild(b);c.parentNode.removeChild(c)}return a};
d.csstransitions=function(){return r("transitionProperty")};d.fontface=function(){var a;if(/*@cc_on@if(@_jscript_version>=5)!@end@*/0)a=true;else{var b=e.createElement("style"),c=e.createElement("span"),h,t=false,g=e.body,o,w;b.textContent="@font-face{font-family:testfont;src:url('data:font/ttf;base64,AAEAAAAMAIAAAwBAT1MvMliohmwAAADMAAAAVmNtYXCp5qrBAAABJAAAANhjdnQgACICiAAAAfwAAAAEZ2FzcP//AAMAAAIAAAAACGdseWYv5OZoAAACCAAAANxoZWFk69bnvwAAAuQAAAA2aGhlYQUJAt8AAAMcAAAAJGhtdHgGDgC4AAADQAAAABRsb2NhAIQAwgAAA1QAAAAMbWF4cABVANgAAANgAAAAIG5hbWUgXduAAAADgAAABPVwb3N03NkzmgAACHgAAAA4AAECBAEsAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAACAAMDAAAAAAAAgAACbwAAAAoAAAAAAAAAAFBmRWQAAAAgqS8DM/8zAFwDMwDNAAAABQAAAAAAAAAAAAMAAAADAAAAHAABAAAAAABGAAMAAQAAAK4ABAAqAAAABgAEAAEAAgAuqQD//wAAAC6pAP///9ZXAwAAAAAAAAACAAAABgBoAAAAAAAvAAEAAAAAAAAAAAAAAAAAAAABAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEACoAAAAGAAQAAQACAC6pAP//AAAALqkA////1lcDAAAAAAAAAAIAAAAiAogAAAAB//8AAgACACIAAAEyAqoAAwAHAC6xAQAvPLIHBADtMrEGBdw8sgMCAO0yALEDAC88sgUEAO0ysgcGAfw8sgECAO0yMxEhESczESMiARDuzMwCqv1WIgJmAAACAFUAAAIRAc0ADwAfAAATFRQWOwEyNj0BNCYrASIGARQGKwEiJj0BNDY7ATIWFX8aIvAiGhoi8CIaAZIoN/43KCg3/jcoAWD0JB4eJPQkHh7++EY2NkbVRjY2RgAAAAABAEH/+QCdAEEACQAANjQ2MzIWFAYjIkEeEA8fHw8QDxwWFhwWAAAAAQAAAAIAAIuYbWpfDzz1AAsEAAAAAADFn9IuAAAAAMWf0i797/8zA4gDMwAAAAgAAgAAAAAAAAABAAADM/8zAFwDx/3v/98DiAABAAAAAAAAAAAAAAAAAAAABQF2ACIAAAAAAVUAAAJmAFUA3QBBAAAAKgAqACoAWgBuAAEAAAAFAFAABwBUAAQAAgAAAAEAAQAAAEAALgADAAMAAAAQAMYAAQAAAAAAAACLAAAAAQAAAAAAAQAhAIsAAQAAAAAAAgAFAKwAAQAAAAAAAwBDALEAAQAAAAAABAAnAPQAAQAAAAAABQAKARsAAQAAAAAABgAmASUAAQAAAAAADgAaAUsAAwABBAkAAAEWAWUAAwABBAkAAQBCAnsAAwABBAkAAgAKAr0AAwABBAkAAwCGAscAAwABBAkABABOA00AAwABBAkABQAUA5sAAwABBAkABgBMA68AAwABBAkADgA0A/tDb3B5cmlnaHQgMjAwOSBieSBEYW5pZWwgSm9obnNvbi4gIFJlbGVhc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgT3BlbiBGb250IExpY2Vuc2UuIEtheWFoIExpIGdseXBocyBhcmUgcmVsZWFzZWQgdW5kZXIgdGhlIEdQTCB2ZXJzaW9uIDMuYmFlYzJhOTJiZmZlNTAzMiAtIHN1YnNldCBvZiBKdXJhTGlnaHRiYWVjMmE5MmJmZmU1MDMyIC0gc3Vic2V0IG9mIEZvbnRGb3JnZSAyLjAgOiBKdXJhIExpZ2h0IDogMjMtMS0yMDA5YmFlYzJhOTJiZmZlNTAzMiAtIHN1YnNldCBvZiBKdXJhIExpZ2h0VmVyc2lvbiAyIGJhZWMyYTkyYmZmZTUwMzIgLSBzdWJzZXQgb2YgSnVyYUxpZ2h0aHR0cDovL3NjcmlwdHMuc2lsLm9yZy9PRkwAQwBvAHAAeQByAGkAZwBoAHQAIAAyADAAMAA5ACAAYgB5ACAARABhAG4AaQBlAGwAIABKAG8AaABuAHMAbwBuAC4AIAAgAFIAZQBsAGUAYQBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAdABlAHIAbQBzACAAbwBmACAAdABoAGUAIABPAHAAZQBuACAARgBvAG4AdAAgAEwAaQBjAGUAbgBzAGUALgAgAEsAYQB5AGEAaAAgAEwAaQAgAGcAbAB5AHAAaABzACAAYQByAGUAIAByAGUAbABlAGEAcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAEcAUABMACAAdgBlAHIAcwBpAG8AbgAgADMALgBiAGEAZQBjADIAYQA5ADIAYgBmAGYAZQA1ADAAMwAyACAALQAgAHMAdQBiAHMAZQB0ACAAbwBmACAASgB1AHIAYQBMAGkAZwBoAHQAYgBhAGUAYwAyAGEAOQAyAGIAZgBmAGUANQAwADMAMgAgAC0AIABzAHUAYgBzAGUAdAAgAG8AZgAgAEYAbwBuAHQARgBvAHIAZwBlACAAMgAuADAAIAA6ACAASgB1AHIAYQAgAEwAaQBnAGgAdAAgADoAIAAyADMALQAxAC0AMgAwADAAOQBiAGEAZQBjADIAYQA5ADIAYgBmAGYAZQA1ADAAMwAyACAALQAgAHMAdQBiAHMAZQB0ACAAbwBmACAASgB1AHIAYQAgAEwAaQBnAGgAdABWAGUAcgBzAGkAbwBuACAAMgAgAGIAYQBlAGMAMgBhADkAMgBiAGYAZgBlADUAMAAzADIAIAAtACAAcwB1AGIAcwBlAHQAIABvAGYAIABKAHUAcgBhAEwAaQBnAGgAdABoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAAAAAAgAAAAAAAP+BADMAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQACAQIAEQt6ZXJva2F5YWhsaQ==')}";
e.getElementsByTagName("head")[0].appendChild(b);c.setAttribute("style","font:99px _,arial,helvetica;position:absolute;visibility:hidden");if(!g){g=s.appendChild(e.createElement("fontface"));t=true}c.innerHTML="........";c.id="fonttest";g.appendChild(c);h=c.offsetWidth*c.offsetHeight;c.style.font="99px testfont,_,arial,helvetica";a=h!==c.offsetWidth*c.offsetHeight;var v=function(){if(g.parentNode){a=j.fontface=h!==c.offsetWidth*c.offsetHeight;s.className=s.className.replace(/(no-)?fontface\b/,"")+
(a?" ":" no-")+"fontface"}};setTimeout(v,75);setTimeout(v,150);addEventListener("load",function(){v();(w=true)&&o&&o(a);setTimeout(function(){t||(g=c);g.parentNode.removeChild(g);b.parentNode.removeChild(b)},50)},false)}j._fontfaceready=function(p){w||a?p(a):(o=p)};return a||h!==c.offsetWidth};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"');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(){return"localStorage"in i&&i.localStorage!==null};d.sessionStorage=function(){try{return"sessionStorage"in i&&i.sessionStorage!==null}catch(a){return false}};d.webworkers=function(){return!!i.Worker};
d.applicationCache=function(){var a=i.applicationCache;return!!(a&&typeof a.status!="undefined"&&typeof a.update=="function"&&typeof a.swapCache=="function")};d.svg=function(){return!!e.createElementNS&&!!e.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect};d.smil=function(){return!!e.createElementNS&&/SVG/.test(M.call(e.createElementNS("http://www.w3.org/2000/svg","animate")))};d.svgclippaths=function(){return!!e.createElementNS&&/SVG/.test(M.call(e.createElementNS("http://www.w3.org/2000/svg",
"clipPath")))};for(var z in d)if(O(d,z))N.push(((j[z.toLowerCase()]=d[z]())?"":"no-")+z.toLowerCase());j[E]||P();j.addTest=function(a,b){a=a.toLowerCase();if(!j[a]){b=!!b();s.className+=" "+(b?"":"no-")+a;j[a]=b;return j}};m.cssText="";D=n=null;(function(){var a=e.createElement("div");a.innerHTML="<elem></elem>";return a.childNodes.length!==1})()&&function(a,b){function c(f,k){if(o[f])o[f].styleSheet.cssText+=k;else{var l=t[G],q=b[A]("style");q.media=f;l.insertBefore(q,l[G]);o[f]=q;c(f,k)}}function h(f,
k){for(var l=new RegExp("\\b("+w+")\\b(?!.*[;}])","gi"),q=function(B){return".iepp_"+B},x=-1;++x<f.length;){k=f[x].media||k;h(f[x].imports,k);c(k,f[x].cssText.replace(l,q))}}for(var t=b.documentElement,g=b.createDocumentFragment(),o={},w="abbr|article|aside|audio|canvas|command|datalist|details|figure|figcaption|footer|header|hgroup|keygen|mark|meter|nav|output|progress|section|source|summary|time|video",v=w.split("|"),p=[],H=-1,G="firstChild",A="createElement";++H<v.length;){b[A](v[H]);g[A](v[H])}g=
g.appendChild(b[A]("div"));a.attachEvent("onbeforeprint",function(){for(var f,k=b.getElementsByTagName("*"),l,q,x=new RegExp("^"+w+"$","i"),B=-1;++B<k.length;)if((f=k[B])&&(q=f.nodeName.match(x))){l=new RegExp("^\\s*<"+q+"(.*)\\/"+q+">\\s*$","i");g.innerHTML=f.outerHTML.replace(/\r|\n/g," ").replace(l,f.currentStyle.display=="block"?"<div$1/div>":"<span$1/span>");l=g.childNodes[0];l.className+=" iepp_"+q;l=p[p.length]=[f,l];f.parentNode.replaceChild(l[1],l[0])}h(b.styleSheets,"all")});a.attachEvent("onafterprint",
function(){for(var f=-1,k;++f<p.length;)p[f][1].parentNode.replaceChild(p[f][0],p[f][1]);for(k in o)t[G].removeChild(o[k]);o={};p=[]})}(this,e);j._enableHTML5=true;j._version="1.5";s.className=s.className.replace(/\bno-js\b/,"")+" js";s.className+=" "+N.join(" ");return j}(this,this.document);

View File

@@ -1,43 +0,0 @@
// remap jQuery to $
(function($){
})(window.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(){
var docwrite = document.write;
document.write = function(q){
log('document.write(): ',q);
if (/docwriteregexwhitelist/.test(q)) docwrite(q);
}
})();
// background image cache bug for ie6. www.mister-pixel.com/#Content__state=
/*@cc_on @if (@_win32) { document.execCommand("BackgroundImageCache",false,true) } @end @*/

Binary file not shown.

View File

@@ -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) }

View File

@@ -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;}

File diff suppressed because one or more lines are too long

View File

@@ -1,26 +0,0 @@
/* Author:
*/

44
package.json Normal file
View File

@@ -0,0 +1,44 @@
{
"devDependencies": {
"apache-server-configs": "2.13.0",
"archiver": "^0.14.3",
"del": "^1.1.1",
"glob": "^5.0.1",
"gulp": "^3.8.11",
"gulp-autoprefixer": "^2.1.0",
"gulp-header": "^1.2.2",
"gulp-jscs": "^1.4.0",
"gulp-jshint": "^1.9.2",
"gulp-load-plugins": "^0.9.0",
"gulp-rename": "^1.2.0",
"gulp-replace": "^0.5.3",
"jquery": "1.11.2",
"jshint-stylish": "^1.0.1",
"mocha": "^2.1.0",
"normalize.css": "3.0.3",
"run-sequence": "^1.0.2"
},
"engines": {
"node": ">=0.10.0"
},
"h5bp-configs": {
"directories": {
"archive": "archive",
"dist": "dist",
"src": "src",
"test": "test"
}
},
"homepage": "https://html5boilerplate.com/",
"license": {
"type": "MIT",
"url": "https://github.com/h5bp/html5-boilerplate/blob/master/LICENSE.txt"
},
"name": "html5-boilerplate",
"private": true,
"scripts": {
"build": "gulp build",
"test": "gulp archive && mocha --reporter spec --timeout 5000"
},
"version": "5.1.0"
}

View File

@@ -1,5 +0,0 @@
# www.robotstxt.org/
# www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449
User-agent: *

13
src/.editorconfig Normal file
View File

@@ -0,0 +1,13 @@
# editorconfig.org
root = true
[*]
charset = utf-8
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false

1
src/.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
* text=auto

2
src/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
# Include your project-specific ignores in this file
# Read about how to use .gitignore: https://help.github.com/articles/ignoring-files

60
src/404.html Normal file
View File

@@ -0,0 +1,60 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Page Not Found</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
* {
line-height: 1.2;
margin: 0;
}
html {
color: #888;
display: table;
font-family: sans-serif;
height: 100%;
text-align: center;
width: 100%;
}
body {
display: table-cell;
vertical-align: middle;
margin: 2em auto;
}
h1 {
color: #555;
font-size: 2em;
font-weight: 400;
}
p {
margin: 0 auto;
width: 280px;
}
@media only screen and (max-width: 280px) {
body, p {
width: 95%;
}
h1 {
font-size: 1.5em;
margin: 0 0 0.3em;
}
}
</style>
</head>
<body>
<h1>Page Not Found</h1>
<p>Sorry, but the page you were trying to view does not exist.</p>
</body>
</html>
<!-- IE needs 512+ bytes: http://blogs.msdn.com/b/ieinternals/archive/2010/08/19/http-error-pages-in-internet-explorer.aspx -->

BIN
src/apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

12
src/browserconfig.xml Normal file
View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Please read: https://msdn.microsoft.com/en-us/library/ie/dn455106.aspx -->
<browserconfig>
<msapplication>
<tile>
<square70x70logo src="tile.png"/>
<square150x150logo src="tile.png"/>
<wide310x150logo src="tile-wide.png"/>
<square310x310logo src="tile.png"/>
</tile>
</msapplication>
</browserconfig>

15
src/crossdomain.xml Normal file
View File

@@ -0,0 +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: https://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"/>
-->
</cross-domain-policy>

271
src/css/main.css Normal file
View File

@@ -0,0 +1,271 @@
/*
* 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 {
color: #222;
font-size: 1em;
line-height: 1.4;
}
/*
* Remove text-shadow in selection highlight:
* https://twitter.com/miketaylr/status/12228805301
*
* These selection rule sets have to be separate.
* Customize the background color to match your design.
*/
::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 audio, canvas, iframes,
* images, videos and the bottom of their containers:
* https://github.com/h5bp/html5-boilerplate/issues/440
*/
audio,
canvas,
iframe,
img,
svg,
video {
vertical-align: middle;
}
/*
* Remove default fieldset styles.
*/
fieldset {
border: 0;
margin: 0;
padding: 0;
}
/*
* Allow only vertical resizing of textareas.
*/
textarea {
resize: vertical;
}
/* ==========================================================================
Browser Upgrade Prompt
========================================================================== */
.browserupgrade {
margin: 0.2em 0;
background: #ccc;
color: #000;
padding: 0.2em 0;
}
/* ==========================================================================
Author's custom styles
========================================================================== */
/* ==========================================================================
Helper classes
========================================================================== */
/*
* Hide visually and from screen readers:
*/
.hidden {
display: none !important;
}
/*
* Hide only visually, but have it available for screen readers:
* http://snook.ca/archives/html_and_css/hiding-content-for-accessibility
*/
.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:
* https://www.drupal.org/node/897638
*/
.visuallyhidden.focusable:active,
.visuallyhidden.focusable:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto;
}
/*
* Hide visually and from screen readers, 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;
}
/* ==========================================================================
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,
(min-resolution: 120dpi) {
/* Style adjustments for high resolution devices */
}
/* ==========================================================================
Print styles.
Inlined to avoid the additional HTTP request:
http://www.phpied.com/delay-loading-your-print-css/
========================================================================== */
@media print {
*,
*:before,
*:after {
background: transparent !important;
color: #000 !important; /* Black prints faster:
http://www.sanbeiji.com/archives/953 */
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 that are fragment identifiers,
* or use the `javascript:` pseudo protocol
*/
a[href^="#"]:after,
a[href^="javascript:"]:after {
content: "";
}
pre,
blockquote {
border: 1px solid #999;
page-break-inside: avoid;
}
/*
* Printing Tables:
* http://css-discuss.incutio.com/wiki/Printing_Tables
*/
thead {
display: table-header-group;
}
tr,
img {
page-break-inside: avoid;
}
img {
max-width: 100% !important;
}
p,
h2,
h3 {
orphans: 3;
widows: 3;
}
h2,
h3 {
page-break-after: avoid;
}
}

29
src/doc/TOC.md Normal file
View File

@@ -0,0 +1,29 @@
[HTML5 Boilerplate homepage](https://html5boilerplate.com)
## Getting started
* [Usage](usage.md) — Overview of the project contents.
* [FAQ](faq.md) — Frequently asked questions along with their answers.
## HTML5 Boilerplate core
* [HTML](html.md) — Guide to the default HTML.
* [CSS](css.md) — Guide to the default CSS.
* [JavaScript](js.md) — Guide to the default JavaScript.
* [Everything else](misc.md).
## Development
* [Extending and customizing HTML5 Boilerplate](extend.md) — Going further
with the boilerplate.
## Related projects
The [H5BP organization](https://github.com/h5bp) maintains several projects
that complement HTML5 Boilerplate, projects that can help you improve different
aspects of your website/web app (e.g.: the performance, security, etc.).
* [Server Configs](https://github.com/h5bp/server-configs) — Fast and
smart configurations for web servers such as Apache and Nginx.
* [Ant Build Script](https://github.com/h5bp/ant-build-script) — Apache
Ant based build script.

162
src/doc/css.md Normal file
View File

@@ -0,0 +1,162 @@
[HTML5 Boilerplate homepage](https://html5boilerplate.com) | [Documentation
table of contents](TOC.md)
# The CSS
HTML5 Boilerplate's CSS includes:
* [Normalize.css](#normalizecss)
* [Useful defaults](#useful-defaults)
* [Common helpers](#common-helpers)
* [Placeholder media queries](#media-queries)
* [Print styles](#print-styles)
This starting CSS does not rely on the presence of
[conditional class names](https://www.paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/),
[conditional style sheets](https://css-tricks.com/how-to-create-an-ie-only-stylesheet/),
or [Modernizr](http://modernizr.com/), and it is ready to use no matter what
your development preferences happen to be.
## Normalize.css
In order to make browsers render all elements more consistently and in line
with modern standards, we include
[Normalize.css](https://necolas.github.io/normalize.css/) — a modern, HTML5-ready
alternative to CSS resets.
As opposed to CSS resets, Normalize.css:
* targets only the styles that need normalizing
* preserves useful browser defaults rather than erasing them
* corrects bugs and common browser inconsistencies
* improves usability with subtle improvements
* doesn't clutter the debugging tools
* has better documentation
For more information about Normalize.css, please refer to its [project
page](https://necolas.github.com/normalize.css/), as well as this
[blog post](http://nicolasgallagher.com/about-normalize-css/).
## Useful defaults
Several base styles are included that build upon `Normalize.css`. These
styles:
* provide basic typography settings that improve text readability
* protect against unwanted `text-shadow` during text highlighting
* tweak the default alignment of some elements (e.g.: `img`, `video`,
`fieldset`, `textarea`)
* style the prompt that is displayed to users using an outdated browser
You are free and even encouraged to modify or add to these base styles as your
project requires.
## Common helpers
Along with the base styles, we also provide some commonly used helper classes.
#### `.hidden`
The `hidden` class can be added to any element that you want to hide visually
and from screen readers. It could be an element that will be populated and
displayed later, or an element you will hide with JavaScript.
#### `.visuallyhidden`
The `visuallyhidden` class can be added to any element that you want to hide
visually, while still have its content accessible to screen readers.
See also:
* [CSS in Action: Invisible Content Just for Screen Reader
Users](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 #194](https://github.com/h5bp/html5-boilerplate/issues/194/).
#### `.invisible`
The `invisible` class can be added to any element that you want to hide
visually and from screen readers, but without affecting the layout.
As opposed to the `hidden` class that effectively removes the element from the
layout, the `invisible` class will simply make the element invisible while
keeping it in the flow and not affecting the positioning of the surrounding
content.
__N.B.__ Try to stay away from, and don't use the classes specified above for
[keyword stuffing](https://en.wikipedia.org/wiki/Keyword_stuffing) as you will
harm your site's ranking!
#### `.clearfix`
The `clearfix` class can be added to any element to ensure that it always fully
contains its floated children.
Over the years there have been many variants of the clearfix hack, but currently,
we use the [micro clearfix](http://nicolasgallagher.com/micro-clearfix-hack/).
## Media Queries
HTML5 Boilerplate makes it easy for you to get started with a
[_mobile first_](http://www.lukew.com/presos/preso.asp?26) 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://blog.cloudfour.com/css-media-query-for-mobile-is-fools-gold/).
We include placeholder media queries to help you 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 the _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` media queries instead (e.g.:
`@media only screen and (max-width: 480px)`).
For more features that can help you in your mobile web development, take a look
into our [Mobile Boilerplate](https://github.com/h5bp/mobile-boilerplate).
## Print styles
Lastly, we provide some useful print styles that will optimize the printing
process, as well as make the printed pages easier to read.
At printing time, these styles will:
* strip all background colors, change the font color to black, and remove the
`text-shadow` — done in order to [help save printer ink and speed up the
printing process](http://www.sanbeiji.com/archives/953)
* underline and expand links to include the URL — done in order to allow users
to know where to refer to<br>
(exceptions to this are: the links that are
[fragment identifiers](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-href),
or use the
[`javascript:` pseudo protocol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void#JavaScript_URIs))
* expand abbreviations to include the full description — done in order to allow
users to know what the abbreviations stands for
* provide instructions on how browsers should break the content into pages and
on [orphans/widows](https://en.wikipedia.org/wiki/Widows_and_orphans), namely,
we instruct
[supporting browsers](https://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28Cascading_Style_Sheets%29#Grammar_and_rules)
that they should:
* ensure the table header (`<thead>`) is [printed on each page spanned by the
table](http://css-discuss.incutio.com/wiki/Printing_Tables)
* prevent block quotations, preformatted text, images and table rows from
being split onto two different pages
* ensure that headings never appear on a different page than the text they
are associated with
* ensure that
[orphans and widows](https://en.wikipedia.org/wiki/Widows_and_orphans) do
[not appear on printed pages](https://css-tricks.com/almanac/properties/o/orphans/)
The print styles are included along with the other `css` to [avoid the
additional HTTP request](http://www.phpied.com/delay-loading-your-print-css/).
Also, they should always be included last, so that the other styles can be
overwritten.

663
src/doc/extend.md Normal file
View File

@@ -0,0 +1,663 @@
[HTML5 Boilerplate homepage](https://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.
* [App Stores](#app-stores)
* [DNS prefetching](#dns-prefetching)
* [Google Universal Analytics](#google-universal-analytics)
* [Internet Explorer](#internet-explorer)
* [Miscellaneous](#miscellaneous)
* [News Feeds](#news-feeds)
* [Search](#search)
* [Social Networks](#social-networks)
* [URLs](#urls)
* [Web Apps](#web-apps)
## 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://developer.chrome.com/webstore/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. Include the following [meta tag](https://developer.apple.com/library/IOS/documentation/AppleApplications/Reference/SafariWebContent/PromotingAppswithAppBanners/PromotingAppswithAppBanners.html#//apple_ref/doc/uid/TP40002051-CH6-SW2)
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">
```
## 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. Fewer 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-US/docs/Web/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">
```
### Further reading about DNS prefetching
* https://developer.mozilla.org/en-US/docs/Controlling_DNS_prefetching
* https://dev.chromium.org/developers/design-documents/dns-prefetching
* 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
## Google Universal Analytics
### More tracking settings
The [optimized Google Universal Analytics
snippet](https://mathiasbynens.be/notes/async-analytics-snippet#universal-analytics)
included with HTML5 Boilerplate includes something like this:
```js
ga('create', 'UA-XXXXX-X', 'auto'); ga('send', 'pageview');
```
To customize further, see Google's [Advanced
Setup](https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced),
[Pageview](https://developers.google.com/analytics/devguides/collection/analyticsjs/pages),
and [Event](https://developers.google.com/analytics/devguides/collection/analyticsjs/events) Docs.
### 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 Universal Analytics may have to ensure that
no personal (trackable) data is transferred to the US. You can do that with
[the `ga('set', 'anonymizeIp', true);`
parameter](https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced#anonymizeip)
before sending any events/pageviews. In use it looks like this:
```js
ga('create', 'UA-XXXXX-X', 'auto');
ga('set', 'anonymizeIp', true);
ga('send', 'pageview');
```
### 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 ga !== "undefined" && ga !== null) {
$(document).ajaxSend(function(event, xhr, settings){
ga('send', 'pageview', settings.url);
});
}
```
### Track JavaScript errors in Google Analytics
Add this function after `ga` 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;
ga('send', {
'hitType': 'event',
'eventCategory': (host == window.location.hostname || host == undefined || host == '' ? '' : 'external ') + 'error',
'eventAction': message,
'eventLabel': (file + ' LINE: ' + line + (column ? ' COLUMN: ' + column : '')).trim(),
'nonInteraction': 1
});
};
}(window));
```
### Track page scroll
Add this function after `ga` 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;
ga('send', 'event', 'scroll',
'Window: ' + $window.height() + 'px; Document: ' + $document.height() + 'px; Time: ' + Math.round((new Date - scrollTimeStart )/1000,1) + 's'
);
}
});
});
```
## 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,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](https://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](https://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 its
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/buildingapps/2012/11/15/adapting-your-webkit-optimized-site-for-internet-explorer-10/)
## Search
### Direct search spiders to your sitemap
[Learn how to make a sitemap](http://www.sitemaps.org/protocol.html)
```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](https://www.google.com/search?ie=UTF-8&q=how+to+make+browser+search+plugin).
```html
<link rel="search" title="" type="application/opensearchdescription+xml" href="">
```
## Miscellaneous
* Use [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
iOS 5+](http://www.johanbrook.com/articles/native-style-momentum-scrolling-to-arrive-in-ios-5/)
using `-webkit-overflow-scrolling: touch`.
* If you want to disable the translation prompt in Chrome or block Google
Translate from translating your web page, use [`<meta name="google"
value="notranslate">`](https://support.google.com/translate/?hl=en#2641276).
To disable translation for a particular section of the web page, add
[`class="notranslate"`](https://support.google.com/translate/?hl=en#2641276).
* If you want to disable the automatic detection and formatting of possible
phone numbers in Safari on iOS, use [`<meta name="format-detection"
content="telephone=no">`](https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariHTMLRef/Articles/MetaTags.html/#//apple_ref/doc/uid/TP40008193-SW5).
* 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.
## 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: https://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: https://web.archive.org/web/20131211032834/http://blog.perplexedlabs.com/2009/07/15/xmlrpc-pingbacks-using-php/
## 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">
```
### Separate mobile URLs
If you use separate URLs for desktop and mobile users, you should consider
helping search engine algorithms better understand the configuration on your
web site.
This can be done by adding the following annotations in your HTML pages:
* on the desktop page, add the `link rel="alternate"` tag pointing to the
corresponding mobile URL, e.g.:
`<link rel="alternate" media="only screen and (max-width: 640px)" href="http://m.example.com/page.html" >`
* on the mobile page, add the `link rel="canonical"` tag pointing to the
corresponding desktop URL, e.g.:
`<link rel="canonical" href="http://www.example.com/page.html">`
For more information please see:
* https://developers.google.com/webmasters/smartphone-sites/details#separateurls
* https://developers.google.com/webmasters/smartphone-sites/feature-phones
## 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](https://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariHTMLRef/Articles/MetaTags.html)
on Apple's site.
### Apple Touch Icons
The Apple touch icons can be seen as the favicons of iOS devices.
The main sizes of the Apple touch icons are:
* `57×57px` iPhone with @1x display and iPod Touch
* `72×72px` iPad and iPad mini with @1x display running iOS ≤ 6
* `76×76px` iPad and iPad mini with @1x display running iOS ≥ 7
* `114×114px` iPhone with @2x display running iOS ≤ 6
* `120×120px` iPhone with @2x and @3x display running iOS ≥ 7
* `144×144px` iPad and iPad mini with @2x display running iOS ≤ 6
* `152×152px` iPad and iPad mini with @2x display running iOS 7
* `180×180px` iPad and iPad mini with @2x display running iOS 8
Displays meaning:
* @1x - non-Retina
* @2x - Retina
* @3x - Retina HD
More information about the displays of iOS devices can be found
[here](https://en.wikipedia.org/wiki/List_of_iOS_devices#Display).
In most cases, one `180×180px` touch icon named `apple-touch-icon.png`
and including:
```html
<link rel="apple-touch-icon" href="apple-touch-icon.png">
```
in the `<head>` of the page is enough. If you use art-direction and/or
want to have different content for each device, you can add more touch
icons as written above.
For a more comprehensive overview, please refer to Mathias' [article on Touch
Icons](https://mathiasbynens.be/notes/touch-icons).
### 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/v4.1.0/js/helper.js#L336-L383)
for the implementation.
### Chrome Mobile web apps
Chrome Mobile has a specific meta tag for making apps [installable to the
homescreen](https://developer.chrome.com/multidevice/android/installtohomescreen)
which tries to be a more generic replacement to Apple's proprietary meta tag:
```html
<meta name="mobile-web-app-capable" content="yes">
```
Same applies to the touch icons:
```html
<link rel="icon" sizes="192x192" href="highres-icon.png">
```
### Theme Color
You can add the [`theme-color` meta extension](https://github.com/whatwg/meta-theme-color)
in the `<head>` of your pages to suggest the color that browsers and
OSes should use if they customize the display of individual pages in
their UIs with varying colors.
```html
<meta name="theme-color" content="#ff69b4">
```
The `content` attribute extension can take any valid CSS color.
Currently, the `theme-color` meta extension is supported by [Chrome 39+
for Android Lollipop](http://updates.html5rocks.com/2014/11/Support-for-theme-color-in-Chrome-39-for-Android)
and [Firefox OS 2.1+](https://twitter.com/ahmednefzaoui/status/492344698493997057).

93
src/doc/faq.md Normal file
View File

@@ -0,0 +1,93 @@
[HTML5 Boilerplate homepage](https://html5boilerplate.com) | [Documentation
table of contents](TOC.md)
# Frequently asked questions
* [Why is the URL for jQuery without
`http`?](#why-is-the-url-for-jquery-without-http)
* [Why don't you automatically load the latest version of jQuery from the Google
CDN?](#why-dont-you-automatically-load-the-latest-version-of-jquery-from-the-google-cdn)
* [Why is the Google Analytics code at the bottom? Google recommends it be
placed in the `<head>`.](#why-is-the-google-analytics-code-at-the-bottom-google-recommends-it-be-placed-in-the-head)
* [How can I integrate Bootstrap with HTML5
Boilerplate?](#how-can-i-integrate-bootstrap-with-html5-boilerplate)
* [Do I need to upgrade my site each time a new version of HTML5 Boilerplate is
released?](#do-i-need-to-upgrade-my-site-each-time-a-new-version-of-html5-boilerplate-is-released)
* [Where can I get help with support
questions?](#where-can-i-get-help-with-support-questions)
--
### Why is the URL for jQuery without `http`?
It is because of the use of [protocol-relative
URLs](http://paulirish.com/2010/the-protocol-relative-url/).
**N.B.** If you try to view the local web page directly in the browser, the
browser will fail to load the assets specified using protocol-relative URLs
as it will attempt to fetch them from the local file system. We recommend you
use a local HTTP server to test your web pages, or a file hosting service that
allows you to preview your web pages online (e.g.
[Dropbox](https://www.dropbox.com/)).
Setting up a local HTTP server can be done using there various
[one-liners](https://gist.github.com/willurd/5720255):
* PHP 5.4.0+ by running
[`php -S localhost:8080`](https://php.net/manual/en/features.commandline.webserver.php)
from your local directory
* Python 2.x by running `python -m SimpleHTTPServer` from your local directory
* Python 3.x by running `python -m http.server` from your local directory
* Ruby 1.9.2+ by running `ruby -run -ehttpd . -p8080` from your local directory
* Node.js by installing and running either
[`static -p 8080`](https://www.npmjs.org/package/node-static)
or [`http-server -p 8080`](https://www.npmjs.org/package/http-server)
A list of more complex HTTP servers can be found
[here](misc.md#servers-and-stacks).
### Why don't you automatically load the latest version of jQuery from the Google CDN?
The [file](https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js) to which
the Google [CDN](https://en.wikipedia.org/wiki/Content_delivery_network) points
to is [no longer updated and will stay locked at version `1.11.1` in order to
prevent inadvertent web
breakage](http://blog.jquery.com/2014/07/03/dont-use-jquery-latest-js/).
In general, version updating should be an intentional decision! You shouldn't
include a URL that will always point to the latest version, as that version:
* may not be compatible with the existing plugins/code on the site
* will have a very short cache time compare to the specific version,
which means that users won't get the benefits of long-term caching
### Why is the Google Analytics code at the bottom? Google recommends it be placed in the `<head>`.
The main advantage of placing it in the `<head>` is that you will track the
user's `pageview` even if they leave the page before it has been fully loaded.
However, having the code at the bottom of the page [helps improve
performance](http://stevesouders.com/efws/inline-scripts-bottom.php).
### How can I integrate [Bootstrap](http://getbootstrap.com/) with HTML5 Boilerplate?
One simple way is to use [Initializr](http://initializr.com) and create a
custom build that includes both HTML5 Boilerplate and
[Bootstrap](http://getbootstrap.com/).
Read more about how [HTML5 Boilerplate and Bootstrap complement each
other](https://www.quora.com/Is-Bootstrap-a-complement-or-an-alternative-to-HTML5-Boilerplate-or-viceversa/answer/Nicolas-Gallagher).
### Do I need to upgrade my site each time a new version of HTML5 Boilerplate is released?
No, same as you don't normally replace the foundation of a house once it
was built. However, 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 with support questions?
Please ask for help on
[StackOverflow](https://stackoverflow.com/questions/tagged/html5boilerplate).

223
src/doc/html.md Normal file
View File

@@ -0,0 +1,223 @@
[HTML5 Boilerplate homepage](https://html5boilerplate.com) | [Documentation
table of contents](TOC.md)
# The HTML
By default, HTML5 Boilerplate provides two `html` pages:
* [`index.html`](#indexhtml) - a default HTML skeleton that should form the
basis of all pages on your website
* [`404.html`](#404html) - a placeholder 404 error page
## `index.html`
### The `no-js` class
The `no-js` class is provided in order to allow you to more easily and
explicitly add custom styles based on whether JavaScript is disabled
(`.no-js`) or enabled (`.js`). Using this technique also helps [avoid the
FOUC](http://paulirish.com/2009/avoiding-the-fouc-v3/).
## Language attribute
Please consider specifying the language of your content by adding the `lang`
attribute to `<html>` as in this example:
```html
<html class="no-js" lang="en">
```
### The order of the `<title>` and `<meta>` tags
The order in which the `<title>` and the `<meta>` tags are specified is
important because:
1) the charset declaration (`<meta charset="utf-8">`):
* must be included completely within the [first 1024 bytes of the
document](https://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#charset)
* should be specified as early as possible (before any content that could
be controlled by an attacker, such as a `<title>` element) in order to
avoid a potential [encoding-related security
issue](https://code.google.com/p/doctype-mirror/wiki/ArticleUtf7) in
Internet Explorer
2) the meta tag for compatibility mode
(`<meta http-equiv="x-ua-compatible" content="ie=edge">`):
* [needs to be included before all other tags except for the `<title>` and
the other `<meta>`
tags](https://msdn.microsoft.com/en-us/library/cc288325.aspx)
### `x-ua-compatible`
Internet Explorer 8/9/10 support [document compatibility
modes](https://msdn.microsoft.com/en-us/library/cc288325.aspx) that affect the
way webpages are interpreted and displayed. Because of this, even if your site's
visitor is using, let's say, Internet Explorer 9, it's possible that IE will not
use the latest rendering engine, and instead, decide to render your page using
the Internet Explorer 5.5 rendering engine.
Specifying the `x-ua-compatible` meta tag:
```html
<meta http-equiv="x-ua-compatible" content="ie=edge">
```
or sending the page with the following HTTP response header
```
X-UA-Compatible: IE=edge
```
will force Internet Explorer 8/9/10 to render the webpage in the highest
available mode in [the various cases when it may
not](https://hsivonen.fi/doctype/#ie8), and therefore, ensure that anyone
browsing your site is treated to the best possible user experience that
browser can offer.
If possible, we recommend that you remove the `meta` tag and send only the
HTTP response header as the `meta` tag will not always work if your site is
served on a non-standard port, as Internet Explorer's preference option
`Display intranet sites in Compatibility View` is checked by default.
If you are using Apache as your webserver, including the
[`.htaccess`](https://github.com/h5bp/server-configs-apache) file takes care of
the HTTP header. If you are using a different server, check out our [other
server config](https://github.com/h5bp/server-configs).
Starting with Internet Explorer 11, [document modes are
deprecated](https://msdn.microsoft.com/en-us/library/ie/bg182625.aspx#docmode).
If your business still relies on older web apps and services that were
designed for older versions of Internet Explorer, you might want to consider
enabling [Enterprise Mode](http://blogs.msdn.com/b/ie/archive/2014/04/02/stay-up-to-date-with-enterprise-mode-for-internet-explorer-11.aspx) throughout your company.
## 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](https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html).
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.
## What about polyfills?
If you need to include [polyfills](https://remysharp.com/2010/10/08/what-is-a-polyfill)
in your project, you must make sure those load before any other JavaScript. If you're
using some polyfill CDN service, like [cdn.polyfill.io](https://cdn.polyfill.io/),
just put it before the other scripts in the bottom of the page:
```html
<script src="//cdn.polyfill.io/v1/polyfill.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.11.2.min.js"><\/script>')</script>
<script src="js/plugins.js"></script>
<script src="js/main.js"></script>
</body>
```
If you like to just include the polyfills yourself, you could include them in
`js/plugins.js`. When you have a bunch of polyfills to load in, you could
also create a `polyfills.js` file in the `js/vendor` directory. Also using
this technique, make sure the polyfills are all loaded before any other
Javascript.
There are some misconceptions about Modernizr and polyfills. It's important
to understand that Modernizr just handles feature checking, not polyfilling
itself. The only thing Modernizr does regarding polyfills is that the team
maintains [a huge list of cross Browser polyfills](https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills).
## 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.
### Browser Upgrade Prompt
The main content area of the boilerplate includes a prompt to install an up to
date browser for users of IE 6/7. If you intended to support IE 6/7, 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.
The Google CDN version is chosen over other [potential candidates (like the
jQuery CDN](https://jquery.com/download/#using-jquery-with-a-cdn)) because
it's fast in absolute terms and it has the best overall
[penetration](http://httparchive.org/trends.php#perGlibs) which increases the
odds of having a copy of the library in your user's browser cache.
While the Google CDN is a strong default solution your site or application may
require a different configuration. Testing your site with services like
[WebPageTest](https://www.webpagetest.org/) and browser tools like
[PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights/) or
[YSlow](https://developer.yahoo.com/yslow/) will help you examine the real
world performance of your site and can show where you can optimize your specific
site or application.
### Google Universal Analytics Tracking Code
Finally, an optimized version of the Google Universal 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, youll
be able to count users who dont fully load the page, and youll incur the max
number of simultaneous connections of the browser.
Further information:
* [Optimizing the Google Universal Analytics
Snippet](https://mathiasbynens.be/notes/async-analytics-snippet#universal-analytics)
* [Introduction to
Analytics.js](https://developers.google.com/analytics/devguides/collection/analyticsjs/)
* [Google Analytics Demos & Tools](https://ga-dev-tools.appspot.com/)
**N.B.** The Google Universal Analytics snippet is included by default mainly
because Google Analytics is [currently one of the most popular tracking
solutions](https://trends.builtwith.com/analytics/Google-Analytics) out there.
However, its usage isn't set in stone, and you SHOULD consider exploring the
[alternatives](https://en.wikipedia.org/wiki/List_of_web_analytics_software)
and use whatever suits your needs best!

37
src/doc/js.md Normal file
View File

@@ -0,0 +1,37 @@
[HTML5 Boilerplate homepage](https://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](https://learn.jquery.com/plugins/#Getting_Started).
By default the `plugins.js` file contains a small script to avoid `console`
errors in browsers that lack a `console`. The script will make sure that, if
a console method isn't available, that method will have the value of empty
function, thus, preventing the browser from throwing an error.
## 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/).

198
src/doc/misc.md Normal file
View File

@@ -0,0 +1,198 @@
[HTML5 Boilerplate homepage](https://html5boilerplate.com) | [Documentation
table of contents](TOC.md)
# Miscellaneous
* [.gitignore](#gitignore)
* [.editorconfig](#editorconfig)
* [Server Configuration](#server-configuration)
* [crossdomain.xml](#crossdomainxml)
* [robots.txt](#robotstxt)
* [browserconfig.xml](#browserconfigxml)
--
## .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: https://help.github.com/articles/ignoring-files
* Comprehensive set of ignores on GitHub: https://github.com/github/gitignore
## .editorconfig
The `.editorconfig` file is provided in order to encourage and help you and
your team define and maintain consistent coding styles between different
editors and IDEs.
By default, `.editorconfig` includes some basic
[properties](http://editorconfig.org/#supported-properties) that reflect the
coding styles from the files provided by default, but you can easily change
them to better suit your needs.
In order for your editor/IDE to apply the
[properties](http://editorconfig.org/#supported-properties) from the
`.editorconfig` file, you will need to [install a
plugin]( http://editorconfig.org/#download).
__N.B.__ If you aren't using the server configurations provided by HTML5
Boilerplate, we highly encourage you to configure your server to block
access to `.editorconfig` files, as they can disclose sensitive information!
For more details, please refer to the [EditorConfig
project](http://editorconfig.org/).
## Server Configuration
H5BP includes a [`.htaccess`](#htaccess) file for the Apache HTTP server. If you are not using
Apache as your web server, then you are encouraged to download a
[server configuration](https://github.com/h5bp/server-configs) that corresponds
to your web server and environment.
### Servers and Stacks
A comprehensive list of web servers and stacks are beyond the scope of this
documentation, but some common ones include:
* [Apache HTTP Server](https://httpd.apache.org/docs/trunk/getting-started.html)
* [LAMP](https://en.wikipedia.org/wiki/LAMP_%28software_bundle%29)
(Linux, Apache, MySQL, and PHP).
Other variants include [MAMP](https://www.mamp.info/en/index.html),
[WAMP](http://www.wampserver.com/en/),
or [XAMPP](https://www.apachefriends.org/index.html).
* LAPP uses PostgreSQL instead of MySQL
* [Nginx](http://wiki.nginx.org/GettingStarted)
* [LEMP](http://www.chrisjohnston.org/ubuntu-tutorials/setting-up-a-lemp-stack-ubuntu-904)
is similar to the LAMP stack but uses Nginx
* [IIS](https://en.wikipedia.org/wiki/Internet_Information_Services)
* [ASP.NET](https://www.asp.net/get-started)
* [MEAN](http://mean.io/) (MongoDB, Express, AngularJS, Node.js)
### .htaccess
A `.htaccess` (hypertext access) file is a
[Apache HTTP server configuration file](https://github.com/h5bp/server-configs-apache).
The `.htaccess` file is mostly used for:
* Rewriting URLs
* Controlling cache
* Authentication
* Server-side includes
* Redirects
* Gzipping
If you have access to the main server configuration file (usually called
`httpd.conf`), you should add the logic from the `.htaccess` file in, for
example, a <Directory> section in the main configuration file. This is usually
the recommended way, as using .htaccess files slows down Apache!
To enable Apache modules locally, please see:
https://github.com/h5bp/server-configs-apache/wiki/How-to-enable-Apache-modules.
In the repo the `.htaccess` is used for:
* Allowing cross-origin access to web fonts
* CORS header for images when browsers request it
* Enable `404.html` as 404 error document
* Making the website experience better for IE users better
* Media UTF-8 as character encoding for `text/html` and `text/plain`
* Enabling the rewrite URLs engine
* Forcing or removing the `www.` at the begin of a URL
* It blocks access to directories without a default document
* It blocks access to files that can expose sensitive information.
* It reduces MIME type security risks
* It forces compressing (gzipping)
* It tells the browser whether they should request a specific file from the
server or whether they should grab it from the browser's cache
When using `.htaccess` we recommend reading all inline comments (the rules after
a `#`) in the file once. There is a bunch of optional stuff in it.
If you want to know more about the `.htaccess` file check out
https://httpd.apache.org/docs/current/howto/htaccess.html.
Notice that the original repo for the `.htaccess` file is [this
one](https://github.com/h5bp/server-configs-apache).
## crossdomain.xml
The _cross-domain policy file_ is an XML document that gives a web client —
such as Adobe Flash Player, Adobe Reader, etc. — permission to handle data
across multiple domains, by:
* granting read access to data
* permitting the client to include custom headers in cross-domain requests
* granting permissions for socket-based connections
__e.g.__ If 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 in order to grant access
to the source domain and allow the client to continue with the transaction.
For more in-depth information, please see Adobe's [cross-domain policy file
specification](https://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html).
## robots.txt
The `robots.txt` file is used to give instructions to web robots on what can
be crawled from the website.
By default, the file provided by this project includes the next two lines:
* `User-agent: *` - the following rules apply to all web robots
* `Disallow:` - everything on the website is allowed to be crawled
If you want to disallow certain pages you will need to specify the path in a
`Disallow` directive (e.g.: `Disallow: /path`) or, if you want to disallow
crawling of all content, use `Disallow: /`.
The `/robots.txt` file is not intended for access control, so don't try to
use it as such. Think of it as a "No Entry" sign, rather than a locked door.
URLs disallowed by the `robots.txt` file might still be indexed without being
crawled, and the content from within the `robots.txt` file can be viewed by
anyone, potentially disclosing the location of your private content! So, if
you want to block access to private content, use proper authentication instead.
For more information about `robots.txt`, please see:
* [robotstxt.org](http://www.robotstxt.org/)
* [How Google handles the `robots.txt` file](https://developers.google.com/webmasters/control-crawl-index/docs/robots_txt)
## browserconfig.xml
The `browserconfig.xml` file is used to customize the tile displayed when users
pin your site to the Windows 8.1 start screen. In there you can define custom
tile colors, custom images or even [live tiles](https://msdn.microsoft.com/en-us/library/ie/dn455106.aspx#CreatingLiveTiles).
By default, the file points to 2 placeholder tile images:
* `tile.png` (558x558px): used for `Small`, `Medium` and `Large` tiles.
This image resizes automatically when necessary.
* `tile-wide.png` (558x270px): user for `Wide` tiles.
Notice that IE11 uses the same images when adding a site to the `favorites`.
For more in-depth information about the `browserconfig.xml` file, please
see [MSDN](https://msdn.microsoft.com/en-us/library/ie/dn320426.aspx).

130
src/doc/usage.md Normal file
View File

@@ -0,0 +1,130 @@
[HTML5 Boilerplate homepage](https://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))
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
├── .editorconfig
├── .htaccess
├── 404.html
├── apple-touch-icon.png
├── browserconfig.xml
├── index.html
├── humans.txt
├── robots.txt
├── crossdomain.xml
├── favicon.ico
├── tile-wide.png
└── tile.png
```
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
repository](https://github.com/h5bp/server-configs-apache).
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.
### browserconfig.xml
This file contains all settings regarding custom tiles for IE11.
For more info on this topic, please refer to
[MSDN](https://msdn.microsoft.com/en-us/library/ie/dn455106.aspx).
### .editorconfig
The `.editorconfig` file is provided in order to encourage and help you and
your team to maintain consistent coding styles between different
editors and IDEs. [Read more about the `.editorconfig` file](misc.md#editorconfig).
### 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 Universal 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](misc.md#crossdomainxml).
### Icons
Replace the default `favicon.ico`, `tile.png`, `tile-wide.png` 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](https://drublic.de/blog/html5-boilerplate-favicons-psd-template/).

BIN
src/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

15
src/humans.txt Normal file
View File

@@ -0,0 +1,15 @@
# humanstxt.org/
# The humans responsible & technology colophon
# TEAM
<name> -- <role> -- <twitter>
# THANKS
<name>
# TECHNOLOGY COLOPHON
CSS3, HTML5
Apache Server Configs, jQuery, Modernizr, Normalize.css

0
src/img/.gitignore vendored Normal file
View File

40
src/index.html Normal file
View File

@@ -0,0 +1,40 @@
<!doctype html>
<html class="no-js" lang="">
<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">
<link rel="apple-touch-icon" href="apple-touch-icon.png">
<!-- Place favicon.ico in the root directory -->
<link rel="stylesheet" href="css/normalize.css">
<link rel="stylesheet" href="css/main.css">
<script src="js/vendor/modernizr-2.8.3.min.js"></script>
</head>
<body>
<!--[if lt IE 8]>
<p class="browserupgrade">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
<![endif]-->
<!-- Add your site or application content here -->
<p>Hello world! This is HTML5 Boilerplate.</p>
<script src="//ajax.googleapis.com/ajax/libs/jquery/{{JQUERY_VERSION}}/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-{{JQUERY_VERSION}}.min.js"><\/script>')</script>
<script src="js/plugins.js"></script>
<script src="js/main.js"></script>
<!-- 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='https://www.google-analytics.com/analytics.js';
r.parentNode.insertBefore(e,r)}(window,document,'script','ga'));
ga('create','UA-XXXXX-X','auto');ga('send','pageview');
</script>
</body>
</html>

0
src/js/main.js Normal file
View File

24
src/js/plugins.js Normal file
View File

@@ -0,0 +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',
'timeline', 'timelineEnd', 'timeStamp', 'trace', 'warn'
];
var length = methods.length;
var console = (window.console = window.console || {});
while (length--) {
method = methods[length];
// Only stub undefined methods.
if (!console[method]) {
console[method] = noop;
}
}
}());
// Place any jQuery/helper plugins in here.

4
src/js/vendor/modernizr-2.8.3.min.js vendored Normal file

File diff suppressed because one or more lines are too long

5
src/robots.txt Normal file
View File

@@ -0,0 +1,5 @@
# www.robotstxt.org/
# Allow crawling of all content
User-agent: *
Disallow:

BIN
src/tile-wide.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
src/tile.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

81
test/file_content.js Normal file
View File

@@ -0,0 +1,81 @@
/* jshint mocha: true */
var assert = require('assert');
var fs = require('fs');
var path = require('path');
var pkg = require('./../package.json');
var dirs = pkg['h5bp-configs'].directories;
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function checkString(file, string, done) {
var character = '';
var matchFound = false;
var matchedPositions = 0;
var readStream = fs.createReadStream(file, { 'encoding': 'utf8' });
readStream.on('close', done);
readStream.on('error', done);
readStream.on('readable', function () {
// Read file until the string is found
// or the whole file has been read
while (matchFound !== true &&
(character = readStream.read(1)) !== null) {
if (character === string.charAt(matchedPositions)) {
matchedPositions += 1;
} else {
matchedPositions = 0;
}
if (matchedPositions === string.length) {
matchFound = true;
}
}
assert.equal(true, matchFound);
this.close();
});
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function runTests() {
var dir = dirs.dist;
describe('Test if the files from the "' + dir + '" directory have the expected content', function () {
it('".htaccess" should have the "ErrorDocument..." line uncommented', function (done) {
var string = '\n\nErrorDocument 404 /404.html\n\n';
checkString(path.resolve(dir, '.htaccess'), string, done);
});
it('"index.html" should contain the correct jQuery version in the CDN URL', function (done) {
var string = 'ajax.googleapis.com/ajax/libs/jquery/' + pkg.devDependencies.jquery + '/jquery.min.js';
checkString(path.resolve(dir, 'index.html'), string, done);
});
it('"index.html" should contain the correct jQuery version in the local URL', function (done) {
var string = 'js/vendor/jquery-' + pkg.devDependencies.jquery + '.min.js';
checkString(path.resolve(dir, 'index.html'), string, done);
});
it('"main.css" should contain a custom banner', function (done) {
var string = '/*! HTML5 Boilerplate v' + pkg.version +
' | ' + pkg.license.type + ' License' +
' | ' + pkg.homepage + ' */\n\n/*\n';
checkString(path.resolve(dir, 'css/main.css'), string, done);
});
});
}
runTests();

132
test/file_existence.js Normal file
View File

@@ -0,0 +1,132 @@
/* jshint mocha: true */
var assert = require('assert');
var fs = require('fs');
var path = require('path');
var pkg = require('./../package.json');
var dirs = pkg['h5bp-configs'].directories;
var expectedFilesInArchiveDir = [
pkg.name + '_v' + pkg.version + '.zip'
];
var expectedFilesInDistDir = [
'.editorconfig',
'.gitattributes',
'.gitignore',
'.htaccess',
'404.html',
'apple-touch-icon.png',
'browserconfig.xml',
'crossdomain.xml',
'css/', // for directories, a `/` character
// should be included at the end
'css/main.css',
'css/normalize.css',
'doc/',
'doc/TOC.md',
'doc/css.md',
'doc/extend.md',
'doc/faq.md',
'doc/html.md',
'doc/js.md',
'doc/misc.md',
'doc/usage.md',
'favicon.ico',
'humans.txt',
'img/',
'img/.gitignore',
'index.html',
'js/',
'js/main.js',
'js/plugins.js',
'js/vendor/',
'js/vendor/jquery-' + pkg.devDependencies.jquery + '.min.js',
'js/vendor/modernizr-2.8.3.min.js',
'LICENSE.txt',
'robots.txt',
'tile-wide.png',
'tile.png'
];
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function checkFiles(directory, expectedFiles) {
// Get the list of files from the specified directory
var files = require('glob').sync('**/*', {
'cwd': directory,
'dot': true, // include hidden files
'mark': true // add a `/` character to directory matches
});
// Check if all expected files are present in the
// specified directory, and are of the expected type
expectedFiles.forEach(function (file) {
var ok = false;
var expectedFileType = (file.slice(-1) !== '/' ? 'regular file' : 'directory');
// If file exists
if (files.indexOf(file) !== -1) {
// Check if the file is of the correct type
if (file.slice(-1) !== '/') {
// Check if the file is really a regular file
ok = fs.statSync(path.resolve(directory, file)).isFile();
} else {
// Check if the file is a directory
// (Since glob adds the `/` character to directory matches,
// we can simply check if the `/` character is present)
ok = (files[files.indexOf(file)].slice(-1) === '/');
}
}
it('"' + file + '" should be present and it should be a ' + expectedFileType, function () {
assert.equal(true, ok);
});
});
// List all files that should be NOT
// be present in the specified directory
(files.filter(function (file) {
return expectedFiles.indexOf(file) === -1;
})).forEach(function (file) {
it('"' + file + '" should NOT be present', function () {
assert(false);
});
});
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function runTests() {
describe('Test if all the expected files, and only them, are present in the build directories', function () {
describe(dirs.archive, function () {
checkFiles(dirs.archive, expectedFilesInArchiveDir);
});
describe(dirs.dist, function () {
checkFiles(dirs.dist, expectedFilesInDistDir);
});
});
}
runTests();

View File

@@ -1,252 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>QUnit Tests</title>
<link rel="stylesheet" href="qunit/testsuite.css" type="text/css" media="screen">
<!-- reference your own javascript files here -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript" src="../js/plugins.js"></script>
<script type="text/javascript" src="../js/script.js"></script>
<!-- test runner files -->
<script type="text/javascript" src="jquery-1.2.6.js"></script>
<script type="text/javascript" src="qunit/testrunner.js"></script>
<script type="text/javascript" src="tests.js"></script>
</head>
<body class="flora">
<h1>Unit Tests <small style="font-size: 80%; font-weight:normal">(executed by <a href="http://docs.jquery.com/QUnit">QUnit</a>)</small></h1>
<h2 id="banner"></h2>
<h2 id="userAgent"></h2>
<!-- Test HTML -->
<div id="other" style="display:none;">
<input type="password" name="pw1" id="pw1" value="engfeh" />
<input type="password" name="pw2" id="pw2" value="" />
</div>
<div id="main" style="display:none;">
<p id="firstp">See <a id="simon1" href="http://simon.incutio.com/archive/2003/03/25/#getElementsBySelector" rel="bookmark">this blog entry</a> for more information.</p>
<p id="ap">
Here are some links in a normal paragraph: <a id="google" href="http://www.google.com/" title="Google!">Google</a>,
<a id="groups" href="http://groups.google.com/">Google Groups</a>.
This link has <code><a href="#" id="anchor1">class="blog"</a></code>:
<a href="http://diveintomark.org/" class="blog" hreflang="en" id="mark">diveintomark</a>
</p>
<div id="foo">
<p id="sndp">Everything inside the red border is inside a div with <code>id="foo"</code>.</p>
<p lang="en" id="en">This is a normal link: <a id="yahoo" href="http://www.yahoo.com/" class="blogTest">Yahoo</a></p>
<p id="sap">This link has <code><a href="#2" id="anchor2">class="blog"</a></code>: <a href="http://simon.incutio.com/" class="blog link" id="simon">Simon Willison's Weblog</a></p>
</div>
<p id="first">Try them out:</p>
<ul id="firstUL"></ul>
<ol id="empty"></ol>
<form id="testForm1">
<input class="{required:true,minlength:2}" title="buga" name="firstname" id="firstname" />
<label id="errorFirstname" for="firstname" class="error">error for firstname</label>
<input class="{required:true}" title="buga" name="lastname" id="lastname" />
<input class="{required:true}" title="something" name="something" id="something" value="something" />
</form>
<form id="testForm1clean">
<input title="buga" name="firstname" id="firstnamec" />
<label id="errorFirstname" for="firstname" class="error">error for firstname</label>
<input title="buga" name="lastname" id="lastnamec" />
</form>
<form id="userForm">
<input class="{required:true}" name="username" id="username" />
</form>
<form method="post" id="signupForm" action="../demo/form.php">
<input id="user" name="user" title="Please enter your username (at least 3 characters)" class="{required:true,minlength:3}" />
<input type="password" name="password" id="password" class="{required:true,minlength:5}" />
</form>
<form id="testForm2">
<input class="{required:true}" type="radio" name="agree" id="agb" />
<label for="agree" id="agreeLabel" class="xerror">error for agb</label>
</form>
<form id="testForm3">
<select class="{required:true}" name="meal" id="meal" >
<option value="">Please select...</option>
<option value="1">Food</option>
<option value="2">Milk</option>
</select>
</form>
<div class="error" id="errorContainer">
<ul>
<li class="error" id="errorWrapper">
<label for="meal" id="mealLabel" class="error">error for meal</label>
</li>
</ul>
</div>
<form id="testForm4">
<input class="{foo:true}" name="f1" id="f1" />
<input class="{bar:true}" name="f2" id="f2" />
</form>
<form id="testForm5">
<input class="{equalTo:'#x2'}" value="x" name="x1" id="x1" />
<input class="{equalTo:'#x1'}" value="y" name="x2" id="x2" />
</form>
<form id="testForm6">
<input class="{required:true,minlength:2}" type="checkbox" name="check" id="form6check1" />
<input type="checkbox" name="check" id="form6check2" />
</form>
<form id="testForm7">
<select class="{required:true,minlength:2}" name="select5" id="select5" multiple="multiple">
<option id="optionxa" value="0">0</option>
<option id="optionxb" value="1">1</option>
<option id="optionxc" value="2">2</option>
<option id="optionxd" value="3">3</option>
</select>
</form>
<form id="dateRangeForm">
<input id="fromDate" name="fromDate" class="requiredDateRange" value="x" />
<input id="toDate" name="toDate" class="requiredDateRange" value="y" />
<span class="errorContainer"></span>
</form>
<form id="testForm8">
<input id="form8input" class="{required:true,number:true,rangelength:[2,8]}" name="abc" />
<input type="radio" name="radio1"/>
</form>
<form id="testForm9">
<input id="testEmail9" class="{required:true,email:true,messages:{required:'required',email:'email'}}" />
</form>
<div id="simplecontainer">
<h3></h3>
</div>
<div id="container"></div>
<ol id="labelcontainer"></ol>
<form id="elementsOrder">
<select class="required" name="order1" id="order1"><option value="">none</option></select>
<input class="required" name="order2" id="order2"/>
<input class="required" name="order3" type="checkbox" id="order3"/>
<input class="required" name="order4" id="order4"/>
<input class="required" name="order5" type="radio" id="order5"/>
<input class="required" name="order6" id="order6"/>
<ul id="orderContainer">
</ul>
</form>
<form id="form" action="formaction">
<input type="text" name="action" value="Test" id="text1"/>
<input type="text" name="text2" value="T" id="text2"/>
<input type="text" name="text2" value="TestTestTest" id="text3"/>
<input type="text" name="action" value="0" id="value1"/>
<input type="text" name="text2" value="10" id="value2"/>
<input type="text" name="text2" value="1000" id="value3"/>
<input type="radio" name="radio1" id="radio1"/>
<input type="radio" name="radio1" id="radio1a"/>
<input type="radio" name="radio2" id="radio2" checked="checked"/>
<input type="radio" name="radio" id="radio3"/>
<input type="radio" name="radio" id="radio4" checked="checked"/>
<input type="checkbox" name="check" id="check1" checked="checked"/>
<input type="checkbox" name="check" id="check1b" />
<input type="checkbox" name="check2" id="check2"/>
<input type="checkbox" name="check3" id="check3" checked="checked"/>
<input type="checkbox" name="check3" checked="checked"/>
<input type="checkbox" name="check3" checked="checked"/>
<input type="checkbox" name="check3" checked="checked"/>
<input type="checkbox" name="check3" checked="checked"/>
<input type="hidden" name="hidden" id="hidden1"/>
<input type="text" style="display:none;" name="foo[bar]" id="hidden2"/>
<input type="text" readonly="readonly" id="name" name="name" value="name" />
<button name="button">Button</button>
<textarea id="area1" name="area1"">foobar</textarea>
<textarea id="area2" name="area2"></textarea>
<select name="select1" id="select1">
<option id="option1a" value="">Nothing</option>
<option id="option1b" value="1">1</option>
<option id="option1c" value="2">2</option>
<option id="option1d" value="3">3</option>
</select>
<select name="select2" id="select2">
<option id="option2a" value="">Nothing</option>
<option id="option2b" value="1">1</option>
<option id="option2c" value="2">2</option>
<option id="option2d" selected="selected" value="3">3</option>
</select>
<select name="select3" id="select3" multiple="multiple">
<option id="option3a" value="">Nothing</option>
<option id="option3b" selected="selected" value="1">1</option>
<option id="option3c" selected="selected" value="2">2</option>
<option id="option3d" value="3">3</option>
</select>
<select name="select4" id="select4" multiple="multiple">
<option id="option3b" selected="selected" value="1">1</option>
<option id="option3c" selected="selected" value="2">2</option>
<option id="option3d" selected="selected" value="3">3</option>
<option id="option3e" selected="selected" value="4">4</option>
<option id="option3f" selected="selected" value="5">5</option>
</select>
<select name="select5" id="select5" multiple="multiple">
<option id="option3a" value="0">0</option>
<option id="option3b" value="1">1</option>
<option id="option3c" value="2">2</option>
<option id="option3d" value="3">3</option>
</select>
</form>
<form id="v2">
<input id="v2-i1" name="v2-i1" class="required" />
<input id="v2-i2" name="v2-i2" class="required email" />
<input id="v2-i3" name="v2-i3" class="url" />
<input id="v2-i4" name="v2-i4" class="required" minlength="2" />
<input id="v2-i5" name="v2-i5" class="required" minlength="2" maxlength="5" customMethod1="123" />
<input id="v2-i6" name="v2-i6" class="required customMethod2 {maxlength: 5}" minlength="2" />
<input id="v2-i7" name="v2-i7" />
</form>
<form id="checkables">
<input type="checkbox" id="checkable1" name="checkablesgroup" class="required" />
<input type="checkbox" id="checkable2" name="checkablesgroup" />
<input type="checkbox" id="checkable3" name="checkablesgroup" />
</form>
<form id="subformRequired">
<div class="billingAddressControl">
<input type="checkbox" id="bill_to_co" name="bill_to_co" class="toggleCheck" checked="checked" style="width: auto;" tabindex="1" />
<label for="bill_to_co" style="cursor:pointer">Same as Company Address</label>
</div>
<div id="subform">
<input maxlength="40" class="billingRequired" name="bill_first_name" size="20" type="text" tabindex="2" value="" />
</div>
<input id="co_name" class="required" maxlength="40" name="co_name" size="20" type="text" tabindex="1" value="" />
</form>
</div>
<ol id="tests"></ol>
</body>
</html>

3549
test/jquery-1.2.6.js vendored

File diff suppressed because it is too large Load Diff

View File

@@ -1,790 +0,0 @@
/*
* QUnit - jQuery unit testrunner
*
* http://docs.jquery.com/QUnit
*
* Copyright (c) 2008 John Resig, Jörn Zaefferer
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*
* $Id: testrunner.js 6173 2009-02-02 20:09:32Z jeresig $
*/
(function($) {
// Tests for equality any JavaScript type and structure without unexpected results.
// Discussions and reference: http://philrathe.com/articles/equiv
// Test suites: http://philrathe.com/tests/equiv
// Author: Philippe Rathé <prathe@gmail.com>
var equiv = function () {
var innerEquiv; // the real equiv function
var callers = []; // stack to decide between skip/abort functions
// Determine what is o.
function hoozit(o) {
if (typeof o === "string") {
return "string";
} else if (typeof o === "boolean") {
return "boolean";
} else if (typeof o === "number") {
if (isNaN(o)) {
return "nan";
} else {
return "number";
}
} else if (typeof o === "undefined") {
return "undefined";
// consider: typeof null === object
} else if (o === null) {
return "null";
// consider: typeof [] === object
} else if (o instanceof Array) {
return "array";
// consider: typeof new Date() === object
} else if (o instanceof Date) {
return "date";
// consider: /./ instanceof Object;
// /./ instanceof RegExp;
// typeof /./ === "function"; // => false in IE and Opera,
// true in FF and Safari
} else if (o instanceof RegExp) {
return "regexp";
} else if (typeof o === "object") {
return "object";
} else if (o instanceof Function) {
return "function";
}
}
// Call the o related callback with the given arguments.
function bindCallbacks(o, callbacks, args) {
var prop = hoozit(o);
if (prop) {
if (hoozit(callbacks[prop]) === "function") {
return callbacks[prop].apply(callbacks, args);
} else {
return callbacks[prop]; // or undefined
}
}
}
var callbacks = function () {
// for string, boolean, number and null
function useStrictEquality(b, a) {
return a === b;
}
return {
"string": useStrictEquality,
"boolean": useStrictEquality,
"number": useStrictEquality,
"null": useStrictEquality,
"undefined": useStrictEquality,
"nan": function (b) {
return isNaN(b);
},
"date": function (b, a) {
return hoozit(b) === "date" && a.valueOf() === b.valueOf();
},
"regexp": function (b, a) {
return hoozit(b) === "regexp" &&
a.source === b.source && // the regex itself
a.global === b.global && // and its modifers (gmi) ...
a.ignoreCase === b.ignoreCase &&
a.multiline === b.multiline;
},
// - skip when the property is a method of an instance (OOP)
// - abort otherwise,
// initial === would have catch identical references anyway
"function": function () {
var caller = callers[callers.length - 1];
return caller !== Object &&
typeof caller !== "undefined";
},
"array": function (b, a) {
var i;
var len;
// b could be an object literal here
if ( ! (hoozit(b) === "array")) {
return false;
}
len = a.length;
if (len !== b.length) { // safe and faster
return false;
}
for (i = 0; i < len; i++) {
if( ! innerEquiv(a[i], b[i])) {
return false;
}
}
return true;
},
"object": function (b, a) {
var i;
var eq = true; // unless we can proove it
var aProperties = [], bProperties = []; // collection of strings
// comparing constructors is more strict than using instanceof
if ( a.constructor !== b.constructor) {
return false;
}
// stack constructor before traversing properties
callers.push(a.constructor);
for (i in a) { // be strict: don't ensures hasOwnProperty and go deep
aProperties.push(i); // collect a's properties
if ( ! innerEquiv(a[i], b[i])) {
eq = false;
}
}
callers.pop(); // unstack, we are done
for (i in b) {
bProperties.push(i); // collect b's properties
}
// Ensures identical properties name
return eq && innerEquiv(aProperties.sort(), bProperties.sort());
}
};
}();
innerEquiv = function () { // can take multiple arguments
var args = Array.prototype.slice.apply(arguments);
if (args.length < 2) {
return true; // end transition
}
return (function (a, b) {
if (a === b) {
return true; // catch the most you can
} else if (typeof a !== typeof b || a === null || b === null || typeof a === "undefined" || typeof b === "undefined") {
return false; // don't lose time with error prone cases
} else {
return bindCallbacks(a, callbacks, [b, a]);
}
// apply transition with (1..n) arguments
})(args[0], args[1]) && arguments.callee.apply(this, args.splice(1, args.length -1));
};
return innerEquiv;
}(); // equiv
var GETParams = $.map( location.search.slice(1).split('&'), decodeURIComponent ),
ngindex = $.inArray("noglobals", GETParams),
noglobals = ngindex !== -1;
if( noglobals )
GETParams.splice( ngindex, 1 );
var config = {
stats: {
all: 0,
bad: 0
},
queue: [],
// block until document ready
blocking: true,
//restrict modules/tests by get parameters
filters: GETParams,
isLocal: !!(window.location.protocol == 'file:')
};
// public API as global methods
$.extend(window, {
test: test,
module: module,
expect: expect,
ok: ok,
equals: equals,
start: start,
stop: stop,
reset: reset,
isLocal: config.isLocal,
same: function(a, b, message) {
push(equiv(a, b), a, b, message);
},
QUnit: {
equiv: equiv,
ok: ok,
done: function(failures, total){},
log: function(result, message){}
},
// legacy methods below
isSet: isSet,
isObj: isObj,
compare: function() {
throw "compare is deprecated - use same() instead";
},
compare2: function() {
throw "compare2 is deprecated - use same() instead";
},
serialArray: function() {
throw "serialArray is deprecated - use jsDump.parse() instead";
},
q: q,
t: t,
url: url,
triggerEvent: triggerEvent
});
$(window).load(function() {
$('#userAgent').html(navigator.userAgent);
var head = $('<div class="testrunner-toolbar"><label for="filter-pass">Hide passed tests</label></div>').insertAfter("#userAgent");
$('<input type="checkbox" id="filter-pass" />').attr("disabled", true).prependTo(head).click(function() {
$('li.pass')[this.checked ? 'hide' : 'show']();
});
$('<input type="checkbox" id="filter-missing">').attr("disabled", true).appendTo(head).click(function() {
$("li.fail:contains('missing test - untested code is broken code')").parent('ol').parent('li.fail')[this.checked ? 'hide' : 'show']();
});
$("#filter-missing").after('<label for="filter-missing">Hide missing tests (untested code is broken code)</label>');
runTest();
});
function synchronize(callback) {
config.queue.push(callback);
if(!config.blocking) {
process();
}
}
function process() {
while(config.queue.length && !config.blocking) {
config.queue.shift()();
}
}
function stop(timeout) {
config.blocking = true;
if (timeout)
config.timeout = setTimeout(function() {
QUnit.ok( false, "Test timed out" );
start();
}, timeout);
}
function start() {
// A slight delay, to avoid any current callbacks
setTimeout(function() {
if(config.timeout)
clearTimeout(config.timeout);
config.blocking = false;
process();
}, 13);
}
function validTest( name ) {
var i = config.filters.length,
run = false;
if( !i )
return true;
while( i-- ){
var filter = config.filters[i],
not = filter.charAt(0) == '!';
if( not )
filter = filter.slice(1);
if( name.indexOf(filter) != -1 )
return !not;
if( not )
run = true;
}
return run;
}
function runTest() {
config.blocking = false;
var started = +new Date;
config.fixture = document.getElementById('main').innerHTML;
config.ajaxSettings = $.ajaxSettings;
synchronize(function() {
$('<p id="testresult" class="result"/>').html(['Tests completed in ',
+new Date - started, ' milliseconds.<br/>',
'<span class="bad">', config.stats.bad, '</span> tests of <span class="all">', config.stats.all, '</span> failed.']
.join(''))
.appendTo("body");
$("#banner").addClass(config.stats.bad ? "fail" : "pass");
QUnit.done( config.stats.bad, config.stats.all );
});
}
var pollution;
function saveGlobal(){
pollution = [ ];
if( noglobals )
for( var key in window )
pollution.push(key);
}
function checkPollution( name ){
var old = pollution;
saveGlobal();
if( pollution.length > old.length ){
ok( false, "Introduced global variable(s): " + diff(old, pollution).join(", ") );
config.expected++;
}
}
function diff( clean, dirty ){
return $.grep( dirty, function(name){
return $.inArray( name, clean ) == -1;
});
}
function test(name, callback) {
if(config.currentModule)
name = config.currentModule + " module: " + name;
var lifecycle = $.extend({
setup: function() {},
teardown: function() {}
}, config.moduleLifecycle);
if ( !validTest(name) )
return;
synchronize(function() {
config.assertions = [];
config.expected = null;
try {
if( !pollution )
saveGlobal();
lifecycle.setup();
} catch(e) {
QUnit.ok( false, "Setup failed on " + name + ": " + e.message );
}
})
synchronize(function() {
try {
callback();
} catch(e) {
if( typeof console != "undefined" && console.error && console.warn ) {
console.error("Test " + name + " died, exception and test follows");
console.error(e);
console.warn(callback.toString());
}
QUnit.ok( false, "Died on test #" + (config.assertions.length + 1) + ": " + e.message );
// else next test will carry the responsibility
saveGlobal();
}
});
synchronize(function() {
try {
checkPollution();
lifecycle.teardown();
} catch(e) {
QUnit.ok( false, "Teardown failed on " + name + ": " + e.message );
}
})
synchronize(function() {
try {
reset();
} catch(e) {
if( typeof console != "undefined" && console.error && console.warn ) {
console.error("reset() failed, following Test " + name + ", exception and reset fn follows");
console.error(e);
console.warn(reset.toString());
}
}
if(config.expected && config.expected != config.assertions.length) {
QUnit.ok( false, "Expected " + config.expected + " assertions, but " + config.assertions.length + " were run" );
}
var good = 0, bad = 0;
var ol = $("<ol/>").hide();
config.stats.all += config.assertions.length;
for ( var i = 0; i < config.assertions.length; i++ ) {
var assertion = config.assertions[i];
$("<li/>").addClass(assertion.result ? "pass" : "fail").text(assertion.message || "(no message)").appendTo(ol);
assertion.result ? good++ : bad++;
}
config.stats.bad += bad;
var b = $("<strong/>").html(name + " <b style='color:black;'>(<b class='fail'>" + bad + "</b>, <b class='pass'>" + good + "</b>, " + config.assertions.length + ")</b>")
.click(function(){
$(this).next().toggle();
})
.dblclick(function(event) {
var target = $(event.target).filter("strong").clone();
if ( target.length ) {
target.children().remove();
location.href = location.href.match(/^(.+?)(\?.*)?$/)[1] + "?" + encodeURIComponent($.trim(target.text()));
}
});
$("<li/>").addClass(bad ? "fail" : "pass").append(b).append(ol).appendTo("#tests");
if(bad) {
$("#filter-pass").attr("disabled", null);
$("#filter-missing").attr("disabled", null);
}
});
}
// call on start of module test to prepend name to all tests
function module(name, lifecycle) {
config.currentModule = name;
config.moduleLifecycle = lifecycle;
}
/**
* Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
*/
function expect(asserts) {
config.expected = asserts;
}
/**
* Resets the test setup. Useful for tests that modify the DOM.
*/
function reset() {
$("#main").html( config.fixture );
$.event.global = {};
$.ajaxSettings = $.extend({}, config.ajaxSettings);
}
/**
* Asserts true.
* @example ok( $("a").size() > 5, "There must be at least 5 anchors" );
*/
function ok(a, msg) {
QUnit.log(a, msg);
config.assertions.push({
result: !!a,
message: msg
});
}
/**
* Asserts that two arrays are the same
*/
function isSet(a, b, msg) {
function serialArray( a ) {
var r = [];
if ( a && a.length )
for ( var i = 0; i < a.length; i++ ) {
var str = a[i].nodeName;
if ( str ) {
str = str.toLowerCase();
if ( a[i].id )
str += "#" + a[i].id;
} else
str = a[i];
r.push( str );
}
return "[ " + r.join(", ") + " ]";
}
var ret = true;
if ( a && b && a.length != undefined && a.length == b.length ) {
for ( var i = 0; i < a.length; i++ )
if ( a[i] != b[i] )
ret = false;
} else
ret = false;
QUnit.ok( ret, !ret ? (msg + " expected: " + serialArray(b) + " result: " + serialArray(a)) : msg );
}
/**
* Asserts that two objects are equivalent
*/
function isObj(a, b, msg) {
var ret = true;
if ( a && b ) {
for ( var i in a )
if ( a[i] != b[i] )
ret = false;
for ( i in b )
if ( a[i] != b[i] )
ret = false;
} else
ret = false;
QUnit.ok( ret, msg );
}
/**
* Returns an array of elements with the given IDs, eg.
* @example q("main", "foo", "bar")
* @result [<div id="main">, <span id="foo">, <input id="bar">]
*/
function q() {
var r = [];
for ( var i = 0; i < arguments.length; i++ )
r.push( document.getElementById( arguments[i] ) );
return r;
}
/**
* Asserts that a select matches the given IDs
* @example t("Check for something", "//[a]", ["foo", "baar"]);
* @result returns true if "//[a]" return two elements with the IDs 'foo' and 'baar'
*/
function t(a,b,c) {
var f = $(b);
var s = "";
for ( var i = 0; i < f.length; i++ )
s += (s && ",") + '"' + f[i].id + '"';
isSet(f, q.apply(q,c), a + " (" + b + ")");
}
/**
* Add random number to url to stop IE from caching
*
* @example url("data/test.html")
* @result "data/test.html?10538358428943"
*
* @example url("data/test.php?foo=bar")
* @result "data/test.php?foo=bar&10538358345554"
*/
function url(value) {
return value + (/\?/.test(value) ? "&" : "?") + new Date().getTime() + "" + parseInt(Math.random()*100000);
}
/**
* Checks that the first two arguments are equal, with an optional message.
* Prints out both actual and expected values.
*
* Prefered to ok( actual == expected, message )
*
* @example equals( $.format("Received {0} bytes.", 2), "Received 2 bytes." );
*
* @param Object actual
* @param Object expected
* @param String message (optional)
*/
function equals(actual, expected, message) {
push(expected == actual, actual, expected, message);
}
function push(result, actual, expected, message) {
message = message || (result ? "okay" : "failed");
QUnit.ok( result, result ? message + ": " + expected : message + ", expected: " + jsDump.parse(expected) + " result: " + jsDump.parse(actual) );
}
/**
* Trigger an event on an element.
*
* @example triggerEvent( document.body, "click" );
*
* @param DOMElement elem
* @param String type
*/
function triggerEvent( elem, type, event ) {
if ( $.browser.mozilla || $.browser.opera ) {
event = document.createEvent("MouseEvents");
event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
elem.dispatchEvent( event );
} else if ( $.browser.msie ) {
elem.fireEvent("on"+type);
}
}
})(jQuery);
/**
* jsDump
* Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
* Licensed under BSD (http://www.opensource.org/licenses/bsd-license.php)
* Date: 5/15/2008
* @projectDescription Advanced and extensible data dumping for Javascript.
* @version 1.0.0
* @author Ariel Flesler
* @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
*/
(function(){
function quote( str ){
return '"' + str.toString().replace(/"/g, '\\"') + '"';
};
function literal( o ){
return o + '';
};
function join( pre, arr, post ){
var s = jsDump.separator(),
base = jsDump.indent();
inner = jsDump.indent(1);
if( arr.join )
arr = arr.join( ',' + s + inner );
if( !arr )
return pre + post;
return [ pre, inner + arr, base + post ].join(s);
};
function array( arr ){
var i = arr.length, ret = Array(i);
this.up();
while( i-- )
ret[i] = this.parse( arr[i] );
this.down();
return join( '[', ret, ']' );
};
var reName = /^function (\w+)/;
var jsDump = window.jsDump = {
parse:function( obj, type ){//type is used mostly internally, you can fix a (custom)type in advance
var parser = this.parsers[ type || this.typeOf(obj) ];
type = typeof parser;
return type == 'function' ? parser.call( this, obj ) :
type == 'string' ? parser :
this.parsers.error;
},
typeOf:function( obj ){
var type = typeof obj,
f = 'function';//we'll use it 3 times, save it
return type != 'object' && type != f ? type :
!obj ? 'null' :
obj.exec ? 'regexp' :// some browsers (FF) consider regexps functions
obj.getHours ? 'date' :
obj.scrollBy ? 'window' :
obj.nodeName == '#document' ? 'document' :
obj.nodeName ? 'node' :
obj.item ? 'nodelist' : // Safari reports nodelists as functions
obj.callee ? 'arguments' :
obj.call || obj.constructor != Array && //an array would also fall on this hack
(obj+'').indexOf(f) != -1 ? f : //IE reports functions like alert, as objects
'length' in obj ? 'array' :
type;
},
separator:function(){
return this.multiline ? this.HTML ? '<br />' : '\n' : this.HTML ? '&nbsp;' : ' ';
},
indent:function( extra ){// extra can be a number, shortcut for increasing-calling-decreasing
if( !this.multiline )
return '';
var chr = this.indentChar;
if( this.HTML )
chr = chr.replace(/\t/g,' ').replace(/ /g,'&nbsp;');
return Array( this._depth_ + (extra||0) ).join(chr);
},
up:function( a ){
this._depth_ += a || 1;
},
down:function( a ){
this._depth_ -= a || 1;
},
setParser:function( name, parser ){
this.parsers[name] = parser;
},
// The next 3 are exposed so you can use them
quote:quote,
literal:literal,
join:join,
//
_depth_: 1,
// This is the list of parsers, to modify them, use jsDump.setParser
parsers:{
window: '[Window]',
document: '[Document]',
error:'[ERROR]', //when no parser is found, shouldn't happen
unknown: '[Unknown]',
'null':'null',
undefined:'undefined',
'function':function( fn ){
var ret = 'function',
name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE
if( name )
ret += ' ' + name;
ret += '(';
ret = [ ret, this.parse( fn, 'functionArgs' ), '){'].join('');
return join( ret, this.parse(fn,'functionCode'), '}' );
},
array: array,
nodelist: array,
arguments: array,
object:function( map ){
var ret = [ ];
this.up();
for( var key in map )
ret.push( this.parse(key,'key') + ': ' + this.parse(map[key]) );
this.down();
return join( '{', ret, '}' );
},
node:function( node ){
var open = this.HTML ? '&lt;' : '<',
close = this.HTML ? '&gt;' : '>';
var tag = node.nodeName.toLowerCase(),
ret = open + tag;
for( var a in this.DOMAttrs ){
var val = node[this.DOMAttrs[a]];
if( val )
ret += ' ' + a + '=' + this.parse( val, 'attribute' );
}
return ret + close + open + '/' + tag + close;
},
functionArgs:function( fn ){//function calls it internally, it's the arguments part of the function
var l = fn.length;
if( !l ) return '';
var args = Array(l);
while( l-- )
args[l] = String.fromCharCode(97+l);//97 is 'a'
return ' ' + args.join(', ') + ' ';
},
key:quote, //object calls it internally, the key part of an item in a map
functionCode:'[code]', //function calls it internally, it's the content of the function
attribute:quote, //node calls it internally, it's an html attribute value
string:quote,
date:quote,
regexp:literal, //regex
number:literal,
'boolean':literal
},
DOMAttrs:{//attributes to dump from nodes, name=>realName
id:'id',
name:'name',
'class':'className'
},
HTML:false,//if true, entities are escaped ( <, >, \t, space and \n )
indentChar:' ',//indentation unit
multiline:true //if true, items in a collection, are separated by a \n, else just a space.
};
})();
//fireunit compat
// http://ejohn.org/blog/fireunit/
if ( typeof fireunit === "object" ) {
QUnit.log = fireunit.ok;
QUnit.done = fireunit.testDone;
}

View File

@@ -1,120 +0,0 @@
body, div, h1 { font-family: 'trebuchet ms', verdana, arial; margin: 0; padding: 0 }
body {font-size: 10pt; }
h1 { padding: 15px; font-size: large; background-color: #06b; color: white; }
h1 a { color: white; }
h2 { padding: 10px; background-color: #eee; color: black; margin: 0; font-size: small; font-weight: normal }
.pass { color: green; }
.fail { color: red; }
p.result { margin-left: 1em; }
#banner { height: 2em; border-bottom: 1px solid white; }
h2.pass { background-color: green; }
h2.fail { background-color: red; }
div.testrunner-toolbar { background: #eee; border-top: 1px solid black; padding: 10px; }
ol#tests > li > strong { cursor:pointer; }
div#fx-tests h4 {
background: red;
}
div#fx-tests h4.pass {
background: green;
}
div#fx-tests div.box {
background: red url(data/cow.jpg) no-repeat;
overflow: hidden;
border: 2px solid #000;
}
div#fx-tests div.overflow {
overflow: visible;
}
div.inline {
display: inline;
}
div.autoheight {
height: auto;
}
div.autowidth {
width: auto;
}
div.autoopacity {
opacity: auto;
}
div.largewidth {
width: 100px;
}
div.largeheight {
height: 100px;
}
div.largeopacity {
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=100);
}
div.medwidth {
width: 50px;
}
div.medheight {
height: 50px;
}
div.medopacity {
opacity: 0.5;
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=50);
}
div.nowidth {
width: 0px;
}
div.noheight {
height: 0px;
}
div.noopacity {
opacity: 0;
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
}
div.hidden {
display: none;
}
div#fx-tests div.widewidth {
background-repeat: repeat-x;
}
div#fx-tests div.wideheight {
background-repeat: repeat-y;
}
div#fx-tests div.widewidth.wideheight {
background-repeat: repeat;
}
div#fx-tests div.noback {
background-image: none;
}
div.chain, div.chain div { width: 100px; height: 20px; position: relative; float: left; }
div.chain div { position: absolute; top: 0px; left: 0px; }
div.chain.test { background: red; }
div.chain.test div { background: green; }
div.chain.out { background: green; }
div.chain.out div { background: red; display: none; }
div#show-tests * { display: none; }

File diff suppressed because it is too large Load Diff