{"id":13452774,"url":"https://github.com/4ae9b8/browserhacks","last_synced_at":"2025-03-23T21:34:49.554Z","repository":{"id":6138663,"uuid":"7367371","full_name":"4ae9b8/browserhacks","owner":"4ae9b8","description":"An extensive list of CSS/JS browserhacks from all over the interwebs.","archived":false,"fork":false,"pushed_at":"2023-01-07T10:10:16.000Z","size":8093,"stargazers_count":1265,"open_issues_count":48,"forks_count":149,"subscribers_count":79,"default_branch":"gh-pages","last_synced_at":"2024-08-01T08:06:39.622Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://browserhacks.com/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/4ae9b8.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-12-29T14:55:59.000Z","updated_at":"2024-07-02T07:09:40.000Z","dependencies_parsed_at":"2023-01-11T17:02:21.513Z","dependency_job_id":null,"html_url":"https://github.com/4ae9b8/browserhacks","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4ae9b8%2Fbrowserhacks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4ae9b8%2Fbrowserhacks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4ae9b8%2Fbrowserhacks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4ae9b8%2Fbrowserhacks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/4ae9b8","download_url":"https://codeload.github.com/4ae9b8/browserhacks/tar.gz/refs/heads/gh-pages","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221918509,"owners_count":16901640,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T08:00:22.774Z","updated_at":"2024-10-28T19:30:58.444Z","avatar_url":"https://github.com/4ae9b8.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","others"],"sub_categories":[],"readme":"Browserhacks.com\n================\n\nWhat’s this?\n------------\n\nBrowserhacks is an extensive list of browser specific CSS and JavaScript hacks from all over the interwebs.\n\nPlease keep in mind using a hack is not always the perfect solution. It can be useful to fix some weird browser specific bug, but in most cases you should fix your CSS/JS.\n\n\nHow to?\n-------\n\n1. Pick the hack you want\n2. Copy it into your stylesheet\n3. Add the styles you want between the braces\n4. Enjoy the new styles for the browser you targeted!\n\n\nCreated by\n---------\n\n* [Tim Pietrusky](http://twitter.com/timpietrusky)\n* [Kitty Giraudel](http://twitter.com/KittyGiraudel)\n* [Fabrice Weinberg](http://twitter.com/fweinb)\n\n\nUpdates by\n---------\n\n* [Jeff Clayton](https://github.com/jeffclayton)\n\n\nThanks to\n---------\n\n* [Joshua Hibbert](https://twitter.com/_joshnh) for the design\n* [Jeff Clayton](https://github.com/jeffclayton) for his help with testing hacks and creating new ones, now also an administrator\n* [Sara Soueidan](http://twitter.com/sarasoueidan), [Ana Tudor](http://twitter.com/thebabydino), [Mads Cordes](http://twitter.com/mobilpadde) for their kind help\n* [Paul Irish](http://twitter.com/paul_irish) for [his great post on CSS hacks](http://www.paulirish.com/2009/browser-specific-css-hacks/)\n* [Keith Clarke](http://twitter.com/keithclarkecouk) for [his @media block CSS hacks](http://blog.keithclark.co.uk/moving-ie-specific-css-into-media-blocks/)\n* [Nicolas Gallagher](http://twitter.com/necolas) for [his IE CSS hacks](https://gist.github.com/necolas/983116)\n* And various nice contributors :)\n\n\nDeployment\n----------\n\nThe site is a Jekyll setup hosted on GitHub Pages. Simply update the `gh-pages` branch to update the site (direct edit on GitHub, manual push or pull-request merge).\n\nAdding new hacks\n----------------\n\nAdding a new hack is as simple as adding a new entry in [`_data/hacks.json`](https://github.com/4ae9b8/browserhacks/blob/gh-pages/_data/hacks.json). Like this:\n\n```json\n{\n  \"type\": \"selector\",\n  \"browsers\": {\n    \"ch\": \"*\",\n    \"op\": \"14+\"\n  },\n  \"label\": \"A label for your hack if necessary.\",\n  \"language\": \"css\",\n  \"code\": [\n    \".selector:not(*:root) {}\"\n  ],\n  \"test\": [\n    \".selector:not(*:root) { background: lightgreen; }\"\n  ]\n}\n```\n\nThe **type** key defines which type of hack it is; valid types are listed in [`_data/hackTypes.json`](https://github.com/4ae9b8/browserhacks/blob/gh-pages/_data/hackTypes.json).\n\nThe **browsers** key is an object mapping a browser’s shortname to a version expression; valid browsers are listed in [`_data/browsers.json`](https://github.com/4ae9b8/browserhacks/blob/gh-pages/_data/browsers.json). Versions can be:\n\n* strict version (e.g. `42`)\n* strict versiond (e.g. `42|43`)\n* version and up (e.g. `42+`)\n* version and below (e.g. `42-`)\n* any version (e.g. `*`)\n\nThe **label** key can be left empty, or describe the hack if it is necessary.\n\nThe **language** key defines how to display the hack, and how to create the dynamic test for it. Possible languages are `css`, `javascript` and `markup`.\n\nThe **code** key is an array of expressions for the hack. Certain hacks can be written in several forms, hence the need for an array.\n\nThe **test** key is an array of expressions for the test. It should be a direct copy of the `code` array, except the braces should be filled with a `background: lightgreen;` in case of a selector, or `.selector { background: lightgreen; }` in case of a media expression. Take example on other existing hacks.\n\nOnce you’ve done that, simply run `npm run build` to complete the hack with a unique ID, a human-readable version, a check for whether or not it’s a legacy hack, and create dynamic tests.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F4ae9b8%2Fbrowserhacks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F4ae9b8%2Fbrowserhacks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F4ae9b8%2Fbrowserhacks/lists"}