[
  {
    "path": "CODE-OF-CONDUCT.md",
    "content": "# Contributor Code of Conduct\n\nAs contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.\n\nWe are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery\n* Personal attacks\n* Trolling or insulting/derogatory comments\n* Public or private harassment\n* Publishing other's private information, such as physical or electronic addresses, without explicit permission\n* Other unethical or unprofessional conduct\n\nProject maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.\n\nBy adopting this Code of Conduct, project maintainers commit themselves to fairly and consistently applying these principles to every aspect of managing this project. Project maintainers who do not follow or enforce the Code of Conduct may be permanently removed from the project team.\n\nThis Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community.\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project maintainer at mjsmithme@gmail.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. Maintainers are obligated to maintain confidentiality with regard to the reporter of an incident.\n\nThis Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.3.0, available at [http://contributor-covenant.org/version/1/3/0/](http://contributor-covenant.org/version/1/3/0/)."
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contribution Guidelines\n\nPlease note that this project is released with a [Contributor Code of Conduct](CODE-OF-CONDUCT.md). By participating in this project you agree to abide by its terms.\n\n## Contents\n\n- [Adding to This List](#adding-to-this-list)\n- [Updating Your Pull Request](#updating-your-pull-request)\n\n## Adding to This List\n\nPlease ensure your pull request adheres to the following guidelines:\n\n- Search open and closed PRs to avoid duplicate suggestions.\n- Only submit CSS tips that you think would be useful to others. This implies each tip has enough succinct content to describe why it's useful.\n- Add your tip at the bottom of the [README](https://github.com/AllThingsSmitty/css-protips/blob/master/README.md) document. Add a link to your tip at the bottom of the table of contents.\n- Use [title-case](https://titlecaseconverter.com/).\n- Code formatting should follow standard [CSSLint](http://www.csslint.net) default settings, including:\n  - Indent with two spaces\n  - Use shorthand, e.g., `margin: 10px 10px 0.5rem;`\n  - Use double quotes, e.g., `background: url(\"logo.svg\");`\n  - Use leading zeros with numberic values, e.g., `padding: 0.75rem;`\n  - Sort properties alphabetically\n  - **Avoid letting your code formatter format other section of the README file.**\n- Make sure your text editor is set to remove trailing whitespace.\n- Check your spelling and grammar.\n- The PR should have a useful title.\n\nThank you for your suggestions!\n\n## Updating Your Pull Request\n\nSometimes a maintainer will ask you to edit your pull request before it's included. This is normally due to spelling errors or because your PR didn't match the above guidelines. [This write-up](https://github.com/RichardLitt/knowledge/blob/master/github/amending-a-commit-guide.md) covers the different ways you can change a pull request.\n"
  },
  {
    "path": "LICENSE",
    "content": "CC0 1.0 Universal\n\nStatement of Purpose\n\nThe laws of most jurisdictions throughout the world automatically confer\nexclusive Copyright and Related Rights (defined below) upon the creator and\nsubsequent owner(s) (each and all, an \"owner\") of an original work of\nauthorship and/or a database (each, a \"Work\").\n\nCertain owners wish to permanently relinquish those rights to a Work for the\npurpose of contributing to a commons of creative, cultural and scientific\nworks (\"Commons\") that the public can reliably and without fear of later\nclaims of infringement build upon, modify, incorporate in other works, reuse\nand redistribute as freely as possible in any form whatsoever and for any\npurposes, including without limitation commercial purposes. These owners may\ncontribute to the Commons to promote the ideal of a free culture and the\nfurther production of creative, cultural and scientific works, or to gain\nreputation or greater distribution for their Work in part through the use and\nefforts of others.\n\nFor these and/or other purposes and motivations, and without any expectation\nof additional consideration or compensation, the person associating CC0 with a\nWork (the \"Affirmer\"), to the extent that he or she is an owner of Copyright\nand Related Rights in the Work, voluntarily elects to apply CC0 to the Work\nand publicly distribute the Work under its terms, with knowledge of his or her\nCopyright and Related Rights in the Work and the meaning and intended legal\neffect of CC0 on those rights.\n\n1. Copyright and Related Rights. A Work made available under CC0 may be\nprotected by copyright and related or neighboring rights (\"Copyright and\nRelated Rights\"). Copyright and Related Rights include, but are not limited\nto, the following:\n\n  i. the right to reproduce, adapt, distribute, perform, display, communicate,\n  and translate a Work;\n\n  ii. moral rights retained by the original author(s) and/or performer(s);\n\n  iii. publicity and privacy rights pertaining to a person's image or likeness\n  depicted in a Work;\n\n  iv. rights protecting against unfair competition in regards to a Work,\n  subject to the limitations in paragraph 4(a), below;\n\n  v. rights protecting the extraction, dissemination, use and reuse of data in\n  a Work;\n\n  vi. database rights (such as those arising under Directive 96/9/EC of the\n  European Parliament and of the Council of 11 March 1996 on the legal\n  protection of databases, and under any national implementation thereof,\n  including any amended or successor version of such directive); and\n\n  vii. other similar, equivalent or corresponding rights throughout the world\n  based on applicable law or treaty, and any national implementations thereof.\n\n2. Waiver. To the greatest extent permitted by, but not in contravention of,\napplicable law, Affirmer hereby overtly, fully, permanently, irrevocably and\nunconditionally waives, abandons, and surrenders all of Affirmer's Copyright\nand Related Rights and associated claims and causes of action, whether now\nknown or unknown (including existing as well as future claims and causes of\naction), in the Work (i) in all territories worldwide, (ii) for the maximum\nduration provided by applicable law or treaty (including future time\nextensions), (iii) in any current or future medium and for any number of\ncopies, and (iv) for any purpose whatsoever, including without limitation\ncommercial, advertising or promotional purposes (the \"Waiver\"). Affirmer makes\nthe Waiver for the benefit of each member of the public at large and to the\ndetriment of Affirmer's heirs and successors, fully intending that such Waiver\nshall not be subject to revocation, rescission, cancellation, termination, or\nany other legal or equitable action to disrupt the quiet enjoyment of the Work\nby the public as contemplated by Affirmer's express Statement of Purpose.\n\n3. Public License Fallback. Should any part of the Waiver for any reason be\njudged legally invalid or ineffective under applicable law, then the Waiver\nshall be preserved to the maximum extent permitted taking into account\nAffirmer's express Statement of Purpose. In addition, to the extent the Waiver\nis so judged Affirmer hereby grants to each affected person a royalty-free,\nnon transferable, non sublicensable, non exclusive, irrevocable and\nunconditional license to exercise Affirmer's Copyright and Related Rights in\nthe Work (i) in all territories worldwide, (ii) for the maximum duration\nprovided by applicable law or treaty (including future time extensions), (iii)\nin any current or future medium and for any number of copies, and (iv) for any\npurpose whatsoever, including without limitation commercial, advertising or\npromotional purposes (the \"License\"). The License shall be deemed effective as\nof the date CC0 was applied by Affirmer to the Work. Should any part of the\nLicense for any reason be judged legally invalid or ineffective under\napplicable law, such partial invalidity or ineffectiveness shall not\ninvalidate the remainder of the License, and in such case Affirmer hereby\naffirms that he or she will not (i) exercise any of his or her remaining\nCopyright and Related Rights in the Work or (ii) assert any associated claims\nand causes of action with respect to the Work, in either case contrary to\nAffirmer's express Statement of Purpose.\n\n4. Limitations and Disclaimers.\n\n  a. No trademark or patent rights held by Affirmer are waived, abandoned,\n  surrendered, licensed or otherwise affected by this document.\n\n  b. Affirmer offers the Work as-is and makes no representations or warranties\n  of any kind concerning the Work, express, implied, statutory or otherwise,\n  including without limitation warranties of title, merchantability, fitness\n  for a particular purpose, non infringement, or the absence of latent or\n  other defects, accuracy, or the present or absence of errors, whether or not\n  discoverable, all to the greatest extent permissible under applicable law.\n\n  c. Affirmer disclaims responsibility for clearing rights of other persons\n  that may apply to the Work or any use thereof, including without limitation\n  any person's Copyright and Related Rights in the Work. Further, Affirmer\n  disclaims responsibility for obtaining any necessary consents, permissions\n  or other rights required for any use of the Work.\n\n  d. Affirmer understands and acknowledges that Creative Commons is not a\n  party to this document and has no duty or obligation with respect to this\n  CC0 or use of the Work.\n\nFor more information, please see\n<http://creativecommons.org/publicdomain/zero/1.0/>"
  },
  {
    "path": "README.md",
    "content": "<div align=\"center\">\n  <img src=\"./assets/img/bulb.svg\" width=\"200\" alt=\"light bulb icon\">\n</div>\n\n# CSS Protips [![Awesome](https://awesome.re/badge-flat.svg)](https://awesome.re)\n\nA collection of tips to help take your CSS skills pro.\n\n> [!TIP]\n> For other great lists check out [@sindresorhus](https://github.com/sindresorhus/)'s curated list of [awesome lists](https://github.com/sindresorhus/awesome/).\n\n## Contents\n\n- [Protips](#protips)\n- [Support](#support)\n- [Translations](#translations)\n- [Contribution Guidelines](CONTRIBUTING.md)\n\n## Protips\n\n1. [Use a CSS Reset](#use-a-css-reset)\n1. [Inherit `box-sizing`](#inherit-box-sizing)\n1. [Use `unset` Instead of Resetting All Properties](#use-unset-instead-of-resetting-all-properties)\n1. [Use `:not()` to Apply/Unapply Borders on Navigation](#use-not-to-applyunapply-borders-on-navigation)\n1. [Check if Font Is Installed Locally](#check-if-font-is-installed-locally)\n1. [Add `line-height` to `body`](#add-line-height-to-body)\n1. [Set `:focus` for Form Elements](#set-focus-for-form-elements)\n1. [Vertically-Center Anything](#vertically-center-anything)\n1. [Use `aspect-ratio` Instead of Height/Width](#use-aspect-ratio-instead-of-heightwidth)\n1. [Comma-Separated Lists](#comma-separated-lists)\n1. [Select Items Using Negative `nth-child`](#select-items-using-negative-nth-child)\n1. [Use SVG for Icons](#use-svg-for-icons)\n1. [Use the \"Lobotomized Owl\" Selector](#use-the-lobotomized-owl-selector)\n1. [Use `max-height` for Pure CSS Sliders](#use-max-height-for-pure-css-sliders)\n1. [Equal-Width Table Cells](#equal-width-table-cells)\n1. [Get Rid of Margin Hacks With Flexbox](#get-rid-of-margin-hacks-with-flexbox)\n1. [Use Attribute Selectors with Empty Links](#use-attribute-selectors-with-empty-links)\n1. [Control Specificity Better With `:is()`](#control-specificity-better-with-is)\n1. [Style \"Default\" Links](#style-default-links)\n1. [Intrinsic Ratio Boxes](#intrinsic-ratio-boxes)\n1. [Style Broken Images](#style-broken-images)\n1. [Use `rem` for Global Sizing; Use `em` for Local Sizing](#use-rem-for-global-sizing-use-em-for-local-sizing)\n1. [Hide Autoplay Videos That Aren't Muted](#hide-autoplay-videos-that-arent-muted)\n1. [Use `:root` for Flexible Type](#use-root-for-flexible-type)\n1. [Set `font-size` on Form Elements for a Better Mobile Experience](#set-font-size-on-form-elements-for-a-better-mobile-experience)\n1. [Use Pointer Events to Control Mouse Events](#use-pointer-events-to-control-mouse-events)\n1. [Set `display: none` on Line Breaks Used as Spacing](#set-display-none-on-line-breaks-used-as-spacing)\n1. [Use `:empty` to Hide Empty HTML Elements](#use-empty-to-hide-empty-html-elements)\n1. [Use `margin-inline` instead of `margin`](#use-margin-inline-instead-of-margin)\n\n### Use a CSS Reset\n\nCSS resets help enforce style consistency across different browsers with a clean slate for styling elements. There are plenty of reset patterns to find, or you can use a more simplified reset approach:\n\n```css\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n```\n\nNow elements will be stripped of margins and padding, and `box-sizing` lets you manage layouts with the CSS box model.\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/kkrkLL)\n\n> [!TIP]\n> If you follow the [Inherit `box-sizing`](#inherit-box-sizing) tip below you might opt to not include the `box-sizing` property in your CSS reset.\n\n<sup>[Back to top](#contents)</sup>\n\n### Inherit `box-sizing`\n\nLet `box-sizing` be inherited from `html`:\n\n```css\nhtml {\n  box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: inherit;\n}\n```\n\nThis makes it easier to change `box-sizing` in plugins or other components that leverage other behavior.\n\n#### [Demo](https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/)\n\n<sup>[Back to top](#contents)</sup>\n\n### Use `unset` Instead of Resetting All Properties\n\nWhen resetting an element's properties, it's not necessary to reset each individual property:\n\n```css\nbutton {\n  background: none;\n  border: none;\n  color: inherit;\n  font: inherit;\n  outline: none;\n  padding: 0;\n}\n```\n\nYou can specify all of an element's properties using the `all` shorthand. Setting the value to `unset` changes an element's properties to their initial values:\n\n```css\nbutton {\n  all: unset;\n}\n```\n\n<sup>[Back to top](#contents)</sup>\n\n### Use `:not()` to Apply/Unapply Borders on Navigation\n\nInstead of putting on the border...\n\n```css\n/* add border */\n.nav li {\n  border-right: 1px solid #666;\n}\n```\n\n...and then taking it off the last element...\n\n```css\n/* remove border */\n.nav li:last-child {\n  border-right: none;\n}\n```\n\n...use the `:not()` pseudo-class to only apply to the elements you want:\n\n```css\n.nav li:not(:last-child) {\n  border-right: 1px solid #666;\n}\n```\n\nHere, the CSS selector is read as a human would describe it.\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/LkymvO)\n\n<sup>[Back to top](#contents)</sup>\n\n### Check if Font Is Installed Locally\n\nYou can check if a font is installed locally before fetching it remotely, which is a good performance tip, too.\n\n```css\n@font-face {\n  font-family: \"Dank Mono\";\n  src:\n    /* Full name */ local(\"Dank Mono\"), /* Postscript name */ local(\"Dank Mono\"),\n    /* Otherwise, download it! */ url(\"//...a.server/fonts/DankMono.woff\");\n}\n\ncode {\n  font-family: \"Dank Mono\", system-ui-monospace;\n}\n```\n\nH/T to Adam Argyle for sharing this protip and [demo](https://codepen.io/argyleink/pen/VwYJpgR).\n\n<sup>[Back to top](#contents)</sup>\n\n### Add `line-height` to `body`\n\nYou don't need to add `line-height` to each `<p>`, `<h*>`, _et al_. separately. Instead, add it to `body`:\n\n```css\nbody {\n  line-height: 1.5;\n}\n```\n\nThis way textual elements can inherit from `body` easily.\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/VjbdYd)\n\n<sup>[Back to top](#contents)</sup>\n\n### Set `:focus` for Form Elements\n\nSighted keyboard users rely on focus to determine where keyboard events go in the page. Make focus for form elements stand out and consistent than a browser's default implementation:\n\n```css\na:focus,\nbutton:focus,\ninput:focus,\nselect:focus,\ntextarea:focus {\n  box-shadow: none;\n  outline: #000 dotted 2px;\n  outline-offset: 0.05em;\n}\n```\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/ePzoOP/)\n\n<sup>[Back to top](#contents)</sup>\n\n### Vertically-Center Anything\n\nNo, it's not black magic, you really can center elements vertically. You can do this with flexbox...\n\n```css\nhtml,\nbody {\n  height: 100%;\n}\n\nbody {\n  align-items: center;\n  display: flex;\n  justify-content: center;\n}\n```\n\n...and also with CSS Grid:\n\n```css\nbody {\n  display: grid;\n  height: 100vh;\n  place-items: center;\n}\n```\n\n> [!TIP]\n> Want to center something else? Vertically, horizontally...anything, anytime, anywhere? CSS-Tricks has [a nice write-up](https://css-tricks.com/centering-css-complete-guide/) on doing all of that.\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/GqmGqZ)\n\n<sup>[Back to top](#contents)</sup>\n\n### Use `aspect-ratio` Instead of Height/Width\n\nThe `aspect-ratio` property allows you to easily size elements and maintain consistent width-to-height ratio. This is incredibly useful in responsive web design to prevent layout shift. Use `object-fit` with it to prevent disrupting the layout if the height/width values of images changes.\n\n```css\nimg {\n  aspect-ratio: 16 / 9; /* width / height */\n  object-fit: cover;\n}\n```\n\nLearn more about the `aspect-ratio` property in this [web.dev post](https://web.dev/articles/aspect-ratio).\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/MWxwoNx/)\n\n<sup>[Back to top](#contents)</sup>\n\n### Comma-Separated Lists\n\nMake list items look like a real, comma-separated list:\n\n```css\nul > li:not(:last-child)::after {\n  content: \",\";\n}\n```\n\nUse the `:not()` pseudo-class and no comma will be added to the last item.\n\n> [!NOTE]\n> This tip may not be ideal for accessibility, specifically screen readers. And copy/paste from the browser doesn't work with CSS-generated content. Proceed with caution.\n\n<sup>[Back to top](#contents)</sup>\n\n### Select Items Using Negative `nth-child`\n\nUse negative `nth-child` in CSS to select items 1 through n.\n\n```css\nli {\n  display: none;\n}\n\n/* select items 1 through 3 and display them */\nli:nth-child(-n + 3) {\n  display: block;\n}\n```\n\nOr, since you've already learned a little about [using `:not()`](#use-not-to-applyunapply-borders-on-navigation), try:\n\n```css\n/* select all items except the first 3 and display them */\nli:not(:nth-child(-n + 3)) {\n  display: block;\n}\n```\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/WxjKZp)\n\n<sup>[Back to top](#contents)</sup>\n\n### Use SVG for Icons\n\nThere's no reason not to use SVG for icons:\n\n```css\n.logo {\n  background: url(\"logo.svg\");\n}\n```\n\nSVG scales well for all resolution types and is supported in all browsers [back to IE9](http://caniuse.com/#search=svg). Ditch your .png, .jpg, or .gif-jif-whatev files.\n\n> [!NOTE]\n> If you have SVG icon-only buttons for sighted users and the SVG fails to load, this will help maintain accessibility:\n\n```css\n.no-svg .icon-only::after {\n  content: attr(aria-label);\n}\n```\n\n<sup>[Back to top](#contents)</sup>\n\n### Use the \"Lobotomized Owl\" Selector\n\nIt may have a strange name but using the universal selector (`*`) with the adjacent sibling selector (`+`) can provide a powerful CSS capability:\n\n```css\n* + * {\n  margin-top: 1.5em;\n}\n```\n\nIn this example, all elements in the flow of the document that follow other elements will receive `margin-top: 1.5em`.\n\n> [!TIP]\n> For more on the \"lobotomized owl\" selector, read [Heydon Pickering's post](http://alistapart.com/article/axiomatic-css-and-lobotomized-owls) on _A List Apart_.\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/grRvWq)\n\n<sup>[Back to top](#contents)</sup>\n\n### Use `max-height` for Pure CSS Sliders\n\nImplement CSS-only sliders using `max-height` with overflow hidden:\n\n```css\n.slider {\n  max-height: 200px;\n  overflow-y: hidden;\n  width: 300px;\n}\n\n.slider:hover {\n  max-height: 600px;\n  overflow-y: scroll;\n}\n```\n\nThe element expands to the `max-height` value on hover and the slider displays as a result of the overflow.\n\n<sup>[Back to top](#contents)</sup>\n\n### Equal-Width Table Cells\n\nTables can be a pain to work with. Try using `table-layout: fixed` to keep cells at equal width:\n\n```css\n.calendar {\n  table-layout: fixed;\n}\n```\n\nPain-free table layouts.\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/jALALm)\n\n<sup>[Back to top](#contents)</sup>\n\n### Get Rid of Margin Hacks With Flexbox\n\nWhen working with column gutters you can get rid of `nth-`, `first-`, and `last-child` hacks by using flexbox's `space-between` property:\n\n```css\n.list {\n  display: flex;\n  justify-content: space-between;\n}\n\n.list .person {\n  flex-basis: 23%;\n}\n```\n\nNow column gutters always appear evenly-spaced.\n\n<sup>[Back to top](#contents)</sup>\n\n### Use Attribute Selectors with Empty Links\n\nDisplay links when the `<a>` element has no text value but the `href` attribute has a link:\n\n```css\na[href^=\"http\"]:empty::before {\n  content: attr(href);\n}\n```\n\nThat's really convenient.\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/zBzXRx)\n\n> [!NOTE]\n> This tip may not be ideal for accessibility, specifically screen readers. And copy/paste from the browser doesn't work with CSS-generated content. Proceed with caution.\n\n<sup>[Back to top](#contents)</sup>\n\n### Control Specificity Better with `:is()`\n\nThe `:is()` pseudo-class is used to target multiple selectors at once, reducing redundancy and enhancing code readability. This is incredibly useful for writing large selectors in a more compact form.\n\n```css\n:is(section, article, aside, nav) :is(h1, h2, h3, h4, h5, h6) {\n  color: green;\n}\n```\n\nThe above ruleset is equivalent to the following number selector rules...\n\n```css\nsection h1,\nsection h2,\nsection h3,\nsection h4,\nsection h5,\nsection h6,\narticle h1,\narticle h2,\narticle h3,\narticle h4,\narticle h5,\narticle h6,\naside h1,\naside h2,\naside h3,\naside h4,\naside h5,\naside h6,\nnav h1,\nnav h2,\nnav h3,\nnav h4,\nnav h5,\nnav h6 {\n  color: green;\n}\n```\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/rNRVxdx)\n\n<sup>[Back to top](#contents)</sup>\n\n### Style \"Default\" Links\n\nAdd a style for \"default\" links:\n\n```css\na[href]:not([class]) {\n  color: #008000;\n  text-decoration: underline;\n}\n```\n\nNow links that are inserted via a CMS, which don't usually have a `class` attribute, will have a distinction without generically affecting the cascade.\n\n<sup>[Back to top](#contents)</sup>\n\n### Intrinsic Ratio Boxes\n\nTo create a box with an intrinsic ratio, all you need to do is apply top or bottom padding to a div:\n\n```css\n.container {\n  height: 0;\n  padding-bottom: 20%;\n  position: relative;\n}\n\n.container div {\n  border: 2px dashed #ddd;\n  height: 100%;\n  left: 0;\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n```\n\nUsing 20% for padding makes the height of the box equal to 20% of its width. No matter the width of the viewport, the child div will keep its aspect ratio (100% / 20% = 5:1).\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/jALZvE)\n\n<sup>[Back to top](#contents)</sup>\n\n### Style Broken Images\n\nMake broken images more aesthetically-pleasing with a little bit of CSS:\n\n```css\nimg {\n  display: block;\n  font-family: sans-serif;\n  font-weight: 300;\n  height: auto;\n  line-height: 2;\n  position: relative;\n  text-align: center;\n  width: 100%;\n}\n```\n\nNow add pseudo-elements rules to display a user message and URL reference of the broken image:\n\n```css\nimg::before {\n  content: \"We're sorry, the image below is broken :(\";\n  display: block;\n  margin-bottom: 10px;\n}\n\nimg::after {\n  content: \"(url: \" attr(src) \")\";\n  display: block;\n  font-size: 12px;\n}\n```\n\n> [!TIP]\n> Learn more about styling for this pattern in [Ire Aderinokun's post](http://bitsofco.de/styling-broken-images/).\n\n<sup>[Back to top](#contents)</sup>\n\n### Use `rem` for Global Sizing; Use `em` for Local Sizing\n\nAfter setting the base font size at the root (`html { font-size: 100%; }`), set the font size for textual elements to `em`:\n\n```css\nh2 {\n  font-size: 2em;\n}\n\np {\n  font-size: 1em;\n}\n```\n\nThen set the font-size for modules to `rem`:\n\n```css\narticle {\n  font-size: 1.25rem;\n}\n\naside .module {\n  font-size: 0.9rem;\n}\n```\n\nNow each module becomes compartmentalized and easier to style, more maintainable, and flexible.\n\n<sup>[Back to top](#contents)</sup>\n\n### Hide Autoplay Videos That Aren't Muted\n\nThis is a great trick for a custom user stylesheet. Avoid overloading a user with sound from a video that autoplays when the page is loaded. If the sound isn't muted, don't show the video:\n\n```css\nvideo[autoplay]:not([muted]) {\n  display: none;\n}\n```\n\nOnce again, we're taking advantage of using the [`:not()`](#use-not-to-applyunapply-borders-on-navigation) pseudo-class.\n\n<sup>[Back to top](#contents)</sup>\n\n### Use `:root` for Flexible Type\n\nThe type font size in a responsive layout should be able to adjust with each viewport. You can calculate the font size based on the viewport height and width using `:root`:\n\n```css\n:root {\n  font-size: calc(1vw + 1vh + 0.5vmin);\n}\n```\n\nNow you can utilize the `root em` unit based on the value calculated by `:root`:\n\n```css\nbody {\n  font: 1rem/1.6 sans-serif;\n}\n```\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/XKgOkR)\n\n<sup>[Back to top](#contents)</sup>\n\n### Set `font-size` on Form Elements for a Better Mobile Experience\n\nTo avoid mobile browsers (iOS Safari, _et al_.) from zooming in on HTML form elements when a `<select>` drop-down is tapped, add `font-size` to the selector rule:\n\n```css\ninput[type=\"text\"],\ninput[type=\"number\"],\nselect,\ntextarea {\n  font-size: 16px;\n}\n```\n\n<sup>[Back to top](#contents)</sup>\n\n### Use Pointer Events to Control Mouse Events\n\n[Pointer events](https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events) allow you to specify how the mouse interacts with the element it's touching. To disable the default pointer event on a button, for instance:\n\n```css\nbutton:disabled {\n  opacity: 0.5;\n  pointer-events: none;\n}\n```\n\nIt's that simple.\n\n<sup>[Back to top](#contents)</sup>\n\n### Set `display: none` on Line Breaks Used as Spacing\n\nAs [Harry Roberts pointed out](https://twitter.com/csswizardry/status/1170835532584235008), this can help prevent CMS users from using extra line breaks for spacing:\n\n```css\nbr + br {\n  display: none;\n}\n```\n\n<sup>[Back to top](#contents)</sup>\n\n### Use `:empty` to Hide Empty HTML Elements\n\nIf you have HTML elements that are empty, i.e., the content has yet to be set either by a CMS or dynamically injected (e.g., `<p class=\"error-message\"></p>`) and it's creating unwanted space on your layout, use the `:empty` pseudo-class to hide the element on the layout.\n\n```css\n:empty {\n  display: none;\n}\n```\n\n> [!NOTE]\n> Keep in mind that elements with whitespace aren't considered empty, e.g., `<p class=\"error-message\"> </p>`.\n\n<sup>[Back to top](#contents)</sup>\n\n## Support\n\nCurrent versions of Chrome, Firefox, Safari, and Edge.\n\n<sup>[Back to top](#contents)</sup>\n\n### Use `margin-inline` instead of `margin`\n\n`margin-inline` defines the inline start and end margins of an element. So instead of using `margin-left` and `margin-right` we can use the inline property to define both.\n\n```css\n.div {\n  margin-inline: auto;\n}\n```\n\nThe same can be done for `margin-block` with defines the block start and end margins, i.e., `margin-top` and `margin-bottom`.\n\n```css\n.div {\n  margin-block: auto;\n}\n```\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/PwoOQGB)\n\n<sup>[Back to top](#contents)</sup>\n\n## Translations\n\n> [!NOTE]\n> I've had less time available to maintain the growing list of translated tips; adding a new tip requires including it with over a dozen translations. For that reason, translated README files are likely to not include all the tips listed on the main README file.\n\n- [简体中文](https://github.com/AllThingsSmitty/css-protips/tree/master/translations/zh-CN)\n- [正體中文](https://github.com/AllThingsSmitty/css-protips/tree/master/translations/zh-TW)\n- [Deutsch](https://github.com/AllThingsSmitty/css-protips/tree/master/translations/de-DE)\n- [Español](https://github.com/AllThingsSmitty/css-protips/tree/master/translations/es-ES)\n- [Français](https://github.com/AllThingsSmitty/css-protips/tree/master/translations/fr-FR)\n- [λληνικά](https://github.com/AllThingsSmitty/css-protips/tree/master/translations/gr-GR)\n- [ગુજરાતી](https://github.com/AllThingsSmitty/css-protips/tree/master/translations/gu-IND)\n- [Italiano](https://github.com/AllThingsSmitty/css-protips/tree/master/translations/it-IT)\n- [日本語](https://github.com/AllThingsSmitty/css-protips/tree/master/translations/ja-JP)\n- [한국어](https://github.com/AllThingsSmitty/css-protips/tree/master/translations/ko-KR)\n- [Polskie](https://github.com/AllThingsSmitty/css-protips/tree/master/translations/pl-PL)\n- [Português do Brasil](https://github.com/AllThingsSmitty/css-protips/tree/master/translations/pt-BR)\n- [Português do Europe](https://github.com/AllThingsSmitty/css-protips/tree/master/translations/pt-PT)\n- [Русский](https://github.com/AllThingsSmitty/css-protips/tree/master/translations/ru-RU)\n- [Tiếng Việt](https://github.com/AllThingsSmitty/css-protips/tree/master/translations/vn-VN)\n\n<sup>[Back to top](#contents)</sup>\n"
  },
  {
    "path": "translations/de-DE/README.md",
    "content": "<p align=\"center\">\n  <img src=\"../../assets/img/bulb.svg\" width=\"200\" alt=\"light bulb icon\">\n</p>\n\n# CSS Profi-Tipps [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\nEine Sammlung an Tipps, um deine CSS-Fähigkeiten zu professionalisieren.\n\n> Für andere großartige Listen schaue dir [@sindresorhus](https://github.com/sindresorhus/)s kuratierte Liste von [\"awesome\" Listen](https://github.com/sindresorhus/awesome/) an.\n\n\n## Inhaltsverzeichnis\n\n* [Profi-Tipps](#profi-tipps)\n* [Unterstützung](#unterstützung)\n* [Mitarbeitsrichtlinien](../../CONTRIBUTING.md)\n\n\n## Profi-Tipps\n\n1. [Benutze ein CSS-Reset](#benutze-ein-css-reset)\n1. [Übernehme `box-sizing`](#Übernehme-box-sizing)\n1. [Benutze `unset`, anstatt alle Eigenschaften zurückzusetzen](#benutze-unset-anstatt-alle-eigenschaften-zurückzusetzen)\n1. [Benutze `:not()` um Rahmen an die Navigation zu setzen oder zu entfernen](#benutze-not-um-rahmen-an-die-navigation-zu-setzen-oder-zu-entfernen)\n1. [Kontroller, om skrifttypen er installeret lokalt](#Kontroller-om-skrifttypen-er-installeret-lokalt)\n1. [Ergänze `line-height` an `body`](#ergänze-line-height-an-body)\n1. [Setze `:focus` für Form-Elemente](#setze-focus-für-form-elemente)\n1. [Zentriere alles vertikal](#zentriere-alles-vertikal)\n1. [Kommaseparierte Liste](#kommaseparierte-liste)\n1. [Selektiere Items mit einem negativen `nth-child`](#selektiere-items-mit-einem-negativen-nth-child)\n1. [Benutze SVG für Symbole](#benutze-svg-für-symbole)\n1. [Benutze den \"lobotomisierte Eule\"-Selektor](#benutze-den-lobotomisierte-eule-selektor)\n1. [Benutze `max-height` für reine CSS-Galerien](#benutze-max-height-für-reine-css-galerien)\n1. [Setze Tabellenzellen auf die gleiche Weite](#setze-tabellenzellen-auf-die-gleiche-weite)\n1. [Benutze Flexbox, um von Margin-Hacks wegzukommen](#benutze-flexbox-um-von-margin-hacks-wegzukommen)\n1. [Benutze den Attribut-Selektor mit leeren Verlinkungen](#benutze-den-attribut-selektor-mit-leeren-verlinkungen)\n1. [Gestalte \"Standard\"-Verlinkungen](#gestalte-standard-verlinkungen)\n1. [Boxen mit zugehörigem Größenverhältnis](#boxen-mit-zugehörigem-größenverhältnis)\n1. [Gestalte defekte Bilder](#gestalte-defekte-bilder)\n1. [Benutze `rem` für globales Ändern der Größe; Benutze `em` für lokale Größenveränderungen](#benutze-rem-für-globales-Ändern-der-größe-benutze-em-für-lokale-größenveränderungen)\n1. [Verstecke automatisch abspielende Videos, die nicht auf stumm gesetzt sind](#verstecke-automatisch-abspielende-videos-die-nicht-auf-stumm-gesetzt-sind)\n1. [Benutze `:root` für flexible Schrift](#benutze-root-für-flexible-schrift)\n1. [Setze `font-size` auf Formular-Elemente für eine bessere mobile Erfahrung](#setze-font-size-auf-formular-elemente-für-eine-bessere-mobile-erfahrung)\n1. [Benutze `Pointer`-Events um Mausereignisse zu kontrollieren](#benutze-pointer-events-um-mausereignisse-zu-kontrollieren)\n1. [Stellen Sie bei Zeilenumbrüchen, die als Abstand verwendet werden, `display: none` ein](#stellen-sie-bei-zeilenumbrüchen,-die-als-abstand-verwendet-werden-display-none-ein)\n\n\n### Benutze ein CSS-Reset\n\nCSS Resets helfen dabei eine Gestaltungskonsistenz zwischen verschiedenen Browsern herzustellen, indem sie für einen sauberen Zustand zwischen den einzelnen Elementen sorgen. Du kannst eine CSS Resetsammlung wie [Normalize](http://necolas.github.io/normalize.css/), usw. benutzen, oder einen etwas einfacheren Ansatz wählen:\n\n```css\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n```\n\nNun werden Elemente von ihren Margins und Paddings befreit und `box-sizing` lässt dich das CSS Box-Modell handhaben.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/kkrkLL)\n\n**Hinweis:** Wenn du den [Inherit `box-sizing`](#inherit-box-sizing)-Tipp im unten folgenden Punkt befolgst, kannst du dich dafür entscheiden keine `box-sizing`-Eigenschaft in dein CSS Reset aufzunehmen.\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Übernehme `box-sizing`\n\nÜbernehme `box-sizing` von `html`:\n\n```css\nhtml {\n  box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: inherit;\n}\n```\n\nDies macht es einfacher das `box-sizing` über Plugins oder andere Komponenten zu verändern.\n\n#### [Demo](https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/)\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Benutze `unset`, anstatt alle Eigenschaften zurückzusetzen\n\nWenn du die Eigenschaften eines Elements zurücksetzt, ist es nicht notwendig jede einzelne Eigenschaft individuell zurückzusetzen:\n\n```css\nbutton {\n  background: none;\n  border: none;\n  color: inherit;\n  font: inherit;\n  outline: none;\n  padding: 0;\n}\n```\n\nDu kannst alle Eigenschaften eines Elements spezifizieren, indem du das `all`-Kürzel verwendest. Der Wert `unset` setzt die Eigenschaften eines Elements auf den initialen Wert zurück:\n\n```css\nbutton {\n  all: unset;\n}\n```\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Benutze `:not()` um Rahmen an die Navigation zu setzen oder zu entfernen\n\nAnstatt den Rahmen zu ergänzen&hellip;\n\n```css\n/* füge den Rahmen hinzu */\n.nav li {\n  border-right: 1px solid #666;\n}\n```\n\n&hellip;um ihn dann beim letzten Element wieder zu entfernen&hellip;\n\n```css\n/* entferne den Rahmen */\n.nav li:last-child {\n  border-right: none;\n}\n```\n\n&hellip;benutze die `:not()`-Pseudoklasse um nur die Elemente zu gestalten, die du willst:\n\n```css\n.nav li:not(:last-child) {\n  border-right: 1px solid #666;\n}\n```\n\nSicher, du kannst `.nav li + li` verwenden, aber mit `:not()` ist die Absicht sehr klar und der CSS Selektor definiert den Rahmen auf die Weise wie ihn auch ein Mensch beschreiben würde.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/LkymvO)\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Check If Font Is Installed Locally](#check-if-font-is-installed-locally)\n\n### Kontroller, om skrifttypen er installeret lokalt\n\nDu kan kontrollere, om en skrifttype er installeret lokalt, før du henter den eksternt, hvilket også er et godt ydelsestip.\n\n```css\n@font-face {\n  font-family: \"Dank Mono\";\n  src:\n    /* Full name */\n    local(\"Dank Mono\"),\n    /* Postscript name */\n    local(\"Dank-Mono\"),\n    /* Otherwise, download it! */\n    url(\"//...a.server/fonts/DankMono.woff\");\n}\n\ncode {\n  font-family: \"Dank Mono\", system-ui-monospace;\n}\n```\n\nHat tip til Adam Argyle for at dele denne protip og [demoen](https://codepen.io/argyleink/pen/VwYJpgR).\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Ergänze `line-height` an `body`\n\nDu brauchst kein `line-height` an jedes `<p>`, `<h*>`, usw separat zu schreiben. Ergänze es stattdessen an `body`:\n\n```css\nbody {\n  line-height: 1.5;\n}\n```\n\nAuf diese Weise können Textelemente dies einfach von `body` übernehmen.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/VjbdYd)\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Setze `:focus` für Form-Elemente\n\nSehende Tastaturbenutzer_innen sind auf die Fokussierung angewiesen, um unterscheiden zu können wohin Tastaturevents auf der Seite gehen. Gestalte den Fokus für Formular-Elemente klar ersichtlich und konsistenter als die voreingestellte Browserimplementation:\n\n```css\na:focus,\nbutton:focus,\ninput:focus,\nselect:focus,\ntextarea:focus {\n  box-shadow: none;\n  outline: #000 dotted 2px;\n  outline-offset: .05em;\n}\n```\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/ePzoOP/)\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Zentriere alles vertikal\n\nNein, das ist keine Hexerei &ndash; du kannst wirklich alle Elemente vertikal zentrieren. \nDas machst du mit Flexbox&hellip;\n\n```css\nhtml,\nbody {\n  height: 100%;\n  margin: 0;\n}\n\nbody {\n  -webkit-align-items: center;\n  -ms-flex-align: center;\n  align-items: center;\n  display: -webkit-flex;\n  display: flex;\n}\n```\n\n&hellip;und ebenso mit CSS Grid:\n\n```css\nbody {\n  display: grid;\n  height: 100vh;\n  margin: 0;\n  place-items: center center;\n}\n```\n\nMöchtest du etwas anderes zentrieren? Vertikal, horizontal&hellip; alles, jederzeit, überall? CSS-Tricks hat [eine schöne Ausarbeitung](https://css-tricks.com/centering-css-complete-guide/) über all dies.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/GqmGqZ)\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Kommaseparierte Liste\n\nLasse Listenpunkte wie eine echte kommaseparierte Liste aussehen:\n\n```css\nul > li:not(:last-child)::after {\n  content: \",\";\n}\n```\n\nBenutze die `:not()`-Pseudoklasse, um nach dem letzten Listenpunkt kein Komma anzuzeigen.\n\n**Hinweis:** Dieser Tipp mag hinsichtlich der Zugänglichkeit für Bildschirmvorleseprogramme nicht ideal sein. Auch Kopieren/Einfügen von browsergeneriertem Inhalt funktioniert nicht. Handle deswegen mit Vorsicht.\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Selektiere Items mit einem negativen `nth-child`\n\nBenutze ein negatives `nth-child` im CSS um Items von 1 bis n auszuwählen.\n\n```css\nli {\n  display: none;\n}\n\n/* wähle die Listenpunkte 1 bis 3 und zeige sie an */\nli:nth-child(-n+3) {\n  display: block;\n}\n```\n\nAnderweitig, da du nun ein bisschen über die [Benutzung von `:not()`](#benutze-not-um-rahmen-an-die-navigation-zu-setzen-oder-zu-entfernen) gelernt hast, versuche folgendes:\n\n```css\n/* wähle alle Listenpunkte außer die ersten 3 und zeige sie an */\nli:not(:nth-child(-n+3)) {\n  display: block;\n}\n```\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/WxjKZp)\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Benutze SVG für Symbole\n\nEs gibt keinen Grund SVG für Symbole nicht zu verwenden:\n\n```css\n.logo {\n  background: url(\"logo.svg\");\n}\n```\n\nSVG skaliert für alle verschiedenen Auflösungen sehr gut und wird von allen Browsern [zurück bis zu IE9](http://caniuse.com/#search=svg) unterstützt. Gebe deinen .png, .jpg, or .gif-jif-wasauchimmer-Dateien den Laufpass.\n\n**Hinweis:** Wenn du nur SVG-Symbole in Button-Schaltflächen für sehende Benutzer_innen verwendest und das SVG nicht geladen wird, kannst du die Zugänglichkeit wie folgt erhalten:\n\n```css\n.no-svg .icon-only::after {\n  content: attr(aria-label);\n}\n```\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Benutze den \"lobotomisierte Eule\"-Selektor\n\nEr hat zwar einen seltsamen Namen aber der Universal-Selektor (`*`) mit dem angrenzenden Geschwister-Selektor (`+`) kann starke CSS-Möglichkeiten darbieten:\n\n```css\n* + * {\n  margin-top: 1.5em;\n}\n```\n\nIn diesem Beispiel bekommen alle Elemente im Fluss des Dokuments, die anderen Elementen folgen, `margin-top: 1.5em`.\n\nFür mehr bezüglich des \"lobotomisierte Eule\"-Selektors lese [Heydon Pickerings Eintrag](http://alistapart.com/article/axiomatic-css-and-lobotomized-owls) auf *A List Apart*.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/grRvWq)\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Benutze `max-height` für reine CSS-Galerien\n\nImplementiere reine CSS Galerien über `max-height` in Verbindung mit `overflow: hidden`:\n\n```css\n.slider {\n  max-height: 200px;\n  overflow-y: hidden;\n  width: 300px;\n}\n\n.slider:hover {\n  max-height: 600px;\n  overflow-y: scroll;\n}\n```\n\nDas Element dehnt sich beim Überfahren zum Wert von `max-height` aus und die Galerie wird als das Ergebnis des Overflows dargestellt.\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Setze Tabellenzellen auf die gleiche Weite\n\nTabellen können ein ganz schönes Problem sein. Versuche `table-layout: fixed`, um die Tabellenzellen auf die gleiche Größe zu setzen:\n\n```css\n.calendar {\n  table-layout: fixed;\n}\n```\n\nSchmerzfreie Tabellen-Layouts.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/jALALm)\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Benutze Flexbox, um von Margin-Hacks wegzukommen\n\nWenn du mit Spaltenabständen arbeitest, kannst du dich von `nth-`, `first-` und `last-child`-Hacks verabschieden, indem du die Flexbox-Eigenschaft `space-between` verwendest:\n\n```css\n.list {\n  display: flex;\n  justify-content: space-between;\n}\n\n.list .person {\n  flex-basis: 23%;\n}\n```\n\nNun erscheinen Spaltenabstände immer gleichmäßig.\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Benutze den Attribut-Selektor mit leeren Verlinkungen\n\nZeige Verlinkungen an, wenn das `<a>`-Element keinen Textwert beinhaltet, das `href`-Attribut jedoch eine Verlinkung hat:\n\n```css\na[href^=\"http\"]:empty::before {\n  content: attr(href);\n}\n```\n\nDas ist äußerst praktisch.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/zBzXRx)\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Gestalte \"Standard\"-Verlinkungen\n\nErgänze eine Darstellung für die von Browsern voreingestellte Verlinkung:\n\n```css\na[href]:not([class]) {\n  color: #008000;\n  text-decoration: underline;\n}\n```\n\nNun werden Verlinkungen, die über ein CMS eingesetzt wurden &ndash; welche überlicherweise kein `class`-Attribut haben &ndash; unterscheidbar sein, ohne die Kaskade im Allgemeinen zu beeinflussen.\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Boxen mit zugehörigem Größenverhältnis\n\nUm eine Box mit zugehörigem Größenverhältnis zu erstellen, brauchst du nur eine Padding-top/-bottom-Eigenschaft zu bezeichnen:\n\n```css\n.container {\n  height: 0;\n  padding-bottom: 20%;\n  position: relative;\n}\n\n.container div {\n  border: 2px dashed #ddd;\n  height: 100%;\n  left: 0;\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n```\n\nDas Anwenden eines Wertes von 20% auf die Padding-Eigenschaft erzeugt eine Box mit der gleichen Höhe in Bezug auf 20% ihrer Breite. Ungeachtet der Weite des Ansichtsfensters, wird das Kind-Div sein Seitenverhältnis beibehalten (100% / 20% = 5:1).\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/jALZvE)\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Gestalte defekte Bilder\n\nErzeuge mit einem kleinen bisschen CSS ästhetisch ansprechendere defekte Bilder:\n\n```css\nimg {\n  display: block;\n  font-family: sans-serif;\n  font-weight: 300;\n  height: auto;\n  line-height: 2;\n  position: relative;\n  text-align: center;\n  width: 100%;\n}\n```\n\nNun ergänze Regeln für Pseudo-Elemente, die eine Nachricht für die Benutzer_innen darstellen, sowie eine URL-Referenz des defekten Bildes:\n\n```css\nimg::before {\n  content: \"Entschuldige bitte, das Bild ist leider defekt :(\";\n  display: block;\n  margin-bottom: 10px;\n}\n\nimg::after {\n  content: \"(url: \" attr(src) \")\";\n  display: block;\n  font-size: 12px;\n}\n```\n\nLerne mehr über das Gestalten dieses Modells in [Ire Aderinokun](https://github.com/ireade/)s [ursprünglichen Beitrag](http://bitsofco.de/styling-broken-images/).\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Benutze `rem` für globales Ändern der Größe; Benutze `em` für lokale Größenveränderungen\n\nNachdem du die grundlegende Schriftgröße (`html { font-size: 100%; }`) festgelegt hast, setze die Schriftgrößen für Textelemente auf `em`:\n\n```css\nh2 {\n  font-size: 2em;\n}\n\np {\n  font-size: 1em;\n}\n```\n\nDann setze die Schriftgröße für Module auf `rem`:\n\n```css\narticle {\n  font-size: 1.25rem;\n}\n\naside .module {\n  font-size: .9rem;\n}\n```\n\nNun sollte jedes Modul gegliedert, einfacher zu gestalten, wartbarer und flexibler sein.\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Verstecke automatisch abspielende Videos, die nicht auf stumm gesetzt sind\n\nDas ist ein großartiger Trick für ein speziell angefertigtes Stylesheet. Vermeide es die Benutzer_innen mit den Geräuschen eines automatisch startenden Videos zu überfordern. Zeige das Video nicht, wenn die Töne nicht auf stumm geschaltet sind:\n\n```css\nvideo[autoplay]:not([muted]) {\n  display: none;\n}\n```\n\nErneut nutzen wir die [`:not()`](#benutze-not-um-rahmen-an-die-navigation-zu-setzen-oder-zu-entfernen)-Pseudoklasse zu unserem Vorteil.\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Benutze `:root` für flexible Schrift\n\nDie Größe der Schriftart innerhalb eines _responsive_ Layouts sollte mit jedem Ansichtsfenster veränderbar sein. Du kannst die Schriftgröße basierend auf der Höhe und Weite des Fensters berechnen, indem du `:root` verwendest: \n\n```css\n:root {\n  font-size: calc(1vw + 1vh + .5vmin);\n}\n```\n\nNun kannst du die `root em`-Einheit verwenden, die auf den errechneten Werten von `:root` basiert:\n\n```css\nbody {\n  font: 1rem/1.6 sans-serif;\n}\n```\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/XKgOkR)\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Setze `font-size` auf Formular-Elemente für eine bessere mobile Erfahrung\n\nUm mobile Browser (iOS Safari, usw.) am Hereinzoomen in das HTML-Formular zu hindern sobald ein `<select>`-Dropdown betätigt wird, ergänze `font-size` zu der Regel des Selektors:\n\n```css\ninput[type=\"text\"],\ninput[type=\"number\"],\nselect,\ntextarea {\n  font-size: 16px;\n}\n```\n\n:dancer:\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Benutze `Pointer`-Events um Mausereignisse zu kontrollieren\n\n[Pointer-Events](https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events) erlauben es dir zu spezifizieren wie die Maus mit dem Element interagiert sobald sie es berührt. Um beispielsweise das standardgemäß eingestellte Pointer-Event &ndash; beispielsweise bei einer Button-Schaltfläche &ndash; abzuschalten:\n\n```css\nbutton:disabled {\n  opacity: .5;\n  pointer-events: none;\n}\n```\n\nSo einfach ist das.\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n### Stellen Sie bei Zeilenumbrüchen, die als Abstand verwendet werden, `display: none` ein\n\nWie [Harry Roberts hervorhob](https://twitter.com/csswizardry/status/1170835532584235008), kann dies dazu beitragen, dass CMS-Benutzer keine zusätzlichen Zeilenumbrüche als Abstand verwenden:\n\n```css\nbr + br {\n  display: none;\n}\n```\n\n<sup>[zurück zum Inhaltsverzeichnis](#inhaltsverzeichnis)</sup>\n\n\n## Unterstützung\n\nAktuelle Versionen von Chrome, Firefox, Safari, und Edge."
  },
  {
    "path": "translations/es-ES/README.md",
    "content": "<p align=\"center\">\n  <img src=\"../../assets/img/bulb.svg\" alt=\"light bulb icon\">\n</p>\n\n# Consejos Profesionales para CSS [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\nUna colección de consejos para ayudarte a mejorar tus conocimientos profesionales de CSS.\n\n> Para ver otras listas geniales, echa un vistazo a la lista curada por [@sindresorhus](https://github.com/sindresorhus/) de [listas Awesome](https://github.com/sindresorhus/awesome/).\n\n\n## Tabla de contenido\n\n* [Consejos Profesionales](#consejos-profesionales)\n* [Soporte](#soporte)\n* [Pautas para contribuir](../../CONTRIBUTING.md)\n\n\n## Consejos Profesionales\n\n1. [Utilizar un CSS Reset](#utilizar-un-css-reset)\n1. [Heredar `box-sizing`](#heredar-box-sizing)\n1. [Utilice `unset` en lugar de restablecer todas las propiedades](#utilice-unset-en-lugar-de-restablecer-todas-las-propiedades)\n1. [Usar `:not()` para Aplicar o Cancelar la aplicación de bordes en la navegación](#usar-not-para-aplicar-o-cancelar-la-aplicación-de-bordes-en-la-navegación)\n1. [Compruebe si la fuente está instalada localmente](#compruebe-si-la-fuente-está-instalada-localmente)\n1. [Añadir `line-height` al `body`](#añadir-line-height-al-body)\n1. [Establecer `:focus` para elementos de formulario](#establecer-focus-para-elementos-de-formulario)\n1. [Centrar cualquier cosa verticalmente](#centrar-cualquier-cosa-verticalmente)\n1. [Listas separadas por comas](#listas-separadas-por-comas)\n1. [Seleccionar elementos usando `nth-child` negativo](#seleccionar-elementos-usando-nth-child-negativo)\n1. [Utilizar SVG para los íconos](#utilizar-svg-para-los-íconos)\n1. [Utilizar la herramienta de selección \"Búho lobotomizado\"](#utilizar-la-herramienta-de-selección-búho-lobotomizado)\n1. [Usar `max-height` para Sliders con CSS puro](#usar-max-height-para-sliders-con-css-puro)\n1. [Celdas de tabla de igual ancho](#celdas-de-tabla-de-igual-ancho)\n1. [Deshacerse de hacks para los márgenes en Flexbox](#deshacerse-de-hacks-para-los-márgenes-en-flexbox)\n1. [Utilizar atributos como selectores en enlaces vacíos](#utilizar-atributos-como-selectores-en-enlaces-vacíos)\n1. [Estilizar enlaces por defecto](#estilizar-enlaces-por-defecto)\n1. [Ritmo vertical consistente](#ritmo-vertical-consistente)\n1. [Cajas con proporciones intrínsecas](#cajas-con-proporciones-intrínsecas)\n1. [Estilizar enlaces rotos a imágenes](#estilizar-enlaces-rotos-a-imágenes)\n1. [Usar `rem` para tamaños globales; Usar `em` para tamaños locales](#usar-rem-para-tamaños-globales-usar-em-para-tamaños-locales)\n1. [Esconder videos con reproducción automática que no estén silenciados](#esconder-videos-con-reproducción-automática-que-no-estén-silenciados)\n1. [Utilizar `:root` para una tipografía flexible](#utilizar-root-para-una-tipografía-flexible)\n1. [Definir `font-size` en los elementos de formulario para una mejor experiencia móvil](#definir-font-size-en-los-elementos-de-formulario-para-una-mejor-experiencia-móvil)\n1. [Usar eventos de puntero para controlar eventos de mouse](#usar-eventos-de-puntero-para-controlar-eventos-de-mouse)\n1. [Establezca `display: none` en Saltos de línea utilizados como espaciado](#establezca-display-none-en-saltos-de-línea-utilizados-como-espaciado)\n\n\n### Utilizar un CSS Reset\n\nLos CSS Resets ayudan a hacer cumplir la coherencia de estilo en los diferentes navegadores, como una hoja en blanco para los elementos de estilo. Puedes utilizar una biblioteca CSS Reset como [Normalize](http://necolas.github.io/normalize.css/), y otros, o puedes utilizar un enfoque más simplificado para el reset:\n\n```css\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n```\n\nAhora los elementos están despojados de márgenes y paddings, y `box-sizing` te permite administrar el diseño con el modelo de caja de CSS.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/kkrkLL)\n\n**Nota:** Si sigues el consejo de más abajo [Heredar `box-sizing`](#inherit-box-sizing) puedes optar por no incluir la propiedad `box-sizing` en tu CSS reset.\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Heredar `box-sizing`\n\nHeredar `box-sizing` de `html`:\n\n```css\nhtml {\n  box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: inherit;\n}\n```\n\nEsto hace que sea más fácil cambiar `box-sizing` en plugins u otros componentes que aprovechan otros comportamientos.\n\n#### [Demo](https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/)\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Utilice `unset` en lugar de restablecer todas las propiedades\n\nAl restablecer las propiedades de un elemento, no es necesario restablecer cada propiedad individual:\n\n```css\nbutton {\n  background: none;\n  border: none;\n  color: inherit;\n  font: inherit;\n  outline: none;\n  padding: 0;\n}\n```\n\nPuede especificar todas las propiedades de un elemento usando la declaraciones cortas `all`. Establecer el valor a `unset` cambia las propiedades de un elemento a sus valores iniciales:\n\n```css\nbutton {\n  all: unset;\n}\n```\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Usar `:not()` para Aplicar o Cancelar la aplicación de bordes en la navegación\n\nEn lugar de poner en el borde...\n\n```css\n/* Agrega estilo al borde */\n.nav li {\n  border-right: 1px solid #666;\n}\n```\n\n... para luego quitarlo del último elemento...\n\n```css\n/* quitar estilo al borde */\n.nav li:last-child {\n  border-right: none;\n}\n```\n\n... utiliza la pseudo-clase `:not()` para sólo aplicar el estilo a los elementos que deseas:\n\n```css\n.nav li:not(:last-child) {\n  border-right: 1px solid #666;\n}\n\n```\n\nEl selector CSS define los bordes de la forma en que un ser humano lo describiría.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/LkymvO)\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Compruebe si la fuente está instalada localmente\n\nPuede verificar si una fuente está instalada localmente antes de buscarla de forma remota, lo que también es un buen consejo de rendimiento.\n\n```css\n@font-face {\n  font-family: \"Dank Mono\";\n  src:\n    /* Full name */\n    local(\"Dank Mono\"),\n    /* Postscript name */\n    local(\"Dank-Mono\"),\n    /* Otherwise, download it! */\n    url(\"//...a.server/fonts/DankMono.woff\");\n}\n\ncode {\n  font-family: \"Dank Mono\", system-ui-monospace;\n}\n```\n\nFelicitaciones a Adam Argyle por compartir este protip y [demo](https://codepen.io/argyleink/pen/VwYJpgR).\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Añadir `line-height` al `body`\n\nNo es necesario añadir `line-height` a cada` <p> `,` <h *> `, _et al_. por separado. En su lugar, agregalo al `body`:\n\n```css\nbody {\n  line-height: 1.5;\n}\n```\n\nDe esta manera los elementos de texto pueden heredarlo fácilmente de `body`.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/VjbdYd)\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Establecer `:focus` para elementos de formulario\n\nLos usuarios de teclado videntes confían en el enfoque para determinar dónde van los eventos del teclado en la página. Haga que el enfoque de los elementos de formulario se destaque y sea coherente con la implementación predeterminada de un navegador:\n\n```css\na:focus,\nbutton:focus,\ninput:focus,\nselect:focus,\ntextarea:focus {\n  box-shadow: none;\n  outline: #000 dotted 2px;\n  outline-offset: .05em;\n}\n```\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/ePzoOP/)\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Centrar cualquier cosa verticalmente\n\nNo, no es magia negra, realmente puedes centrar elementos verticalmente:\n\n```css\nhtml,\nbody {\n  height: 100%;\n  margin: 0;\n}\n\nbody {\n  -webkit-align-items: center;\n  -ms-flex-align: center;\n  align-items: center;\n  display: -webkit-flex;\n  display: flex;\n}\n```\n\n...y también con CSS Grid:\n\n```css\nbody {\n  display: grid;\n  height: 100vh;\n  margin: 0;\n  place-items: center center;\n}\n```\n\n¿Quieres centrar algo más? Vertical, horizontal… cualquier cosa, en cualquier momento y en cualquier lugar? CSS-Tricks tiene [un bonito artículo](https://css-tricks.com/centering-css-complete-guide/) para hacer todo eso.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/GqmGqZ)\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Listas separadas por comas\n\nHacer que los elementos de la lista se vean de forma real, separados por comas:\n\n```css\nul > li:not(:last-child)::after {\n  content: \",\";\n}\n```\n\nUtilice la pseudo-clase `:not()` para agregar una coma al último elemento.\n\n**Nota:** Este consejo puede no ser ideal para la accesibilidad, específicamente para lectores de pantalla. Y copiar / pegar desde el navegador no funciona con el contenido generado por CSS. Procede con precaución.\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Seleccionar elementos usando `nth-child` negativo\n\nUtiliza  `nth-child` negativo en CSS para seleccionar los numerales de 1 a n.\n\n```css\nli {\n  display: none;\n}\n\n/* seleccionar los elementos de 1 hasta 3 y muestralos */\nli:nth-child(-n+3) {\n  display: block;\n}\n```\n\nO bien, como ya has aprendido un poco sobre [el uso de `:not()`](# uso no-a-applyunapply-fronteras-on-navegación), trata de:\n\n```css\n/* seleccionar todos los elementos excepto los 3 primeros y mostrarlos */\nli:not(:nth-child(-n+3)) {\n  display: none;\n}\n```\n\nBueno, éso ha sido bastante fácil.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/WxjKZp)\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Utilizar SVG para los íconos\n\nNo hay ninguna razón para no usar SVG para los íconos:\n\n```css\n.logo {\n  background: url(\"logo.svg\");\n}\n```\n\nSVG funciona bien para todos los tipos de resoluciones y es compatible con todos los navegadores [hasta IE9](http://caniuse.com/#search=svg). Así que olvidate de tus archivos .png, .jpg o .gif-jif-loquesea.\n\n**Nota:** Si tienes botones de íconos con SVG para usuarios no videntes y el SVG falla al cargar, esto te ayudará a mantener la accesibilidad:\n\n```css\n.no-svg .icon-only::after {\n  content: attr(aria-label);\n}}\n```\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Utilizar la herramienta de selección \"Búho lobotomizado\"\n\nPuede que tenga un nombre extraño, pero utilizando el selector universal (`*`) con el selector de hermanos adyacentes (`+`) puedes proporcionar una potente capacidad de CSS:\n\n```css\n* + * {\n  margin-top: 1.5em;\n}\n```\n\nEn este ejemplo, todos los elementos del flujo del documento que siguen otros elementos recibirán `margin-top: 1.5em`.\n\nPara más información sobre el selector \"búho lobotomizado\", lee el [post de Heydon Pickering](http://alistapart.com/article/axiomatic-css-and-lobotomized-owls) en *A List Apart*.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/grRvWq)\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Usar `max-height` para Sliders con CSS puro\n\nImplementar un slider con CSS puro utilizando `max-height` con overflow hidden.\n\n```css\n.slider {\n  max-height: 200px;\n  overflow-y: hidden;\n  width: 300px;\n}\n\n.slider:hover {\n  max-height: 600px;\n  overflow-y: scroll;\n}\n```\n\nEl elemento se expande hasta el valor de `max-height` en hover y el slider se muestra como resultado del desbordamiento (overflow).\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Celdas de tabla de igual ancho\n\nLas tablas pueden ser dolorosas para trabajar, por lo que se trate de usar `table-layout: fixed` para mantener las celdas con el mismo ancho:\n\n```css\n.calendar {\n  table-layout: fixed;\n}\n```\n\nDiseño de tablas sin dolor.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/jALALm)\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Deshacerse de hacks para los márgenes en Flexbox\n\nCuando trabajas con el espaciado entre columnas puedes deshacerte de los hacks con `nth-`, `first-` y `last-child` mediante el uso de la propiedad `space-between` de Flexbox:\n\n```css\n.list {\n  display: flex;\n  justify-content: space-between;\n}\n\n.list .person {\n  flex-basis: 23%;\n}\n```\n\nAhora las columnas aparecen siempre espaciadas uniformemente.\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Utilizar atributos como selectores en enlaces vacíos\n\nMostrar vínculos cuando el elemento `<a>` no tiene un valor de texto, pero el atributo `href` tiene un enlace:\n\n```css\na[href^=\"http\"]:empty::before {\n  content: attr(href);\n}\n```\n\nEso es bastante conveniente.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/zBzXRx)\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Estilizar enlaces por defecto\n\nAñadir un estilo a los enlaces \"por defecto\":\n\n```css\na[href]:not([class]) {\n  color: #008000;\n  text-decoration: underline;\n}\n```\n\nAhora los enlaces que se insertan a través de un CMS, que por lo general no tienen un atributo `class`, tendrán una distinción sin afectar de forma genérica la cascada.\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Ritmo vertical consistente\n\nUtilice un selector universal (`*`) dentro de un elemento para crear un ritmo vertical consistente:\n\n```ss\n.intro> * {\n  margin-bottom: 1.25rem;\n}\n```\n\nUn ritmo vertical consistente proporciona una estética visual que hace que el contenido sea mucho más legible.\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Cajas con proporciones intrínsecas\n\nPara crear un cuadro con una proporción intrínseca, todo lo que tiene que hacer es aplicar un padding superior o inferior a un div:\n\n```css\n.container {\n  height: 0;\n  padding-bottom: 20%;\n  position: relative;\n}\n\n.container div {\n  border: 2px dashed #ddd;\n  height: 100%;\n  left: 0;\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n```\n\nUsando un 20% de padding hace que la altura de la caja sea igual al 20% de su anchura. No importa el ancho de la ventana, el div hijo va a mantener su relación de aspecto (100% / 20% = 5: 1).\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/jALZvE)\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Estilizar enlaces rotos a imágenes\n\nHaz que las imágenes rotas sean estéticamente más agradables con un poco de CSS:\n\n```css\nimg {  \n  display: block;\n  font-family: sans-serif;\n  font-weight: 300;\n  height: auto;\n  line-height: 2;\n  position: relative;\n  text-align: center;\n  width: 100%;\n}\n```\n\nAhora añade propiedades desde los pseudo-elementos para mostrar un mensaje al usuario y una referencia de dirección URL de la imagen rota:\n\n```css\nimg::before {  \n  content: \"We're sorry, the image below is broken :(\";\n  display: block;\n  margin-bottom: 10px;\n}\n\nimg::after {  \n  content: \"(url: \" attr(src) \")\";\n  display: block;\n  font-size: 12px;\n}\n```\n\nAprende más sobre el estilo de este patrón en [post original](http://bitsofco.de/styling-broken-images/) de [Iré Aderinokun](https://github.com/ireade/).\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Usar `rem` para tamaños globales; Usar `em` para tamaños locales\n\nDespués de definir el tamaño de la fuente base en la raíz (`html { font-size: 100%; }`), ajusta el tamaño de fuente para los elementos textuales con `em`:\n\n```css\nh2 {\n  font-size: 2em;\n}\n\np {\n  font-size: 1 em;\n}\n```\n\nA continuación, establezca el tamaño de fuente para los módulos con `rem`:\n\n```css\narticle {\n  font-size: 1.25rem;\n}\n\naside .module {\n  font-size: .9rem;\n}\n```\n\nAhora cada módulo se vuelve compartimentado y más fácil de estilizar, más fácil de mantener, y más flexible.\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Esconder videos con reproducción automática que no estén silenciados\n\nEste es un gran truco para una hoja de estilo de usuario personalizada. Evita la sobrecarga de un usuario con el sonido de un vídeo que se reproduce automáticamente cuando se carga la página. Si el sonido no está silenciado, no se muestra el video:\n\n```css\nvideo[autoplay]:not([muted]) {\n  display: none;\n}\n```\n\nUna vez más, estamos tomando ventaja de usar la pseudo-clase [`:not()`](#use-not-to-applyunapply-borders-on-navigation).\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Utilizar `:root` para una tipografía flexible\n\nEl tamaño de tipo de letra en un diseño que responde debe ser capaz de ajustar con cada ventana. Se puede calcular el tamaño de la fuente basada en la altura y la anchura de la ventana gráfica usando `:root`:\n\n```css\n:root {\n  font-size: calc(1vw + 1vh + .5vmin);\n}\n```\n\nAhora se puede utilizar la unidad de `root em` basado en el valor calculado por `:root`:\n\n```css\nbody {\n  font: 1rem/1.6 sans-serif;\n}\n```\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Definir `font-size` en los elementos de formulario para una mejor experiencia móvil\n\nPara evitar que los navegadores móviles (iOS Safari, _et al_.) hagan zoom sobre los elementos de un formulario HTML cuando un `<select>` desplegable es pulsado, agrega `font-size` a la regla del selector:\n\n```css\ninput[type=\"text\"],\ninput[type=\"number\"],\nselect,\ntextarea {\n  font-size: 16px;\n}\n```\n\n:dancer:\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Usar eventos de puntero para controlar eventos de mouse\n\n[Eventos del puntero](https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events) le permiten especificar cómo el mouse interactúa con el elemento que está tocando. Para deshabilitar el evento de puntero predeterminado en un botón, por ejemplo:\n\n```css\nbutton:disabled {\n  opacity: .5;\n  pointer-events: none;\n}\n```\n\nEs así de simple.\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n### Establezca `display: none` en Saltos de línea utilizados como espaciado\n\nComo señaló [Harry Roberts] (https://twitter.com/csswizardry/status/1170835532584235008), esto puede ayudar a evitar que los usuarios de CMS usen saltos de línea adicionales para el espaciado:\n\n```css\nbr + br {\n  display: none;\n}\n```\n\n<sup>[volver al índice de contenidos](#tabla-de-contenido)</sup>\n\n\n## Soporte\n\nLas versiones actuales de Chrome, Firefox, Safari y Edge.\n"
  },
  {
    "path": "translations/fr-FR/README.md",
    "content": "<p align=\"center\">\n  <img src=\"../../assets/img/bulb.svg\" alt=\"light bulb icon\">\n</p>\n\n# Conseils d’expert en CSS [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\nUne collection de conseils pour vous aider à mener vos compétences CSS au niveau pro.\n\n> Pour d'autres listes géniales, consultez la liste organisée par [@sindresorhus](https://github.com/sindresorhus/) des [listes impressionnantes](https://github.com/sindresorhus/awesome/).\n\n\n## Table des matières\n\n* [Conseils d’expert](#conseils-dexpert)\n* [Prise en charge par les navigateurs](#prise-en-charge-par-les-navigateurs)\n* [Directives pour les contributions](../../CONTRIBUTING.md)\n\n\n##  Conseils d’expert\n\n1. [Utilisez un Reset CSS](#utilisez-un-reset-css)\n1. [Hériter de `box-sizing`](#hériter-de-box-sizing)\n1. [Utilisez `unset` au Lieu de Réinitialiser Toutes les Propriétés](#utilisez-unset-au-lieu-de-réinitialiser-toutes-les-propriétés)\n1. [Utiliser `:not()` pour Appliquer / ne pas Appliquer des Bordures à la Barre de Navigation](#utiliser-not-pour-appliquer--ne-pas-appliquer-des-bordures-à-la-barre-de-navigation)\n1. [Vérifiez si la police est installée localement](#vérifiez-si-la-police-est-installée-localement)\n1. [Ajouter `line-height` à `body`](#ajouter-line-height-à-body)\n1. [Définissez `: focus` pour les Éléments de Formulaire](#définissez-focus-pour-les-éléments-de-formulaire)\n1. [Tout Centrer Verticalement](#tout-centrer-verticalement)\n1. [Listes Séparées par des Virgules](#listes-séparées-par-des-virgules)\n1. [Sélectionner des Éléments en Utilisant un `nth-child` Négatif](#sélectionner-des-éléments-en-utilisant-un-nth-child-négatif)\n1. [Utiliser SVG pour les Icônes](#utiliser-svg-pour-les-icônes)\n1. [Utilisez le Sélecteur \"chouette lobotomisée\"](#utilisez-le-sélecteur-chouette-lobotomisée)\n1. [Utilisez `max-height` pour des Sliders en CSS Pur](#utilisez-max-height-pour-des-sliders-en-css-pur)\n1. [Cellules de Tableau à Largeur Égale](#cellules-de-tableau-à-largeur-égale)\n1. [Se Débarrasser des Hacks de Marge Avec Flexbox](#se-débarrasser-des-hacks-de-marge-avec-flexbox)\n1. [Utiliser des Sélecteurs d'Attribut avec des Liens Vides](#utiliser-des-sélecteurs-dattribut-avec-des-liens-vides)\n1. [Style \"Par Défaut\" des Liens](#style-par-défaut-des-liens)\n1. [Ratio de Boîtes Intrinsèque](#ratio-de-boîtes-intrinsèque)\n1. [Styliser des Images Cassées](#styliser-des-images-cassées)\n1. [Utilisez `rem` pour le Dimensionnement Global; Utilisez `em` pour le Dimensionnement Local](#utilisez-rem-pour-le-dimensionnement-global-utilisez-em-pour-le-dimensionnement-local)\n1. [Masquer les Vidéos Lancées Automatiquement qui ne sont pas Mises en Sourdine](#masquer-les-vidéos-lancées-automatiquement-qui-ne-sont-pas-mises-en-sourdine)\n1. [Utilisez `:root` pour le Type Flexible](#utilisez-root-pour-le-type-flexible)\n1. [Réglez `font-size` sur les Éléments de Formulaire pour une Meilleure Expérience Mobile](#réglez-font-size-sur-les-éléments-de-formulaire-pour-une-meilleure-expérience-mobile)\n1. [Utiliser les Événements de Pointeur pour Contrôler les Événements de la Souris](#utiliser-les-événements-de-pointeur-pour-contrôler-les-événements-de-la-souris)\n1. [Définit `display: none` sur les sauts de ligne utilisés comme espacement](#définit-display-none-sur-les-sauts-de-ligne-utilisés-comme-espacement)\n\n\n### Utilisez un Reset CSS\n\nLa réinitialisation CSS aide à faire respecter une cohérence de style entre les différents navigateurs en faisant table rase pour les éléments de style. Vous pouvez utiliser la bibliothèque de réinitialisation CSS comme [Normalize](http://necolas.github.io/normalize.css/), et al, ou vous pouvez utiliser une approche de réinitialisation plus simplifiée :\n\n```css\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n```\n\nMaintenant, les éléments seront dépouillés des marges et de zones de remplissage, et `box-sizing` vous permet de gérer la mise en page avec le modèle de boîte CSS.\n\n#### [Démo](http://codepen.io/AllThingsSmitty/pen/kkrkLL)\n\n**Remarque:** Si vous suivez le conseil [Hériter `box-sizing`](#inherit-box-sizing) ci-dessous vous pouvez choisir de ne pas inclure la propriété box-sizing dans votre reset CSS.\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Hériter de `box-sizing`\n\nLaisser `box-sizing` être héritée de `html`:\n\n```css\nhtml {\n  box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: inherit;\n}\n\n```\n\nCela rend plus facile le fait de changer `box-sizing` dans des plugins ou autres composants qui exploitent d'autres comportements.\n\n#### [Démo](https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/)\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Utilisez `unset` au Lieu de Réinitialiser Toutes les Propriétés\n\nLors de la réinitialisation des propriétés d'un élément, il n'est pas nécessaire de réinitialiser chaque propriété individuelle :\n\n```css\nbutton {\n  background: none;\n  border: none;\n  color: inherit;\n  font: inherit;\n  outline: none;\n  padding: 0;\n}\n```\n\nVous pouvez spécifier toutes les propriétés d'un élément en utilisant le raccourci `all`. Définir la valeur sur `unset` change les propriétés d'un élément à leurs valeurs initiales :\n\n```css\nbutton {\n  all: unset;\n}\n```\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Utiliser `:not()` pour Appliquer / ne pas Appliquer des Bordures à la Barre de Navigation\n\nAu lieu de mettre à l'encadrement...\n\n```css\n/* add border */\n.nav li {\n  border-right: 1px solid #666;\n}\n```\n\n... puis l'enlever du dernier élément...\n\n```css\n/* remove border */\n.nav li:last-child {\n  border-right: none;\n}\n```\n\n...Utiliser la pseudo-classe `:not()` pour appliquer uniquement aux éléments que vous voulez :\n\n```css\n.nav li:not(:last-child) {\n  border-right: 1px solid #666;\n}\n```\n\nLe sélecteur CSS définit la frontière comme un humain la décrirait.\n\n#### [Démo](http://codepen.io/AllThingsSmitty/pen/LkymvO)\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Vérifiez si la police est installée localement\n\nVous pouvez vérifier si une police est installée localement avant de la récupérer à distance, ce qui est également une bonne astuce de performance.\n\n```css\n@font-face {\n  font-family: \"Dank Mono\";\n  src:\n    /* Full name */\n    local(\"Dank Mono\"),\n    /* Postscript name */\n    local(\"Dank-Mono\"),\n    /* Otherwise, download it! */\n    url(\"//...a.server/fonts/DankMono.woff\");\n}\n\ncode {\n  font-family: \"Dank Mono\", system-ui-monospace;\n}\n```\n\nPointe du chapeau à Adam Argyle pour avoir partagé ce protip et cette [démo](https://codepen.io/argyleink/pen/VwYJpgR).\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Ajouter `line-height` à `body`\n\nVous n'avez pas besoin d'ajouter `line-height` à chaque `<p>`, `<h*>`, _et al_. séparément. Au lieu de cela, ajoutez-le à `body`:\n\n```css\nbody {\n  line-height: 1.5;\n}\n```\n\nDe cette façon, les éléments textuels peuvent hériter de `body` facilement.\n\n#### [Démo](http://codepen.io/AllThingsSmitty/pen/VjbdYd)\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Définissez `:focus` pour les éléments de formulaire\n\nLes personnes voyantes utilisant le clavier se fient au focus pour déterminer où vont les événements de clavier sur la page. Mettez en évidence les éléments de formulaire, de façon cohérente par rapport à la mise en œuvre par défaut du navigateur :\n\n```css\na:focus,\nbutton:focus,\ninput:focus,\nselect:focus,\ntextarea:focus {\n  box-shadow: none;\n  outline: #000 dotted 2px;\n  outline-offset: .05em;\n}\n```\n\n#### [Démo](https://codepen.io/AllThingsSmitty/pen/ePzoOP/)\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Tout Centrer Verticalement\n\nNon, ce n'est pas de la magie noire, vous pouvez vraiment centrer des éléments verticalement. Vous pouvez le faire avec flexbox...\n\n```css\nhtml,\nbody {\n  height: 100%;\n  margin: 0;\n}\n\nbody {\n  -webkit-align-items: center;  \n  -ms-flex-align: center;  \n  align-items: center;\n  display: -webkit-flex;\n  display: flex;\n}\n```\n\n...et aussi avec CSS Grid :\n\n```css\nbody {\n  display: grid;\n  height: 100vh;\n  margin: 0;\n  place-items: center center;\n}\n```\n\nVous voulez centrer autre chose ? Verticalement, horizontalement... quoi que ce soit, à tout moment, en tout lieu ? CSS-Tricks a [un article sympa](https://css-tricks.com/centering-css-complete-guide/) sur comment faire tout cela.\n\n#### [Démo](http://codepen.io/AllThingsSmitty/pen/GqmGqZ)\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Listes Séparées par des Virgules\n\nFaites que les liste d'éléments ressemblent de vraies listes, séparées par des virgules :\n\n```css\nul > li:not(:last-child)::after {\n  content: \",\";\n}\n```\n\nUtilisez la pseudo-classe `:not()` et aucune virgule ne sera ajoutée au dernier élément.\n\n**Remarque:** Il est possible que cette astuce ne soit pas idéale pour l'accessibilité, en particulier pour les lecteurs d'écran. Et copier / coller à partir du navigateur ne fonctionne pas avec le contenu généré par CSS. Procéder avec prudence.\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Sélectionner des Éléments en Utilisant un `nth-child` Négatif\n\nUtilisez un `nth-child` négatif en CSS pour sélectionner des éléments de 1 à n.\n\n```css\nli {\n  display: none;\n}\n\n/* select items 1 through 3 and display them */\nli:nth-child(-n+3) {\n  display: block;\n}\n```\n\nOu, puisque vous avez déjà appris un peu [en utilisant `:not()`](#use-not-to-applyunapply-borders-on-navigation), essayez :\n\n```css\n/* select all items except the first 3 and display them */\nli:not(:nth-child(-n+3)) {\n  display: none;\n}\n```\n\n#### [Démo](http://codepen.io/AllThingsSmitty/pen/WxjKZp)\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Utiliser SVG pour les Icônes\n\nIl n'y a aucune raison de ne pas utiliser SVG pour les icônes :\n\n```css\n.logo {\n  background: url(\"logo.svg\");\n}\n```\n\nLe SVG permet de bien mettre à l'échelle et ce pour tous types de résolution, de plus il est pris en charge dans tous les navigateurs depuis [retour au IE9](http://caniuse.com/#search=svg). Donc laissez tombé vos fichiers .png, .jpg ou .gif-JIF-etc.\n\n**Remarque:** Si vous avez seulement des boutons sous forme d'icônes SVG pour les utilisateurs voyants et que le SVG ne parvient pas à charger, cela vous aidera à maintenir l'accessibilité :\n\n```css\n.no-svg .icon-only::after {\n  content: attr(aria-label);\n}\n```\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Utilisez le Sélecteur \"Chouette Lobotomisée\"\n\nIl a peut être un nom étrange, mais utiliser le sélecteur universel (`*`) avec le sélecteur de frère adjacent (`+`) peut fournir une capacité de CSS puissante :\n\n```css\n* + * {\n  margin-top: 1.5em;\n}\n```\n\nDans cet exemple, tous les éléments dans le flux du document qui suivent d'autres éléments recevront `margin-top: 1.5em`.\n\nPour en savoir plus sur le sélecteur \"chouette lobotomisée\", lire [la publication de Heydon Pickering](http://alistapart.com/article/axiomatic-css-and-lobotomized-owls) sur *A List Apart*.\n\n#### [Démo](http://codepen.io/AllThingsSmitty/pen/XKgOkR)\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Utilisez `max-height` pour des Sliders en CSS Pur\n\nMettre en œuvre des sliders en CSS uniquement en utilisant `max-height` avec débordement caché :\n\n```css\n.slider {\n  max-height: 200px;\n  overflow-y: hidden;\n  width: 300px;\n}\n\n.slider:hover {\n  max-height: 600px;\n  overflow-y: scroll;\n}\n```\n\nL'élément s'étends jusqu'à la valeur `max-height` au survol et le slider s'affiche à la suite du débordement.\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Cellules de Tableau à Largeur Égale\n\nIl peut être pénible de travailler avec des tableaux. Essayez d'utiliser `table-layout: fixed` pour maintenir les cellules à largeur égale :\n\n```css\n.calendar {\n  table-layout: fixed;\n}\n```\n\nDes tableaux sans douleurs.\n\n#### [Démo](http://codepen.io/AllThingsSmitty/pen/jALALm)\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Se Débarrasser des Hacks de Marge Avec Flexbox\n\nLorsque vous travaillez sur les gouttières des colonnes, vous pouvez vous débarrasser de `nth`, `first-` et `last-child` en utilisant la propriété flexbox `space-between` :\n\n\n```css\n.list {\n  display: flex;\n  justify-content: space-between;\n}\n\n.list .person {\n  flex-basis: 23%;\n}\n```\n\nMaintenant les gouttières de vos colonnes apparaissent toujours uniformément espacées.\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Utiliser des Sélecteurs d'Attribut avec des Liens Vides\n\nAffichez des liens lorsque l'élément `<a>` n'a pas de valeur de texte mais que l'attribut `href` a un lien :\n\n```css\na[href^=\"http\"]:empty::before {\n  content: attr(href);\n}\n```\n\nC'est assez pratique.\n\n#### [Démo](http://codepen.io/AllThingsSmitty/pen/zBzXRx)\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Style \"Par Défaut\" des Liens\n\nAjouter un style pour les liens \" par défaut\" :\n\n```css\na[href]:not([class]) {\n  color: #008000;\n  text-decoration: underline;\n}\n```\n\nMaintenant, les liens qui sont insérés via un CMS, qui ne disposent généralement pas d'un attribut `class`, auront une distinction sans affecter de manière générique la cascade.\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Ratio de Boîtes Intrinsèque\n\nPour créer une boîte avec une proportion intrinsèque, tout ce que vous devez faire est d'appliquer une zone de remplissage en haut ou en bas de à un div :\n\n```css\n.container {\n  height: 0;\n  padding-bottom: 20%;\n  position: relative;\n}\n\n.container div {\n  border: 2px dashed #ddd;\t\n  height: 100%;\n  left: 0;\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n```\n\nEn utilisant 20% pour le rembourrage, cela rend la hauteur de la boîte égale à 20% de sa largeur. Peu importe la largeur de la fenêtre d'affichage, la div enfant gardera son ratio d'aspect (100% / 20% = 5: 1).\n\n#### [Démo](http://codepen.io/AllThingsSmitty/pen/jALZvE)\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Styliser des Images Cassées\n\nFaire des images cassées esthétiquement plus agréables avec un peu de CSS :\n\n```css\nimg {  \n  display: block;\n  font-family: sans-serif;\n  font-weight: 300;\n  height: auto;\n  line-height: 2;\n  position: relative;\n  text-align: center;\n  width: 100%;\n}\n```\n\nMaintenant, ajoutez les règles pseudo-éléments pour afficher un message d'utilisateur et une référence URL de l'image brisée :\n\n```css\nimg::before {  \n  content: \"We're sorry, the image below is broken :(\";\n  display: block;\n  margin-bottom: 10px;\n}\n\nimg::after {  \n  content: \"(url: \" attr(src) \")\";\n  display: block;\n  font-size: 12px;\n}\n```\n\nEn savoir plus sur la styliser de ce patron dans [Ire Aderinokun](https://github.com/ireade/)' [message original](http://bitsofco.de/styling-broken-images/).\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Utilisez `rem` pour le Dimensionnement Global; Utilisez `em` pour le Dimensionnement Local\n\nAprès avoir défini la taille de la police de base à la racine (`html { font-size: 100%; }`), définir la taille de la police pour les éléments textuels à `em` :\n\n```css\nh2 {\n  font-size: 2em;\n}\n\np {\n  font-size: 1em;\n}\n```\n\nDéfinissez ensuite la taille de police pour les modules à `rem`:\n\n```css\narticle {\n  font-size: 1.25rem;\n}\n\naside .module {\n  font-size: .9rem;\n}\n```\n\nMaintenant, chaque module devient compartimentée et plus faciles à styliser, plus maintenable, et flexible.\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Masquer les Vidéos Lancées Automatiquement qui ne sont pas Mises en Sourdine\n\nCeci est une super astuce pour une feuille de style personnalisée par l'utilisateur. Évitez de surcharger un utilisateur avec le son d'une vidéo lue Automatiquement lorsque la page est chargée. Si le son n'est pas coupé, ne pas montrer la vidéo :\n\n```css\nvideo[autoplay]:not([muted]) {\n  display: none;\n}\n```\n\nEncore une fois, nous trions parti de l'utilisation de la pseudo-classe [`:not()`](#use-not-to-applyunapply-borders-on-navigation).\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Utilisez `:root` pour le Type Flexible\n\nLa taille type de police dans une mise en page responsive devrait être en mesure de s'ajuster à chaque fenêtre d'affichage. Vous pouvez calculer la taille de la police basée sur la hauteur de la fenêtre et la largeur en utilisant `: root`:\n\n```css\n:root {\n  font-size: calc(1vw + 1vh + .5vmin);\n}\n```\n\n#### [Démo](http://codepen.io/AllThingsSmitty/pen/XKgOkR)\n\nMaintenant, vous pouvez utiliser l'unitée de `root em` basée sur la valeur calculée par`: root`:\n\n```css\nbody {\n  font: 1rem/1.6 sans-serif;\n}\n```\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Réglez `font-size` sur les Éléments de Formulaire pour une Meilleure Expérience Mobile\n\nPour éviter aux navigateurs mobiles (iOS Safari, _et al_.) de zoomer sur des éléments de formulaire HTML quand un menu déroulant `<select>` est touché, ajoutez `font-size` à la règle de sélection :\n\n```css\ninput[type=\"text\"],\ninput[type=\"number\"],\nselect,\ntextarea {\n  font-size: 16px;\n}\n```\n\n:dancer:\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n\n### Utiliser les Événements de Pointeur pour Contrôler les Événements de la Souris\n\n[Les événements de pointeur](https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events) vous permettent de spécifier comment la souris interagit avec l'élément qu'elle touche. Pour désactiver l'événement de pointeur par défaut sur un bouton, par exemple :\n\n```css\nbutton:disabled {\n  opacity: .5;\n  pointer-events: none;\n}\n```\n\nC'est aussi simple que cela.\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n### Définit `display: none` sur les sauts de ligne utilisés comme espacement\n\nComme [Harry Roberts l'a souligné](https://twitter.com/csswizardry/status/1170835532584235008), cela peut aider à empêcher les utilisateurs du système de gestion de contenu d'utiliser des sauts de ligne supplémentaires pour l'espacement:\n\n```css\nbr + br {\n  display: none;\n}\n```\n\n<sup>[retour à la table des matières](#table-des-matières)</sup>\n\n\n## Prise en charge par les navigateurs\n\nLes versions actuelles de Chrome, Firefox, Safari, et Edge.\n"
  },
  {
    "path": "translations/gr-GR/README.md",
    "content": "<p align=\"center\">\n  <img src=\"../../assets/img/bulb.svg\" width=\"200\" alt=\"light bulb icon\">\n</p>\n\n# Εξελιγμένες συμβουλές για CSS [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\nΜια συλλογή από συμβουλές για να φτάσατε τις CSS ικανότητές σας σε επαγγελματικό επίπεδο\n\n> Για άλλες ωραίες λίστες με συμβουλές δείτε την λίστα του [@sindresorhus](https://github.com/sindresorhus/) με [τέλειες λίστες](https://github.com/sindresorhus/awesome/).\n\n\n## Πίνακας περιεχομένων\n\n* [Προχωρημένες Συμβουλές](#προχωρημένες-συμβουλές)\n* [Υποστήριξη](#υποστήριξη)\n* [Μεταφράσεις](../../CONTRIBUTING.md)\n\n\n## Προχωρημένες Συμβουλές\n\n1. [Χρήση μίας CSS επαναφοράς](#χρήση-μίας-CSS-επαναφοράς)\n1. [Κληρονόμιση του 'box-sizing'](#κληρονόμιση-του-box-sizing)\n1. [Χρήση `unset` Αντί Για Επαναφορά Όλων Των Ιδιοτήτων](#χρήση-unset-αντί-για-επαναφορά-όλων-των-ιδιοτήτων)\n1. [Χρήση `:not()` για Εφαρμόσεις/Βγάλεις τα Πλαίσια κατά την Περιήγηση](#χρήση-not-για-εφαρμόσειςβγάλεις-τα-πλαίσια-κατά-την-περιήγηση)\n1. [Überprüfen Sie, ob die Schriftart lokal installiert ist](#Überprüfen-sie-ob-die-schriftart-lokal-installiert-ist)\n1. [Προσθήκη `line-height` στο `body`](#προσθήκη-line-height-στο-body)\n1. [Θέσε `:focus` για Στοιχεία της Φόρμας](#θέσε-focus-για-στοιχεία-της-φόρμας)\n1. [Κάθετο-Κεντράρισμα Όλων](#κάθετο-κεντράρισμα-όλων)\n1. [Λίστες που Χωρίζονται-με-Κόμμα](#λίστες-που-χωρίζονται-με-κόμμα)\n1. [Επίλογη Αντικειμένων με Χρήση Αρνητικού `nth-child`](#επίλογη-αντικειμένων-με-χρήση-αρνητικού-nth-child)\n1. [Χρήση SVG για Εικονίδια](#χρήση-SVG-για-εικονίδια)\n1. [Χρήση της \"Λοβοτομημένης Κουκουβάγιας\" για Διαλέκτη](#χρήση-της-λοβοτομημένης-κουκουβάγιας-για-διαλέκτη)\n1. [Χρήση `max-height` για Αγνούς CSS Ολισθητές](#χρήση-max-height-για-αγνούς-CSS-ολισθητές)\n1. [Ίσου-Πλάτους Κελία Πίνακα](#ίσου-πλάτους-κελία-πίνακα)\n1. [Απέβαλλε τα Hacks των Περιθωρίων Με Flexbox](#απέβαλλε-τα-hacks-των-περιθωρίων-με-flexbox)\n1. [Χρήση Επιλογής Χαρακτηριστικών με Κένα Links](#χρήση-επιλογής-χαρακτηριστικών-με-κένα-links)\n1. [Δώσε στυλ στα \"Προκαθορισμένα\" Links](#δώσε-στυλ-στα-προκαθορισμένα-links)\n1. [Εσωτερικά Κουτία Αναλογιών](#εσωτερικά-κουτία-αναλογιών)\n1. [Εικόνες με Χαλασμένο Στυλ](#εικόνες-με-χαλασμένο-στυλ)\n1. [Χρήση `rem` για Προσαρμογή Μεγέθους Παντού; Χρήση `em` για Τοπική Προσαρμογή Μεγέθους](#χρήση-rem-για-προσαρμογή-μεγέθους-παντού-χρήση-em-για-τοπική-προσαρμογή-μεγέθους)\n1. [Απόκριψη Βίντεο με Αυτόματη Αναπαραγωγή Που Δεν Είναι σε Σίγαση](#απόκριψη-βίντεο-με-αυτόματη-αναπαραγωγή-που-δεν-είναι-σε-σίγαση)\n1. [Χρήση `:root` για Ευέλικτη Γραφή](#χρήση-root-για-ευέλικτη-γραφή)\n1. [Ανάθεση `font-size` στα Στοιχεία της Φόρμας για Καλύτερη Εμπειρία από Κινητό](#ανάθεση-font-size-στα-στοιχεία-της-φόρμας-για-καλύτερη-εμπειρία-από-κινητό)\n1. [Χρήση Γεγονότων Δείκτη για Έλεγχο Γεγονότων του Ποντικιού](#χρήση-γεγονότων-δείκτη-για-έλεγχο-γεγονότων-του-ποντικιού)\n1. [Ανάθεση `display: none` στο Τέλος των Γραμμών που Χρησιμοποιείται σαν Κενό](#ανάθεση-display-none-στο-τέλος-των-γραμμών-που-χρησιμοποιείται-σαν-κενό)\n\n\n### Χρήση μίας CSS επαναφοράς\n\nΗ επαναφορά του CSS βοηθάει στο στυλ αλλά καί στην σταθερότητα ανάμεσα σε διαφορετικόυς περιηγητές αναζήτησης με καθαρό πίνακα για στυλιστικά στοιχεία.Μπορείτε να χρησιμοποιήσετε μια βιβλιοθήκη CSS επαναφοράς ετσι [Normalize](http://necolas.github.io/normalize.css/), _και αλλα._, η μπορείτε να χρησιμοποιήσετε μια πιο απλοποιημένη προσέγγιση επαναφοράς:\n\n```css\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n```\n\nΤωρα τα στοιχεία θα βγουν από τα περιθώρια και από την επένδυση, και το `box-sizing` σε αφήνει να διαχειριστείς τις διατάξεις με το CSS box model.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/kkrkLL)\n\n**Σημείωση:** Αν ακολουθήσετε την [Κληρονόμιση του 'box-sizing'](#κληρονόμιση-του-box-sizing) σαν tip θα πρέπει να μην συμπεριληφθεί το 'box-sizing' στην CSS επαναφορά.\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Κληρονόμιση του 'box-sizing'\n\nΑς κληρονομιθεί το `box-sizing` από `html`:\n\n```css\nhtml {\n  box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: inherit;\n}\n```\n\nΑυτό κάνει πιο εύκολο να αλλάξει το `box-sizing` σε πρόσθετα η σε άλλα συστατικά που μοχλεύουν άλλη συμπεριφορά.\n\n#### [Démo](https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/)\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Χρήση `unset` Αντί Για Επαναφορά Όλων Των Ιδιοτήτων\n\nΌταν επαναφέρεις τις ιδιότητες ενός στοιχείου δεν είναι απαραίτητο να επαναφέρεις τις ιδιότητες κάθε ξεχωριστού στοιχείου:\n\n```css\nbutton {\n  background: none;\n  border: none;\n  color: inherit;\n  font: inherit;\n  outline: none;\n  padding: 0;\n}\n```\n\nΜπορείς να καθορίσεις όλες τις ιδιότητες ενός στοιχείου χρησιμοποιόντας το `all` στενογραφημένο. Αν θέσεις την τιμή σε `unset` άλλαζει τις ιδιότητες ενός στοιχείου στις αρχικές:\n\n```css\nbutton {\n  all: unset;\n}\n```\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Χρήση `:not()` για Εφαρμόσεις/Βγάλεις τα Πλαίσια κατά την Περιήγηση\n\nΑντί να θέσεις το περιθώριο...\n\n```css\n/* add border */\n.nav li {\n  border-right: 1px solid #666;\n}\n```\n\n...και μετά να το βγάλεις από το τελευταίο στοιχείο...\n\n```css\n/* remove border */\n.nav li:last-child {\n  border-right: none;\n}\n```\n\n...χρησιμοποίησε το `:not()` μια ψευδοκλάση που εφαρμόζεται μόνο στα στοιχεία που θες:\n\n```css\n.nav li:not(:last-child) {\n  border-right: 1px solid #666;\n}\n```\n\nΕδώ, ο CSS επιλέκτης διαβάστηκε όπως αν το περιέγραφε ένας άνθρωπος.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/LkymvO)\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Überprüfen Sie, ob die Schriftart lokal installiert ist\n\nSie können überprüfen, ob eine Schriftart lokal installiert ist, bevor Sie sie remote abrufen. Dies ist auch ein guter Leistungstipp.\n\n```css\n@font-face {\n  font-family: \"Dank Mono\";\n  src:\n    /* Full name */\n    local(\"Dank Mono\"),\n    /* Postscript name */\n    local(\"Dank-Mono\"),\n    /* Otherwise, download it! */\n    url(\"//...a.server/fonts/DankMono.woff\");\n}\n\ncode {\n  font-family: \"Dank Mono\", system-ui-monospace;\n}\n```\n\nHutspitze an Adam Argyle für das Teilen dieses Protips und dieser [Demo](https://codepen.io/argyleink/pen/VwYJpgR).\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Προσθήκη `line-height` στο `body`\n\nΔεν χρειάζεται να προσθέσεις `line-height`σε κάθε `<p>`, `<h*>`, _et al_. ξεχωριστά. Αντ'αυτού, πρόσθεσέ το `body`:\n\n```css\nbody {\n  line-height: 1.5;\n}\n```\n\nΜε αυτόν τον τρόπο τα στοιχεία κειμένου μπορούν να κληρονομήσουν από το `body` έυκολα.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/VjbdYd)\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Θέσε `:focus` για Στοιχεία της Φόρμας\n\nΌσοι χρήστες έχουν όραση και χρησιμοποιούν πληκτρολογιο μπορούν να βασιστούν στην συγκέντωση για να αποφασίσουν\nπου πηγαίνουν τα γεγονότα του πληκτρολογίου στην σελίδα.Κάντε τα στοίχεια συγκέντρωσης να ξεχωρίζουν και σταθερά\nσε μια προκαθορισμένη εφαρμογή του browser:\n\n```css\na:focus,\nbutton:focus,\ninput:focus,\nselect:focus,\ntextarea:focus {\n  box-shadow: none;\n  outline: #000 dotted 2px;\n  outline-offset: .05em;\n}\n```\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/ePzoOP/)\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Κάθετο-Κεντράρισμα Όλων\n\nΌχι δεν είναι μαύρη μαγεία, μπορείτε όντως να κεντράρετε τα στοιχεία κάθετα. Μπορείτε να το κάνετε αυτό με flexbox...\n\n```css\nhtml,\nbody {\n  height: 100%;\n  margin: 0;\n}\n\nbody {\n  -webkit-align-items: center;\n  -ms-flex-align: center;\n  align-items: center;\n  display: -webkit-flex;\n  display: flex;\n}\n```\n\n...και επίσης με CSS Grid:\n\n```css\nbody {\n  display: grid;\n  height: 100vh;\n  margin: 0;\n  place-items: center center;\n}\n```\n\n\nΘέλετε να κεντραρίσετε κάτι άλλο? Vertically, Κάθετα, οριζόντια...όπως θέλετε,όποτε θέλετε, παντού? Το CSS-Tricks έχει [a nice write-up](https://css-tricks.com/centering-css-complete-guide/) on doing all of that.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/GqmGqZ)\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Λίστες που Χωρίζονται-με-Κόμμα\n\nΚάντε τα αντικείμενα λίστας να φαίνονται σαν πραγματικές, χωρισμένες-με-κόμμα λίστες:\n\n```css\nul > li:not(:last-child)::after {\n  content: \",\";\n}\n```\n\nΧρησιμοποιείστε την `:not()` ψευδοκλάση και κανένα κόμμα δεν θα προσθεθεί στο τελευταίο αντικείμενο.\n\n**Σημείωση:** Αυτο το tip μπορεί να μην είναι ιδανικό για προσβασιμότητα, ειδικά για αυτούς που διαβάζουν απο οθόνη. Και το copy/paste από τον browser δεν δουλεύει με περιεχόμενο CSS-generated.Συνεχίστε με προσοχή.\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Επίλογη Αντικειμένων με Χρήση Αρνητικού `nth-child`\n\nΧρηιμοποιείστε το αρνητικό `nth-child` στην CSS για να επιλέξετε 1 αντικείμενο από τα n.\n\n```css\nli {\n  display: none;\n}\n\n/* select items 1 through 3 and display them */\nli:nth-child(-n+3) {\n  display: block;\n}\n```\n\nΗ, αφού ήδη μάθατε να σχετικά με το [using `:not()`](#use-not-to-applyunapply-borders-on-navigation), δοκιμάστε:\n\n```css\n/* select all items except the first 3 and display them */\nli:not(:nth-child(-n+3)) {\n  display: block;\n}\n```\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/WxjKZp)\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Χρήση SVG για Εικονίδια\n\nΔεν υπάρχει λόγος να μην χρησιμοποιήσετε SVG για εικονίδια:\n\n```css\n.logo {\n  background: url(\"logo.svg\");\n}\n```\n\nτο SVG κλιμακώνεται ωραία με για όλους τους τύπους ανάλυσης και υποστηρίζεται από όλους του περιηγητές [back to IE9](http://caniuse.com/#search=svg). Ρίξτε τα .png, .jpg, or .gif-jif-whatev αρχεία σας.\n\n**Σημείωση:** Αν έχετε μόνο SVG εικονίδια για κουμπιά για τους χρήστες με όραση και το SVG αποτύχει να φορτωθεί, αυτό θα βοηθήσει να διατηρηθεί η προσβασιμότητα:\n\n```css\n.no-svg .icon-only::after {\n  content: attr(aria-label);\n}\n```\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Χρήση της \"Λοβοτομημένης Κουκουβάγιας\" για Διαλέκτη\n\nΜπορεί να έχει περίεργο όνομα αλλά το να χρησιμοποιείς τον καθολικό επιλέκτη (`*`) μαζί με τον παρακείμενο επιλέκτη (`+`) μπορεί να παρέχει μια ισχυρή CSS δυνατότητα:\n\n```css\n* + * {\n  margin-top: 1.5em;\n}\n```\n\nΣε αυτό το παράδειγμα, όλα τα στοιχεία στην ροή του αρχείου που ακολουθεί άλλα στοιχεία θα παραλάβει `margin-top: 1.5em`.\n\nΓια περισσότερα πάνω στον επιλέκτη της \"Λοβοτομημένης Κουκουβάγιας\", διαβάστε [Heydon Pickering's post](http://alistapart.com/article/axiomatic-css-and-lobotomized-owls) πάνω στο *A List Apart*.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/grRvWq)\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Χρήση `max-height` για Αγνούς CSS Ολισθητές\n\nΕφαρμογή σε CSS-only διαφάνεις με χρήση `max-height` με την υπερχύλιση κρυμμένη:\n\n```css\n.slider {\n  max-height: 200px;\n  overflow-y: hidden;\n  width: 300px;\n}\n\n.slider:hover {\n  max-height: 600px;\n  overflow-y: scroll;\n}\n```\n\nΤο στοιχείο επεκτείνεται στην `max-height` τιμή σε περίπτωση αιώρησης του δέικτη από πάνω και οι η διαφάνεια προβάλλει σας αποτέλεμα υπερχύλισης.\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Ίσου-Πλάτους Κελία Πίνακα\n\nΟι πίνακες μπορεί να είναι δύσκολοι να δουλέψει κανείς. Προσπαθήστε να χρησιμοποιήσετε το `table-layout: fixed` για να διατηρίσετε τα κελία με ίδιο πλάτος:\n\n```css\n.calendar {\n  table-layout: fixed;\n}\n```\n\nΧωρίς-κόπο διατάξεις πινάκων.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/jALALm)\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Απέβαλλε τα Hacks των Περιθωρίων Με Flexbox\n\nΟτάν δουλέυεις με αυλάκια στήλης μπορείς να ξεφορτοθείς το `nth-`, `first-`, και `last-child` hacks με την χρήση της ιδιότητας του flexbox `space-between` :\n\n```css\n.list {\n  display: flex;\n  justify-content: space-between;\n}\n\n.list .person {\n  flex-basis: 23%;\n}\n```\n\nΤώρα τα αυλάκια των στηλών φαίνονται ίσα κατανεμημένα.\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Χρήση Επιλογής Χαρακτηριστικών με Κένα Links\n\nΕμφανίστε τα links όταν το `<a>` στοιχείο δεν έχει τιμή αλλά το `href` πεδίο εχει ενα link:\n\n```css\na[href^=\"http\"]:empty::before {\n  content: attr(href);\n}\n```\n\nΑυτό είναι πολύ βολικό.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/zBzXRx)\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Δώσε στυλ στα \"Προκαθορισμένα\" Links\n\nΠροσθέστε στυλ στα \"προκαθορισμένα\" links:\n\n```css\na[href]:not([class]) {\n  color: #008000;\n  text-decoration: underline;\n}\n```\n\nΤωρα τα link που εισχωρήθηκαν μεσω CMS, που συνήθς δεν έχουν πεδίο `class` , θα διαφοροποιούνται χωρίς να επηρεάζουν την γενική αλληλουχία.\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Εσωτερικά Κουτία Αναλογιών\n\nΓια να φτιάξετε ενα κουτί με εσωτερική αναλογία, το μόνο που πρέπει να κάνετε είναι να εφαρμόσετε ενα top η bottom γέμισμα  σε ένα div:\n\n```css\n.container {\n  height: 0;\n  padding-bottom: 20%;\n  position: relative;\n}\n\n.container div {\n  border: 2px dashed #ddd;\n  height: 100%;\n  left: 0;\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n```\nΤο να χρησιμοποιείς το 20% του γεμίσματος κάνει το ύψος του κουτιού ίσο με 20% απο το πλάτος του. Άσχετα με το πλάτος της θέας, το παιδί div θα κρατήσει την κλίμακά του (100% / 20% = 5:1).\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/jALZvE)\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n### Εικόνες με Χαλασμένο Στυλ\n\nΚάντε τις χαλασμένες εικόνες πιο αισθητικά όμορφες με λίγο CSS:\n\n```css\nimg {\n  display: block;\n  font-family: sans-serif;\n  font-weight: 300;\n  height: auto;\n  line-height: 2;\n  position: relative;\n  text-align: center;\n  width: 100%;\n}\n```\n\nΤώρα προσθέστε ψευδόστοιχείων κανόνες για να εμφανίσετε ένα μύνημα χρήστη και μια αναφορά σε URL από την χαλασμένη εικόνα:\n\n```css\nimg::before {\n  content: \"We're sorry, the image below is broken :(\";\n  display: block;\n  margin-bottom: 10px;\n}\n\nimg::after {\n  content: \"(url: \" attr(src) \")\";\n  display: block;\n  font-size: 12px;\n}\n```\n\nΜάθετε περισσότερα σχετικά με το στυλ για αυτό το μοτίβο στού [Ire Aderinokun](https://github.com/ireade/)'s [αρχικό ποστ](http://bitsofco.de/styling-broken-images/).\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Χρήση `rem` για Προσαρμογή Μεγέθους Παντού; Χρήση `em` για Τοπική Προσαρμογή Μεγέθους\n\nΑφού θέσετε το βασικό μέγεθος γραμματοσειράς στο root (`html { font-size: 100%; }`), θέστε το μέγεθος γραμματοσειράς για στοιχεία κειμένου σε `em`:\n\n```css\nh2 {\n  font-size: 2em;\n}\n\np {\n  font-size: 1em;\n}\n```\n\nΈπειτα θέστε το μέγεθος γραμματοσειράς για τις ενότητες σε `rem`:\n\n```css\narticle {\n  font-size: 1.25rem;\n}\n\naside .module {\n  font-size: .9rem;\n}\n```\n\nΤώρα κάθε ενότητα διαχωρίζεται και είναι ευκολότερο να της δώσεις στυλ, πιο συντιρίσιμη, και ευπροσάρμοστη.\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Απόκριψη Βίντεο με Αυτόματη Αναπαραγωγή Που Δεν Είναι σε Σίγαση\n\nΑυτό είναι ένα ωραίο κόλπο για έναν στυλ συνιθισμένου χρήστη. Αποφυγή κατακλυσμού χρήστη με ήχους από ενα βίντεο το οποίο παίζει αυτόματα όταν φορτωθεί η σελίδα. Αν ο ήχος δεν είναι σε σίγαση, μήν δείχνεις το βίντεο:\n\n```css\nvideo[autoplay]:not([muted]) {\n  display: none;\n}\n```\n\nΓια άλλη μία φορά,εκμεταλλευόμαστε την χρήση της [`:not()`](#χρήση-not-για-εφαρμόσεις-βγάλεις-τα-πλαίσια-κατά-την-περιήγηση) ψευδοκλάσης.\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Χρήση `:root` για Ευέλικτη Γραφή\n\nΟ τύπος της γραμματοσειράς σε μια αποκρίσιμη διαρρύθμιση θα πρέπει να είναι ικάνος να προσαρμόζεται με κάθε θέαση. Μπορείτε να υπολογίσετε το μέγεθος γραμματοσειράς με βάση το ύψος και το πλάτος της θέασης χρησιμοποιόντας το `:root`:\n\n```css\n:root {\n  font-size: calc(1vw + 1vh + .5vmin);\n}\n```\n\nΤώρα μπορείτε να χρησιμοποιήσετε την `root em` μονάδα βασισμένη στην τιμή που υπολογίστηκε από το `:root`:\n\n```css\nbody {\n  font: 1rem/1.6 sans-serif;\n}\n```\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/XKgOkR)\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Ανάθεση `font-size` στα Στοιχεία της Φόρμας για Καλύτερη Εμπειρία από Κινητό\n\nΓια να αποτρέψετε τους περιηγητές των κινητών (iOS Safari, _et al_.) απο το να μεγεθύνουν στα στοιχεία της HTML φόρμας όταν ένα `<select>` αναπτυσόμενο μενού επιλεχθέι στην οθόνη, προσθέστο το `font-size` στον κανόνα του επιλέκτη:\n\n```css\ninput[type=\"text\"],\ninput[type=\"number\"],\nselect,\ntextarea {\n  font-size: 16px;\n}\n```\n\n:dancer:\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Χρήση Γεγονότων Δείκτη για Έλεγχο Γεγονότων του Ποντικιού\n\n\n[Γεγονότα ποντικού](https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events) σου επιτρέπουν να καθορίσεις πώς το ποντίκι αλληλεπιδρά με ένα στοιχείο που ακουμπάει. Για να απενεργοποιήσετε το προκαθορισμένο γεγονός ποντικιου πάνω σε ένα κουμπί, για παράδειγμα:\n\n```css\nbutton:disabled {\n  opacity: .5;\n  pointer-events: none;\n}\n```\n\nΕίναι τόσο απλό.\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n### Ανάθεση `display: none` στο Τέλος των Γραμμών που Χρησιμοποιείται σαν Κενό\n\nΚαθώς ο [Harry Roberts επισήμανε](https://twitter.com/csswizardry/status/1170835532584235008), αυτό μπορει να βοηθήσει τους CMS χρήστες να αποφύγουν την χρήση παραπάνω νέων γραμμών αντί για κένο :\n\n```css\nbr + br {\n  display: none;\n}\n```\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n\n\n## Υποστήριξη\n\nΟι τωρινές εκδόσεις των Chrome, Firefox, Safari, καθώς και Edge.\n\n<sup>[πίσω στον πίνακα περιεχομένων](#πίνακας-περιεχομένων)</sup>\n"
  },
  {
    "path": "translations/gu-IND/README.md",
    "content": "<p align=\"center\">\n  <img src=\"../../assets/img/bulb.svg\" width=\"200\" alt=\"light bulb icon\">\n</p>\n\n# CSS પ્રોપ્સ [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\nતમારા CSS કુશળતાને ધ્યાનમાં રાખવામાં સહાય માટે ટિપ્સનો સંગ્રહ.\n\n> અન્ય મહાન યાદીઓ માટે તપાસો [@sindresorhus](https://github.com/sindresorhus/)'s ની યાદી [અદ્ભુત યાદીઓ](https://github.com/sindresorhus/awesome/).\n\n\n## વિષયસુચીકોષ્ટક\nઅરજી / અનપ્પેલી કરવા માટે\n* [પ્રોપ્સ](#પ્રોપ્સ)\n* [આધાર](#આધાર)\n* [ફાળો માર્ગદર્શિકા](../../CONTRIBUTING.md)\n\n\n## પ્રોપ્સ\n\n1. [એક સીએસએસ રીસેટ વાપરો](#વાપરવ-a-css-રીસેટ)\n1. [વારસો `box-sizing`](#વારસો-box-sizing)F\n1. [બધા ગુણધર્મોને ફરીથી સેટ કરવાને બદલે 'અનસેટ' નો ઉપયોગ કરો](#બધા-ગુણધર્મોને-ફરીથી-સેટ-કરવાને-બદલે-અનસેટ-નો-ઉપયોગ-કરો)\n1. [વાપરવ `:not()` અરજી / અનપ્પેલી કરવા માટે નેવિગેશન પર બોર્ડર્સ](#વાપરવ-not-અરજી--અનપ્પેલી-કરવા-માટે-નેવિગેશન-પર-બોર્ડર્સ)\n1. [સ્થાનિક રીતે ફોન્ટ ઇન્સ્ટોલ કરેલું છે કે નહીં તે તપાસો](#સ્થાનિક-રીતે-ફોન્ટ-ઇન્સ્ટોલ-કરેલું-છે-કે-નહીં-તે-તપાસો)\n1. [ઉમેરો `line-height` તરફ `body`](#ઉમેર-line-height-તરફ-body)\n1. [ફોર્મ તત્વો માટે 'ધ્યાન કેન્દ્રિત કરો' સેટ કરો](#ફોર્મ-તત્વો-માટે-ધ્યાન-કેન્દ્રિત-કરો-સેટ-કરો)\n1. [વર્ટિકલ-કેન્દ્ર કંઈપણ](#ઊભું-કેન્દ્ર-કંઈપણ)\n1. [કોમા-વિભાજિત સૂચિ](#કોમા-વિભાજિત-સૂચિ)\n1. [નકારાત્મક મદદથી વસ્તુઓ પસંદ કરો `nth-child`](#નકારાત્મક-મદદથી-વસ્તુઓ-પસંદ-કરો-nth-child)\n1. [ચિહ્નો માટે SVG નો ઉપયોગ કરો](#વાપરવુ-માટે-svg-નો-ઉપયોગ-કરો)\n1. [આ વાપરો \"Lobotomized Owl\" પસંદગીકાર](#આ-વાપરો-lobotomized-owl-પસંદગીકાર)\n1. [વાપરવ `max-height` શુદ્ધ માટે CSS સ્લાઇડર્સનો](#વાપરવ-max-height-શુદ્ધ-માટે-css-સ્લાઇડર્સનો)\n1. [સમાન-પહોળાઈ કોષ્ટક કોષ](#સમાન-પહોળાઈ-કોષ્ટક-કોષ)\n1. [છુટકારો મેળવવા માર્જિન હેક્સ સાથે Flexbox](#છુટકારો-મેળવવા-માર્જિન-હેક્સ-સાથે-flexbox)\n1. [વાપરવ એટ્રીબ્યુટ પસંદગીકારો સાથે ખાલી કડીઓ](#વાપરવ-એટ્રીબ્યુટ-પસંદગીકારો-સાથે-ખાલી-કડીઓ)\n1. [પ્રકાર \"Default\" કડીઓ](#પ્રકાર-default-કડીઓ)\n1. [આંતરિક ગુણોત્તર બૉક્સીસ](#આંતરિક-ગુણોત્તર-બૉક્સીસ)\n1. [પ્રકાર તૂટેલી છબીઓ](#પ્રકાર-તૂટેલી-છબીઓ)\n1. [વાપરવ `rem` માટે વૈશ્વિક કદ બદલવાનું; વાપરવ `em` માટે સ્થાનિક કદ બદલવાનું](#વાપરવ-rem-માટે-વૈશ્વિક-કદ-બદલવાનું-વાપરવ-em-માટે-સ્થાનિક-કદ-બદલવાનું)\n1. [છુપાવો ઑટોપ્લે વિડિઓઝ તે નથ ચૂપ](#છુપાવો-ઑટોપ્લે-વિડિઓઝ-તે-નથ-ચૂપ)\n1. [વાપરવ `:root` માટે Flexible Type](#વાપરવ-root-માટે-flexible-type)\n1. [સેટ `font-size` on ફોર્મ તત્વો માટે a બેટર મોબાઇલ અનુભવ](#સેટ-font-size-on-ફોર્મ-તત્વો-માટે-a-બેટર-મોબાઇલ-અનુભવ)\n1. [માઉસ ઇવેન્ટ્સ નિયંત્રણ કરવા માટે પોઇન્ટર ઇવેન્ટ્સનો ઉપયોગ કરો](#માઉસ-ઇવેન્ટ્સ-નિયંત્રણ-કરવા-માટે-પોઇન્ટર-ઇવેન્ટ્સનો-ઉપયોગ-કરો)\n1. [અંતર `display: none` તરીકે વપરાયેલ લાઇન બ્રેક્સ પર સેટ કરો](#અંતર-display-none-તરીકે-વપરાયેલ-લાઇન-બ્રેક્સ-પર-સેટ-કરો)\n\n\n### વાપરવ a CSS રીસેટ \n\nસીએસએસ રીસેટ્સ સ્ટાઇલ ઘટકો માટે સ્વચ્છ સ્લેટ સાથે વિવિધ બ્રાઉઝર્સમાં સ્ટાઇલ સુસંગતતાને અમલમાં મૂકવા માટે મદદ કરે છે. તમે જેમ કે CSS રીસેટ લાઇબ્રેરીનો ઉપયોગ કરી શકો છો [Normalize](http://necolas.github.io/normalize.css/), _et al._, અથવા તમે વધુ સરળ રીસેટ અભિગમનો ઉપયોગ કરી શકો છો:\n\n```css\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n```\n\nહવે તત્વો માર્જિન અને પેડિંગની છીનવી લેવામાં આવશે, અને `box-sizing` તમે સીએસએસ બોક્સ મોડેલ સાથે લેઆઉટ મેનેજ કરી શકો છો.\n\n#### [પ્રદર્શન](http://codepen.io/AllThingsSmitty/pen/kkrkLL)\n\n**નોટ:** જો તમે અનુસરશો તો [Inherit `box-sizing`](#inherit-box-sizing) નીચે ટીપ તમે નીચેની શામેલ ન કરવાનું પસંદ કરી શકો છો `box-sizing` મિલકત માં  તમારા CSS રીસેટ .\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### વારસો `box-sizing`\n\nપરવાનગી આપો `box-sizing` માંથી વારસામાં આવશે `html`:\n\n```css\nhtml {\n  box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: inherit;\n}\n```\n\nઆનાથી ફેરફાર કરવાનું સરળ બને છે `box-sizing` પ્લગઇન્સ અથવા અન્ય ઘટકોમાં લીવરેજ કે અન્ય વર્તન.\n\n#### [પ્રદર્શન](https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/)\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### બધા ગુણધર્મોને ફરીથી સેટ કરવાને બદલે 'અનસેટ' નો ઉપયોગ કરો\n\nતત્વના ગુણધર્મોને ફરીથી સેટ કરતી વખતે, પ્રત્યેક વ્યક્તિગત સંપત્તિને ફરીથી સેટ કરવું જરૂરી નથી:\n\n```css\nbutton {\n  background: none;\n  border: none;\n  color: inherit;\n  font: inherit;\n  outline: none;\n  padding: 0;\n}\n```\n\nતમે 'બધા' લઘુલિપિનો ઉપયોગ કરીને એક તત્વની તમામ ગુણધર્મોને સ્પષ્ટ કરી શકો છો. `અનસેટ` માટે મૂલ્યને સેટ કરવાથી એક ઘટકના ગુણધર્મોને તેમની પ્રારંભિક મૂલ્યોમાં બદલાય છે:\n\n```css\nbutton {\n  all: unset;\n}\n```\n\n**નોંધ:** આઇ 11 માં `all` અને` અનસેટ` શોર્ટહેન્ડ સપોર્ટેડ નથી.\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### વાપરવ `:not()` અરજી / અનપ્પેલી કરવા માટે નેવિગેશન પર બોર્ડર્સ\n\nતેના બદલે નો મૂકવા સરહદ પર...\n\n```css\n/* add border */\n.nav li {\n  border-right: 1px solid #666;\n}\n```\n\n...અને પછી તે છેલ્લા તત્વ બોલ લેવા...\n\n```css\n/* remove border */\n.nav li:last-child {\n  border-right: none;\n}\n```\n\n...વાપરવ `:not()` pseudo-class ફક્ત તમે ઇચ્છો તે તત્વો પર જ લાગુ કરો:\n\n```css\n.nav li:not(:last-child) {\n  border-right: 1px solid #666;\n}\n```\n\nCSS પસંદગીકાર સીમાને વ્યાખ્યાયિત કરે છે કે જે રીતે મનુષ્ય તેનું વર્ણન કરશે.\n\n#### [પ્રદર્શન](http://codepen.io/AllThingsSmitty/pen/LkymvO)\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### સ્થાનિક રીતે ફોન્ટ ઇન્સ્ટોલ કરેલું છે કે નહીં તે તપાસો\n\nતમે તપાસ કરી શકો છો કે ફોન્ટ તેને દૂરસ્થ રીતે લાવવા પહેલાં સ્થાનિક રૂપે ઇન્સ્ટોલ કરેલું છે કે નહીં, તે પણ એક સારા પ્રદર્શનની મદદ છે.\n\n```css\n@font-face {\n  font-family: \"Dank Mono\";\n  src:\n    /* Full name */\n    local(\"Dank Mono\"),\n    /* Postscript name */\n    local(\"Dank-Mono\"),\n    /* Otherwise, download it! */\n    url(\"//...a.server/fonts/DankMono.woff\");\n}\n\ncode {\n  font-family: \"Dank Mono\", system-ui-monospace;\n}\n```\n\nઆ પ્રોટીપ અને ડેમો શેર કરવા માટે એડમ આર્ગીલેને ટોપીની [મદદ](https://codepen.io/argyleink/pen/VwYJpgR).\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### ઉમેર `line-height` તરફ `body`\n\nતમારે ઉમેરવાની જરૂર નથી `line-height` to દરેક `<p>`, `<h*>`, _et al_. અલગ. તેની જગ્યાએ, તેને ઉમેરવા `body`:\n\n```css\nbody {\n  line-height: 1.5;\n}\n```\n\nઆ માર્ગ textual તત્વો શકવું બોલાવે થી `body` સરળતાથી.\n\n#### [પ્રદર્શન](http://codepen.io/AllThingsSmitty/pen/VjbdYd)\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### ફોર્મ તત્વો માટે 'ધ્યાન કેન્દ્રિત કરો' સેટ કરો\n\nદૃશ્યમાન કીબોર્ડ વપરાશકર્તાઓ પૃષ્ઠમાં કીબોર્ડ ઇવેન્ટ્સ ક્યાં જાય છે તે નિર્ધારિત કરવા પર ધ્યાન કેન્દ્રિત કરે છે. ફોર્મ ઘટકો માટે ધ્યાન કેન્દ્રિત કરો અને બ્રાઉઝરનું ડિફૉલ્ટ અમલીકરણ પછી સુસંગત રહો:\n\n```css\na:focus,\nbutton:focus,\ninput:focus,\nselect:focus,\ntextarea:focus {\n  box-shadow: none;\n  outline: #000 dotted 2px;\n  outline-offset: .05em;\n}\n```\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/ePzoOP/)\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### ઊભું કેન્દ્ર કંઈપણ\n\nના, તે કાળા જાદુ નથી, તમે ખરેખર ઊભી તત્વોને કેન્દ્રિત કરી શકો છો:\n\n```css\nhtml,\nbody {\n  height: 100%;\n  margin: 0;\n}\n\nbody {\n  -webkit-align-items: center;\n  -ms-flex-align: center;\n  align-items: center;\n  display: -webkit-flex;\n  display: flex;\n}\n``\n...અને CSS ગ્રીડ સાથે પણ:\n\n```css\nbody {\n  display: grid;\n  height: 100vh;\n  margin: 0;\n  place-items: center center;\n}\n````\n\nકેન્દ્ર માંગો છો કંઈક બીજું? વર્ટિકલ, આડા...કંઈપણ, કોઈપણ સમયે, ગમે ત્યાં? CSS-Tricks has [a nice write-up](https://css-tricks.com/centering-css-complete-guide/) on કરવાનું બધા કે.\n\n#### [પ્રદર્શન](http://codepen.io/AllThingsSmitty/pen/GqmGqZ)\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### કોમા-વિભાજિત સૂચિ\n\nસૂચિ આઇટમ્સ વાસ્તવિક, અલ્પવિરામથી વિભાજીત સૂચિની જેમ દેખાય છે તે બનાવો:\n\n```css\nul > li:not(:last-child)::after {\n  content: \",\";\n}\n```\n\nવાપરવ આ `:not()` pseudo-class તેથી છેલ્લી વસ્તુમાં કોઈ અલ્પવિરામ ઉમેરવામાં આવી નથી.\n\n**નોટ:** આ ટિપ સુલભતા માટે આદર્શ નથી, ખાસ કરીને સ્ક્રીન વાચકો. અને બ્રાઉઝરમાંથી કૉપિ / પેસ્ટ CSS- જનરેટેડ સામગ્રી સાથે કામ કરતું નથી. સાવધાની સાથે આગળ વધો.\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### નકારાત્મક મદદથી વસ્તુઓ પસંદ કરો `nth-child`\n\nવાપરવ નકારાત્મક `nth-child` વસ્તુઓ પસંદ કરવા માટે CSS માં 1 દ્વારા n.\n\n```css\nli {\n  display: none;\n}\n\n/* select items 1 through 3 and display them */\nli:nth-child(-n+3) {\n  display: block;\n}\n```\n\nઅથવા, કારણ કે તમે પહેલેથી જ વિશે થોડું શીખ્યા છે [using `:not()`](#use-not-to-applyunapply-borders-on-navigation), પ્રયત્ન કરો:\n\n```css\n/* select all items except the first 3 and display them */\nli:not(:nth-child(-n+3)) {\n  display: none;\n}\n```\n\nવેલ તે ખૂબ સરળ હતું.\n\n#### [પ્રદર્શન](http://codepen.io/AllThingsSmitty/pen/WxjKZp)\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### વાપરવુ માટે SVG નો ઉપયોગ કરો\n\nચિહ્નો માટે એસવીજીનો ઉપયોગ ન કરવા માટે કોઈ કારણ નથી\n\n```css\n.logo {\n  background: url(\"logo.svg\");\n}\n```\n\nThe SVG scale is good for all resolution types and it is supported in all browsers [back to IE9](http://caniuse.com/#search=svg). તેથી છુટકારો મેળવવા .png, .jpg, or .gif-jif-whatev ફાઈલો.\n\n**નોટ:** જો તમારી પાસે SVG આઇકોન-માત્ર બટનો છે અને જોવામાં આવેલાં વપરાશકર્તાઓ માટે SVG લોડ કરવામાં નિષ્ફળ જાય, તો તે એક્સેસીબિલીટી જાળવી રાખવામાં મદદ કરશે.:\n\n```css\n.no-svg .icon-only::after {\n  content: attr(aria-label);\n}\n```\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછ](#કોષ્ટક-સામગ્રીઓ)</sup>\n\n\n### આ વાપરો \"Lobotomized Owl\" પસંદગીકાર\n\nતેમાં વિચિત્ર નામ હોઈ શકે છે પરંતુ સાર્વત્રિક પસંદગીકારનો ઉપયોગ કરી શકો છો (`*`) અડીન બહેન સિલેક્ટર સાથે (`+`) શક્તિશાળી CSS ક્ષમતા પ્રદાન કરી શકે છે:\n\n```css\n* + * {\n  margin-top: 1.5em;\n}\n```\n\nઆ ઉદાહરણમાં, અન્ય ઘટકોને અનુસરતા દસ્તાવેજના પ્રવાહમાંના બધા તત્વો પ્રાપ્ત થશે `margin-top: 1.5em`.\n\nવધુ માટે \"lobotomized owl\" પસંદગીકાર, વાંચવું [Heydon Pickering's post](http://alistapart.com/article/axiomatic-css-and-lobotomized-owls) on *A List Apart*.\n\n#### [પ્રદર્શન](http://codepen.io/AllThingsSmitty/pen/grRvWq)\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### વાપરવ `max-height` શુદ્ધ માટે CSS સ્લાઇડર્સન\n\nફક્ત ઉપયોગ કરીને CSS- ફક્ત સ્લાઇડર્સનો અમલ કરો `max-height` ઓવરફ્લો છુપાયેલ સાથે:\n\n```css\n.slider {\n  max-height: 200px;\n  overflow-y: hidden;\n  width: 300px;\n}\n\n.slider:hover {\n  max-height: 600px;\n  overflow-y: scroll;\n}\n```\n\nઆ તત્વ વિસ્તરે છે `max-height` Value on hover and slider display as a result of overflow.\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### સમાન-પહોળાઈ કોષ્ટક કોષ\n\nકોષ્ટકો સાથે કામ કરવા માટે પીડા હોઈ શકે છે જેથી આનો ઉપયોગ કરીને પ્રયાસ કરો `table-layout: fixed` કોષો સમાન પહોળાઈ પર રાખો:\n\n```css\n.calendar {\n  table-layout: fixed;\n}\n```\n\nપેઇન-મુક્ત કોષ્ટક લેઆઉટ.\n\n#### [પ્રદર્શન](http://codepen.io/AllThingsSmitty/pen/jALALm)\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### છુટકારો મેળવવા માર્જિન હેક્સ સાથે Flexbox\n\nસ્તંભ ગટર સાથે કામ કરતી વખતે તમે છુટકારો મેળવી શકો છો `nth-`, `first-`, અને `last-child` હેક્સ દ્વારા ઉપયોગ કરીને flexbox's `space-between` મિલકત:\n\n```css\n.list {\n  display: flex;\n  justify-content: space-between;\n}\n\n.list .person {\n  flex-basis: 23%;\n}\n```\n\nહવે સ્તંભ ગટર હંમેશા સરખે ભાગે-અંતરે દેખાય છે.\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### વાપરવ એટ્રીબ્યુટ પસંદગીકારો સાથે ખાલી કડીઓ\n\nલિંક્સ દર્શાવો જ્યારે `<a>` તત્વ કોઈ લખાણ કિંમત નથી પરંતુ `href` લક્ષણ એક લિંક છે:\n\n```css\na[href^=\"http\"]:empty::before {\n  content: attr(href);\n}\n```\n\nતે ખૂબ અનુકૂળ છે\n\n#### [પ્રદર્શન](http://codepen.io/AllThingsSmitty/pen/zBzXRx)\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### પ્રકાર \"Default\" કડીઓ\n\nમાટે એક શૈલી ઉમેરો \"default\" લિંક્સ:\n\n```css\na[href]:not([class]) {\n  color: #008000;\n  text-decoration: underline;\n}\n```\n\nહવે લિંક્સ કે જે CMS દ્વારા દાખલ કરવામાં આવે છે, જે સામાન્ય રીતે એક નથી `class` એટ્રિબ્યુટ, સામાન્ય રીતે કાસ્કેડને અસર કરતા વગર ભેદ રાખશે.\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### આંતરિક ગુણોત્તર બૉક્સીસ\n\nસ્વભાવિક રેશિયો સાથે બૉક્સ બનાવવા માટે, તમારે ફક્ત ટોચ અથવા તળિયે ગાદીને DIV પર લાગુ કરવાની જરૂર છે:\n\n```css\n.container {\n  height: 0;\n  padding-bottom: 20%;\n  position: relative;\n}\n\n.container div {\n  border: 2px dashed #ddd;\n  height: 100%;\n  left: 0;\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n```\n\nપેડિંગ માટે 20% નો ઉપયોગ કરીને તેના પહોળાઈના 20% જેટલા બૉક્સની ઊંચાઇને બનાવે છે. કોઈ  વ્યૂપોર્ટની પહોળાઇ, બાળક ડિવ તેના પાસા રેશિયો રાખશે (100% / 20% = 5:1).\n\n#### [પ્રદર્શન](http://codepen.io/AllThingsSmitty/pen/jALZvE)\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### પ્રકાર તૂટેલી છબીઓ\n\nતૂટેલી તસવીરો CSS ના થોડુંક સાથે વધુ સૌંદર્યલક્ષી-આનંદી બનાવો:\n\n```css\nimg {\n  display: block;\n  font-family: sans-serif;\n  font-weight: 300;\n  height: auto;\n  line-height: 2;\n  position: relative;\n  text-align: center;\n  width: 100%;\n}\n```\n\nહવે ઉમેરો pseudo-elements તૂટેલી છબીના વપરાશકર્તા સંદેશ અને URL સંદર્ભને પ્રદર્શિત કરવાના નિયમો:\n\n```css\nimg::before {\n  content: \"We're sorry, the image below is broken :(\";\n  display: block;\n  margin-bottom: 10px;\n}\n\nimg::after {\n  content: \"(url: \" attr(src) \")\";\n  display: block;\n  font-size: 12px;\n}\n```\n\nઆ પેટર્ન માટે સ્ટાઇલ વિશે વધુ જાણો [Ire Aderinokun](https://github.com/ireade/)'s [original post](http://bitsofco.de/styling-broken-images/).\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### વાપરવ `rem` માટે વૈશ્વિક કદ બદલવાનું; વાપરવ `em` માટે સ્થાનિક કદ બદલવાનું\n\nરુટ પર મૂળ ફોન્ટ માપ સુયોજિત કર્યા પછી (`html { font-size: 100%; }`), શાબ્દિક તત્વો માટે ફૉન્ટનું કદ સેટ કરો `em`:\n\n```css\nh2 {\n  font-size: 2em;\n}\n\np {\n  font-size: 1em;\n}\n```\n\nપછી મોડ્યુલો માટે ફૉન્ટ-કદ સેટ કરો to `rem`:\n\n```css\narticle {\n  font-size: 1.25rem;\n}\n\naside .module {\n  font-size: .9rem;\n}\n```\n\nહવે દરેક મોડ્યુલ શ્રેણીબદ્ધ અને સરળ, વધુ નિભાવવા યોગ્ય અને લવચીક બની જાય છે.\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### છુપાવો ઑટોપ્લે વિડિઓઝ તે નથ ચૂપ\n\nઆ વૈવિધ્યપૂર્ણ વપરાશકર્તા સ્ટાઇલશીટ માટે એક મહાન યુક્તિ છે. એક વપરાશકર્તા દ્વારા અવાજ સાથે ઓવરલોડિંગ કરવાનું ટાળો, જે જ્યારે પૃષ્ઠ લોડ થાય ત્યારે ઑટોપ્લે કરે છે. જો અવાજ મૌન નથી, તો વિડિઓ બતાવશો નહીં:\n\n```css\nvideo[autoplay]:not([muted]) {\n  display: none;\n}\n```\n\nફરી એક વાર, અમે આનો ઉપયોગ કરીને લાભ લઈ રહ્યાં છીએ [`:not()`](#use-not-to-applyunapply-borders-on-navigation) pseudo-class.\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### વાપરવ `:root` માટે Flexible Type\n\nએક પ્રતિસાદિત લેઆઉટમાં ટાઇપ ફૉન્ટનું કદ દરેક વ્યૂપોર્ટ સાથે વ્યવસ્થિત થવું જોઈએ. તમે ઉપયોગ કરીને વ્યૂપોર્ટની ઊંચાઈ અને પહોળાઈના આધારે ફોન્ટ કદની ગણતરી કરી શકો છો `:root`:\n\n```css\n:root {\n  font-size: calc(1vw + 1vh + .5vmin);\n}\n```\n\nહવે તમે આ ઉપયોગ શ `root em` દ્વારા ગણવામાં આવેલ કિંમત પર આધારિત એકમ `:root`:\n\n```css\nbody {\n  font: 1rem/1.6 sans-serif;\n}\n```\n\n#### [પ્રદર્શન](http://codepen.io/AllThingsSmitty/pen/XKgOkR)\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### સેટ `font-size` on ફોર્મ તત્વો માટે a બેટર મોબાઇલ અનુભવ\n\nમોબાઇલ બ્રાઉઝર્સને ટાળવા માટે (iOS Safari, _et al_.) થી ઝુમિંગ HTML ફોર્મ એલિમેન્ટ્સ પર જ્યારે એક `<select>` ડ્રોપ ડાઉન ટેપ થયેલ છે, ઉમેરો `font-size` to the selector rule:\n\n```css\ninput[type=\"text\"],\ninput[type=\"number\"],\nselect,\ntextarea {\n  font-size: 16px;\n}\n```\n\n:dancer:\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### માઉસ ઇવેન્ટ્સ નિયંત્રણ કરવા માટે પોઇન્ટર ઇવેન્ટ્સનો ઉપયોગ કરો\n\n[પોઇન્ટર ઇવેન્ટ્સ](https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events) તમને સ્પષ્ટ કરવા માટે પરવાનગી આપે છે કે માઉસ કેવી રીતે તૃપ્તિ સાથે સંપર્ક કરે છે. બટનો પર ડિફૉલ્ટ પોઇન્ટર ઇવેન્ટને અક્ષમ કરવા માટે, ઉદાહરણ તરીકે:\n\n```css\nbutton:disabled {\n  opacity: .5;\n  pointer-events: none;\n}\n```\n\nતે સરળ છે.\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n### અંતર `display: none` તરીકે વપરાયેલ લાઇન બ્રેક્સ પર સેટ કરો\n\n[હેરી રોબર્ટ્સે નિર્દેશ કર્યો](https://twitter.com/csswizardry/status/1170835532584235008), આ સીએમએસ વપરાશકર્તાઓને અંતર માટે વધારાના લાઇન બ્રેકનો ઉપયોગ કરવાથી અટકાવી શકે છે:\n\n```css\nbr + br {\n  display: none;\n}\n```\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n\n\n## આધાર\n\nવર્તમાન આવૃત્તિઓ of Chrome, Firefox, Safari, અને Edge.\n\n<sup>[સામગ્રીઓના કોષ્ટકમાં પાછા](#પ્રોપ્સ)</sup>\n"
  },
  {
    "path": "translations/it-IT/README.md",
    "content": "<p align=\"center\">\n  <img src=\"../../assets/img/bulb.svg\" alt=\"light bulb icon\">\n</p>\n\n# CSS suggerimenti per esperti [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\nUna collezione di dritte per aiutarti a migliorare le tue capacità con CSS.\n\n> Per altre fantastiche liste di questo tipo guarda la [lista di fantastiche liste](https://github.com/sindresorhus/awesome/) curata da [@sindresorhus](https://github.com/sindresorhus/).\n\n\n## Sommario\n\n* [Suggerimenti per esperti](#suggerimenti-per-esperti)\n* [Supporto](#supporto)\n* [Linee guida per contribuire](../../CONTRIBUTING.md)\n\n\n## Suggerimenti per esperti\n\n1. [Utilizzare un reset CSS](#utilizzare-un-reset-css)\n1. [Eredita il `box-sizing`](#eredita-il-box-sizing)\n1. [Usa `unset` invece di Reimposta tutte le proprietà](#usa-unset-invece-di-reimposta-tutte-le-proprietà)\n1. [Usa `:not()` per applicare/rimuovere-i-bordi-su-elementi-di-navigazione](#usa-not-per-applicarerimuovere-i-bordi-su-elementi-di-navigazione)\n1. [Controlla se il font è installato localmente](#controlla-se-il-font-è-installato-localmente)\n1. [Aggiungi `line-height` al `body`](#aggiungi-line-height-al-body)\n1. [Imposta `:focus` per gli elementi del modulo](#imposta-focus-per-gli-elementi-del-modulo)\n1. [Centra verticalmente qualsiasi cosa](#centra-verticalmente-qualsiasi-cosa)\n1. [Liste separate da virgola](#liste-separate-da-virgola)\n1. [Seleziona un elemento usando gli `nth-child` negativi](#seleziona-un-elemento-usando-gli-nth-child-negativi)\n1. [Usa SVG per le icone](#usa-svg-per-le-icone)\n1. [Usa il selettore detto \"Lobotomized Owl\"](#usa-il-selettore-detto-\"lobotomized-owl\")\n1. [Usa `max-height` per slider fatti solo con CSS](#usa-max-height-per-slider-fatti-solo-con-css)\n1. [Celle di tabella con larghezza uguale](#celle-di-tabella-con-larghezza-uguale)\n1. [Sbarazzati degli hack sui margini grazie a Flexbox](#sbarazzati-degli-hack-sui-margini-grazie-a-flexbox)\n1. [Usa il selettore d'attributo con i link senza testo](#usa-il-selettore-d'attributo-con-i-link-senza-testo)\n1. [Styling dei link di \"Default\"](#styling-dei-link-di-\"default\")\n1. [Box con proporzioni intrinseche](#box-con-proporzioni-intrinseche)\n1. [Styling delle immagini non scaricate](#styling-delle-immagini-non-scaricate)\n1. [Usa `rem` per le grandezze globali; usa `em` per le dimensioni locali](#usa-rem-per-le-grandezze-globali;-usa-em-per-le-dimensioni-locali)\n1. [Nascondi i video in riproduzione automatica che non sono silenziati](#nascondi-i-video-in-riproduzione-automatica-che-non-sono-silenziati)\n1. [Usa `:root` per caratteri flessibili](#usa-:root-per-caratteri-flessibili)\n1. [Imposta il `font-size` sugli elementi dei form per una migliore esperienza da mobile](#imposta-il-font-size-sugli-elementi-dei-form-per-una-migliore-esperienza-da-mobile)\n1. [Utilizzare gli eventi puntatore per controllare gli eventi del mouse](#utilizzare-gli-eventi-puntatore-per-controllare-gli-eventi-del-mouse)\n1. [Imposta `display: none` su Line Breaks usati come Spaziatura](#imposta-display:-none-su-line-breaks-usati-come-spaziatura)\n\n\n### Utilizzare un reset CSS\n\nreset CSS aiutare a far rispettare lo stile coerenza tra diversi browser da zero per gli elementi stilistici. È possibile utilizzare libreria di reset CSS come [Normalize](http://necolas.github.io/normalize.css/), et al, oppure è possibile utilizzare un approccio più semplificato di ripristino.:\n\n```css\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n```\n\nOra elementi saranno spogliati di margini e padding, e `box-sizing` consente di gestire i layout con il box model CSS.\n\n#### [Dimostrazione](http://codepen.io/AllThingsSmitty/pen/kkrkLL)\n\n**Nota:** Se si segue la punta [Eredita il `box-sizing`](#inherit-box-sizing) in basso si potrebbe optare di non includere la proprietà box-sizing nel ripristino CSS.\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Eredita il `box-sizing`\n\nEredita il `box-sizing` dall'elemento `html`:\n\n```css\nhtml {\n  box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: inherit;\n}\n```\n\nIn questo modo diventa più facile cambiare `box-sizing` in plugin o altri componenti che ne sfruttano un altro.\n\n#### [Dimostrazione](https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/)\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Usa `unset` invece di Reimposta tutte le proprietà\n\nQuando si ripristinano le proprietà di un elemento, non è necessario reimpostare ogni singola proprietà:\n\n```css\nbutton {\n  background: none;\n  border: none;\n  color: inherit;\n  font: inherit;\n  outline: none;\n  padding: 0;\n}\n```\n\nPuoi specificare tutte le proprietà di un elemento usando la stenografia `all`. L'impostazione del valore su `unset` modifica le proprietà di un elemento ai valori iniziali:\n\n```css\nbutton {\n  all: unset;\n}\n```\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Usa `:not()` per applicare/rimuovere i bordi su elementi di navigazione\n\nInvece di impostare il bordo...\n\n```css\n/* aggiunge il bordo */\n.nav li {\n  border-right: 1px solid #666;\n}\n```\n\n...e poi rimuoverlo dall'ultimo elemento...\n\n```css\n/* rimuove il bordo */\n.nav li:last-child {\n  border-right: none;\n}\n```\n\n...usa la pseudo classe `:not()` per applicarlo solo agli elementi che vuoi:\n\n```css\n.nav li:not(:last-child) {\n  border-right: 1px solid #666;\n}\n```\n\nIl selettore CSS definisce il confine nel modo in cui un essere umano lo descrive.\n\n#### [Dimostrazione](http://codepen.io/AllThingsSmitty/pen/LkymvO)\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Controlla se il font è installato localmente\n\nPuoi verificare se un font è installato localmente prima di recuperarlo da remoto, il che è anche un buon suggerimento per le prestazioni.\n\n```css\n@font-face {\n  font-family: \"Dank Mono\";\n  src:\n    /* Full name */\n    local(\"Dank Mono\"),\n    /* Postscript name */\n    local(\"Dank-Mono\"),\n    /* Otherwise, download it! */\n    url(\"//...a.server/fonts/DankMono.woff\");\n}\n\ncode {\n  font-family: \"Dank Mono\", system-ui-monospace;\n}\n```\n\nPunta del cappello ad Adam Argyle per aver condiviso questo prototipo e questa [dimostrazione](https://codepen.io/argyleink/pen/VwYJpgR).\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Aggiungi `line-height` al `body`\n\nNon è necessario aggiungere `line-height` a ogni `<p> `,`<h *>`, _et al_. separatamente. Invece, aggiungilo a `body`:\n\n\n```css\nbody {\n  line-height: 1.5;\n}\n```\n\nIn questo modo gli elementi di testo possono ereditare facilmente da `body`.\n\n#### [Dimostrazione](http://codepen.io/AllThingsSmitty/pen/VjbdYd)\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Imposta `:focus` per gli elementi del modulo\n\nGli utenti con tastiera a vista si affidano alla messa a fuoco per determinare dove vanno gli eventi della tastiera nella pagina. Fai attenzione agli elementi del modulo che si distinguono e coerenti rispetto all'implementazione predefinita del browser:\n\n```css\na:focus,\nbutton:focus,\ninput:focus,\nselect:focus,\ntextarea:focus {\n  box-shadow: none;\n  outline: #000 dotted 2px;\n  outline-offset: .05em;\n}\n```\n\n#### [Dimostrazione](https://codepen.io/AllThingsSmitty/pen/ePzoOP/)\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Centra verticalmente qualsiasi cosa\n\nNo, non è magia nera. Puoi veramente centrare gli elementi verticalmente:\n\n```css\nhtml,\nbody {\n  height: 100%;\n  margin: 0;\n}\n\nbody {\n  -webkit-align-items: center;\n  -ms-flex-align: center;\n  align-items: center;\n  display: -webkit-flex;\n  display: flex;\n}\n```\n\n...e anche con CSS Grid:\n\n```css\nbody {\n  display: grid;\n  height: 100vh;\n  margin: 0;\n  place-items: center center;\n}\n```\n\nVuoi centrare qualcos'altro? In verticale, in orizzontale... qualsiasi cosa, in qualsiasi momento ovunque? Su CSS-Tricks trovi [un ottimo articolo](https://css-tricks.com/centering-css-complete-guide/) a riguardo.\n\n#### [Dimostrazione](http://codepen.io/AllThingsSmitty/pen/GqmGqZ)\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Liste separate da virgola\n\nVisualizza gli elementi di una lista come fossero una vera lista con le virgole:\n\n```css\nul > li:not(:last-child)::after {\n  content: \",\";\n}\n```\n\nUsa la pseudo classe `:not()` in modo da non aggiungere la virgola all'ultimo elemento.\n\n**Nota bene:** può non essere l'ideale per garantire l'accessibilità, nello specifico per gli screen reader. Inoltre il copia/incolla dal browser non funziona con il contenuto generato mediante CSS. Procedi con attenzione.\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Seleziona un elemento usando gli `nth-child` negativi\n\nUsa gli `nth-child` negativi di CSS per selezionare gli elementi da 1 a n.\n\n```css\nli {\n  display: none;\n}\n\n/* seleziona gli elementi da 1 a 3 e li mostra */\nli:nth-child(-n+3) {\n  display: block;\n}\n```\n\nOppure, dato che hai già imparato un po' di cose circa l'[uso di `:not()`](#use-not-to-applyunapply-borders-on-navigation), prova:\n\n```css\n/* selezionare tutti gli elementi tranne i primi 3 e visualizzarli */\nli:not(:nth-child(-n+3)) {\n  display: none;\n}\n```\n\nBeh... era abbastanza facile.\n\n#### [Dimostrazione](http://codepen.io/AllThingsSmitty/pen/WxjKZp)\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Usa SVG per le icone\n\nNon c'è ragione per non usare SVG per le icone:\n\n```css\n.logo {\n  background: url(\"logo.svg\");\n}\n```\n\nSVG scala molto bene a tutti i tipi di risoluzione ed è supportata in tutti i browser [fino a IE9](http://caniuse.com/#search=svg). Perciò butta i tuoi file .png, .jpg o .gif-jif-qualsiasicosa.\n\n**Nota bene:** se usi bottoni con esclusivamente grafica SVG e le icone SVG non vengono caricate, questo ti aiuterà a preservare l'accessibilità:\n\n```css\n.no-svg .icon-only::after {\n  content: attr(aria-label);\n}\n```\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Usa il selettore detto \"Lobotomized Owl\"\n\nSebbene il suo nome sia un po' strano, l'uso del selettore universale (`*`) insieme al selettore del fratello adiacente (`+`) può fornire una potenzialità CSS molto potente:\n\n```css\n* + * {\n  margin-top: 1.5em;\n}\n```\n\nIn questo esempio, tutti gli elementi nel flusso del documento che seguono altri elementi riceveranno la proprietà `margin-top: 1.5em`.\n\nPer saperne di più sul selettore detto \"lobotomized owl\", leggi [l'articolo di Heydon Pickering](http://alistapart.com/article/axiomatic-css-and-lobotomized-owls) su *A List Apart*.\n\n#### [Dimostrazione](http://codepen.io/AllThingsSmitty/pen/grRvWq)\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Usa `max-height` per slider fatti solo con CSS\n\nRealizza slider fatti solo con CSS usando `max-height` con overflow hidden:\n\n```css\n.slider {\n  max-height: 200px;\n  overflow-y: hidden;\n  width: 300px;\n}\n\n.slider:hover {\n  max-height: 600px;\n  overflow-y: scroll;\n}\n```\n\nL'elemento si espande al valore `max-height` all'hover e lo slider diventa visibile come risultato dell'overflow.\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Celle di tabella con larghezza uguale\n\nLavorare con le tabelle può dare il tormento, perciò prova a usare `table-layout: fixed` per avere celle di larghezza uguale:\n\n```css\n.calendar {\n  table-layout: fixed;\n}\n```\n\nLayout con le tabelle e senza tormento.\n\n#### [Dimostrazione](http://codepen.io/AllThingsSmitty/pen/jALALm)\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Sbarazzati degli hack sui margini grazie a Flexbox\n\nQuando lavori con gli spazi tra colonne puoi sbarazzarti di `nth-`, `first-` e `last-child` usando la proprietà `space-between` di flexbox:\n\n```css\n.list {\n  display: flex;\n  justify-content: space-between;\n}\n\n.list .person {\n  flex-basis: 23%;\n}\n```\n\nOra le colonne avranno sempre una spaziatura uniforme.\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Usa il selettore d'attributo con i link senza testo\n\nQuando l'elemento `<a>` non ha testo al suo interno ma l'attributo `href` ha un link, lo mostra:\n\n```css\na[href^=\"http\"]:empty::before {\n  content: attr(href);\n}\n```\n\nDecisamente comodo.\n\n#### [Dimostrazione](http://codepen.io/AllThingsSmitty/pen/zBzXRx)\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Styling dei link di \"Default\"\n\nAggiunge uno stile per i link \"default\":\n\n```css\na[href]:not([class]) {\n  color: #008000;\n  text-decoration: underline;\n}\n```\n\nOra i link inseriti mediante un CMS, che solitamente non hanno un attributo `class`, saranno distinti senza intaccare tutti gli altri in cascata.\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Box con proporzioni intrinseche\n\nPer creare un contenitore con proporzioni intrinseche tutto ciò che devi fare è applicare  a un div del `padding` superiore o inferiore:\n\n```css\n.container {\n  height: 0;\n  padding-bottom: 20%;\n  position: relative;\n}\n\n.container div {\n  border: 2px dashed #ddd;\n  height: 100%;\n  left: 0;\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n```\n\nUare un `padding` del 20% rende l'altezza del contenitore pari al 20% della sua larghezza. Non importa quale sia la larghezza della finestra, il div figlio manterrà le proporzioni stabilite (100% / 20% = 5:1).\n\n#### [Dimostrazione](http://codepen.io/AllThingsSmitty/pen/jALZvE)\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Styling delle immagini non scaricate\n\nRendi le immagini non scaricate più piacevoli esteticamente con un po' di CSS:\n\n```css\nimg {\n  display: block;\n  font-family: sans-serif;\n  font-weight: 300;\n  height: auto;\n  line-height: 2;\n  position: relative;\n  text-align: center;\n  width: 100%;\n}\n```\n\nOra aggiungi le regole per gli pseudo elementi al fine di mostrare un messaggio e un riferimento URL dell'immagine non scaricata:\n\n```css\nimg::before {\n  content: \"Siamo spiacenti, l'immagine non è stata scaricata. :(\";\n  display: block;\n  margin-bottom: 10px;\n}\n\nimg::after {\n  content: \"(url: \" attr(src) \")\";\n  display: block;\n  font-size: 12px;\n}\n```\n\nUlteriori informazioni sullo styling secondo questo pattern nell'[articolo](http://bitsofco.de/styling-broken-images/) di [Ire Aderinokun](https://github.com/ireade/).\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Usa `rem` per le grandezze globali; usa `em` per le dimensioni locali\n\nDopo avere impostato la dimensione di base del font sull'elemento root (`html { font-size: 100%; }`), imposta la dimensione del font per gli elementi testuali con `em`:\n\n```css\nh2 {\n  font-size: 2em;\n}\n\np {\n  font-size: 1em;\n}\n```\n\nPoi imposta il font-size per i moduli con `rem`:\n\n```css\narticle {\n  font-size: 1.25rem;\n}\n\naside .module {\n  font-size: .9rem;\n}\n```\n\nA questo punto ogni modulo diventa compartimentalizzato, più facile da modellare, più manutenibile e più flessibile.\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Nascondi i video in riproduzione automatica che non sono silenziati\n\nQuesto è un fantastico trucchetto per un foglio di stile personalizzato per un utente. Evita di sovraccaricare un utente col suono di un video che parte in riproduzione automatica quando la pagina viene caricata. Se il suono non è disabilitato non mostrare il video:\n\n```css\nvideo[autoplay]:not([muted]) {\n  display: none;\n}\n```\n\nAncora una volta stiamo sfruttando la pseudo classe [`:not()`](#use-not-to-applyunapply-borders-on-navigation).\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Usa `:root` per caratteri flessibili\n\nIn un layout responsive la grandezza del carattere dovrebbe essere in grado di adattarsi a ogni risoluzione. Puoi calcolare la dimensione del font basandoti sull'altezza e sulla larghezza della finestra usando `:root`:\n\n```css\n:root {\n  font-size: calc(1vw + 1vh + .5vmin);\n}\n```\n\nAdesso puoi usare l'unità basata su `root em` sul valore calcolato da `:root`:\n\n```css\nbody {\n  font: 1rem/1.6 sans-serif;\n}\n```\n\n#### [Dimostrazione](http://codepen.io/AllThingsSmitty/pen/XKgOkR)\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Imposta il `font-size` sugli elementi dei form per una migliore esperienza da mobile\n\nPer evitare lo zoom sugli elementi dei form dai browser mobile (iOS Safari, _et al_.) quando si tocca una `<select>`, aggiungi `font-size` alle regole del selettore:\n\n```css\ninput[type=\"text\"],\ninput[type=\"number\"],\nselect,\ntextarea {\n  font-size: 16px;\n}\n```\n\n:dancer:\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Utilizzare gli eventi puntatore per controllare gli eventi del mouse\n\n[Eventi puntatore](https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events) consentono di specificare come il mouse interagisce con l'elemento che sta toccando. Per disabilitare l'evento puntatore predefinito su un pulsante, ad esempio:\n\n```css\nbutton:disabled {\n  opacity: .5;\n  pointer-events: none;\n}\n```\n\nÈ così semplice.\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n### Imposta `display: none` su Line Breaks usati come Spaziatura\n\nCome [Harry Roberts ha sottolineato](https://twitter.com/csswizardry/status/1170835532584235008), questo può aiutare a impedire agli utenti CMS di utilizzare interruzioni di riga aggiuntive per la spaziatura:\n\n```css\nbr + br {\n  display: none;\n}\n```\n\n<sup>[torna al sommario](#sommario)</sup>\n\n\n## Supporto\n\nLe attuali versioni di Chrome, Firefox, Safari, ed Edge."
  },
  {
    "path": "translations/ja-JP/README.md",
    "content": "<p align=\"center\">\n  <img src=\"../../assets/img/bulb.svg\" alt=\"light bulb icon\">\n</p>\n\n# CSSの便利な小技・テクニックのまとめ [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\nCSSのプロのスキルになるようにアドバイスのリストを紹介します。\n\n> 他のリストのため： [Awesome リスト](https://github.com/sindresorhus/awesome/)　の　[@sindresorhus](https://github.com/sindresorhus/)　をチェックSしてください。.\n\n\n<div id=\"table-of-contents\"></div>\n\n## 目次\n\n* [プロチップス](#protips)\n* [サポート](#soutien)\n* [参考](#references)\n* [コントリビュート](../../CONTRIBUTING.md)\n\n\n<div id=\"protips\"></div>\n\n##  プロチップス\n\n1. [CSSのリセットを使用します](#use-a-css-reset)\n1. [box-sizingをコンポーネントごとに変更](#inherit-box-sizing)\n1. [すべてのプロパティをリセットする代わりに `unset`を使う](#use-unset-instead-of-resetting-all-properties)\n1. [`:not()` を使用 / ボーダーを削除](#use-not-to-applyunapply-borders-on-navigation)\n1. [フォントがローカルにインストールされているかどうかを確認します](#check-if-font-is-installed-locally)\n1. [`body`に`line-height`を加える](#add-line-height-to-body)\n1. [フォーム要素に `：focus`を設定する](#set-focus-for-form-elements)\n1. [天地の中央に配置](#vertically-center-anything)\n1. [リストをカンマ区切りにする](#comma-separated-lists)\n1. [ネガティブな「:nth-child」を使用してアイテムを選択](#select-items-using-negative-nth-child)\n1. [SVGのアイコン](#use-svg-for-icons)\n1. [Owlを使用](#use-the-lobotomized-owl-selector)\n1. [CSSで実装されたスライダーにはmax-heightを使う](#use-max-height-for-pure-css-sliders)\n1. [テーブルのセルの幅を均等にする](#equal-width-table-cells)\n1. [Flexboxのマージンハックを取り除く](#get-rid-of-margin-hacks-with-flexbox)\n1. [リンクにテキストが無い時はURLを表示](#use-attribute-selectors-with-empty-links)\n1. [デフォルトのリンクをスタイル](#style-default-links)\n1. [内在比率のボックス](#intrinsic-ratio-boxes)\n1. [リンク切れの画像要素をスタイル](#style-broken-images)\n1. [グローバルのサイズ指定に「rem」、ローカルに「em」を使用](#use-rem-for-global-sizing-use-em-for-local-sizing)\n1. [動画の自動再生を隠す](#hide-autoplay-videos-that-arent-muted)\n1. [フレクシブルタイプの`:root`を使用](#use-root-for-flexible-type)\n1. [スマホ向け、フォーム要素のフォントサイズの設定](#set-font-size-on-form-elements-for-a-better-mobile-experience)\n1. [ポインターイベントを使用してマウスイベントを制御する](#use-pointer-events-to-control-mouse-events)\n1. [間隔として使用される改行に「display：none」を設定します](#set-display-none-on-line-breaks-being-used-as-spacing)\n\n\n<div id=\"use-a-css-reset\"></div>\n\n### CSSのリセットを使用します\n\nCSSのリセットはスタイリング要素のための白紙の状態で異なるブラウザ間でスタイルの一貫性を強化するのに役立ちます。あなたは[Normalize](http://necolas.github.io/normalize.css/)、_et al._のようにCSSのリセットライブラリを使用するか、より簡略化リセットアプローチを使用することができます。\n\n```css\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n```\n\n今の要素は、マージンやパディングを剥奪し、`box-sizing`は、CSSボックスモデルとレイアウトを管理することができますされます。\n\n#### [デモ](http://codepen.io/AllThingsSmitty/pen/kkrkLL)\n\n**注意：**あなたがあなたのCSSのリセットで[Inherit `box-sizing`](#inherit-box-sizing) プロパティが含まれていないことを選択する可能性があります下に`box-sizing`ヒントに従っている場合。\n\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"inherit-box-sizing\"></div>\n\n### `box-sizing`をコンポーネントごとに変更\n\n`box-sizing`はhtml要素で指定し、継承して利用すると、コンポーネントで変える時に簡単です。\n\n```css\nhtml {\n  box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: inherit;\n}\n\n```\n\nこれでプラグインかその他のコンポーネントに `box-sizing` を変更しやすくなります。\n\n#### [デモ](https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/)\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"use-unset-instead-of-resetting-all-properties\"></div>\n\n### すべてのプロパティをリセットする代わりに `unset`を使う\n\n要素のプロパティをリセットするときは、個々のプロパティをリセットする必要はありません。\n\n```css\nbutton {\n  background: none;\n  border: none;\n  color: inherit;\n  font: inherit;\n  outline: none;\n  padding: 0;\n}\n```\n\n要素のプロパティのすべてを `all`省略形で指定することができます。 値を `unset`に設定すると、要素のプロパティが初期値に変更されます：\n\n```css\nbutton {\n  all: unset;\n}\n```\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"use-not-to-applyunapply-borders-on-navigation\"></div>\n\n### `:not()`を使用して、リスト要素で実装したナビゲーションの最後のアイテムだけに区切り線を削除します。\n\nボーダーを書いて。。。\n\n```css\n/* add border */\n.nav li {\n  border-right: 1px solid #666;\n}\n```\n\nラストチャイルドで非表示するより\n\n```css\n/* remove border */\n.nav li:last-child {\n  border-right: none;\n}\n```\n\n`:not()`を使用するとシンプルなコードで指定できます。\n\n```css\n.nav li:not(:last-child) {\n  border-right: 1px solid #666;\n}\n```\n\nCSSセレクターは、境界線を人間が表現する方法で定義します。\n\n#### [デモ](http://codepen.io/AllThingsSmitty/pen/LkymvO)\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"check-if-font-is-installed-locally\"></div>\n\n### フォントがローカルにインストールされているかどうかを確認します\n\nフォントをリモートでフェッチする前に、フォントがローカルにインストールされているかどうかを確認できます。これもパフォーマンスのヒントになります。\n\n```css\n@font-face {\n  font-family: \"Dank Mono\";\n  src:\n    /* Full name */\n    local(\"Dank Mono\"),\n    /* Postscript name */\n    local(\"Dank-Mono\"),\n    /* Otherwise, download it! */\n    url(\"//...a.server/fonts/DankMono.woff\");\n}\n\ncode {\n  font-family: \"Dank Mono\", system-ui-monospace;\n}\n```\n\nこのプロチップと[デモ](https://codepen.io/argyleink/pen/VwYJpgR)を共有してくれたAdam Argyleへの帽子のヒント.\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"add-line-height-to-body\"></div>\n\n### `body` に`line-height`を加える\n\n`body`要素で`line-height`を指定することで`p`, `h*`などにその値が継承されるため、それぞれに`line-height`を指定する必要がなくなります。\n\n```css\nbody {\n  line-height: 1.5;\n}\n```\n\n#### [デモ](http://codepen.io/AllThingsSmitty/pen/VjbdYd)\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"set-focus-for-form-elements\"></div>\n\n### フォーム要素に `：focus`を設定する\n\n視認されたキーボードユーザーは、キーボードイベントがページ内のどこに移動するかを決定するためにフォーカスを当てています。 フォーム要素のフォーカスを目立たせ、ブラウザのデフォルトの実装と一貫性を持たせる：\n\n```css\na:focus,\nbutton:focus,\ninput:focus,\nselect:focus,\ntextarea:focus {\n  box-shadow: none;\n  outline: #000 dotted 2px;\n  outline-offset: .05em;\n}\n```\n\n#### [デモ](https://codepen.io/AllThingsSmitty/pen/ePzoOP/)\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"vertically-center-anything\"></div>\n\n### 天地の中央に配置\n\nなんでも天地の中央に配置できます！！\n\n```css\nhtml,\nbody {\n  height: 100%;\n  margin: 0;\n}\n\nbody {\n  -webkit-align-items: center;  \n  -ms-flex-align: center;  \n  align-items: center;\n  display: -webkit-flex;\n  display: flex;\n}\n```\n\n...CSSグリッド:\n\n```css\nbody {\n  display: grid;\n  height: 100vh;\n  margin: 0;\n  place-items: center center;\n}\n```\n\nなんでも中央に揃いたいですか？ CSS-Tricks の[セントリングガイド](https://css-tricks.com/centering-css-complete-guide/) をチェックしてください。\n\n#### [デモ](http://codepen.io/AllThingsSmitty/pen/GqmGqZ)\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"comma-separated-lists\"></div>\n\n### リストをカンマ区切りにする\n\nリストの各アイテムをカンマ区切りにします。\n\n```css\nul > li:not(:last-child)::after {\n  content: \",\";\n}\n```\n\n`:not()` を使えば最後のエレメントにカンマ追加されないようにします。\n\n**備考:** アクセシビリティによくないので気をつけてをお使いください。\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"select-items-using-negative-nth-child\"></div>\n\n### ネガティブな `:nth-child` を使用してアイテムを選択\n\n`nth-child`にはネガティブな値も指定できます。\n\n```css\nli {\n  display: none;\n}\n\n/* select items 1 through 3 and display them */\nli:nth-child(-n+3) {\n  display: block;\n}\n```\n\nまた [`:not()`](#use-not-to-applyunapply-borders-on-navigation)　を使用してこちらをのコードを書いてみてください：\n\n```css\n/* select all items except the first 3 and display them */\nli:not(:nth-child(-n+3)) {\n  display: none;\n}\n```\n\n簡単でしょう〜！\n\n#### [デモ](http://codepen.io/AllThingsSmitty/pen/WxjKZp)\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"use-svg-for-icons\"></div>\n\n### SVGのアイコン\n\nアイコンとしてSVGを使えない理由がないです！\n\n```css\n.logo {\n  background: url(\"logo.svg\");\n}\n```\n\nSVGは [IE9](http://caniuse.com/#search=svg)以降のすべてのブラウザでサポートされています。\n\n**備考:** ボタンがSVGだけで作られている場合、SVGがローディングされなかったらアクセシビリティのためこちらのコードを書いて見てください:\n\n```css\n.no-svg .icon-only::after {\n  content: attr(aria-label);\n}\n```\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"use-the-lobotomized-owl-selector\"></div>\n\n### Owlを使用\n\n変な名前ですが(`*`) と (`+`) を使用するとパワフルCSSセレクターになります！\n\n```css\n* + * {\n  margin-top: 1.5em;\n}\n```\n\n全てのページの要素にある要素が`margin-top: 1.5em`をもらいます。\n\nOwlについて詳しくはこちら：*List Apart* の[ヘイドンピケリングの記事](http://alistapart.com/article/axiomatic-css-and-lobotomized-owls)\n\n#### [デモ](http://codepen.io/AllThingsSmitty/pen/XKgOkR)\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"use-max-height-for-pure-css-sliders\"></div>\n\n### CSSで実装されたスライダーには`max-height`を使う\n\nCSSで実装されたスライダーは、`max-height`を`overflow: hidden;`と一緒に使ってください。\n\n```css\n.slider {\n  max-height: 200px;\n  overflow-y: hidden;\n  width: 300px;\n}\n\n.slider:hover {\n  max-height: 600px;\n  overflow-y: scroll;\n}\n```\n\nホバーの時`max-height`の要素を拡張オバーフローの結果でスライダーが表示されます。\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"equal-width-table-cells\"></div>\n\n### テーブルのセルの幅を均等にする\n\nテーブルの各セルの幅を均等にするには、`table-layout: fixed;`を使うと簡単にできます。\n\n```css\n.calendar {\n  table-layout: fixed;\n}\n```\n\n簡単にテーブルレイアウトを作れます。\n\n#### [デモ](http://codepen.io/AllThingsSmitty/pen/jALALm)\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"get-rid-of-margin-hacks-with-flexbox\"></div>\n\n### Flexboxのマージンハックを取り除く\n\n`flexbox`でカラムの溝をつくる時、`nth-`, `first-`, `last-child`などのハックで最後の溝を取り除くことができますが、それは`flexbox`の`space-between`プロパティを使うだけで解決します。\n\n\n```css\n.list {\n  display: flex;\n  justify-content: space-between;\n}\n\n.list .person {\n  flex-basis: 23%;\n}\n```\n\ncolumnのスペースが揃えている。\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"use-attribute-selectors-with-empty-links\"></div>\n\n### リンクにテキストが無い時はURLを表示\n\nリンクの`href`属性にはURLがあり、リンクのテキストがない場合に、下記のCSSを使用すると、リンク先のURLを表示します。\n\n```css\na[href^=\"http\"]:empty::before {\n  content: attr(href);\n}\n```\n\n便利ですよー！\n\n#### [デモ](http://codepen.io/AllThingsSmitty/pen/zBzXRx)\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"style-default-links\"></div>\n\n### `:not`を使ってデフォルトのリンクをスタイル\n\nデフォルトのリンクのスタイルを追加：\n\n```css\na[href]:not([class]) {\n  color: #008000;\n  text-decoration: underline;\n}\n```\n\nCMSで挿入される通常class属性を持たないリンクに`:not`を使ってスタイルを定義します。\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"intrinsic-ratio-boxes\"></div>\n\n### 内在比率のボックス\n\nボックスを内在比率で作成するには、ボックスの上部か下部に`div`の詰め物を適用します。\n\n```css\n.container {\n  height: 0;\n  padding-bottom: 20%;\n  position: relative;\n}\n\n.container div {\n  border: 2px dashed #ddd;\n  height: 100%;\n  left: 0;\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n```\n\npaddingに20%を使っているのは、そのボックスの高さを幅の20%と等しくします。ビューポートの幅に関わらず、子のdiv要素のアスペクト比は「100%:20%(5:1)」を保持します。\n\n#### [デモ](http://codepen.io/AllThingsSmitty/pen/jALZvE)\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"style-broken-images\"></div>\n\n### リンク切れの画像要素をスタイル\n\nよりよいユーザエクスペリエンスを提供するために、リンク切れの画像要素にスタイルを定義します。もちろんリンク切れがないのがベストですが、絶対に存在しない訳ではありません。\n\n```css\nimg {  \n  display: block;\n  font-family: sans-serif;\n  font-weight: 300;\n  height: auto;\n  line-height: 2;\n  position: relative;\n  text-align: center;\n  width: 100%;\n}\n```\n\n疑似要素を使い、ユーザーの役に立つ情報を加えることもできます。\n\n```css\nimg::before {  \n  content: \"We're sorry, the image below is broken :(\";\n  display: block;\n  margin-bottom: 10px;\n}\n\nimg::after {  \n  content: \"(url: \" attr(src) \")\";\n  display: block;\n  font-size: 12px;\n}\n```\n\nこのようなスタイリングに興味があればこちらに参考してください：[イレ　アデリノクン](https://github.com/ireade/)' [リンク切れの画像についての記事](http://bitsofco.de/styling-broken-images/).\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"use-rem-for-global-sizing-use-em-for-local-sizing\"></div>\n\n### グローバルのサイズ指定に`rem`、ローカルに`em`を使用\n\nベースのフォントサイズを`html{font-size: 16px;}`にルート指定し、テキスト要素を`em`で指定します。\n\n```css\nh2 {\n  font-size: 2em;\n}\n\np {\n  font-size: 1em;\n}\n```\n\nモジュールのフォントサイズは`rem`で指定します。\n\n```css\narticle {\n  font-size: 1.25rem;\n}\n\naside .module {\n  font-size: .9rem;\n}\n```\n\nモジュールごとに分けるとスタイルするのが簡単で、メンテナンス性もアップします。\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"hide-autoplay-videos-that-arent-muted\"></div>\n\n### 動画の自動再生を隠す\n\nこれはカスタマイズされたユーザースタイルシートのための素晴らしいテクニックです。ページがロードされた時、動画が自動再生されて音がでてしまうユーザーの負担を軽減します。もし無音にできないなら、動画を使わないでください。\n\n```css\nvideo[autoplay]:not([muted]) {\n  display: none;\n}\n```\n\nこちらも [`:not()`](#use-not-to-applyunapply-borders-on-navigation)を使用できます！\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"use-root-for-flexible-type\"></div>\n\n### フレクシブルタイプの`:root`を使用\n\nレスポンシブ対応時に、フォントのサイズをビューポートごとに適応することができます。`:root`を使い、ビューポートの高さと幅に基づいてフォントのサイズを定義することができます。\n\n```css\n:root {\n  font-size: calc(1vw + 1vh + .5vmin);\n}\n```\n\n#### [デモ](http://codepen.io/AllThingsSmitty/pen/XKgOkR)\n\n`:root`で定義した値に基づいて、それぞれのタグや要素に`em`を使って利用します。\n\n```css\nbody {\n  font: 1rem/1.6 sans-serif;\n}\n```\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"set-font-size-on-form-elements-for-a-better-mobile-experience\"></div>\n\n### スマホ向け、フォーム要素のフォントサイズの設定\n\nスマホでセレクト要素のドロップダウンをタップした時に、iOS Safariでフォーム要素にズームインするのを回避するために、フォントサイズを加えます。\n\n```css\ninput[type=\"text\"],\ninput[type=\"number\"],\nselect,\ntextarea {\n  font-size: 16px;\n}\n```\n\n:dancer:\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"use-pointer-events-to-control-mouse-events\"></div>\n\n### ポインターイベントを使用してマウスイベントを制御する\n\n[Pointer events](https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events)では、マウスがタッチしている要素とどのように対話するかを指定することができます。 ボタン上のデフォルトポインタイベントを無効にするには、次のようにします。\n\n```css\nbutton:disabled {\n  opacity: .5;\n  pointer-events: none;\n}\n```\n\nそれは簡単です。\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"set-display-none-on-line-breaks-being-used-as-spacing\"></div>\n\n### 間隔として使用される改行に `display：none` を設定します\n\n[ハリー・ロバーツが指摘したように](https://twitter.com/csswizardry/status/1170835532584235008)、これはCMSユーザーがスペースのために余分な改行を使用するのを防ぐのに役立ちます：\n\n```css\nbr + br {\n  display: none;\n}\n```\n\n<sup>[目次へ戻る](#table-of-contents)</sup>\n\n\n<div id=\"support\"></div>\n\n## サポート\n\n現在のChrome, Firefox, Safari, のバージョンとEdge.\n"
  },
  {
    "path": "translations/ko-KR/readme.md",
    "content": "<p align=\"center\">\n  <img src=\"../../assets/img/bulb.svg\" width=\"200\" alt=\"light bulb icon\">\n</p>\n\n# CSS 프로팁 [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\nCSS스킬을 프로처럼 만들어주는 팁 모음\n\n> 또 다른  꼭 확인해 볼 만한 [@sindresorhus](https://github.com/sindresorhus/)의 큐레이트 리스트  [awesome lists](https://github.com/sindresorhus/awesome/).\n\n<div id=\"table-of-contents\"></div>\n\n## 목차\n\n* [프로팁](#프로팁)\n* [지원](#지원)\n* [컨트리뷰션 가이드라인](../../CONTRIBUTING.md)\n\n\n<div id=\"protips\"></div>\n\n## 프로팁\n\n1. [CSS Reset을 사용](#use-a-css-reset)\n1. [`box-sizing`을 컴포넌트마다 변경](#inherit-box-sizing)\n1. [모든 프로퍼티를 리셋하는 대신에 `unset`를 쓴다](#use-unset-instead-of-resetting-all-properties)\n1. [`:not()` 를 사용하여 보더를 삭제](#use-not-to-applyunapply-borders-on-navigation)\n1. [글꼴이 로컬로 설치되어 있는지 확인](#check-if-font-is-installed-locally)\n1. [`body`에 `line-height` 넣기](#add-line-height-to-body)\n1. [폼 요소에`: focus`를 설정하기](#set-focus-for-form-elements)\n1. [전부 수직 정렬 만들기](#vertically-center-anything)\n1. [리스트를 콤마로 나누기](#comma-separated-lists)\n1. [Negative `nth-child`를 사용하여 아이템 나누기](#select-items-using-negative-nth-child)\n1. [SVG를 아이콘으로 사용하기](#use-svg-for-icons)\n1. [\"Lobotomized Owl\" Selector 사용하기](#use-the-lobotomized-owl-selector)\n1. [CSS로 구현된 슬라이더에 `max-height` 사용하기](#use-max-height-for-pure-css-sliders)\n1. [테이블 셀의 너비 균등하게 하기](#equal-width-table-cells)\n1. [Flexbox의 Margin Hack 제거](#get-rid-of-margin-hacks-with-flexbox)\n1. [링크에 텍스트가 없을 때의 url 표시](#use-attribute-selectors-with-empty-links)\n1. [\"Default\" 링크 스타일](#style-default-links)\n1. [내재 비율의 박스](#intrinsic-ratio-boxes)\n1. [깨진 링크의 이미지 스타일](#style-broken-images)\n1. [글로벌 사이즈 지정에 `rem`; 로컬  사이즈 지정에 `em`](#use-rem-for-global-sizing-use-em-for-local-sizing)\n1. [동영상 자동재생 감추기](#hide-autoplay-videos-that-arent-muted)\n1. [Flexible Type의 `:root` 사용하기](#use-root-for-flexible-type)\n1. [모바일 환경을 위한 `font-size` 요소 설정](#set-font-size-on-form-elements-for-a-better-mobile-experience)\n1. [포인터 이벤트를 사용한 마우스 이벤트 제어](#use-pointer-events-to-control-mouse-events)\n1. [간격으로 사용되는 줄 바꿈에서 `display: none` 을 설정하십시오.](#set-display-none-on-line-breaks-being-used-as-spacing)\n\n\n<div id=\"use-a-css-reset\"></div>\n\n### CSS Reset을 사용\n\nCSS reset은 스타일 요소들을 통해 백지 상태에서 다른 브라우저간의 스타일의 일관성을 강화하는데 도움을 줍니다. 또한 [Normalize](http://necolas.github.io/normalize.css/), _et al._, 와 같은 CSS 리셋 라이브러리를 통해 더 쉽게 reset 형태를 취할 수 있습니다.\n\n```css\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n```\n\n\n이제 요소는 마진과 패딩을 배제하고, `box-sizing`은 CSS 박스 모델을 통해 관리됩니다.\n\n#### [데모](http://codepen.io/AllThingsSmitty/pen/kkrkLL)\n\n**Note:** 당신이 아래의 [`box-sizing`을 컴포넌트마다 변경](#inherit-box-sizing) 팁을 따를 경우 `box-sizing` 프로퍼티를 선택하지 않을 수 있습니다.\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n\n<div id=\"inherit-box-sizing\"></div>\n\n### `box-sizing`을 컴포넌트마다 변경\n\n`html`에서 `box-sizing`을 계승하게 합니다:\n\n```css\nhtml {\n  box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: inherit;\n}\n```\n\n이것은 다른 플러그인과 컴포넌트에서 `box-sizing`을 변경하는 것을 용이하게 합니다. \n\n#### [데모](https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/)\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id=\"use-unset-instead-of-resetting-all-properties\"></div>\n\n### 모든 프로퍼티를 리셋하는 대신에 `unset`를 쓴다\n\n요소들을 리셋할 경우, 각각의 속성을 리셋할 필요가 없습니다.\n\n```css\nbutton {\n  background: none;\n  border: none;\n  color: inherit;\n  font: inherit;\n  outline: none;\n  padding: 0;\n}\n```\n\n요소의 속성 `all` 생략형을 통해 지정하고 `unset`을 통해 모든 요소를 초기값으로 설정할 수 있습니다.\n\n```css\nbutton {\n  all: unset;\n}\n```\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id=\"use-not-to-applyunapply-borders-on-navigation\"></div>\n\n### `:not()` 를 사용하여 보더를 삭제\n\nBorder를 넣거나...\n\n```css\n/* 보더 추가 */\n.nav li {\n  border-right: 1px solid #666;\n}\n```\n\n...마지막 요소를 없애기 보다는...\n\n```css\n/* 보더 삭제 */\n.nav li:last-child {\n  border-right: none;\n}\n```\n\n...`:not()`을 사용하여 코드를 간단히 지정할 수 있습니다.\n\n```css\n.nav li:not(:last-child) {\n  border-right: 1px solid #666;\n}\n```\n\nCSS 선택자는 사람이 설명하는 방식 그대로 경계를 정의합니다.\n\n#### [데모](http://codepen.io/AllThingsSmitty/pen/LkymvO)\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id=\"check-if-font-is-installed-locally\"></div>\n\n### 글꼴이 로컬로 설치되어 있는지 확인\n\n글꼴을 원격으로 가져 오기 전에 글꼴이 로컬에 설치되어 있는지 확인할 수 있으며 이는 좋은 성능 팁입니다.\n\n```css\n@font-face {\n  font-family: \"Dank Mono\";\n  src:\n    /* 풀네임 */\n    local(\"Dank Mono\"),\n    /* 포스트 스크립트명 */\n    local(\"Dank-Mono\"),\n    /* 아니면 다운로드도 가능! */\n    url(\"//...a.server/fonts/DankMono.woff\");\n}\n\ncode {\n  font-family: \"Dank Mono\", system-ui-monospace;\n}\n```\n\n이 팁과 [데모](https://codepen.io/argyleink/pen/VwYJpgR)를 공유 한 Adam Argyle의 모자 팁.\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id=\"add-line-height-to-body\"></div>\n\n### `body`에 `line-height` 넣기\n\n`body`요소에서`line-height`를 지정할 때 `p`,`h*`, _et al_ 등에 그 값이 계승되기 때문에 각각`line-height`을 지정할 필요가 없습니다.\n\n```css\nbody {\n  line-height: 1.5;\n}\n```\n\n이 방법으로 텍스트 요소가 `body`의 속성을 쉽게 계승할 수 있습니다.\n\n#### [데모](http://codepen.io/AllThingsSmitty/pen/VjbdYd)\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id=\"set-focus-for-form-elements\"></div>\n\n### 폼 요소에`: focus`를 설정하기\n\n키보드 사용자는 포커스를 사용하여 키보드 이벤트의 위치를 결정합니다. 폼 요소에 집중할 수 있게 해주며, 브라우저의 기본 구현을 일관성있게 만듭니다.\n\n```css\na:focus,\nbutton:focus,\ninput:focus,\nselect:focus,\ntextarea:focus {\n  box-shadow: none;\n  outline: #000 dotted 2px;\n  outline-offset: .05em;\n}\n```\n\n#### [데모](https://codepen.io/AllThingsSmitty/pen/ePzoOP/)\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id=\"vertically-center-anything\"></div>\n\n### 전부 Vertically-Center로 만들기\n\n농담이 아니라, 진짜 전부 중앙으로 배치가 가능합니다.\n\n```css\nhtml,\nbody {\n  height: 100%;\n  margin: 0;\n}\n\nbody {\n  -webkit-align-items: center;\n  -ms-flex-align: center;\n  align-items: center;\n  display: -webkit-flex;\n  display: flex;\n}\n```\n\n무언가를 중앙으로 배치하고 싶으신가요? 가로로, 세로로 ...뭐든지, 어떤 때라도, 어디서든? CSS-Tricks의 [가이드](https://css-tricks.com/centering-css-complete-guide/)를 통해 그 모든 것을 해보세요!\n\n#### [데모](http://codepen.io/AllThingsSmitty/pen/GqmGqZ)\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id=\"comma-separated-lists\"></div>\n\n### 리스트를 콤마로 나누기\n\nMake list items look like a real, comma-separated list:\n리스트 아이템을 콤마를 통해 나눕니다.\n\n```css\nul > li:not(:last-child)::after {\n  content: \",\";\n}\n```\n\n`:not()` 을 사용할 때 리스트의 마지막 아이템에는 콤마를 사용하지 않도록 합니다.\n\n**Note:** 이 팁의 경우 접근성이 떨어질 수 있습니다. 특히, 스크린 사용자에게는요. 또한 브라우저에서의 복사/붙여넣기는 CSS를 통해 생성한 콘텐츠에서는 사용 불가능하므로 주의해 주세요.\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id=\"select-items-using-negative-nth-child\"></div>\n### Negative `nth-child`를 사용하여 아이템 나누기\n\nNegative `nth-child`를 사용하여 n분의 1로 아이템을 나눌 수 있습니다.\n\n```css\nli {\n  display: none;\n}\n\n/* 1에서 3까지의 선택하고 보여주기 */\nli:nth-child(-n+3) {\n  display: block;\n}\n```\n\n[`:not()`](#use-not-to-applyunapply-borders-on-navigation), 를 사용해 봅시다.\n\n```css\n/* 처음 3개를 제외한 모든 아이템 보여주기 */\nli:not(:nth-child(-n+3)) {\n  display: none;\n}\n```\n\n#### [데모](http://codepen.io/AllThingsSmitty/pen/WxjKZp)\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n\n<div id=\"use-svg-for-icons\"></div>\n\n### SVG를 아이콘으로 사용하기\n\nSVG를 아이콘으로 사용할 이유는 없지만:\n\n```css\n.logo {\n  background: url(\"logo.svg\");\n}\n```\n\nSVG는 [IE9](http://caniuse.com/#search=svg) 이후부터 지원되고 있습니다.\n\n**Note:** 버튼이 SVG로 만들어진 경우, 접근성을 높이기 위해 이 방법을 사용해 보세요.\n\n```css\n.no-svg .icon-only::after {\n  content: attr(aria-label);\n}\n```\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n### \"Lobotomized Owl\" Selector 사용하기\n\n이상한 이름이지만  (`*`)와  (`+`)와 함께 사용하면 강력한 CSS의 가능성을 제공합니다.\n\n```css\n* + * {\n  margin-top: 1.5em;\n}\n```\n\n이 예시에서는, 모든 요소가 `margin-top: 1.5em`를 따릅니다.\n\n\"lobotomized owl\" selector에 대해 더 알고싶으시다면 *A List Apart* [Heydon Pickering's post](http://alistapart.com/article/axiomatic-css-and-lobotomized-owls)의 이 문서를 읽어보세요.\n\n#### [데모](http://codepen.io/AllThingsSmitty/pen/grRvWq)\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id=\"use-max-height-for-pure-css-sliders\"></div>\n\n### CSS로 구현된 슬라이더에 `max-height` 사용하기\n\nCSS에서 구현된 슬라이더는`max-height`을`overflow:hidden;`와 함께 사용하세요.\n\n```css\n.slider {\n  max-height: 200px;\n  overflow-y: hidden;\n  width: 300px;\n}\n\n.slider:hover {\n  max-height: 600px;\n  overflow-y: scroll;\n}\n```\n\nThe element expands to the `max-height` value on hover and the slider displays as a result of the overflow\nhover시 `max-height`를 요소를 확장 오버플로우의 결과로 슬라이더에 표시됩니다.\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id=\"equal-width-table-cells\"></div>\n\n### 테이블 셀의 너비 균등하게 하기\n\n테이블의 각 셀의 너비를 균등하려면`table-layout:fixed;`를 사용해 간단히 할 수 있습니다.\n\n```css\n.calendar {\n  table-layout: fixed;\n}\n```\n\n고통 없는 테이블 디스플레이를 가능하게 합니다\n\n#### [데모](http://codepen.io/AllThingsSmitty/pen/jALALm)\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id=\"get-rid-of-margin-hacks-with-flexbox\"></div>\n\n### Flexbox의 Margin Hack 제거\n\ncolumn gutter을 사용할 때 flexbox의 `space-between` 요소를 사용하여 `nth-`, `first-`, `last-child`를 사용하지 않게 해줍니다.\n\n```css\n.list {\n  display: flex;\n  justify-content: space-between;\n}\n\n.list .person {\n  flex-basis: 23%;\n}\n```\n\ncolumn gutter는 이제 이벤트 공간에 표시됩니다.\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id=\"use-attribute-selectors-with-empty-links\"></div>\n\n### 링크에 텍스트가 없을 때의 url 표시\n\n링크의`href`속성에 링크의 텍스트 값이 없을 경우, 아래의 CSS를 사용하면 링크처의 URL을 표시합니다.\n\n```css\na[href^=\"http\"]:empty::before {\n  content: attr(href);\n}\n```\n\n상당이 편리한 기능입니다.\n\n#### [데모](http://codepen.io/AllThingsSmitty/pen/zBzXRx)\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id=\"style-default-links\"></div>\n\n### \"Default\" 링크 스타일\n\n\"default\" 링크에 스타일 추가하기:\n\n```css\na[href]:not([class]) {\n  color: #008000;\n  text-decoration: underline;\n}\n```\n\n이것은 보통 class속성이 없는 링크에`:not`을 사용하여 CMS로 삽입됩니다. 상속(cascade)문제 없이 차별화 할 수 있습니다.\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id=\"intrinsic-ratio-boxes\"></div>\n\n### 내재 비율의 박스\n\n당신이 top, bottom 패딩을 지정하는 것 만으로 내제된 비율의 박스를 생성합니다.\n\n```css\n.container {\n  height: 0;\n  padding-bottom: 20%;\n  position: relative;\n}\n\n.container div {\n  border: 2px dashed #ddd;\n  height: 100%;\n  left: 0;\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n```\n\n20%를 패딩으로 사용하면 높이를 너비의 20%와 동일하게 합니다.뷰 포트의 너비와 상관 없이, 자식의 div는 이 비율 (100% / 20% = 5:1)를 유지합니다.\n\n#### [데모](http://codepen.io/AllThingsSmitty/pen/jALZvE)\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id=\"style-broken-images\"></div>\n\n### 깨진 링크의 이미지 스타일\n\nCSS를 통해 링크가 깨진 이미지를 사용자 친화적으로 만듭니다.\n\n```css\nimg {\n  display: block;\n  font-family: sans-serif;\n  font-weight: 300;\n  height: auto;\n  line-height: 2;\n  position: relative;\n  text-align: center;\n  width: 100%;\n}\n```\n\n또는 다음 방법을 통해 사용자에게 깨진 링크에 대한 메세지를 전달하는 것도 가능합니다.\n\n```css\nimg::before {\n  content: \"죄송하지만 이 이미지에 문제가 있습니다 :(\";\n  display: block;\n  margin-bottom: 10px;\n}\n\nimg::after {\n  content: \"(url: \" attr(src) \")\";\n  display: block;\n  font-size: 12px;\n}\n```\n\n이 스탕일링 패턴을 다음 링크에서 배울 수 있습니다.[Ire Aderinokun](https://github.com/ireade/)'s [original post](http://bitsofco.de/styling-broken-images/).\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n\n<div id=\"use-rem-for-global-sizing-use-em-for-local-sizing\"></div>\n\n### 글로벌 사이즈 지정에 `rem`; 로컬  사이즈 지정에 `em`\n\n베이스 폰트 크기를 (`html { font-size: 100%; }`)를 통해 지정하고, 텍스트 요소를 `em`에서 지정합니다.\n\n```css\nh2 {\n  font-size: 2em;\n}\n\np {\n  font-size: 1em;\n}\n```\n\n`rem`을 통해 모듈의 폰트 사이즈를 지정해 봅시다:\n\n```css\narticle {\n  font-size: 1.25rem;\n}\n\naside .module {\n  font-size: .9rem;\n}\n```\n\n이제 각 모듈별로 관리하면 관리가 쉽고 스탕일링이 간편해 집니다.\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id=\"hide-autoplay-videos-that-arent-muted\"></div>\n\n### 동영상 자동재생 감추기\n\n이것은 스타일 시트의 커스텀에서 유용한 트릭입니다. 유저가 페이지가 로드될 때 소리가 자동 재생될 때 겪는 부담을 줄여줍니다. 만약 소리를 끌 수 없다면, 차라리 동영상을 보여주지 마세요.\n\n```css\nvideo[autoplay]:not([muted]) {\n  display: none;\n}\n```\n\n다시한 한 번[`:not()`](#use-not-to-applyunapply-borders-on-navigation)을 사용하는 것의 편리함을 보여줍니다.\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id=\"use-root-for-flexible-type\"></div>\n\n### Flexible Type의 `:root` 사용하기\n\n`:root`를 사용하여 반응형 레이아웃의 타입 폰트 사이즈를 뷰 포트마다 적용할 수 있게 합니다. 뷰 포트의 높이와 너비를 바탕으로 폰트 크기를 정의할 수 있습니다.\n\n```css\n:root {\n  font-size: calc(1vw + 1vh + .5vmin);\n}\n```\n\n`:root`를 정의된 값을 바탕으로 `root em`을 사용할 수 있습니다.\n\n```css\nbody {\n  font: 1rem/1.6 sans-serif;\n}\n```\n\n#### [데모](http://codepen.io/AllThingsSmitty/pen/XKgOkR)\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id= \"set-font-size-on-form-elements-for-a-better-mobile-experiences\"></div>\n\n### 모바일 환경을 위한 `font-size` 요소 설정\n\niOS Safari, _et al_ 과 같은 모바일 브라우저에서 `<select>`드롭다운을 탭 할 때 HTML 폼 요소가 줌 인 되는 것을 피하기 위해 `font-size` 의 선택자 룰을 추가한다.\n\n```css\ninput[type=\"text\"],\ninput[type=\"number\"],\nselect,\ntextarea {\n  font-size: 16px;\n}\n```\n\n:dancer:\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id=\"use-pointer-events-to-control-mouse-events\"></div>\n\n### 포인터 이벤트를 사용한 마우스 이벤트 제어\n\n[포인터 이벤트](https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events)는 터치 시 마우스 동작을 특정할 수 있도록 도와줍니다. 버튼의 디폴트 포인터를 무효화 하려면 다음 방법을 따릅니다. \n\n```css\nbutton:disabled {\n  opacity: .5;\n  pointer-events: none;\n}\n```\n\n아주 간단한 방법이죠?\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id=\"set-display-none-on-line-breaks-being-used-as-spacing\"></div>\n\n### 간격으로 사용되는 줄 바꿈에서 `display: none` 을 설정하십시오.\n\n[Harry Roberts가 지적한대로](https://twitter.com/csswizardry/status/1170835532584235008) CMS 사용자가 추가 줄 바꿈을 사용하여 간격을 두지 못하게 할 수 있습니다.\n\n```css\nbr + br {\n  display: none;\n}\n```\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n<div id=\"support\"></div>\n\n## 지원\n\n최신 버전의 Chrome, Firefox, Safari, Edge에서 지원됩니다..\n\n<sup>[목차로 돌아가기](#table-of-contents)</sup>\n\n\n"
  },
  {
    "path": "translations/pl-PL/README.md",
    "content": "<p align=\"center\">\n  <img src=\"../../assets/img/bulb.svg\" width=\"200\" alt=\"light bulb icon\">\n</p>\n\n# Wskazówki CSS [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\nZbiór porad, które pomogą Ci rozwinąć zawansowane umiejętności CSS.\n\n> Sprawdż takze inne wspaniałe listy [@sindresorhus](https://github.com/sindresorhus/) z [zaufanych list](https://github.com/sindresorhus/awesome/).\n\n## Powrót do spisu treści\n\n* [Wskazówki](#Wskazowki)\n* [Wsparcie](#Wsparcie)\n* [Wskazówki dotyczące kontrybucji do tego projektu](../../CONTRIBUTING.md)\n\n\n## Wskazówki\n\n1. [Użyj resetowania CSS](#użyj-resetowania-css)\n1. [Dziedziczenie `box-sizing`](#dziedziczenie-box-sizing)\n1. [Użyj `unset` zamiast resetowania wszystkich ustawień](#użyj-unset-zamiast-resetowania-wszystkich-ustawień)\n1. [Użyj `:not()` aby dodać/usunąć obramownie nawigacji](#użyj-not-aby-dodaćusunąć-obramownie-nawigacji)\n1. [Sprawdź, czy czcionka jest zainstalowana lokalnie](#sprawdź,-czy-czcionka-jest-zainstalowana-lokalnie)\n1. [Dodaj `line-height` do `body`](#dodaj-line-height-do-body)\n1. [Ustaw `:focus` dla elementów formularza](#ustaw-:focus-dla-form-elements)\n1. [Przesuń cokolwiek pionowo](#przesuwanie-w-pionie)\n1. [Listy rozdziele przecinkami](#listy-podzielone-przecinkami)\n1. [Wybierz elementy za pomocą negatywnego `nth-child`](#wybierz-przedmioty-za-pomocą-nth-child)\n1. [Użyj SVG dla ikon ](#użyj-svg-dla-ikon)\n1. [Użyj selektora \"Lobotomized Owl\"](#użyj-selektora-lobotomized-owl)\n1. [Użyj `max-height` dla suwaków Pure CSS](#użyjmax-height-dla-suwaków-pure-csss)\n1. [Komórki tabeli o równej-szerokości](#równoważne-komórki-tabeli)\n1. [Pozbądź się marginesów za pomocą Flexbox](#pozbądź-się-marginesów-za-pomocą-flexbox)\n1. [Użyj selektorów atrybutów z pustymi linkami](#użyj-selektorów-atrybutów-z-pustymi-linkami)\n1. [Stylizuj domyślne linki](#stylizuj-domyślne-linki)\n1. [Wewnętrzne proporcje bloków](#wewnętrzne-proporcje-bloków)\n1. [Wystylizuj uszkodzone obrazy](#wystylizuj-uszkodzone-obrazy)\n1. [Użyj `rem` dla ustawień globalnych rozmiarow i `em` do ustawień localnych](#użyj-rem-dla-ustawień-globalnych-rozmiarow-i-em-do-ustawień-localnych)\n1. [Ukryj filmy z autoodtwarzaniem, które nie są wyciszone](#ukryj-filmy-z-autoodtwarzaniem-które-nie-są-wyciszone)\n1. [Użyj `:root` dla elastycznych typów](#użyj-`:root`-dla-elastycznych-typów)\n1. [Ustaw rozmiar czcionki w elementach formularza](#ustaw-rozmiar-czcionki-w-elementach-formularza)\n1. [Użyj zdarzeń wskaźnika do sterowania zdarzeniami myszy](#użyj-zdarzeń-wskaźnika-do-sterowania-zdarzeniami-myszy)\n1. [Ustaw `display: none` na Podziały linii używane jako odstępy](#ustaw-display-none-na-podziały-linii-używane-jako-odstępy)\n\n\n### Użyj resetowania CSS\n\nReset ustawień CSS umośliwia wymuszenie spójność stylu w różnych przeglądarkach z czystym konturem dla elementów stylizacyjnych. Możesz wykorzystać jedną bibliotek resetującej ustawienia CSS np. [Normalize](http://necolas.github.io/normalize.css/) lub użyć  uproszczonego sposobu resetowania:\n\n```css\n* {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n```\n\nElementy zostaną pozbawione marginesów i dopełnienia, a `box-sizing` pozwala zarządzać układami za pomocą modelu pudełkowego CSS (CSS box model).\n\n#### [Demonstracja](http://codepen.io/AllThingsSmitty/pen/kkrkLL)\n\n**Uwaga:** Jeżeli zdecydujesz sie na wykorzystanie powyżej opisanej wskazówki dotyczącej  [Dziedziczenia `box-sizing`](#inherit-box-sizing) możesz zrezygnować z dodania `box-sizing` w zresetowanych ustawieniach CSS.\n\n<sup>[powrót do spisu treści](#powrót-do-spisu-treści )</sup>\n\n\n### Dziedziczenie `box-sizing`\n\nNiech `box-sizing` zostanie odziedziczony z `html`:\n\n```css\nhtml {\n  box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: inherit;\n}\n```\n\nUłatwia to łatwiejszą zmianę `box-sizing` w wtyczkach lub innych komponentach, które wpływaja na inne zachowania.\n\n#### [Demonstracja](https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/)\n\n<sup>[powrót do spisu treści](#powrót-do-spisu-treści)</sup>\n\n\n### Użyj `unset` zamiast resetowania wszystkich ustawień\n\nPodczas resetowania ustawień elementu nie jest konieczne resetowanie pojedyńczych ustawień:\n\n```css\nbutton {\n  background: none;\n  border: none;\n  color: inherit;\n  font: inherit;\n  outline: none;\n  padding: 0;\n}\n```\n\nMożesz sprecyzować wszystkie właściwości elementu, używając skrótu `all`. Używając `unset` możemy zresetować ustawienia elementu do wartości początkowych:\n\n```css\nbutton {\n  all: unset;\n}\n```\n\n<sup>[powrót do spisu treści](#powrót-do-spisu-treści)</sup>\n\n\n### Użyj `:not()`, aby dodać/usunąć obramownie nawigacji\n\nZamiast dodać obramowanie...\n\n```css\n/* add border */\n.nav li {\n  border-right: 1px solid #666;\n}\n```\n\n...a później usunąć ja z ostatniego elementu...\n\n```css\n/* usuń obramowanie */\n.nav li:last-child {\n  border-right: none;\n}\n```\n\n...użyj `:not()` pseudo-klasy, aby dodać obramowanie do wybranych elementów:\n\n```css\n.nav li:not(:last-child) {\n  border-right: 1px solid #666;\n}\n```\n\nSelektor CSS definiuje granicę w sposób opisany przez człowieka.\n\n#### [Demonstracja](http://codepen.io/AllThingsSmitty/pen/LkymvO)\n\n<sup>[powrót do spisu treści](#powrót-do-spisu-treści)</sup>\n\n\n### Sprawdź, czy czcionka jest zainstalowana lokalnie\n\nMożesz sprawdzić, czy czcionka jest zainstalowana lokalnie, przed jej zdalnym pobraniem, co również jest dobrą wskazówką dotyczącą wydajności.\n\n```css\n@font-face {\n  font-family: \"Dank Mono\";\n  src:\n    /* Full name */\n    local(\"Dank Mono\"),\n    /* Postscript name */\n    local(\"Dank-Mono\"),\n    /* Otherwise, download it! */\n    url(\"//...a.server/fonts/DankMono.woff\");\n}\n\ncode {\n  font-family: \"Dank Mono\", system-ui-monospace;\n}\n```\n\nCzapka dla Adama Argyle'a za podzielenie się tym prototypem i [demonstracją](https://codepen.io/argyleink/pen/VwYJpgR).\n\n<sup>[powrót do spisu treści](#powrót-do-spisu-treści)</sup>\n\n\n### Dodaj `line-height` do `body`\n\nNie musisz dodawać  `wysokości linii` do każdego  `<p>`, `<h*>`, _et al_. osobno. Zamiast tego dodaj go do `body`:\n\n```css\nbody {\n  line-height: 1.5;\n}\n```\n\nW ten sposób elementy tekstowe mogą łatwo odziedziczyć ustawienia z `body`.\n\n#### [Demonstracja](http://codepen.io/AllThingsSmitty/pen/VjbdYd)\n\n<sup>[powrót do spisu treści](#Powrót-do-spisu-treści)</sup>\n\n\n### Ustaw `:focus` dla elementów formularza\n\nObserwowani użytkownicy klawiatury polegają na fokucie, aby określić, gdzie na stronie pojawiają się zdarzenia na klawiaturze. Skoncentruj się na elementach formy, które będą spójne, a następnie domyślna implementacja przeglądarki:\n\n```css\na:focus,\nbutton:focus,\ninput:focus,\nselect:focus,\ntextarea:focus {\n  box-shadow: none;\n  outline: #000 dotted 2px;\n  outline-offset: .05em;\n}\n```\n\n#### [Demonstracja](https://codepen.io/AllThingsSmitty/pen/ePzoOP/)\n\n<sup>[Powrót do spisu treści](#Powrót-do-spisu-treści)</sup>\n\n\n\n### Przesuwanie w pionie\n\nNie, to nie jest czarna magia, naprawdę możesz wyśrodkować elementy w pionie:\n\n```css\nhtml,\nbody {\n  height: 100%;\n  margin: 0;\n}\n\nbody {\n  -webkit-align-items: center;\n  -ms-flex-align: center;\n  align-items: center;\n  display: -webkit-flex;\n  display: flex;\n}\n```\n\na także używając CSS Grid:\n\n```css\nbody {\n  display: grid;\n  height: 100vh;\n  margin: 0;\n  place-items: center center;\n}\n```\n\nChcesz coś przenieść? Pionowo, poziomo... zawsze i wszędzie? Na CSS-Tricks znajdziesz [ciekawy artykuł](https://css-tricks.com/centering-css-complete-guide/) z dobrymi instrukcje na ten temat. \n\n#### [Demonstracja](http://codepen.io/AllThingsSmitty/pen/GqmGqZ)\n\n<sup>[Powrót do spisu treści](#Powrót-do-spisu-treści)</sup>\n\n\n### Listy podzielone przecinkami\n\nElementy listy mogą wyglądać jak prawdziwa, oddzielona przecinkami lista:\n\n```css\nul > li:not(:last-child)::after {\n  content: \",\";\n}\n```\n\nUżyj `:not()` pseudo-klasy, aby przecinek nie zostal dodany do ostatniego elementu.\n\n**Uwaga:** Ta wskazówka może nie być idealna dla ułatwień dostępu, w szczególności na ekranach czytników. Kopiowanie / wklejanie z przeglądarki nie działa z treścią generowaną przez CSS. Postępuj ostrożnie.\n\n<sup>[Powrót do spisu treści](#Powrót-do-spisu-treści)</sup>\n\n\n### Wybierz przedmioty za pomocą `nth-child`\n\nWybierz przedmioty nieparzyste za pomocą negatywnego  `nth-child` w CSS, aby wybrać elementy od 1 do n.\n\n```css\nli {\n  display: none;\n}\n\n/* select items 1 through 3 and display them */\nli:nth-child(-n+3) {\n  display: block;\n}\n```\n\nLub, skoro już nauczyłeś się trochę o użyciu [`:not()`](#use-not-to-applyunapply-borders-on-navigation),wypróbuj:\n\n```css\n/* select all items except the first 3 and display them */\nli:not(:nth-child(-n+3)) {\n  display: none;\n}\n```\n\nTo było całkiem łatwe.\n\n#### [Demonstracja](http://codepen.io/AllThingsSmitty/pen/WxjKZp)\n\n<sup>[Powrót do spisu treści](#Powrót-do-spisu-treści)</sup>\n\n\n### Użyj SVG dla ikon\n\nNie ma powodu, aby nie używać SVG jako ikon:\n\n```css\n.logo {\n  background: url(\"logo.svg\");\n}\n```\n\nSVG skaluje się dobrze dla wszystkich typów rozdzielczości i jest obsługiwany we wszystkich przeglądarkach [wróć do IE9](http://caniuse.com/#search=svg). Więc porzuć swoje pliki .png, .jpg lub .gif-jif-whatev.\n\n**Uwaga:** Jeśli masz przyciski tylko ikony SVG dla widzących użytkowników, a SVG nie załaduje się, pomoże to w utrzymaniu dostępności:\n\n```css\n.no-svg .icon-only::after {\n  content: attr(aria-label);\n}\n```\n\n<sup>[Powrót do spisu treści](#Powrót-do-spisu-treści)</sup>\n\n\n### Użyj selektora \"Lobotomized Owl\" \n\nByć może \"Lobotomized Owl\" to dziwna nazwa dla selektora, ale użycie uniwersalnego (`*`) selektora z sąsiednim selektorem rodzeństwa  (`+`) może udostepnić potężne możliwości CSS:\n\n```css\n* + * {\n  margin-top: 1.5em;\n}\n```\n\nW tym przykładzie wszystkie elementy, które śledzą inne elementy, otrzymają `margin-top: 1.5em`.\n\nDowiedź sie wiecej na temat selektora \"lobotomized owl\" czytajac [artykul Heydon'a Pickering](http://alistapart.com/article/axiomatic-css-and-lobotomized-owls)  *A List Apart*.\n\n#### [Demonstracja](http://codepen.io/AllThingsSmitty/pen/grRvWq)\n\n<sup>[Powrót do spisu treści](#Powrót-do-spisu-treści)</sup>\n\n\n### Użyj`max-height` (atrybutu maksymalnej wysokości) dla suwaków Pure CSS\n\nZaimplementuj suwaki CSS używając `max-height`  z ukrytym przepełnieniem:\n\n```css\n.slider {\n  max-height: 200px;\n  overflow-y: hidden;\n  width: 300px;\n}\n\n.slider:hover {\n  max-height: 600px;\n  overflow-y: scroll;\n}\n```\n\nElement rozwija się do `max-height` po najechaniu kursorem, a suwak wyświetla się w wyniku przepełnienia.\n\n<sup>[Powrót do spisu treści](#Powrót-do-spisu-treści)</sup>\n\n\n### Komórki tabeli o równej-szerokości\n\nTworzenie tabel może być uciążliwe. Spróbuj użyć `table-layout: fixed`, aby upewnić sie, że komórki mają jednakową szerokość:\n\n```css\n.calendar {\n  table-layout: fixed;\n}\n```\n\nWidzisz jakie to proste! :)\n\n#### [Demonstracja](http://codepen.io/AllThingsSmitty/pen/jALALm)\n\n<sup>[Powrót do spisu treści](#Powrót-do-spisu-treści)</sup>\n\n\n### Pozbądź się marginesów za pomocą Flexbox\n\nPodczas pracy z rynnami kolumnowymi (column gutters) możesz pozbyć się  `nth-`, `first-`, i `last-child` za pomocą właściwości`space-between`:\n\n```css\n.list {\n  display: flex;\n  justify-content: space-between;\n}\n\n.list .person {\n  flex-basis: 23%;\n}\n```\n\nTeraz rynny kolumnowe zawsze są rozmieszczone równomiernie.\n\n<sup>[Powrót do spisu treści](#Powrót-do-spisu-treści)</sup>\n\n\n### Użyj selektorów atrybutów z pustymi linkami\n\nWyświetl linki, gdy element `<a>` nie ma wartości tekstowej, ale atrybut `href` posiada link:\n\n```css\na[href^=\"http\"]:empty::before {\n  content: attr(href);\n}\n```\n\nTo całkiem wygodne.\n\n#### [Demonstracja](http://codepen.io/AllThingsSmitty/pen/zBzXRx)\n\n<sup>[Powrót do spisu treści](#Powrót-do-spisu-treści)</sup>\n\n\n### Stylizuj \"domyślne\" linki\n\nDodaj styl dla \"domyślnych\" linków:\n\n```css\na[href]:not([class]) {\n  color: #008000;\n  text-decoration: underline;\n}\n```\n\nLinki wstawiane za pośrednictwem CMS, które zwykle nie mają atrybutu class, będą wyróżnione bez  wpływu na kaskadę.\n\n<sup>[Powrót do spisu treści](#Powrót-do-spisu-treści)</sup>\n\n\n### Wewnętrzne proporcje bloków\n\nAby utworzyć pola, które posiada wewnętrzne proporcje, wystarczy zastosować górny lub dolny margines do elementu div:\n\n```css\n.container {\n  height: 0;\n  padding-bottom: 20%;\n  position: relative;\n}\n\n.container div {\n  border: 2px dashed #ddd;\n  height: 100%;\n  left: 0;\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n```\n\nUżycie 20% wypełnienia (padding) sprawia, że wysokość bloku jest równa 20% jego szerokości. Bez względu na szerokość okna roboczego (viewport), element div zachowa swój współczynnik proporcji  (100% / 20% = 5:1).\n\n#### [Demonstracja](http://codepen.io/AllThingsSmitty/pen/jALZvE)\n\n<sup>[powrót do spisu treści](#powrót-do-spisu-treści )</sup>\n\n\n### Wystylizuj uszkodzone obrazy\n\nSpraw, aby uszkodzone obrazy były bardziej estetyczne z użyciem odrobiny CSS:\n\n```css\nimg {\n  display: block;\n  font-family: sans-serif;\n  font-weight: 300;\n  height: auto;\n  line-height: 2;\n  position: relative;\n  text-align: center;\n  width: 100%;\n}\n```\n\nNastępnie dodaj reguły pseudoelementów, aby wyświetlić komunikat użytkownika i adres URL uszkodzonego obrazu:\n\n```css\nimg::before {\n  content: \"We're sorry, the image below is broken :(\";\n  display: block;\n  margin-bottom: 10px;\n}\n\nimg::after {\n  content: \"(url: \" attr(src) \")\";\n  display: block;\n  font-size: 12px;\n}\n```\n\nDowiedz się więcej o stylizacji używając tego wzoru w oryginalnym [originalny artykule](http://bitsofco.de/styling-broken-images/) [Ire Aderinokun](https://github.com/ireade/).\n\n<sup>[powrót do spisu treści](#powrót-do-spisu-treści )</sup>\n\n\n### Użyj `rem` dla ustawień globalnych rozmiarow i `em` do ustawień localnych\nPo ustawieniu podstawowego rozmiaru czcionki w katalogu głównym (`html { font-size: 100%; }`), ustaw rozmiar czcionki dla elementów tekstowych na `em`:\n\n```css\nh2 {\n  font-size: 2em;\n}\n\np {\n  font-size: 1em;\n}\n```\n\nNastępnie ustaw rozmiar czcionki dla modułów na rem`:\n\n```css\narticle {\n  font-size: 1.25rem;\n}\n\naside .module {\n  font-size: .9rem;\n}\n```\n\n\nTeraz każdy moduł jest podzielony na sekcje. Sprawia to żę stylizacja i utrzymanie kodu jest łątwiejsze.\n\n<sup>[powrót do spisu treści](#powrót-do-spisu-treści )</sup>\n\n\n### Ukryj filmy z autoodtwarzaniem, które nie są wyciszone\n\nTo świetna sztuczka dla niestandardowego arkusza stylów użytkownika. Unikaj przeciążania użytkownika dźwiękiem z filmu, który odtwarza się automatycznie po wczytaniu strony. Jeśli dźwięk nie jest wyciszony, nie pokazuj widea:\n\n```css\nvideo[autoplay]:not([muted]) {\n  display: none;\n}\n```\n\n\nPo raz kolejny wykorzystujemy pseudo-klasę [`:not()`](#use-not-to-applyunapply-borders-on-navigation) \n\n<sup>[Powrót do spisu treści](#Powrót-do-spisu-treści</sup>\n\n\n### Użyj `:root` dla elastycznych typów\n\nRozmiar czcionki typowej w elastyczny układzie (responsive layout) powinien być dostosowywany dla każdego ekranu. Możesz obliczyć rozmiar czcionki na podstawie wysokości i szerokości okna roboczego używając `:root`:\n\n```css\n:root {\n  font-size: calc(1vw + 1vh + .5vmin);\n}\n```\n\nNastępnie możesz użyć jednostki`root em` na podstawie wartości obliczonej przez `:root`:\n\n```css\nbody {\n  font: 1rem/1.6 sans-serif;\n}\n```\n\n#### [Demonstracja](http://codepen.io/AllThingsSmitty/pen/XKgOkR)\n\n<sup>[powrót do spisu treści](#powrót-do-spisu-treści )</sup>\n\n\n### Ustaw rozmiar czcionki w elementach formularza\n\nAby uniknąć korzystania z przeglądarek komórkowych  (iOS Safari etc.) podczas powiększania elementów formularzy HTML, po dotknięciu menu rozwijanego `<select>` dnależy dodać `font-size` do reguły selektora:\n\n```css\ninput[type=\"text\"],\ninput[type=\"number\"],\nselect,\ntextarea {\n  font-size: 16px;\n}\n```\n\n:dancer:\n\n<sup>[Powrót do spisu treści](#Powrót-do-spisu-treści)</sup>\n\n\n### Użyj zdarzeń wskaźnika do sterowania zdarzeniami myszy\n\n[Pointer events](https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events) umożliwiają określenie sposobu interakcji myszy z elementem, na które kilka. Aby wyłączyć domyślne zdarzenie wskaźnika na przycisku, na przykład:\n\n```css\nbutton:disabled {\n  opacity: .5;\n  pointer-events: none;\n}\n```\n\nTo takie proste.\n\n<sup>[Powrót do spisu treści](#Powrót-do-spisu-treści)</sup>\n\n\n### Ustaw `display: none` na Podziały linii używane jako odstępy\n\nJak zauważył [Harry Roberts](https://twitter.com/csswizardry/status/1170835532584235008), może to pomóc zapobiec korzystaniu przez użytkowników CMS z dodatkowych podziałów linii dla odstępów:\n\n```css\nbr + br {\n  display: none;\n}\n```\n\n<sup>[Powrót do spisu treści](#Powrót-do-spisu-treści)</sup>\n\n\n## Wsparcie\n\nWersje aktualne Chrome, Firefox, Safari, e Edge.\n\n<sup>[Powrót do spisu treści](#Powrót-do-spisu-treści)</sup>"
  },
  {
    "path": "translations/pt-BR/README.md",
    "content": "<div align=\"center\">\n  <img src=\"../../assets/img/bulb.svg\" width=\"200\" alt=\"light bulb icon\">\n</div>\n\n# CSS Protips [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\nUma coleção de dicas para aumentar suas habilidades no CSS.\n\n> Dê uma olhada em mais algumas [listas fantásticas](https://github.com/sindresorhus/awesome/) mantidas por [@sindresorhus](https://github.com/sindresorhus/).\n\n\n## Índice\n\n* [Protips](#protips)\n* [Suporte](#suporte)\n* [Guia de Contribuições](../../CONTRIBUTING.md)\n\n\n## Protips\n\n1. [Use um Reset CSS](#use-um-reset-css)\n1. [Herde o `box-sizing`](#herde-o-box-sizing)\n1. [Use `unset` em vez de redefinir todas as propriedades](#use-unset-em-vez-de-redefinir-todas-as-propriedades)\n1. [Use `:not()` para Aplicar/Remover Bordas](#use-not-para-aplicarremover-bordas)\n1. [Verifique se a fonte está instalada localmente](#verifique-se-a-fonte-está-instalada-localmente)\n1. [Defina o `line-height` no `body`](#defina-o-line-height-no-body)\n1. [Definir `:focus` para elementos de formulário](#definir-focus-para-elementos-de-formulário)\n1. [Alinhe Elementos Verticalmente](#alinhe-elementos-verticalmente)\n1. [Use `aspect-ratio` ao invés de Height/Width](#use-aspect-ratio-ao-invés-de-heightwidth)\n1. [Listas Separadas por Vírgula](#listas-separadas-por-vírgula)\n1. [Selecione Itens Usando `nth-child` Negativo](#selecione-itens-usando-nth-child-negativo)\n1. [Ícones SVG](#Ícones-svg)\n1. [Use o Seletor \"Lobotomized Owl\"](#use-o-seletor-lobotomized-owl)\n1. [Sliders em CSS com `max-height`](#sliders-em-css-com-max-height)\n1. [Tabelas com Células de Tamanho Igual](#tabelas-com-células-de-tamanho-igual)\n1. [Esqueça as \"Margin Hacks\", use Flexbox](#esqueça-as-margin-hacks-use-flexbox)\n1. [Use Seletores de Atributo em Links Vazios](#use-seletores-de-atributo-em-links-vazios)\n1. [Controle Melhor a Especificidade Com `:is()`](#controle-melhor-a-especificidade-com-is)\n1. [Estilize Links \"Default\"](#estilize-links-default)\n1. [Div com Proporção de Tela Fixa](#div-com-proporção-de-tela-fixa)\n1. [Estilize Imagens Quebradas](#estilize-imagens-quebradas)\n1. [Use `rem` para Definir Tamanhos Globais; Use `em` para Definir Tamanhos Locais](#use-rem-para-definir-tamanhos-globais-use-em-para-definir-tamanhos-locais)\n1. [Esconda Vídeos em Autoplay Que Não Estejam no Mudo](#esconda-vídeos-em-autoplay-que-não-estejam-no-mudo)\n1. [Use `:root` para uma Tipografia Flexível](#use-root-para-uma-tipografia-flexível)\n1. [Defina `font-size` em Elementos de Formulário para uma Melhor Experiência Mobile](#defina-font-size-em-elementos-de-formulário-para-uma-melhor-experiência-mobile)\n1. [Use eventos de ponteiro para controlar eventos do mouse](#use-eventos-de-ponteiro-para-controlar-eventos-do-mouse)\n1. [Definir `display: none` em quebras de linha usadas como espaçamento](#definir-display-none-em-quebras-de-linha-usadas-como-espaçamento)\n1. [Use `:empty` para Esconder Eelementos HTML Vazios](#use-empty-para-esconder-elementos-html-vazios)\n\n### Use um Reset CSS\n\nResetar o CSS vai te ajudar a manter a consistência de estilo em diferentes navegadores com um ponto de partida limpo para elementos de estilo. Você pode usar a biblioteca de reset CSS como [Normalize](http://necolas.github.io/normalize.css/), ou se preferir, usar uma abordagem mais simplificada.:\n\n```css\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n```\n\nAgora os elementos estarão sem margens, preenchimento e `box-sizing`. Te permitindo gerenciar o layout com o seu CSS.\n\n#### [Exemplo](http://codepen.io/AllThingsSmitty/pen/kkrkLL)\n\n**Nota:** Se você seguir a dica [Herde o box-sizing](#herde-o-box-sizing) abaixo você pode optar por não incluir a propriedade `box-sizing` em sua redefinição de CSS.\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Herde o `box-sizing`\n\nFaça com que o `box-sizing` seja herdado do `html`:\n\n```css\nhtml {\n  box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: inherit;\n}\n```\n\nAssim fica fácil de alterar o `box-sizing` em plugins ou outros componentes que tenham um comportamento diferente.\n\n#### [Exemplo](https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/)\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Use `unset` em vez de redefinir todas as propriedades\n\nAo redefinir as propriedades de um elemento, não é necessário redefinir cada propriedade individual:\n\n```css\nbutton {\n  background: none;\n  border: none;\n  color: inherit;\n  font: inherit;\n  outline: none;\n  padding: 0;\n}\n```\n\nVocê pode especificar todas as propriedades de um elemento usando a abreviação `all`. Definir o valor como `unset` altera as propriedades de um elemento para seus valores iniciais:\n\n```css\nbutton {\n  all: unset;\n}\n```\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Use `:not()` para Aplicar/Remover Bordas\n\nAo invés de colocar a borda…\n\n```css\n/* adiciona a borda */\n.nav li {\n  border-right: 1px solid #666;\n}\n```\n\n…para então remover no último elemento…\n\n```css\n/* remove a borda */\n.nav li:last-child {\n  border-right: none;\n}\n```\n\n…utilize a _pseudo-classe_ `:not()` para aplicar a borda apenas nos elementos corretos:\n\n```css\n.nav li:not(:last-child) {\n  border-right: 1px solid #666;\n}\n```\n\nO seletor CSS define a borda da maneira que um humano a descreveria.\n\n#### [Exemplo](http://codepen.io/AllThingsSmitty/pen/LkymvO)\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Verifique se a fonte está instalada localmente\n\nVocê pode verificar se uma fonte está instalada localmente antes de buscá-la remotamente, o que também é uma boa dica de desempenho.\n\n```css\n@font-face {\n  font-family: \"Dank Mono\";\n  src:\n    /* Full name */\n    local(\"Dank Mono\"),\n    /* Postscript name */\n    local(\"Dank-Mono\"),\n    /* Otherwise, download it! */\n    url(\"//...a.server/fonts/DankMono.woff\");\n}\n\ncode {\n  font-family: \"Dank Mono\", system-ui-monospace;\n}\n```\n\nDica de chapéu para Adam Argyle por compartilhar este protip e [exemplo](https://codepen.io/argyleink/pen/VwYJpgR).\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Defina o `line-height` no `body`\n\nVocê não precisa adicionar o `line-height` para cada `<p>`, `<h*>`, _et al_. separadamente. Apenas adicione ao `body`:\n\n```css\nbody {\n  line-height: 1.5;\n}\n```\n\nDessa maneira elementos de texto vão herdar o `line-height` do `body`.\n\n#### [Exemplo](http://codepen.io/AllThingsSmitty/pen/VjbdYd)\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Definir `:focus` para elementos de formulário\n\nOs usuários de teclado com visão dependem do foco para determinar onde os eventos de teclado vão na página. Faça com que os elementos do formulário se foquem e sejam consistentes com a implementação padrão do navegador:\n\n```css\na:focus,\nbutton:focus,\ninput:focus,\nselect:focus,\ntextarea:focus {\n  box-shadow: none;\n  outline: #000 dotted 2px;\n  outline-offset: .05em;\n}\n```\n\n#### [Exemplo](https://codepen.io/AllThingsSmitty/pen/ePzoOP/)\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Alinhe Elementos Verticalmente\n\nQue bruxaria é essa? Não é bruxaria! Você realmente pode centralizar elementos verticalmente:\n\n```css\nhtml,\nbody {\n  height: 100%;\n  margin: 0;\n}\n\nbody {\n  -webkit-align-items: center;\n  -ms-flex-align: center;\n  align-items: center;\n  display: -webkit-flex;\n  display: flex;\n}\n```\n\n...e também com CSS Grid:\n\n```css\nbody {\n  display: grid;\n  height: 100vh;\n  margin: 0;\n  place-items: center center;\n}\n```\n\nIsso não resolveu seu problema? O site CSS-Tricks tem [um guia completo](https://css-tricks.com/centering-css-complete-guide/) de como centralizar elementos com CSS.\n\n#### [Exemplo](http://codepen.io/AllThingsSmitty/pen/GqmGqZ)\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n### Use `aspect-ratio` ao Invés de Height/Width\n\nA propriedade `aspect-ratio` permite que você dimensione elementos facilmente e mantem a proporção largura-altura (width-to-height) consistênte. Isso é incrivelmente útil em web design responsivo para prevenir alterações no layout. Use `object-fit` com isso para prevenir quebras no layout se os valores de altura/largura das images mudar.\n\n```css\nimg {\n  aspect-ratio: 16 / 9; /* width / height */\n  object-fit: cover;\n}\n```\n\nAprenda mais sobre a propriedade `aspect-ratio` neste [web.dev post](https://web.dev/articles/aspect-ratio).\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/MWxwoNx/)\n\n> [!NOTA]\n> `aspect-ratio` e `object-fit` não são suportados em IE11.\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n### Listas Separadas por Vírgula\n\nTransforme listas normais em listas separadas por vírgula:\n\n```css\nul > li:not(:last-child)::after {\n  content: \",\";\n}\n```\n\nUtilize a _pseudo-classe_ `:not()` para evitar que a vírgula seja adicionada depois do último item.\n\n**Aviso:** Se considerarmos acessibilidade essa dica pode não ser ideal, especialmente para usuários de leitores de tela. Além disso, copiar e/ou colar não funcionam em conteúdo criado com CSS. Proceda com cautela.\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Selecione Itens Usando `nth-child` Negativo\n\nUtilize `nth-child` negativo no CSS para selecionar itens de 1 a n.\n\n```css\nli {\n  display: none;\n}\n\n/* mostrar itens de 1 a 3 */\nli:nth-child(-n+3) {\n  display: block;\n}\n```\n\nJá que você aprendeu um pouquinho sobre como usar a _pseudo-classe_ [using `:not()`](#use-not-to-applyunapply-borders-on-navigation), você pode tentar:\n\n```css\n/* selecione todos os itens, exceto os primeiros 3 e exiba-os */\nli:not(:nth-child(-n+3)) {\n  display: none;\n}\n```\n\nMais fácil que isso só dois disso.\n\n#### [Exemplo](http://codepen.io/AllThingsSmitty/pen/WxjKZp)\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Ícones SVG\n\nNão tem porque você não usar ícones em SVG:\n\n```css\n.logo {\n  background: url(\"logo.svg\");\n}\n```\n\nA vantagem do SVG é que o ícone fica bom em qualquer resolução, além de ter suporte amplo em todos os browsers [desde o IE9](http://caniuse.com/#search=svg). Agora você pode se desfazer dos seus arquivos .png, .jpg, ou ainda .gif-jif-qissomano.\n\n**Aviso:** Se você tem botões feitos apenas com ícones SVG, a dica a seguir o ajudará a manter a acessibilidade:\n\n```css\n.no-svg .icon-only::after {\n  content: attr(aria-label);\n}\n```\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Use o Seletor \"Lobotomized Owl\"\n\nO nome é super estranho (coruja lobotomizada), mas o uso do seletor universal (`*`) com o seletor adjacente (`+`) pode ser muito útil:\n\n```css\n* + * {\n  margin-top: 1.5em;\n}\n```\n\nNesse exemplo, todos os elementos acompanhados de outros elementos recebem `margin-top: 1.5em`.\n\nPara mais exemplos utilizando o seletor \"lobotomized owl\", leia [o artigo escrito por Heydon Pickering](http://alistapart.com/article/axiomatic-css-and-lobotomized-owls) no site *A List Apart*.\n\n#### [Exemplo](http://codepen.io/AllThingsSmitty/pen/grRvWq)\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Sliders em CSS com `max-height`\n\nCrie _sliders_ usando apenas CSS com `max-height` e `overflow-y: hidden`:\n\n```css\n.slider {\n  max-height: 200px;\n  overflow-y: hidden;\n  width: 300px;\n}\n\n.slider:hover {\n  max-height: 600px;\n  overflow-y: scroll;\n}\n```\n\nO elemento se expandirá ao valor definido no `max-height` no _hover_ e você terá um _slider_ devido ao uso do overflow.\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Tabelas com Células de Tamanho Igual\n\nNão tem nada mais chato do que trabalhar com tabelas, mas você pode usar `table-layout: fixed` para manter as células do mesmo tamanho:\n\n```css\n.calendar {\n  table-layout: fixed;\n}\n```\n\nTabelas sem dor de cabeça.\n\n#### [Exemplo](http://codepen.io/AllThingsSmitty/pen/jALALm)\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Esqueça as \"Margin Hacks\", use Flexbox\n\nQuando definir o espaçamento entre as colunas, você pode deixar os seletores `nth-`, `first-`, e `last-child` de lado e usar a propriedade `space-between` do flexbox:\n\n```css\n.list {\n  display: flex;\n  justify-content: space-between;\n}\n\n.list .person {\n  flex-basis: 23%;\n}\n```\n\nAssim as colunas ficam espaçadas uniformemente.\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Use Seletores de Atributo em Links Vazios\n\nMostre links para tags `<a>` vazias que possuem o atributo `href`:\n\n```css\na[href^=\"http\"]:empty::before {\n  content: attr(href);\n}\n```\n\nMão na roda.\n\n#### [Exemplo](http://codepen.io/AllThingsSmitty/pen/zBzXRx)\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n### Controle Melhor a Especificidade Com `:is()`\n\nA pseudoclasse `:is()` é usada para marca vários seletores de uma só vez, reduzindo a redundância e melhorando a legibilidade do código. Isso é extremamente útil para escrever seletores grandes de uma forma mais compacta.\n\n```css\n:is(section, article, aside, nav) :is(h1, h2, h3, h4, h5, h6) {\n  color: green;\n}\n```\n\nO conjunto de regras acima é equivalente às seguintes regras do seletor de números...\n\n```css\nsection h1, section h2, section h3, section h4, section h5, section h6,\narticle h1, article h2, article h3, article h4, article h5, article h6,\naside h1, aside h2, aside h3, aside h4, aside h5, aside h6,\nnav h1, nav h2, nav h3, nav h4, nav h5, nav h6 {\n  color: green;\n}\n```\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/rNRVxdx)\n\n> [!NOTA]\n> A pseudoclasse `:is()` não é suportada em IE11.\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n### Estilize Links \"Default\"\n\nDefina estilos para links \"default\":\n\n```css\na[href]:not([class]) {\n  color: #008000;\n  text-decoration: underline;\n}\n```\n\nDessa forma, links que são inseridos por CMS – que normalmente não possuem o atributo `class` – vão ser estilizados sem comprometer outros links.\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Div com Proporção de Tela Fixa\n\nPara criar uma div com proporção de tela fixa, tudo que você precisa fazer é adicionar `padding` (`top` ou `bottom`) a div pai:\n\n```css\n.container {\n  height: 0;\n  padding-bottom: 20%;\n  position: relative;\n}\n\n.container div {\n  border: 2px dashed #ddd;\n  height: 100%;\n  left: 0;\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n```\n\nSe você usar 20% no `padding` a altura da div vai ser igual a 20% de sua largura. Independente da largura do _viewport_, a div filho vai sempre manter a proporção de tela (100% / 20% = 5:1).\n\n#### [Exemplo](http://codepen.io/AllThingsSmitty/pen/jALZvE)\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Estilize Imagens Quebradas\n\nFaça com que imagens quebradas fiquem esteticamente mais agradáveis com um pouquinho de CSS:\n\n```css\nimg {\n  display: block;\n  font-family: sans-serif;\n  font-weight: 300;\n  height: auto;\n  line-height: 2;\n  position: relative;\n  text-align: center;\n  width: 100%;\n}\n```\n\nAgora adicione regras com _pseudo-elementos_ para mostrar uma mensagem e a URL da imagem quebrada:\n\n```css\nimg::before {\n  content: \"Desculpe, a imagem abaixo não pode ser carregada :(\";\n  display: block;\n  margin-bottom: 10px;\n}\n\nimg::after {\n  content: \"(url: \" attr(src) \")\";\n  display: block;\n  font-size: 12px;\n}\n```\n\nLeia mais sobre como estilizar imagens quebradas no [artigo original](http://bitsofco.de/styling-broken-images/) por [Ire Aderinokun](https://github.com/ireade/).\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Use `rem` para Definir Tamanhos Globais; Use `em` para Definir Tamanhos Locais\n\nDepois de definir o tamanho de fonte base na raíz (`html { font-size: 100%; }`), defina o tamanho de fonte para elementos de texto utilizando `em`:\n\n```css\nh2 {\n  font-size: 2em;\n}\n\np {\n  font-size: 1em;\n}\n```\n\nEntão defina o tamanho da fonte de módulos utilizando `rem`:\n\n```css\narticle {\n  font-size: 1.25rem;\n}\n\naside .module {\n  font-size: .9rem;\n}\n```\n\nAssim fica mais fácil de estilizar e manter cada módulo, além de ser flexível.\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Esconda Vídeos em Autoplay Que Não Estejam no Mudo\n\nÓtima dica para uma _stylesheet_ personalizada. Evite sobrecarregar o usuário com som de vídeos em autoplay. Se o som não estiver no mudo, esconda o vídeo:\n\n```css\nvideo[autoplay]:not([muted]) {\n  display: none;\n}\n```\n\nE aqui mais uma entre as muitas vantagens de usar a _pseudo-classe_ [`:not()`](#use-not-to-applyunapply-borders-on-navigation).\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Use `:root` para uma Tipografia Flexível\n\nO tamanho de fonte de um site _responsivo_ deveria ser ajustável de acordo com cada _viewport_. Você pode calcular o tamanho da fonte baseado na largura e na altura do _viewport_ usando `:root`:\n\n```css\n:root {\n  font-size: calc(1vw + 1vh + .5vmin);\n}\n```\n\nAssim você pode utilizar a unidade de medida `root em` baseada no valor calculado por `:root`:\n\n```css\nbody {\n  font: 1rem/1.6 sans-serif;\n}\n```\n\n#### [Exemplo](http://codepen.io/AllThingsSmitty/pen/XKgOkR)\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Defina `font-size` em Elementos de Formulário para uma Melhor Experiência Mobile\n\nPara evitar zoom indesejado em elementos de formulários de navegadores mobile (iOS Safari, _et al_) quando um `<select>` é selecionado, adicione `font-size` no seletor:\n\n```css\ninput[type=\"text\"],\ninput[type=\"number\"],\nselect,\ntextarea {\n  font-size: 16px;\n}\n```\n\n:dancer:\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Use eventos de ponteiro para controlar eventos do mouse\n\n[Eventos de ponteiro](https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events) permitem que você especifique como o mouse interage com o elemento que está tocando. Para desativar o evento de ponteiro padrão em um botão, por exemplo:\n\n```css\nbutton:disabled {\n  opacity: .5;\n  pointer-events: none;\n}\n```\n\nÉ simples assim.\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n### Definir `display: none` em quebras de linha usadas como espaçamento\n\nComo [Harry Roberts apontou](https://twitter.com/csswizardry/status/1170835532584235008), isso pode ajudar a impedir que os usuários do CMS usem quebras de linha extras para espaçamento:\n\n```css\nbr + br {\n  display: none;\n}\n```\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n### Use `:empty` para Esconder Elementos HTML Vazios\n\nSe você tem elementos HTML vazios, ou seja, o conteúdo ainda tem que ser definido ou pela CMS ou injetado dinamicamente (e.g., `<p class=\"error-message\"></p>`) e está criando espaços indesejáveis no seu layout, use a pseudoclasse `:empty` para esconder os elementos no layout.\n\n```css\n:empty {\n  display: none;\n}\n```\n\n> [!NOTA]\n> Lembre-se que os elementos com espaços em branco não são considerados vazios, e.g., `<p class=\"error-message\"> </p>`.\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n## Suporte\n\nVersões atuais do Chrome, Firefox, Safari, e Edge.\n\n<sup>[voltar ao índice](#Índice)</sup>"
  },
  {
    "path": "translations/pt-PT/README.md",
    "content": "<p align=\"center\">\n  <img src=\"../../assets/img/bulb.svg\" alt=\"light bulb icon\">\n</p>\n\n# CSS Protips [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\nUma coleção de dicas para aumentar as tuas habilidades no CSS.\n\n> Dá  uma olhada em outras [listas fantásticas](https://github.com/sindresorhus/awesome/) mantidas por [@sindresorhus](https://github.com/sindresorhus/).\n\n\n## Índice\n\n* [Protips](#protips)\n* [Suporte](#suporte)\n* [Contribuições](../../CONTRIBUTING.md)\n\n\n## Protips\n\n1. [Usa um Reset CSS](#usa-um-reset-css)\n1. [Herda o `box-sizing`](#herda-o-box-sizing)\n1. [Use `unset` em vez de redefinir todas as propriedades](#use-unset-em-vez-de-redefinir-todas-as-propriedades)\n1. [Usa `:not()` para Aplicar/Remover Bordas](#usa-not-para-aplicarremover-bordas)\n1. [Verifique se a fonte está instalada localmente](#verifique-se-a-fonte-está-instalada-localmente)\n1. [Define o `line-height` no `body`](#define-o-line-height-no-body)\n1. [Alinha Elementos Verticalmente](#alinha-elementos-verticalmente)\n1. [Definir `:focus` para elementos de formulário](#definir-focus-para-elementos-de-formulário)\n1. [Listas Separadas por Vírgula](#listas-separadas-por-vírgula)\n1. [Seleciona Itens Usando `nth-child` Negativo](#seleciona-itens-usando-nth-child-negativo)\n1. [Ícones SVG](#Ícones-svg)\n1. [Usa o Seletor \"Lobotomized Owl\"](#usa-o-seletor-lobotomized-owl)\n1. [Sliders em CSS com `max-height`](#sliders-em-css-com-max-height)\n1. [Tabelas com Células de Tamanho Igual](#tabelas-com-células-de-tamanho-igual)\n1. [Esquece as \"Margin Hacks\", use Flexbox](#esquece-as-margin-hacks-usa-a-flexbox)\n1. [Usa Seletores de Atributo em Links Vazios](#usa-seletores-de-atributo-em-links-vazios)\n1. [Estiliza Links \"Default\"](#estiliza-links-default)\n1. [Div com Proporção de Tela Fixa](#div-com-proporção-de-tela-fixa)\n1. [Estiliza Imagens Quebradas](#estiliza-imagens-quebradas)\n1. [Usa `rem` para Definir Tamanhos Globais; Usa `em` para Definir Tamanhos Locais](#usa-rem-para-definir-tamanhos-globais-usa-em-para-definir-tamanhos-locais)\n1. [Esconde Vídeos em Autoplay Que Não Estejam no modo Mudo](#esconde-vídeos-em-autoplay-que-não-estejam-no-mudo)\n1. [Usa `:root` para uma Tipografia Flexível](#usa-root-para-uma-typografia-flexível)\n1. [Defina `font-size` em Elementos de Formulário para uma Melhor Experiência Mobile](#defina-font-size-em-elementos-de-formulário-para-uma-melhor-experiência-mobile)\n1. [Use eventos de ponteiro para controlar eventos do mouse](#use-eventos-de-ponteiro-para-controlar-eventos-do-mouse)\n1. [Definir `display: none` em quebras de linha usadas como espaçamento](#definir-display-none-em-quebras-de-linha-usadas-como-espaçamento)\n\n\n### Usa um Reset CSS\n\nReiniciar o CSS vai ajudar te a manter a consistência de estilo em diferentes navegadores com um ponto de partida limpo para elementos de estilo. Tu podes usar a biblioteca de reset CSS como [Normalize](http://necolas.github.io/normalize.css/), ou se preferires,adota uma abordagem mais simplificada.:\n\n```css\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n```\n\nAgora os elementos estão sem margens, preenchimento e `box-sizing`.Permitindo-te gerir o layout com o teu CSS.\n\n#### [Passeata](http://codepen.io/AllThingsSmitty/pen/kkrkLL)\n\n**Nota:** Se tu seguires o guia [Herda o box-sizing](#herde-o-box-sizing) abaixo, podes optar por não incluir a propriedade `box-sizing` na tua redefinição de CSS.\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Herda o `box-sizing`\n\nFaz com que o `box-sizing` seja herdado do `html`:\n\n```css\nhtml {\n  box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: inherit;\n}\n```\n\nAssim fica mais fácil de alterar o `box-sizing` em plugins ou outros componentes que tenham um comportamento diferente.\n\n#### [Passeata](https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/)\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Use `unset` em vez de redefinir todas as propriedades\n\nAo redefinir as propriedades de um elemento, não é necessário redefinir cada propriedade individual:\n\n```css\nbutton {\n  background: none;\n  border: none;\n  color: inherit;\n  font: inherit;\n  outline: none;\n  padding: 0;\n}\n```\n\nVocê pode especificar todas as propriedades de um elemento usando a abreviação `all`. Definir o valor como `unset` altera as propriedades de um elemento para seus valores iniciais:\n\n```css\nbutton {\n  all: unset;\n}\n```\n\n<sup>[voltar ao índice](#Índice)</sup>\n\n\n### Usa `:not()` para Aplicar/Retirar Bordas\n\nAo invés de colocar a borda…\n\n```css\n/* adiciona a borda */\n.nav li {\n  border-right: 1px solid #666;\n}\n```\n\n…para então retirar o último elemento…\n\n```css\n/* retira a borda */\n.nav li:last-child {\n  border-right: none;\n}\n```\n\n…utiliza a _pseudo-class_ `:not()` para aplicar a borda apenas nos elementos corretos:\n\n```css\n.nav li:not(:last-child) {\n  border-right: 1px solid #666;\n}\n```\n\nO seletor CSS define a borda da maneira que um humano a descreveria.\n\n#### [Passeata](http://codepen.io/AllThingsSmitty/pen/LkymvO)\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Verifique se a fonte está instalada localmente\n\nVocê pode verificar se uma fonte está instalada localmente antes de buscá-la remotamente, o que também é uma boa dica de desempenho.\n\n```css\n@font-face {\n  font-family: \"Dank Mono\";\n  src:\n    /* Full name */\n    local(\"Dank Mono\"),\n    /* Postscript name */\n    local(\"Dank-Mono\"),\n    /* Otherwise, download it! */\n    url(\"//...a.server/fonts/DankMono.woff\");\n}\n\ncode {\n  font-family: \"Dank Mono\", system-ui-monospace;\n}\n```\n\nDica de chapéu para Adam Argyle por compartilhar este protip e [exemplo](https://codepen.io/argyleink/pen/VwYJpgR).\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Define o `line-height` no `body`\n\nNão precisas de adicionar o `line-height` para cada `<p>`, `<h*>`, _et al_. separadamente. Apenas adiciona ao `body`:\n\n```css\nbody {\n  line-height: 1.5;\n}\n```\n\nDesta forma elementos de texto vão herdar o `line-height` do `body`.\n\n#### [Passeata](http://codepen.io/AllThingsSmitty/pen/VjbdYd)\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Definir `:focus` para elementos de formulário\n\nOs usuários de teclado com visão dependem do foco para determinar onde os eventos de teclado vão na página. Faça com que os elementos do formulário se foquem e sejam consistentes com a implementação padrão do navegador:\n\n```css\na:focus,\nbutton:focus,\ninput:focus,\nselect:focus,\ntextarea:focus {\n  box-shadow: none;\n  outline: #000 dotted 2px;\n  outline-offset: .05em;\n}\n```\n\n#### [Passeata](https://codepen.io/AllThingsSmitty/pen/ePzoOP/)\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Alinha Elementos Verticalmente\n\nQue bruxaria é essa? Não é bruxaria!Tu realmente podes centralizar elementos verticalmente:\n\n```css\nhtml,\nbody {\n  height: 100%;\n  margin: 0;\n}\n\nbody {\n  -webkit-align-items: center;\n  -ms-flex-align: center;\n  align-items: center;\n  display: -webkit-flex;\n  display: flex;\n}\n```\n\n...e também com CSS Grid:\n\n```css\nbody {\n  display: grid;\n  height: 100vh;\n  margin: 0;\n  place-items: center center;\n}\n```\n\nIsto não resolveu o teu problema? O site CSS-Tricks tem [um guia completo](https://css-tricks.com/centering-css-complete-guide/) em como centralizar elementos com CSS.\n\n#### [Passeata](http://codepen.io/AllThingsSmitty/pen/GqmGqZ)\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Listas Separadas por Vírgula\n\nTransforma listas normais em listas separadas por vírgula:\n\n```css\nul > li:not(:last-child)::after {\n  content: \",\";\n}\n```\n\nUtilize a _pseudo-class_ `:not()` para evitar que a vírgula seja adicionada depois do último item.\n\n**Aviso:** Tendo em conta acessibilidade esta dica pode não ser ideal, especialmente para utilizadores de leitores de tela. Além disso, copiar e/ou colar não funciona em conteúdo criado com CSS. Procede com cautela.\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Seleciona Itens Usando `nth-child` Negativo\n\nUtilize `nth-child` negativo no CSS para selecionar itens de 1 a n.\n\n```css\nli {\n  display: none;\n}\n\n/* mostrar itens de 1 a 3 */\nli:nth-child(-n+3) {\n  display: block;\n}\n```\n\nJá que aprendeste um bocadinho sobre como usar a _pseudo-class_ [using `:not()`](#use-not-to-applyunapply-borders-on-navigation), agora podes tentar:\n\n```css\n/* seleciona todos os itens, exceto o primeiro 3 e exibe-os */\nli:not(:nth-child(-n+3)) {\n  display: none;\n}\n```\n\nMais fácil que isto não há.\n\n#### [Passeata](http://codepen.io/AllThingsSmitty/pen/WxjKZp)\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Ícones SVG\n\nNão há motivo nenhum para não usares ícones em SVG:\n\n```css\n.logo {\n  background: url(\"logo.svg\");\n}\n```\n\nA vantagem da SVG é que o ícone fica bom em qualquer resolução, além de ter suporte amplo em todos os browsers [desde o IE9](http://caniuse.com/#search=svg). Agora podes  desfazer-te dos teus arquivos .png, .jpg, ou ainda .gif-jif-qissomano.\n\n**Aviso:** Se tens botões feitos apenas com ícones SVG, a dica a seguir ajudará-te a manter a acessibilidade:\n\n```css\n.no-svg .icon-only::after {\n  content: attr(aria-label);\n}\n```\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Usa o Seletor \"Lobotomized Owl\"\n\nO nome é super estranho (traduzido literalmente para:\"coruja lobotomizada\"), mas o seu uso do seletor universal (`*`) com o seletor adjacente (`+`) pode ser muito útil:\n\n```css\n* + * {\n  margin-top: 1.5em;\n}\n```\n\nNeste exemplo, todos os elementos acompanhados de outros elementos recebem `margin-top: 1.5em`.\n\nPara mais exemplos utilizando o seletor \"lobotomized owl\", lê [o artigo escrito por Heydon Pickering](http://alistapart.com/article/axiomatic-css-and-lobotomized-owls) no site *A List Apart*.\n\n#### [Passeata](http://codepen.io/AllThingsSmitty/pen/grRvWq)\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Sliders em CSS com `max-height`\n\nCria _sliders_ usando apenas CSS com `max-height` e `overflow-y: hidden`:\n\n```css\n.slider {\n  max-height: 200px;\n  overflow-y: hidden;\n  width: 300px;\n}\n\n.slider:hover {\n  max-height: 600px;\n  overflow-y: scroll;\n}\n```\n\nO elemento expandirá-se ao valor definido no `max-height` no _hover_ e terás um _slider_ devido ao uso do overflow.\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Tabelas com Células de Tamanho Igual\n\nNão há nada mais chato do que trabalhar com tabelas, mas agora podes usar `table-layout: fixed` para manter as células do mesmo tamanho:\n\n```css\n.calendar {\n  table-layout: fixed;\n}\n```\n\nTabelas sem dores de cabeça.\n\n#### [Passeata](http://codepen.io/AllThingsSmitty/pen/jALALm)\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Esquece as \"Margin Hacks\", usa a Flexbox\n\nQuando definires o espaçamento entre as colunas,deixa os seletores `nth-`, `first-`, e `last-child` de lado e usa a propriedade `space-between` do flexbox:\n\n```css\n.list {\n  display: flex;\n  justify-content: space-between;\n}\n\n.list .person {\n  flex-basis: 23%;\n}\n```\n\nAssim as colunas ficam espaçadas uniformemente.\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Usa Seletores de Atributo em Links Vazios\n\nMostra links para `<a>` tags vazias que possuem o atributo `href`:\n\n```css\na[href^=\"http\"]:empty::before {\n  content: attr(href);\n}\n```\n\nMão na roda.\n\n#### [Passeata](http://codepen.io/AllThingsSmitty/pen/zBzXRx)\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Estiliza Links \"Default\"\n\nDefine estilos para links \"default\":\n\n```css\na[href]:not([class]) {\n  color: #008000;\n  text-decoration: underline;\n}\n```\n\nDesta forma, links que foram inseridos por CMS – que normalmente não possuem o atributo `class` – vão ser estilizados sem comprometer outros links.\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Div com Proporção de Tela Fixa\n\nPara criar uma div com proporção de tela fixa, tudo que você precisa fazer é adicionar `padding` (`top` ou `bottom`) a div pai:\n\n```css\n.container {\n  height: 0;\n  padding-bottom: 20%;\n  position: relative;\n}\n\n.container div {\n  border: 2px dashed #ddd;\n  height: 100%;\n  left: 0;\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n```\n\nSe usares 20% no `padding` a altura da div vai ser igual a 20% de sua largura. Independente da largura do _viewport_, a div filho vai sempre manter a proporção de tela (100% / 20% = 5:1).\n\n#### [Passeata](http://codepen.io/AllThingsSmitty/pen/jALZvE)\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Estiliza Imagens Quebradas\n\nFaz com que imagens quebradas fiquem esteticamente mais agradáveis com um pouquinho de CSS:\n\n```css\nimg {\n  display: block;\n  font-family: sans-serif;\n  font-weight: 300;\n  height: auto;\n  line-height: 2;\n  position: relative;\n  text-align: center;\n  width: 100%;\n}\n```\n\nAgora adiciona regras com _pseudo-elements_ para mostrar uma mensagem e a URL da imagem quebrada:\n\n```css\nimg::before {\n  content: \"Desculpe, a imagem abaixo não pode ser carregada :(\";\n  display: block;\n  margin-bottom: 10px;\n}\n\nimg::after {\n  content: \"(url: \" attr(src) \")\";\n  display: block;\n  font-size: 12px;\n}\n```\n\nLê mais um pouco sobre como estilizar imagens quebradas no [artigo original](http://bitsofco.de/styling-broken-images/) por [Ire Aderinokun](https://github.com/ireade/).\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Usa `rem` para Definir Tamanhos Globais; Usa `em` para Definir Tamanhos Locais\n\nDepois de definires o tamanho de fonte base na raíz (`html { font-size: 100%; }`), define o tamanho de fonte para elementos de texto utilizando `em`:\n\n```css\nh2 {\n  font-size: 2em;\n}\n\np {\n  font-size: 1em;\n}\n```\n\nEntão define o tamanho da fonte de módulos utilizando `rem`:\n\n```css\narticle {\n  font-size: 1.25rem;\n}\n\naside .module {\n  font-size: .9rem;\n}\n```\n\nAssim fica mais fácil de estilizar e manter cada módulo, além de ser flexível.\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Esconde Vídeos em Autoplay Que Não Estejam no Mudo\n\nÓtima dica para uma _stylesheet_ personalizada. Evita sobrecarregar o utilizador com sons de vídeos em autoplay. Se o som não estiver no mudo, esconde o vídeo:\n\n```css\nvideo[autoplay]:not([muted]) {\n  display: none;\n}\n```\n\nE aqui está mais uma entre as muitas vantagens de usar a _pseudo-class_ [`:not()`](#use-not-to-applyunapply-borders-on-navigation).\n \n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Usa `:root` para uma Typografia Flexível\n\nO tamanho de fonte de um site _responsive_ deverá ser ajustável de acordo com cada _viewport_.Podes calcular o tamanho da fonte baseando-te na largura e na altura do _viewport_ usando `:root`:\n\n```css\n:root {\n  font-size: calc(1vw + 1vh + .5vmin);\n}\n```\n\nDesta forma,podes utilizar a unidade de medida `root em` baseada no valor calculado por `:root`:\n\n```css\nbody {\n  font: 1rem/1.6 sans-serif;\n}\n```\n\n#### [Passeata](http://codepen.io/AllThingsSmitty/pen/XKgOkR)\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Defina `font-size` em Elementos de Formulário para uma Melhor Experiência Mobile\n\nPara evitar zoom indesejado em elementos de formulários de navegadores mobile (iOS Safari, _et al_) quando um `<select>` é selecionado, adicione `font-size` no seletor:\n\n```css\ninput[type=\"text\"],\ninput[type=\"number\"],\nselect,\ntextarea {\n  font-size: 16px;\n}\n```\n\n:dancer:\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Usa eventos de ponteiro para controlar eventos do mouse\n\n[Eventos de ponteiro](https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events) permitem que você especifique como o mouse interage com o elemento que está tocando. Para desativar o evento de ponteiro padrão em um botão, por exemplo:\n\n```css\nbutton:disabled {\n  opacity: .5;\n  pointer-events: none;\n}\n```\n\nÉ simples assim.\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n### Definir `display: none` em quebras de linha usadas como espaçamento\n\nComo [Harry Roberts apontou](https://twitter.com/csswizardry/status/1170835532584235008), isso pode ajudar a impedir que os usuários do CMS usem quebras de linha extras para espaçamento:\n\n```css\nbr + br {\n  display: none;\n}\n```\n\n<sup>[Regressar ao índice](#Índice)</sup>\n\n\n## Suporte\n\nVersões atuais do Chrome, Firefox, Safari, e Edge.\n"
  },
  {
    "path": "translations/ru-RU/README.md",
    "content": "<p align=\"center\">\n  <img src=\"../../assets/img/bulb.svg\" alt=\"light bulb icon\">\n</p>\n\n# Советы профессионалов CSS [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\nКоллекция советов, которые помогут вам стать лучше в CSS.\n\n> Вы найдете больше [классных списков](https://github.com/sindresorhus/awesome/) под кураторством [@sindresorhus](https://github.com/sindresorhus/).\n\n\n<div id=\"table-of-contents\"></div>\n\n## Содержание\n\n* [Профессиональные советы](#Профессиональные-советы)\n* [Поддержка](#Поддержка)\n* [Помощь проекту](../../CONTRIBUTING.md)\n\n\n## Профессиональные советы\n\n1. [Используйте CSS Reset](#Используйте-css-reset)\n1. [Наследуйте `box-sizing`](#Наследуйте-box-sizing)\n1. [Используйте `unset` вместо сброса всех свойств](#Используйте-unset-вместо-сброса-всех-свойств)\n1. [Используйте `:not()` для добавления / удаления границ в меню навигации](#Используйте-not-для-добавления--удаления-границ-в-меню-навигации)\n1. [Проверьте, установлен ли шрифт локально](#проверьте,-установлен-ли-шрифт-локально)\n1. [Добавьте `line-height` в `body`](#Добавьте-line-height-в-body)\n1. [Установите `:focus` для элементов формы](#Установите-focus-для-элементов-формы)\n1. [Выровнять всё по вертикали](#Выровнять-всё-по-вертикали)\n1. [Используйте `aspect-ratio` вместо задания ширины, высоты](#Используйте-aspect-ratio-вместо-задания-ширины-высоты)\n1. [Списки, разделенные запятыми](#Списки-разделенные-запятыми)\n1. [Выбирайте элементы с использованием отрицательных значений в `nth-child`](#Выбирайте-элементы-с-использованием-отрицательных-значений-в-nth-child)\n1. [Используйте SVG для значков](#Используйте-svg-для-значков)\n1. [Используйте селектор \"Лоботомированная сова\"](#Используйте-селектор-Лоботомированная-сова)\n1. [Используйте `max-height` для ползунков на чистом CSS](#Используйте-max-height-для-ползунков-на-чистом-css)\n1. [Ячейки таблицы равной ширины](#Ячейки-таблицы-равной-ширины)\n1. [Используйте Flexbox вместо margin](#Используйте-flexbox-вместо-margin)\n1. [Используйте селектор атрибутов для пустых ссылок](#Используйте-селектор-атрибутов-для-пустых-ссылок)\n1. [Управляйте специфичностью лучше, с помощью `:is()`](#Управляйте-специфичностью-лучше-с-помощью-is)\n1. [Стиль \"по умолчанию\" для ссылок](#тиль-по-умолчанию-для-ссылокs)\n1. [Блок с собственным отношением сторон](#Блок-с-собственным-отношением-сторон)\n1. [Задайте стили для поломанныx изображений](#Задайте-стили-для-поломанныx-изображений)\n1. [Используйте `rem` для глобальных размеров; Используйте `em` для локальных размеров](#Используйте-rem-для-глобальных-размеров-Используйте-em-для-локальных-размеров)\n1. [Отключите автовоспроизведение видео с включенным звуком](#Отключите-автовоспроизведение-видео-с-включенным-звуком)\n1. [Используйте `:root` для шрифтов](#Используйте-root-для-шрифтов)\n1. [Установите `font-size` для элементов формы, чтобы оптимизировать просмотр на мобильных устройствах](#Установите-font-size-для-элементов-формы-чтобы-оптимизировать-просмотр-на-мобильных-устройствах)\n1. [Использовать события указателя для управления событиями мыши](#Использовать-события-указателя-для-управления-событиями-мыши)\n1. [Установите `display: none` на разрывы строк, используемые как интервалы](#Установите-display-none-на-разрывы-строк-используемые-как-интервалы)\n1. [Используйте `:empty`, чтобы скрыть пустые HTML элементы](#Используйте-empty-чтобы-скрыть-пустые-HTML-элементы)\n\n\n### Используйте CSS Reset\n\nСброс CSS помогает обеспечить согласованность стилей между различными браузерами и с чистого листа начать оформление элементов. Вы можете использовать CSS библиотеки сброса такие как [Normalize](http://necolas.github.io/normalize.css/) и др., или вы можете использовать более простой способ сброса:\n\n```css\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n```\n\nТеперь для всех элементов свойства margin и padding будут равны нулю, а `box-sizing: border-box` позволяет указывать размеры всему блоку, а не его содержимому.\n\n#### [Демо](http://codepen.io/AllThingsSmitty/pen/kkrkLL)\n\n**Примечание:** Если вы будете следовать совету [Наследуйте `box-sizing`](#inherit-box-sizing), то вы можете не включать свойство `box-sizing` в ваш CSS Reset.\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Наследуйте `box-sizing`\n\nПусть `box-sizing` будет унаследован от `html`:\n\n```css\nhtml {\n  box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: inherit;\n}\n```\n\nТак значительно проще изменять `box-sizing` в плагинах или других компонентах, которые задают иное поведение.\n\n#### [Демо](https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/)\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Используйте `unset` вместо сброса всех свойств\n\nПри сбросе свойств элемента нет необходимости сбросить каждое отдельное свойство:\n\n```css\nbutton {\n  background: none;\n  border: none;\n  color: inherit;\n  font: inherit;\n  outline: none;\n  padding: 0;\n}\n```\n\nВы можете указать все свойства элемента, используя сокращенное выражение `all`. Установка значения `unset` изменяет свойства элемента на их начальные значения:\n\n```css\nbutton {\n  all: unset;\n}\n```\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Используйте `:not()` для добавления / удаления границ в меню навигации\n\nВместо того, чтобы добавлять границу...\n\n```css\n/* add border */\n.nav li {\n  border-right: 1px solid #666;\n}\n```\n\n...а затем убирать её с последнего элемента...\n\n```css\n/* remove border */\n.nav li:last-child {\n  border-right: none;\n}\n```\n\n...используйте псевдокласс `:not()`, чтобы добавить только к нужным элементам:\n\n```css\n.nav li:not(:last-child) {\n  border-right: 1px solid #666;\n}\n```\n\nСелектор CSS определяет границу так, как ее описывает человек.\n\n#### [Демо](http://codepen.io/AllThingsSmitty/pen/LkymvO)\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Проверьте, установлен ли шрифт локально\n\nВы можете проверить, установлен ли шрифт локально, прежде чем извлекать его удаленно, что также является хорошим показателем производительности.\n\n```css\n@font-face {\n  font-family: \"Dank Mono\";\n  src:\n    /* Full name */\n    local(\"Dank Mono\"),\n    /* Postscript name */\n    local(\"Dank-Mono\"),\n    /* Otherwise, download it! */\n    url(\"//...a.server/fonts/DankMono.woff\");\n}\n\ncode {\n  font-family: \"Dank Mono\", system-ui-monospace;\n}\n```\n\nШляпный совет Адаму Аргайлу за то, что он поделился этим опытом и [примером](https://codepen.io/argyleink/pen/VwYJpgR).\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Добавьте `line-height` в `body`\n\nВам вовсе не требуется добавлять свойство `line-height` к каждому `<р>`, `<h*>`, _и т.д._. по отдельности. Вместо этого добавьте его в `body`:\n\n```css\nbody {\n  line-height: 1.5;\n}\n```\n\nТаким образом текстовые элементы легко могут наследовать свойство от `body`.\n\n#### [Демо](http://codepen.io/AllThingsSmitty/pen/VjbdYd)\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Установите `:focus` для элементов формы\n\nПриоритетные пользователи клавиатуры полагаются на фокус, чтобы определить, где события клавиатуры идут на странице. Сделайте фокус для элементов формы выделяющимися и последовательными, а затем реализацией браузера по умолчанию:\n\n```css\na:focus,\nbutton:focus,\ninput:focus,\nselect:focus,\ntextarea:focus {\n  box-shadow: none;\n  outline: #000 dotted 2px;\n  outline-offset: .05em;\n}\n```\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Выровнять всё по вертикали\n\nНет, это не чёрная магия, вы действительно можете расположить элементы по центру по вертикали:\n\n```css\nhtml,\nbody {\n  height: 100%;\n  margin: 0;\n}\n\nbody {\n  -webkit-align-items: center;\n  -ms-flex-align: center;\n  align-items: center;\n  display: -webkit-flex;\n  display: flex;\n}\n```\n\n...а также с помощью CSS Grid:\n\n```css\nbody {\n  display: grid;\n  height: 100vh;\n  margin: 0;\n  place-items: center center;\n}\n```\n\nХотите разместить по центру что-то еще? Вертикально, горизонтально...что угодно, в любое время и в любом месте? У нас есть [хорошая статья](https://css-tricks.com/centering-css-complete-guide/) которая научит всему этому.\n\n#### [Демо](http://codepen.io/AllThingsSmitty/pen/GqmGqZ)\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Используйте `aspect-ratio` вместо задания ширины, высотыhttps://onelove-agency.ru/web/october2024\n\nСвойство `aspect-ratio` позволяет легко изменять размеры элементов и поддерживать постоянное соотношение ширины и высоты. Это невероятно полезно в отзывчивом веб-дизайне для предотвращения смещения макета. Используйте `object-fit` вместе с ним, чтобы не нарушить верстку при изменении значений высоты/ширины изображений.\n\n```css\nimg {\n  aspect-ratio: 16 / 9; /* ширина / высота */\n  object-fit: cover;\n}\n```\n\nПодробнее о свойстве ` aspect-ratio` читайте в этой статье [web.dev post](https://web.dev/articles/aspect-ratio).\n\n#### [Демо](https://codepen.io/AllThingsSmitty/pen/MWxwoNx/)\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Списки, разделенные запятыми\n\nСделайте список похожим на настоящий, разделенный запятыми список:\n\n```css\nul > li:not(:last-child)::after {\n  content: \",\";\n}\n```\n\nИспользуйте псевдокласс `:not()` чтобы не добавлять запятую к последнему пункту.\n\n**Примечание:** Этот совет не всегда даёт лучший результат, например, могут возникнуть проблемы у экранного диктора. Да и копирование / вставка из браузера не всегда работают со сгенерированным CSS контентом. Следует быть осторожным.\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Выбирайте элементы с использованием отрицательных значений в `nth-child`\n\nИспользуйте отрицательные значения в `nth-child` в CSS для выбора элементов с 1 по n.\n\n```css\nli {\n  display: none;\n}\n\n/* выбирает и отображает элементы с 1 по 3 */\nli:nth-child(-n+3) {\n  display: block;\n}\n```\n\nИли, так как вы уже немного познакомились [с `:not()`](#use-not-to-applyunapply-borders-on-navigation), попробуйте:\n\n```css\n/* выберите все элементы, кроме первых 3, и покажите их */\nli:not(:nth-child(-n+3)) {\n  display: none;\n}\n```\n\nЧто же, это было довольно легко.\n\n#### [Демо](http://codepen.io/AllThingsSmitty/pen/WxjKZp)\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Используйте SVG для значков\n\nНет ни одной причины, чтобы не использовать SVG для значков:\n\n```css\n.logo {\n  background: url(\"logo.svg\");\n}\n```\n\nSVG хорошо масштабируется для всех разрешений и поддерживается во всех браузерах [включая IE9 и выше](http://caniuse.com/#search=svg). Так выбросите же ваши .png, .jpg или .gif-jif-что-угодно файлы.\n\n**Примечание:** Если у вас есть кнопки, содержащие только SVG пиктограммы, и SVG не удается загрузить, то это поможет сохранить доступность кнопки:\n\n```css\n.no-svg .icon-only::after {\n  content: attr(aria-label);\n}\n```\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Используйте селектор \"Лоботомированная сова\"\n\nНазвание, безусловно, странное, но используя универсальный селектор (`*`) с соседним селектором (`+`), мы получаем мощное правило CSS:\n\n```css\n* + * {\n  margin-top: 1.5em;\n}\n```\n\nВ этом примере все элементы в потоке документа, которые следуют другие элементы получат `margin-top: 1.5em`.\n\nБолее подробную информацию о селекторе \"Лоботомированная сова\", можно найти в [статье Heydon Pickering](http://alistapart.com/article/axiomatic-css-and-lobotomized-owls) на *A List Apart*.\n\n#### [Демо](http://codepen.io/AllThingsSmitty/pen/grRvWq)\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Используйте `max-height` для ползунков на чистом CSS\n\nРеализация ползунков на чистом CSS с помощью `max-height` и `overflow hidden`:\n\n```css\n.slider {\n  max-height: 200px;\n  overflow-y: hidden;\n  width: 300px;\n}\n\n.slider:hover {\n  max-height: 600px;\n  overflow-y: scroll;\n}\n```\n\nПри наведении элемент расширяется до значения `max-height`, а всё что не влезло, можно прокрутить.\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Ячейки таблицы равной ширины\n\nИногда работа с таблицами приносит боль, в таких случаях попробуйте задать `table-layout: fixed` чтобы ячейки были одинаковой ширины:\n\n```css\n.calendar {\n  table-layout: fixed;\n}\n```\n\nДаешь макеты таблиц без боли!\n\n#### [Демо](http://codepen.io/AllThingsSmitty/pen/jALALm)\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Используйте Flexbox вместо margin\n\nПри работе с пробелами между колонок вы можете избавиться от псевдоклассов `nth,` `first-` и `last-child` воспользовавшись свойством flexbox `space-between`:\n\n```css\n.list {\n  display: flex;\n  justify-content: space-between;\n}\n\n.list .person {\n  flex-basis: 23%;\n}\n```\n\nТеперь пробелы между колонками будут одного размера.\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Используйте селектор атрибутов для пустых ссылок\n\nОтображайте ссылки, когда элемент `<a>` пустой, но есть ссылка в атрибуте `href`:\n\n```css\na[href^=\"http\"]:empty::before {\n  content: attr(href);\n}\n```\n\nЭто очень удобно.\n\n#### [Демо](http://codepen.io/AllThingsSmitty/pen/zBzXRx)\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Управляйте специфичностью лучше, с помощью `:is()\n\nПсевдокласс `:is()` используется для одновременного обращения к нескольким селекторам, что уменьшает избыточность и улучшает читаемость кода. Это невероятно полезно для написания больших селекторов в более компактной форме.\n\n```css\n:is(section, article, aside, nav) :is(h1, h2, h3, h4, h5, h6) {\n  color: green;\n}\n```\n\nПриведённый выше набор правил эквивалентен следующим правилам селектора чисел...\n\n```css\nsection h1, section h2, section h3, section h4, section h5, section h6,\narticle h1, article h2, article h3, article h4, article h5, article h6,\naside h1, aside h2, aside h3, aside h4, aside h5, aside h6,\nnav h1, nav h2, nav h3, nav h4, nav h5, nav h6 {\n  color: green;\n}\n```\n\n#### [Демо](https://codepen.io/AllThingsSmitty/pen/rNRVxdx)\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Стиль \"по умолчанию\" для ссылок\n\nДобавьте для ссылок стиль \"по умолчанию\":\n\n```css\na[href]:not([class]) {\n  color: #008000;\n  text-decoration: underline;\n}\n```\n\nТеперь ссылки, вставленные через CMS, которые, как правило, не имеют атрибута `class`, будут иметь отличительный признак без влияния на каскад.\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Блок с собственным отношением сторон\n\nЧтобы создать блок с собственным отношением сторон, все, что вам нужно сделать, это добавить верхний или нижний padding к DIV:\n\n```css\n.container {\n  height: 0;\n  padding-bottom: 20%;\n  position: relative;\n}\n\n.container div {\n  border: 2px dashed #ddd;\n  height: 100%;\n  left: 0;\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n```\n\nИспользование padding 20% делает высоту параллелепипеда равной 20% от его ширины. Независимо от ширины окна, дочерний DIV будет сохранять соотношение сторон (100% / 20% = 5:1).\n\n#### [Демо](http://codepen.io/AllThingsSmitty/pen/jALZvE)\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Задайте стили для поломанныx изображений\n\nСделайте поломанные изображения эстетически приятнее с CSS:\n\n```css\nimg {\n  display: block;\n  font-family: sans-serif;\n  font-weight: 300;\n  height: auto;\n  line-height: 2;\n  position: relative;\n  text-align: center;\n  width: 100%;\n}\n```\n\nТеперь добавьте правила псевдо-элементов для отображения сообщения пользователю и URL-ссылки поломаного изображения:\n\n```css\nimg:before {\n  content: \"Упс, изображение ниже поломалось :(\";\n  display: block;\n  margin-bottom: 10px;\n}\n\nimg::after {\n  content: \"(url: \" attr(src) \")\";\n  display: block;\n  font-size: 12px;\n}\n```\n\nПодробнее об этой модели в [исходной статье](http://bitsofco.de/styling-broken-images/) [Ire Aderinokun](https://github.com/ireade/).\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Используйте `rem` для глобальных размеров; Используйте `em` для локальных размеров\n\nПосле установки базового размера шрифта всего проекта (`html { font-size: 100%; }`), установите размер шрифта для текстовых элементов через `em`:\n\n```css\nh2 {\n  font-size: 2em;\n}\n\np {\n  font-size: 1em;\n}\n```\n\nЗатем установите размер шрифта для модулей через `rem`:\n\n```css\narticle {\n  font-size: 1.25rem;\n}\n\naside .module {\n  font-size: .9rem;\n}\n```\n\nТеперь каждый модуль становится разобщенным и проще в настройке, более легким в обслуживании и гибче.\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Отключите автовоспроизведение видео с включенным звуком\n\nЭто отличный трюк для пользовательских стилей. Избегайте раздражения пользователя звуком из видео, которое воспроизводится автоматически при загрузке страницы. Если звук не приглушен, то не показывайте видео:\n\n```css\nvideo[autoplay]:not([muted]) {\n  display: none;\n}\n```\n\nИ снова мы воспользовались помощью псевдокласса [`:not()`](#use-not-to-applyunapply-borders-on-navigation).\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Используйте `:root` для шрифтов\n\nРазмер шрифта должен подстраиваться под каждый возможный размер экрана. Вы можете рассчитывать размер шрифта, основываясь на высоте и ширине экрана с помощью `:root`:\n\n```css\n:root {\n  font-size: calc(1vw + 1vh + .5vmin);\n}\n```\n\nТеперь вы можете использовать единицу `root em` на основе значения, рассчитанного с помощью `:root`:\n\n```css\nbody {\n  font: 1rem/1.6 sans-serif;\n}\n```\n\n#### [Демо](http://codepen.io/AllThingsSmitty/pen/XKgOkR)\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Установите `font-size` для элементов формы, чтобы оптимизировать просмотр на мобильных устройствах\n\nЧтобы избежать масштабирования мобильными браузерами (iOS Safari, _и др_.) элементов HTML формы, когда раскрывающийся список `<select>` нажат, добавьте  `font-size` правило селектору:\n\n```css\ninput[type=\"text\"],\ninput[type=\"number\"],\nselect,\ntextarea {\n  font-size: 16px;\n}\n```\n\n:dancer:\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Использовать события указателя для управления событиями мыши\n\n[События указателя](https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events) позволяют указать, как мышь взаимодействует с элементом, который он трогает. Чтобы отключить событие указателя по умолчанию на кнопке, например:\n\n```css\nbutton:disabled {\n  opacity: .5;\n  pointer-events: none;\n}\n```\n\nЭто так просто.\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Установите `display: none` на разрывы строк, используемые как интервалы\n\nКак отметил [Гарри Робертс](https://twitter.com/csswizardry/status/1170835532584235008), это может помочь пользователям CMS использовать дополнительные разрывы строк для пробелов:\n\n```css\nbr + br {\n  display: none;\n}\n```\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n### Используйте `:empty`, чтобы скрыть пустые HTML элементы\n\nЕсли у вас есть HTML элементы, которые пусты, то есть их контент ещё не установлен ни CMS, ни динамической вставкой (например, `<p class=\"error-message\"></p>`) и вам не нравится, что они занимают пространство вашего макета, используйте псевдо-класс `:empty`, чтобы скрыть их.\n\n```css\n:empty {\n  display: none;\n}\n```\n\n**Примечание**: Имейте в виду, что элементы с пробельными символами не считаются пустыми, например `<p class=\"error-message\"> </p>`.\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n\n\n## Поддержка\n\nТекущие версии Chrome, Firefox, Safari, и Edge.\n\n<sup>[вернуться к оглавлению](#table-of-contents)</sup>\n"
  },
  {
    "path": "translations/vn-VN/README.md",
    "content": "<p align=\"center\">\n  <img src=\"../../assets/img/bulb.svg\" width=\"200\" alt=\"light bulb icon\">\n</p>\n\n# CSS Protips [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\nMột bộ gồm những tips để giúp kỹ năng CSS trở nên pro\n\n> For other great lists check out [@sindresorhus](https://github.com/sindresorhus/)'s curated list of [awesome lists](https://github.com/sindresorhus/awesome/).\n\n\n## Table of Contents\n\n* [Protips](#protips)\n* [Support](#support)\n* [Translations](#translations)\n* [Contribution Guidelines](CONTRIBUTING.md)\n\n\n## Protips\n\n1. [Dùng CSS Reset](#dùng-css-reset)\n1. [Thừa kế `box-sizing`](#thừa-kế-box-sizing)\n1. [Dùng `unset` thay vì đặt lại tất cả thuộc tính](#dùng-unset-thay-vì-đặt-lại-tất-cả-thuộc-tính)\n1. [Dùng `:not()` để Áp dụng/Không áp dụng các đường viền trên Điều hướng](#dùng-not-để-áp-dụngkhông-áp-dụng-các-đường-viền-trên-điều-hướng)\n1. [Kiểm tra xem Phông chữ có được cài đặt cục bộ không](#kiểm-tra-xem-phông-chữ-có-được-cài-đặt-cục-bộ-không)\n1. [Thêm `line-height`cho `body`](#thêm-line-height-cho-body)\n1. [Đặt `:focus` cho Form Elements](#đặt-focus-cho-form-elements)\n1. [Mọi thứ ở giữa theo chiều dọc](#mọi-thứ-ở-giữa-theo-chiều-dọc)\n1. [Danh sách được phân tách bằng dấu phẩy](#danh-sách-được-phân-tách-bằng-dấu-phẩy)\n1. [Chọn items sử dụng Negative `nth-child`](#chọn-items-sử-dụng-negative-nth-child)\n1. [Dùng SVG cho Icons](#dùng-svg-cho-icons)\n1. [Sử dụng \"Lobotomized Owl\" Selector](#sử-dụng-lobotomized-owl-selector)\n1. [Dùng `max-height` cho thanh trượt CSS Sliders](#dùng-max-height-cho-thanh-trượt-css-sliders)\n1. [Các ô trong bảng có chiều rộng bằng nhau](#các-ô-trong-bảng-có-chiều-rộng-bằng-nhau)\n1. [Get Rid of Margin Hacks With Flexbox](#get-rid-of-margin-hacks-with-flexbox)\n1. [Sử dụng thuộc tính Selectors với các liên kết trống](#sử-dụng-thuộc-tính-selectors-với-liên-kết-trống)\n1. [Style \"Default\" Links](#style-default-links)  \n1. [Intrinsic Ratio Boxes](#intrinsic-ratio-boxes)\n1. [Hình ảnh bị vỡ](#hình-ảnh-bị-vỡ)\n1. [Dùng `rem` cho toàn cục; dùng `em` cho cục bộ](#dùng-rem-cho-toàn-cục-dùng-em-cho-cục-bộ)\n1. [Ẩn các video tự động phát không bị tắt tiếng](#ẩn-các-video-tự-động-phát-không-bị-tắt-tiếng)\n1. [Dùng `:root` cho Flexible Type](#dùng-root-cho-flexible-type)\n1. [Đặt `font-size` trong Form Elements để có một trải nghiệm mobile tốt hơn](#đặt-font-size-trong-form-elements-để-có-một-trải-nghiệm-mobile-tốt-hơn)\n1. [Dùng Pointer Events để kiểm soát mouse events](#dùng-pointer-events-để-kiểm-soát-mouse-events)\n1. [Đặt `display: none` trên ngắt dòng được sử dụng làm khoảng cách](#đặt-display-none-trên-ngắt-dòng-được-sử-dụng-làm-khoảng-cách)\n\n\n### Dùng CSS Reset\n\nCss resets giúp thực thi tính nhất quán về kiểu dáng trên các trình duyệt khác nhau với một phương tiện chặn rõ ràng cho các yếu tố tạo kiểu.Bạn có thể sử dụng thư viện CSS Reset như [Normalize](http://necolas.github.io/normalize.css/),hoặc bạn có thể sử dụng phương pháp đặt lại đơn giản hơn:\n\n```css\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n```\n\nBây giờ các phần tử sẽ bị loại bỏ magins và padding, và `box-sizing` cho phép bạn quản lý bố cục bằng CSS box model.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/kkrkLL)\n\n**Note:** Nếu bạn làm theo  [Inherit `box-sizing`](#inherit-box-sizing) mẹo dưới đây, bạn có thể chọn không bao gồm `box-sizing` thuộc tính trong CSS reset của bạn.\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Thừa kế `box-sizing`\n\n`box-sizing` được thừa kế từ `html`:\n\n```css\nhtml {\n  box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: inherit;\n}\n```\n\nĐiều này giúp bạn dễ dàng thay đổi `box-sizing` hơn trong các plugin hoặc các thành phần khác thúc đẩy hành vi khác.\n\n#### [Demo](https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/)\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Dùng `unset` thay vì đặt lại tất cả thuộc tính\n\nKhi đặt lại thuộc tính của một phần tử, không cần thiết phải đặt lại từng thuộc tính riêng lẻ:\n\n```css\nbutton {\n  background: none;\n  border: none;\n  color: inherit;\n  font: inherit;\n  outline: none;\n  padding: 0;\n}\n```\n\nBạn có thể chỉ định tất cả các thuộc tính của một phần tử bằng cách sử dụng tất cả các viết tắt.  Đặt giá trị thành không đặt sẽ thay đổi thuộc tính của phần tử thành giá trị ban đầu của chúng:\n\n```css\nbutton {\n  all: unset;\n}\n```\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Dùng `:not()` để Áp dụng / Không áp dụng các đường viền trên Điều hướng\n\nThay vì đặt trên border...\n\n```css\n/* add border */\n.nav li {\n  border-right: 1px solid #666;\n}\n```\n\n...và sau đó lấy nó ra khỏi phần tử cuối cùng...\n\n```css\n/* remove border */\n.nav li:last-child {\n  border-right: none;\n}\n```\n\n...dùng `:not()` pseudo-class để chỉ áp dụng cho các phần tử bạn muốn:\n\n```css\n.nav li:not(:last-child) {\n  border-right: 1px solid #666;\n}\n```\n\nỞ đây, CSS selector được đọc như một con người sẽ mô tả nó.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/LkymvO)\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Kiểm tra xem Phông chữ có được cài đặt cục bộ không\n\nBạn có thể kiểm tra xem phông chữ có được cài đặt cục bộ hay không trước khi tìm nạp từ xa, đây cũng là một mẹo hiệu suất tốt.\n\n```css\n@font-face {\n  font-family: \"Dank Mono\";\n  src:\n    /* Full name */\n    local(\"Dank Mono\"),\n    /* Postscript name */\n    local(\"Dank-Mono\"),\n    /* Otherwise, download it! */\n    url(\"//...a.server/fonts/DankMono.woff\");\n}\n\ncode {\n  font-family: \"Dank Mono\", system-ui-monospace;\n}\n\n\nH / T tới Adam Argyle vì đã chia sẻ chú giải này và [demo](https://codepen.io/argyleink/pen/VwYJpgR).\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Thêm `line-height` cho `body`\n\nBạn không cần thêm `line-height` cho mỗi `<p>`, `<h*>`... riêng biệt. Thay vào đó, hãy thêm nó vào `body`:\n\n```css\nbody {\n  line-height: 1.5;\n}\n```\n\nBằng cách này, các yếu tố văn bản có thể kế thừa từ `body` dễ dàng.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/VjbdYd)\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Đặt `:focus` cho Form Elements\n\nNgười dùng bàn phím bị cận dựa vào tiêu điểm để xác định vị trí của các sự kiện bàn phím trong trang.  Làm cho tiêu điểm cho các phần tử biểu mẫu nổi bật và nhất quán sau đó triển khai mặc định của trình duyệt:\n\n```css\na:focus,\nbutton:focus,\ninput:focus,\nselect:focus,\ntextarea:focus {\n  box-shadow: none;\n  outline: #000 dotted 2px;\n  outline-offset: .05em;\n}\n```\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/ePzoOP/)\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Mọi thứ ở giữa theo chiều dọc\n\nKhông, đó không phải là ảo thuật, bạn thực sự có thể căn giữa các yếu tố theo chiều dọc.Bạn có thể làm điều này với flexbox ...\n\n```css\nhtml,\nbody {\n  height: 100%;\n  margin: 0;\n}\n\nbody {\n  -webkit-align-items: center;\n  -ms-flex-align: center;\n  align-items: center;\n  display: -webkit-flex;\n  display: flex;\n}\n```\n\n... và với Grid cũng vậy:\n\n```css\nbody {\n  display: grid;\n  height: 100vh;\n  margin: 0;\n  place-items: center center;\n}\n```\n\n\nMuốn căn giữa một cái gì đó khác? Theo chiều dọc,chiều ngang ... bất cứ điều gì, mọi lúc, mọi nơi? CSS-Tricks có [a nice write-up](https://css-tricks.com/centering-css-complete-guide/) để làm được tất cả những điều đó.\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/GqmGqZ)\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Danh sách được phân tách bằng dấu phẩy\n\nLàm cho các mục trong danh sách trông giống như một danh sách thực, được phân tách bằng dấu phẩy:\n\n```css\nul > li:not(:last-child)::after {\n  content: \",\";\n}\n```\n\nDùng `:not()` pseudo-class và không có dấu phẩy nào sẽ được thêm vào mục cuối cùng.\n\n**Note:** Mẹo này có thể không lý tưởng cho khả năng tiếp cận, đặc biệt là trình đọc màn hình.Và sao chép / dán từ trình duyệt không hoạt động với nội dung do CSS tạo.Khi làm hãy thận trọng.\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Chọn items sử dụng Negative `nth-child`\n\nSử dụng phủ định `nth-child` trong CSS để chọn các mục từ 1 đến n.\n\n```css\nli {\n  display: none;\n}\n\n/* select items 1 through 3 and display them */\nli:nth-child(-n+3) {\n  display: block;\n}\n```\n\nHoặc,bạn đã biết một chút về [dùng `:not()`](#use-not-to-applyunapply-borders-on-navigation), thử:\n\n```css\n/* select all items except the first 3 and display them */\nli:not(:nth-child(-n+3)) {\n  display: block;\n}\n```\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/WxjKZp)\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Dùng SVG cho Icons\n\nKhông có lý do gì để không sử dụng SVG cho các biểu tượng:\n\n```css\n.logo {\n  background: url(\"logo.svg\");\n}\n```\n\nSVG tỉ lệ tốt cho tất cả các loại độ phân giải và được hỗ trợ trong tất cả các trình duyệt [back to IE9](http://caniuse.com/#search=svg). Loại bỏ các tệp .png, .jpg hoặc .gif-jif-whatev của bạn\n\n**Note:** Nếu bạn có các nút chỉ có biểu tượng SVG cho người dùng bị cận và SVG không tải được, điều này sẽ giúp duy trì khả năng truy cập:\n\n```css\n.no-svg .icon-only::after {\n  content: attr(aria-label);\n}\n```\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Sử dụng \"Lobotomized Owl\" Selector\n\nNó có thể có một cái tên lạ nhưng việc sử dụng bộ chọn phổ quát (`*`) với bộ chọn anh chị em kế cận (`+`) có thể cung cấp khả năng CSS mạnh mẽ:\n\n```css\n* + * {\n  margin-top: 1.5em;\n}\n```\n\nTrong ví dụ này, tất cả các phần tử trong luồng dữ liệu theo sau các phần tử khác sẽ nhận được `margin-top: 1.5em`.\n\nĐể biết thêm về bộ chọn \"lobotomized owl\", hãy đọc [Heydon Pickering's post](http://alistapart.com/article/axiomatic-css-and-lobotomized-owls).\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/grRvWq)\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Dùng `max-height` cho thanh trượt CSS Sliders\n\nÁp dụng  CSS-only sliders dùng `max-height` với overflow hidden:\n\n```css\n.slider {\n  max-height: 200px;\n  overflow-y: hidden;\n  width: 300px;\n}\n\n.slider:hover {\n  max-height: 600px;\n  overflow-y: scroll;\n}\n```\n\nNhững thành phần sẽ được mở  rộng bằng `max-height` khi di chuột và thanh trượt hiển thị do overflow.\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Các ô trong bảng có chiều rộng bằng nhau\n\nTables có thể gây nhức đầu khi làm việc với nó. Hãy thử dùng `table-layout: fixed` để giữ cho các ô có chiều rộng bằng nhau:\n\n```css\n.calendar {\n  table-layout: fixed;\n}\n```\n\nBố cục bảng dễ chịu\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/jALALm)\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Get Rid of Margin Hacks With Flexbox\n\nKhi làm việc với các rãnh cột bạn có thể loại bỏ `nth-`, `first-`, và `last-child` hack dùng flexbox's bằng `space-between` thuộc tính:\n\n```css\n.list {\n  display: flex;\n  justify-content: space-between;\n}\n\n.list .person {\n  flex-basis: 23%;\n}\n```\n\nGiờ đây, các rãnh cột luôn xuất hiện cách đều nhau\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Sử dụng thuộc tính Selectors với các liên kết trống\n\nHiển thị các liên kết khi `<a>` phần tử không có giá trị văn bản nhưng `herf` thuộc tính có một liên kết:\n\n```css\na[href^=\"http\"]:empty::before {\n  content: attr(href);\n}\n```\n\nĐiều đó khá tiện lợi\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/zBzXRx)\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Style \"Default\" Links\n\nThêm kiểu cho các liên kết \"default\":\n\n```css\na[href]:not([class]) {\n  color: #008000;\n  text-decoration: underline;\n}\n```\n\nGiờ đây, các liên kết được chèn qua CMS, thường không có thuộc tính `class`, sẽ có sự phân biệt mà không ảnh hưởng chung đến tầng.\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Intrinsic Ratio Boxes\n\nĐể tạo một hộp có tỷ lệ nội tại, tất cả những gì bạn cần làm là áp dụng phần đệm trên cùng hoặc dưới cùng cho div:\n\n```css\n.container {\n  height: 0;\n  padding-bottom: 20%;\n  position: relative;\n}\n\n.container div {\n  border: 2px dashed #ddd;\n  height: 100%;\n  left: 0;\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n```\n\nSử dụng 20% ​​cho phần đệm làm cho chiều cao của hộp bằng 20% ​​chiều rộng của nó.  Bất kể chiều rộng của khung nhìn, div con sẽ giữ nguyên tỷ lệ co của nó (100% / 20% = 5: 1).\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/jALZvE)\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Hình ảnh bị vỡ\n\nLàm cho hình ảnh bị hỏng trở nên đẹp hơn về mặt thẩm mỹ với một chút CSS:\n\n```css\nimg {\n  display: block;\n  font-family: sans-serif;\n  font-weight: 300;\n  height: auto;\n  line-height: 2;\n  position: relative;\n  text-align: center;\n  width: 100%;\n}\n```\n\nBây giờ, hãy thêm các quy tắc phần tử giả để hiển thị thông báo người dùng và tham chiếu URL của hình ảnh bị hỏng:\n\n```css\nimg::before {\n  content: \"We're sorry, the image below is broken :(\";\n  display: block;\n  margin-bottom: 10px;\n}\n\nimg::after {\n  content: \"(url: \" attr(src) \")\";\n  display: block;\n  font-size: 12px;\n}\n```\n\nTìm hiểu thêm về cách tạo kiểu cho mẫu này trong [Ire Aderinokun](https://github.com/ireade/)'s [original post](http://bitsofco.de/styling-broken-images/).\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Dùng `rem` cho toàn cục; dùng `em` cho cục bộ\n\nSau khi đặt kích thước phông chữ cơ sở ở gốc (`html { font-size: 100%; }`), đặt kích thước phông chữ cho các yếu tố văn bản thành `em`:\n\n```css\nh2 {\n  font-size: 2em;\n}\n\np {\n  font-size: 1em;\n}\n```\n\nSau đó, đặt kích thước phông chữ cho mô-đun thành `rem`:\n\n```css\narticle {\n  font-size: 1.25rem;\n}\n\naside .module {\n  font-size: .9rem;\n}\n```\n\nGiờ đây, mỗi mô-đun trở nên được chia nhỏ và dễ tạo kiểu hơn, dễ bảo trì hơn và linh hoạt hơn.\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Ẩn các video tự động phát không bị tắt tiếng\n\nĐây là một thủ thuật tuyệt vời cho một biểu định kiểu người dùng tùy chỉnh. Tránh làm người dùng quá tải với âm thanh từ video tự động phát khi tải trang.  Nếu âm thanh không bị tắt, không hiển thị video:\n\n```css\nvideo[autoplay]:not([muted]) {\n  display: none;\n}\n```\n\nMột lần nữa, chúng ta đang tận dụng lợi thế của việc sử dụng [`:not()`](#use-not-to-applyunapply-borders-on-navigation) pseudo-class.\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Dùng `:root` cho Flexible Type\n\nKích thước phông chữ loại trong bố cục đáp ứng có thể điều chỉnh theo từng chế độ xem.  Bạn có thể tính toán kích thước phông chữ dựa trên chiều cao và chiều rộng của khung nhìn bằng cách sử dụng `:root`:\n\n```css\n:root {\n  font-size: calc(1vw + 1vh + .5vmin);\n}\n```\n\nBây giờ bạn có thể sử dụng `root em` đơn vị dựa trên giá trị được tính bằng `:root`:\n\n```css\nbody {\n  font: 1rem/1.6 sans-serif;\n}\n```\n\n#### [Demo](http://codepen.io/AllThingsSmitty/pen/XKgOkR)\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Đặt `font-size` trong Form Elements để có một trải nghiệm mobile tốt hơn\n\nĐể tránh các trình duyệt di động (iOS Safari, v.v.) phóng to các phần tử biểu mẫu HTML khi `<select>` thả xuống được nhấn, thêm `font-size` quy tắc bộ chọn:\n\n```css\ninput[type=\"text\"],\ninput[type=\"number\"],\nselect,\ntextarea {\n  font-size: 16px;\n}\n```\n\n:dancer:\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Dùng Pointer Events để kiểm soát mouse events\n\n[Pointer events](https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events) cho phép bạn chỉ định cách con chuột tương tác với phần tử mà nó chạm vào.  Để tắt sự kiện con trỏ mặc định trên một nút, ví dụ:\n\n```css\nbutton:disabled {\n  opacity: .5;\n  pointer-events: none;\n}\n```\n\nNó thật đơn giản:\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n### Đặt `display: none` trên ngắt dòng được sử dụng làm khoảng cách\n\nNhư [Harry Roberts pointed out](https://twitter.com/csswizardry/status/1170835532584235008),điều này có thể giúp ngăn người dùng CMS sử dụng thêm dấu ngắt dòng cho khoảng cách:\n\n```css\nbr + br {\n  display: none;\n}\n```\n\n<sup>[back to table of contents](#table-of-contents)</sup>\n\n\n## Support\n\n versions hiện tại Chrome, Firefox, Safari, và Edge.\n"
  },
  {
    "path": "translations/zh-CN/README.md",
    "content": "<p align=\"center\">\n  <img src=\"../../assets/img/bulb.svg\" alt=\"light bulb icon\">\n</p>\n\n# CSS 专业技巧 [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\n一个帮你提升 CSS 技巧的收藏集。\n\n> 对于其他收藏集合可以查看 [@sindresorhus](https://github.com/sindresorhus/) 创建的收藏集合 [Awesome Lists](https://github.com/sindresorhus/awesome/).\n\n\n<div id=\"table-of-contents\"></div>\n\n## 目录\n\n* [专业技巧](#专业技巧)\n* [支持情况](#支持情况)\n* [贡献准则](../../CONTRIBUTING.md)\n\n\n## 专业技巧\n\n1. [使用CSS复位](#使用css复位)\n1. [继承 `box-sizing`](#继承-box-sizing)\n1. [使用`unset`而不是重置所有属性](#使用unset而不是重置所有属性)\n1. [使用 `:not()` 选择器来决定表单是否显示边框](#使用-not-选择器来决定表单是否显示边框)\n1. [检查字体是否在本地安裝](#检查字体是否在本地安裝)\n1. [为 body 元素添加行高](#为-body-元素添加行高)\n1. [为表单元素设置`:focus`](#为表单元素设置focus)\n1. [垂直居中任何元素](#垂直居中任何元素)\n1. [逗号分隔的列表](#逗号分隔列表)\n1. [使用负的 `nth-child` 来选择元素](#使用负的-nth-child-来选择元素)\n1. [使用 SVG 图标](#使用-svg-图标)\n1. [使用 “形似猫头鹰” 的选择器](#使用-形似猫头鹰-的选择器)\n1. [使用 `max-height` 来建立纯 CSS 的滑块](#使用-max-height-来建立纯-css-的滑块)\n1. [创造格子等宽的表格](#创造格子等宽的表格)\n1. [利用 Flexbox 去除多余的外边距](#利用-flexbox-去除多余的外边距)\n1. [利用属性选择器来选择空链接](#利用属性选择器来选择空链接)\n1. [给 “默认” 链接定义样式](#给-默认-链接定义样式)\n1. [内在比例盒](#固定比例盒子)\n1. [为图裂定义样式](#为图裂定义样式)\n1. [用 rem 来调整全局大小；用 em 来调整局部大小](#用-rem-来调整全局大小用-em-来调整局部大小)\n1. [隐藏没有静音、自动播放的影片](#隐藏没有静音自动播放的影片)\n1. [使用选择器 `:root` 来控制字体弹性](#使用选择器root来控制字体弹性)\n1. [为更好的移动体验，为表单元素设置字体大小](#为更好的移动体验为表单元素设置字体大小)\n1. [使用指针事件来控制鼠标事件](#使用指针事件来控制鼠标事件)\n1. [在用作间距的换行符上设置`display-none`](#在用作间距的换行符上设置display-none)\n1. [使用 `:empty` 隐藏空 HTML 元素](#使用-empty-隐藏空-html-元素)\n\n\n### 使用CSS复位\n\nCSS复位可以在不同的浏览器上保持一致的样式风格。您可以使用CSS reset 库[Normalize](http://necolas.github.io/normalize.css/)等，也可以使用一个更简化的复位方法：\n\n```css\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n```\n\n现在元素的 margin 和 padding 已为0，`box-sizing`可以管理您的CSS盒模型布局。\n\n#### [演示](http://codepen.io/AllThingsSmitty/pen/kkrkLL)\n\n注意：如果你遵循接下来[继承 `box-sizing`](#inherit-box-sizing)讲解的这个技巧, 你不需要在以上代码中添加 `box-sizing` 属性。\n\n<sup>[回目录](#目录)</sup>\n\n\n### 继承 `box-sizing`\n\n从 `html` 元素继承 `box-sizing` ：\n\n```css\nhtml {\n  box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: inherit;\n}\n```\n\n如此在插件或其它组件里改变 `box-sizing` 变得简单。\n\n#### [演示](https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/)\n\n<sup>[回目录](#目录)</sup>\n\n\n### 使用`unset`而不是重置所有属性\n\n重置元素的属性时，不需要重置每个单独的属性：\n\n```css\nbutton {\n  background: none;\n  border: none;\n  color: inherit;\n  font: inherit;\n  outline: none;\n  padding: 0;\n}\n```\n\n你可以用`all`简写來指定所有元素的属性。 将该值设置为`unset`会将元素的属性更改为其初始值：\n\n```css\nbutton {\n  all: unset;\n}\n```\n\n<sup>[回目录](#目录)</sup>\n\n\n### 使用 `:not()` 选择器来决定表单是否显示边框\n\n先为元素添加边框\n\n```css\n/* 添加边框 */\n.nav li {\n  border-right: 1px solid #666;\n}\n```\n\n为最后一个元素去除边框\n\n```css\n/* 去掉边框 */\n.nav li:last-child {\n  border-right: none;\n}\n```\n\n不过不要这么做，使用 `:not()` 伪类来达到同样的效果：\n\n```css\n.nav li:not(:last-child) {\n  border-right: 1px solid #666;\n}\n```\n\nCSS选择器以人类描述它的方式定义边界。\n\n#### [演示](http://codepen.io/AllThingsSmitty/pen/LkymvO)\n\n<sup>[回目录](#目录)</sup>\n\n\n### 检查字体是否在本地安裝\n\n您可以在远程获取字体之前检查是否在本地安装了字体，这也是一个很好的性能提示。\n\n```css\n@font-face {\n  font-family: \"Dank Mono\";\n  src:\n    /* Full name */\n    local(\"Dank Mono\"),\n    /* Postscript name */\n    local(\"Dank-Mono\"),\n    /* Otherwise, download it! */\n    url(\"//...a.server/fonts/DankMono.woff\");\n}\n\ncode {\n  font-family: \"Dank Mono\", system-ui-monospace;\n}\n```\n\n亚当·阿盖尔（Adam Argyle）的帽子技巧，分享了这个技巧和[例子](https://codepen.io/argyleink/pen/VwYJpgR)。\n\n<sup>[回目录](#目录)</sup>\n\n\n### 为 `body` 元素添加行高\n\n不必为每一个 `<p>`，`<h*>` 元素逐一添加 `line-height`，直接添加到 `body` 元素：\n\n```css\nbody {\n  line-height: 1.5;\n}\n```\n\n文本元素可以很容易地继承 `body` 的样式。\n\n#### [演示](http://codepen.io/AllThingsSmitty/pen/VjbdYd)\n\n<sup>[回目录](#目录)</sup>\n\n\n### 为表单元素设置`:focus`\n\n有视力的键盘用戶依靠焦点来确定键盘事件在页面中的位置。 使表单元素的焦点脱颖而出，然后与浏览器的默认实现保持一致：\n\n```css\na:focus,\nbutton:focus,\ninput:focus,\nselect:focus,\ntextarea:focus {\n  box-shadow: none;\n  outline: #000 dotted 2px;\n  outline-offset: .05em;\n}\n```\n\n#### [演示](https://codepen.io/AllThingsSmitty/pen/ePzoOP/)\n\n<sup>[回目录](#目录)</sup>\n\n\n### 垂直居中任何元素\n\n不！这绝不是黑魔法，真的可以垂直居中任何元素：\n\n```css\nhtml,\nbody {\n  height: 100%;\n  margin: 0;\n}\n\nbody {\n  -webkit-align-items: center;  \n  -ms-flex-align: center;  \n  align-items: center;\n  display: -webkit-flex;\n  display: flex;\n}\n```\n\n...还有CSS Grid:\n\n```css\nbody {\n  display: grid;\n  height: 100vh;\n  margin: 0;\n  place-items: center center;\n}\n```\n\n这还不够？垂直方向，水平方向？任何元素，任何时间，任何地点？CSS-Tricks [有篇好文](https://css-tricks.com/centering-css-complete-guide/) 讲到了各种居中的技巧。\n\n#### [演示](http://codepen.io/AllThingsSmitty/pen/GqmGqZ)\n\n<sup>[回目录](#目录)</sup>\n\n\n### 逗号分隔列表\n\n使列表的每项都由逗号分隔：\n\n```css\nul > li:not(:last-child)::after {\n  content: \",\";\n}\n```\n\n因最后一项不加逗号，可以使用 `:not()` 伪类。\n\n**注意：** 这一技巧对于无障碍，特别是屏幕阅读器而言并不理想。而且复制粘贴并不会带走CSS生成的内容，需要注意。\n\n<sup>[回目录](#目录)</sup>\n\n\n### 使用负的 `nth-child` 来选择元素\n\n使用负的 `nth-child` 可以选择 1 至 n 个元素。\n\n\n```css\nli {\n  display: none;\n}\n\n/* 选择第 1 至第 3 个元素并显示出来 */\nli:nth-child(-n+3) {\n  display: block;\n}\n```\n\n或许你已经掌握了[如何使用 `:not()`](#use-not-to-applyunapply-borders-on-navigation)这个技巧，试下这个：\n\n```css\n/* 选择除前3个之外的所有项目，并显示它们 */\nli:not(:nth-child(-n+3)) {\n  display: none;\n}\n```\n\n如此简单！\n\n#### [演示](http://codepen.io/AllThingsSmitty/pen/WxjKZp)\n\n<sup>[回目录](#目录)</sup>\n\n\n### 使用 SVG 图标\n\n没有理由不使用 SVG 图标：\n\n```css\n.logo {\n  background: url(\"logo.svg\");\n}\n```\n\nSVG 在所有分辨率下都可以良好缩放，并且支持所有 [IE9](https://caniuse.com/#search=svg) 以后的浏览器，丢掉你的 .png，.jpg，或 .gif-jif-whatev 文件吧。\n\n**注意：** 针对仅有图标的按钮，如果 SVG 没有加载成功的话，以下样式对无障碍有所帮助：\n\n```css\n.no-svg .icon-only::after {\n  content: attr(aria-label);\n}\n```\n\n<sup>[回目录](#目录)</sup>\n\n\n### 使用 “形似猫头鹰” 的选择器\n\n这个名字可能比较陌生，不过通用选择器 (`*`) 和 相邻兄弟选择器 (`+`) 一起使用，效果非凡：\n\n```css\n* + * {\n  margin-top: 1.5em;\n}\n```\n\n在此示例中，文档流中的所有的相邻兄弟元素将都将设置 `margin-top: 1.5em` 的样式。\n\n更多 “形似猫头鹰”  的选择器，可参考 *A List Apart* 上面 [Heydon Pickering 的文章](http://alistapart.com/article/axiomatic-css-and-lobotomized-owls)\n\n#### [演示](http://codepen.io/AllThingsSmitty/pen/grRvWq)\n\n<sup>[回目录](#目录)</sup>\n\n\n### 使用 `max-height` 来建立纯 CSS 的滑块\n\n`max-height` 与 overflow hidden 一起来建立纯 CSS 的滑块：\n\n```css\n.slider {\n  max-height: 200px;\n  overflow-y: hidden;\n  width: 300px;\n}\n\n.slider:hover {\n  max-height: 600px;\n  overflow-y: scroll;\n}\n```\n\n鼠标移入滑块元素时增大它的 `max-height` 值，便可以显示溢出部分。\n\n<sup>[回目录](#目录)</sup>\n\n\n### 创造格子等宽的表格\n\n`table-layout: fixed` 可以让每个格子保持等宽：\n\n```css\n.calendar {\n  table-layout: fixed;\n}\n```\n\n无痛的 table 布局。\n\n#### [演示](http://codepen.io/AllThingsSmitty/pen/jALALm)\n\n<sup>[回目录](#目录)</sup>\n\n\n### 利用 Flexbox 去除多余的外边距\n\n与其使用 `nth-`， `first-`， 和 `last-child` 去除列之间多余的间隙，不如使用 flexbox 的 `space-between` 属性：\n\n```css\n.list {\n  display: flex;\n  justify-content: space-between;\n}\n\n.list .person {\n  flex-basis: 23%;\n}\n```\n\n列之间的间隙总是均匀相等。\n\n<sup>[回目录](#目录)</sup>\n\n\n### 利用属性选择器来选择空链接\n\n当 `<a>` 元素没有文本内容，但有 `href` 属性的时候，显示它的 `href` 属性：\n\n```css\na[href^=\"http\"]:empty::before {\n  content: attr(href);\n}\n```\n\n相当简便。\n\n#### [演示](http://codepen.io/AllThingsSmitty/pen/zBzXRx)\n\n<sup>[回目录](#目录)</sup>\n\n\n### 给 “默认” 链接定义样式\n\n给 “默认” 链接定义样式：\n\n```css\na[href]:not([class]) {\n  color: #008000;\n  text-decoration: underline;\n}\n```\n\n通过 CMS 系统插入的链接，通常没有 `class` 属性，以上样式可以甄别它们，而且不会影响其它样式。\n\n<sup>[回目录](#目录)</sup>\n\n\n### 固定比例盒子\n\n要创建具有固定比例的一个盒子，所有你需要做的就是给 div 的顶部或底部设置一个 padding：\n\n```css\n.container {\n  height: 0;\n  padding-bottom: 20%;\n  position: relative;\n}\n\n.container div {\n  border: 2px dashed #ddd;\t\n  height: 100%;\n  left: 0;\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n```\n\n使用 20％ 的 padding-bottom 使得框等于其宽度的 20％ 的高度。与视口宽度无关，子元素的 div 将保持其宽高比（100％/ 20％= 5:1）。\n\n#### [演示](http://codepen.io/AllThingsSmitty/pen/jALZvE)\n\n<sup>[回目录](#目录)</sup>\n\n\n### 为图裂定义样式\n\n只要一点CSS就可以美化破损的图片：\n\n```css\nimg {  \n  display: block;\n  font-family: sans-serif;\n  font-weight: 300;\n  height: auto;\n  line-height: 2;\n  position: relative;\n  text-align: center;\n  width: 100%;\n}\n```\n\n以添加伪元素的法则来显示用户信息和URL的引用：\n\n```css\nimg::before {  \n  content: \"We're sorry, the image below is broken :(\";\n  display: block;\n  margin-bottom: 10px;\n}\n\nimg::after {  \n  content: \"(url: \" attr(src) \")\";\n  display: block;\n  font-size: 12px;\n}\n```\n\n了解更多关于这类样式的技巧 [Ire Aderinokun](https://github.com/ireade/) 的 [原帖](http://bitsofco.de/styling-broken-images/).\n\n<sup>[回目录](#目录)</sup>\n\n\n### 用 `rem` 来调整全局大小；用 `em` 来调整局部大小\n\n在根元素设置基本字体大小后 (`html { font-size: 100%; }`), 使用 `em` 设置文本元素的字体大小:\n\n```css\nh2 { \n  font-size: 2em;\n}\n\np {\n  font-size: 1em;\n}\n```\n\n然后设置模块的字体大小为 `rem`:\n\n```css\narticle {\n  font-size: 1.25rem;\n}\n\naside .module {\n  font-size: .9rem;\n}\n```\n\n现在，每个模块变得独立，更容易、灵活的样式便于维护。\n\n<sup>[回目录](#目录)</sup>\n\n\n### 隐藏没有静音、自动播放的影片\n\n这是一个自定义用户样式表的不错的技巧。避免在加载页面时自动播放。如果没有静音，则不显示视频：\n\n```css\nvideo[autoplay]:not([muted]) {\n  display: none;\n}\n```\n\n再次，我们利用了 [`:not()`](#use-not-to-applyunapply-borders-on-navigation) 的优点。\n\n<sup>[回目录](#目录)</sup>\n\n\n### 使用选择器`:root`灵活控制字体大小\n\n在响应式布局中，字体大小应需要根据不同的视口进行调整。你可以计算字体大小根据视口高度的字体大小和宽度，这时需要用到`:root`:\n\n```css\n:root {\n  font-size: calc(1vw + 1vh + .5vmin);\n}\n```\n\n现在，您可以使用 `root em` \n\n```css\nbody {\n  font: 1rem/1.6 sans-serif;\n}\n```\n\n#### [演示](http://codepen.io/AllThingsSmitty/pen/XKgOkR)\n\n<sup>[回目录](#目录)</sup>\n\n\n### 为更好的移动体验，为表单元素设置字体大小\n\n当触发`<select>`的下拉列表时，为了避免表单元素在移动浏览器（iOS Safari 和其它）上的缩放，加上`font-size`：\n\n```css\ninput[type=\"text\"],\ninput[type=\"number\"],\nselect,\ntextarea {\n  font-size: 16px;\n}\n```\n\n:dancer:\n\n<sup>[回目录](#目录)</sup>\n\n\n### 使用指针事件来控制鼠标事件\n\n[指针事件](https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events)允许您指定鼠标如何与其触摸的元素进行交互。 要禁用按钮上的默认指针事件，例如：\n\n```css\nbutton:disabled {\n  opacity: .5;\n  pointer-events: none;\n}\n```\n\n就这么简单。\n\n<sup>[回目录](#目录)</sup>\n\n\n### 在用作间距的换行符上设置`display: none`\n\n正如[Harry Roberts指出](https://twitter.com/csswizardry/status/1170835532584235008)，这有助于防止CMS用户使用额外的换行符\n\n```css\nbr + br {\n  display: none;\n}\n```\n\n<sup>[回目录](#目录)</sup>\n\n### 使用 `:empty` 隐藏空 HTML 元素\n\n如果你有空的 HTML 元素，即内容尚未由 CMS 设置或动态注入（例如：`<p class=\"error-message\"></p>`）并且它会在你的布局上创建不需要的空间，使用 `:empty` 伪类隐藏布局上的元素。\n\n```css\n:empty {\n  display: none;\n}\n```\n\n注意：请记住，带有空格的元素不会被视为空元素，例如 `<p class=\"error-message\"> </p>`。\n\n<sup>[回目录](#目录)</sup>\n\n\n### 支持情况\n\n这些技巧适用于最新版的 Chrome, Firefox, Safari, 以及 Edge。\n"
  },
  {
    "path": "translations/zh-TW/README.md",
    "content": "<p align=\"center\">\n  <img src=\"../../assets/img/bulb.svg\" alt=\"light bulb icon\">\n</p>\n\n# CSS 專家密技 [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\n這裡收集了一系列 CSS 專家密技，幫助你提升 CSS 技能點數。\n\n> 更多專家密技可以查看 [@sindresorhus](https://github.com/sindresorhus/) 的 [Awesome Lists](https://github.com/sindresorhus/awesome/)\n\n> 正體中文由 [Will 保哥](http://blog.miniasp.com/) 翻譯，歡迎造訪 [Will 保哥的技術交流中心](https://www.facebook.com/will.fans)\n\n\n<div id=\"table-of-contents\"></div>\n\n## 目錄\n\n* [專家密技](#專家密技)\n* [瀏覽器支援度](#瀏覽器支援度)\n* [貢獻準則](../../CONTRIBUTING.md)\n\n## 專家密技\n\n1. [使用 CSS Reset](#使用-css-reset)\n1. [繼承 `box-sizing`](#繼承-box-sizing)\n1. [使用 `unset` 而不是重置所有屬性](#使用-unset-而不是重置所有屬性)\n1. [使用 `:not()` 選擇器來決定表單是否顯示邊框](#使用-not-選擇器來決定表單是否顯示邊框)\n1. [检查字体是否在本地安装](#检查字体是否在本地安装)\n1. [將 `line-height` 加入到 `body` 元素](#將-line-height-加入到-body-元素)\n1. [為表單元素設定`focus`](#為表單元素設定focus)\n1. [將所有元素設定垂直居中](#將所有元素設定垂直居中)\n1. [逗號分隔列表](#逗號分隔列表)\n1. [使用負數的 `nth-child` 來選擇元素](#使用負數的-nth-child-來選擇元素)\n1. [使用 SVG 圖示](#使用-svg-圖示)\n1. [使用 \"貓頭鷹\" 的選擇器](#使用-貓頭鷹-選擇器)\n1. [使用 `max-height` 來建立純 CSS 的捲動軸](#使用-max-height-來建立純-css-的捲動軸)\n1. [讓表格中每個儲存格維持等寬](#讓表格中每個儲存格維持等寬)\n1. [利用 Flexbox 去除多餘的 Margin 技巧](#利用-flexbox-去除多餘的-margin-技巧)\n1. [利用屬性選擇器填滿空白連結的文字內容](#利用屬性選擇器填滿空白連結的文字內容)\n1. [幫沒有類別的連結設定一個預設樣式](#幫沒有類別的連結設定一個預設樣式)\n1. [等比例的方塊](#等比例的方塊)\n1. [為破圖定義樣式](#為破圖定義樣式)\n1. [用 `rem` 來調整全域大小；用 `em` 來調整區域大小](#用-rem-來調整全域大小用-em-來調整區域大小)\n1. [隱藏沒有靜音並設定自動播放的影片](#隱藏沒有靜音並設定自動播放的影片)\n1. [使用 `:root` 選擇器來設定彈性的字體大小](#使用-root-選擇器來設定彈性的字體大小)\n1. [為了更好的行動體驗來設定表單元素的 `font-size`](#為了更好的行動體驗來設定表單元素的-font-size)\n1. [使用指標事件來控制滑鼠事件](#使用指標事件來控制滑鼠事件)\n1. [在用作間距的換行符上設置`display: none`](#在用作間距的換行符上設置display-none)\n\n\n### 使用 CSS Reset\n\nCSS Reset 可以幫你在不同的瀏覽器上維持一致的樣式風格。你可以使用像 [Normalize](http://necolas.github.io/normalize.css/) 這類的 CSS Reset 套件，或使用更簡潔的 CSS Reset 方法：\n\n```css\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n```\n\n現在元素的 margin 和 padding 已重設，且 `box-sizing` 可以讓你透過 CSS Box Model 管理版面配置。\n\n#### [示範](http://codepen.io/AllThingsSmitty/pen/kkrkLL)\n\n注意：如果你接著套用 [繼承 `box-sizing`](#繼承-box-sizing) 這個技巧, 你或許不需要在你的 CSS Reset 中加入 `box-sizing` 屬性。\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n### 繼承 `box-sizing`\n\n讓 `box-sizing` 屬性自動從 `html` 元素繼承下來 ：\n\n```css\nhtml {\n  box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: inherit;\n}\n```\n\n如此一來，你就很容易的在其他外掛或元件裡改變 `box-sizing` 的值。\n\n#### [示範](https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/)\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n### 使用 `unset` 而不是重置所有屬性\n\n當重置元素的屬性時，並不需要重置元素中每個屬性：\n\n```css\nbutton {\n  background: none;\n  border: none;\n  color: inherit;\n  font: inherit;\n  outline: none;\n  padding: 0;\n}\n```\n\n你可以用 `all` 來代表元素中所有的樣式屬性。 將該值設定為 `unset` 意味著將元素中所有樣式屬性回復到預設值：\n\n```css\nbutton {\n  all: unset;\n}\n```\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n### 使用 `:not()` 選擇器來決定表單是否顯示邊框\n\n假設你用以下樣式先替元素新增邊框\n\n```css\n/* 新增邊框 */\n.nav li {\n  border-right: 1px solid #666;\n}\n```\n\n然後在最後一個元素去除邊框\n\n```css\n/* 去掉邊框 */\n.nav li:last-child {\n  border-right: none;\n}\n```\n\n不過你可以改用 `:not()` 偽類別 (pseudo-class) 來做到完全相同的效果：\n\n```css\n.nav li:not(:last-child) {\n  border-right: 1px solid #666;\n}\n```\n\nCSS選擇器以人類描述它的方式定義邊界。\n\n#### [示範](http://codepen.io/AllThingsSmitty/pen/LkymvO)\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n\n### 检查字体是否在本地安装\n\n您可以在远程获取字体之前检查是否在本地安装了字体，这也是一个很好的性能提示。\n\n```css\n@font-face {\n  font-family: \"Dank Mono\";\n  src:\n    /* Full name */\n    local(\"Dank Mono\"),\n    /* Postscript name */\n    local(\"Dank-Mono\"),\n    /* Otherwise, download it! */\n    url(\"//...a.server/fonts/DankMono.woff\");\n}\n\ncode {\n  font-family: \"Dank Mono\", system-ui-monospace;\n}\n```\n\n亚当·阿盖尔（Adam Argyle）的帽子技巧，分享了这个技巧和[例子](https://codepen.io/argyleink/pen/VwYJpgR).\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n\n### 將 `line-height` 加入到 `body` 元素\n\n你不必為分別為每一個 `<p>`、`<h*>` 元素加入 `line-height` 樣式，相反的，你應該直接新增到 `body` 元素：\n\n```css\nbody {\n  line-height: 1.5;\n}\n```\n\n所有的文字元素預設就會繼承 `body` 的樣式。\n\n#### [示範](http://codepen.io/AllThingsSmitty/pen/VjbdYd)\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n\n### 為表單元素設定`focus`\n\n視力正常的鍵盤使用者依靠焦點來確認鍵盤事件在頁面中的位置。使表單元素的焦點脫穎而出，然後與瀏覽器的預設實作保持一致：\n\n```css\na:focus,\nbutton:focus,\ninput:focus,\nselect:focus,\ntextarea:focus {\n  box-shadow: none;\n  outline: #000 dotted 2px;\n  outline-offset: .05em;\n}\n```\n\n#### [Demo](https://codepen.io/AllThingsSmitty/pen/ePzoOP/)\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n\n### 將所有元素設定垂直居中\n\n不！這絕不是黑魔法，這真的可以將所有元素設定垂直居中：\n\n```css\nhtml,\nbody {\n  height: 100%;\n  margin: 0;\n}\n\nbody {\n  -webkit-align-items: center;\n  -ms-flex-align: center;\n  align-items: center;\n  display: -webkit-flex;\n  display: flex;\n}\n```\n\n...還有 CSS Grid:\n\n```css\nbody {\n  display: grid;\n  height: 100vh;\n  margin: 0;\n  place-items: center center;\n}\n```\n\n還想居中排版其他的東西？垂直居中、水平居中、... 任何事、任何時間、任何地點？CSS-Tricks [有篇不錯的文章](https://css-tricks.com/centering-css-complete-guide/) 提到了各種居中排版的技巧。\n\n#### [示範](http://codepen.io/AllThingsSmitty/pen/GqmGqZ)\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n### 逗號分隔列表\n\n使列表的每項都由逗號分隔：\n\n```css\nul > li:not(:last-child)::after {\n  content: ',';\n}\n```\n\n列表中最後一項不用加逗號，所以可以使用 `:not()` 偽類別 (pseudo-class) 。\n\n**注意：**這一技巧對於無障礙網頁，特別是螢幕閱讀器而言，並不理想。而且預設要複製貼網頁內容時，並不會包含 CSS 動態產生的內容，這點必須特別注意。\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n### 使用負數的 `nth-child` 來選擇元素\n\n使用負數的 `nth-child` 可以選擇 1 至 n 個元素。\n\n```css\nli {\n  display: none;\n}\n\n/* 選擇第 1 至第 3 個元素並顯示出來 */\nli:nth-child(-n+3) {\n  display: block;\n}\n```\n\n或者，你已經知道 [使用 `:not()` 選擇器來決定表單是否顯示邊框](#使用-not-選擇器來決定表單是否顯示邊框) 這個技巧，你可以試試：\n\n```css\n/* 選擇除了前 3 個之外的所有項目，並顯示出來 */\nli:not(:nth-child(-n + 3)) {\n  display: none;\n}\n```\n\n就是這麼簡單！\n\n#### [示範](http://codepen.io/AllThingsSmitty/pen/WxjKZp)\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n### 使用 SVG 圖示\n\n沒有理由不使用 SVG 圖示：\n\n```css\n.logo {\n  background: url('logo.svg');\n}\n```\n\nSVG 在所有解析度下都可以良好縮放，並且支援 IE9 之後的所有瀏覽器，丟棄你的 .png, .jpg, 或 .gif 檔案！\n\n**注意：** 如果你有一個只用 SVG 圖示的按鈕，只給看的見的人來點選。當 SVG 無法載入的時候，以下樣式可以幫助你維持網頁的可及性(Accessibility)：\n\n```css\n.no-svg .icon-only::after {\n  content: attr(aria-label);\n}\n```\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n### 使用 \"貓頭鷹\" 選擇器\n\n這個名字 \"Lobotomized Owl\" (貓頭鷹) 大家可能比較陌生，不過如果你將 通用選擇器 (`*`) 和 相鄰兄弟選擇器 (`+`) 一起使用的話，將可帶來極大效益：\n\n```css\n* + * {\n  margin-top: 1.5em;\n}\n```\n\n在此範例中，在檔案中所有的元素，只要緊接著其他元素，就會套用一個 `margin-top: 1.5em` 樣式。\n\n更多 \"貓頭鷹\" (Lobotomized Owl) 選擇器，可參考 *A List Apart* 上面關於 [Heydon Pickering 的文章](http://alistapart.com/article/axiomatic-css-and-lobotomized-owls)\n\n#### [示範](http://codepen.io/AllThingsSmitty/pen/grRvWq)\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n### 使用 `max-height` 來建立純 CSS 的捲動軸\n\n你可以透過 `max-height` 與 `overflow-y: hidden` 來實作出 CSS-only 的捲動軸：\n\n```css\n.slider {\n  max-height: 200px;\n  overflow-y: hidden;\n  width: 300px;\n}\n\n.slider:hover {\n  max-height: 600px;\n  overflow-y: scroll;\n}\n```\n\n當滑鼠移到 `.slider` 的元素時，元素的內容如果過多，最大高度只會擴展到 `max-height` 的值，而且會自動顯示捲動軸。\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n### 讓表格中每個儲存格維持等寬\n\n表格中要維持每一格都等寬是一件痛苦的事，所以你應該嘗試用 `table-layout: fixed` 來讓所有儲存格維持等寬：\n\n```css\n.calendar {\n  table-layout: fixed;\n}\n```\n\n這才是無痛的 Table 版面配置。\n\n#### [示範](http://codepen.io/AllThingsSmitty/pen/jALALm)\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n### 利用 Flexbox 去除多餘的 Margin 技巧\n\n排版的時候，為了設計出每一欄的間隙 (gutters)，一般都會用到像是 `nth-`、`first-` 和 `last-child` 的技巧，來去除頭尾多餘的間隙，不如使用 Flexbox 的 `space-between` 屬性：\n\n```css\n.list {\n  display: flex;\n  justify-content: space-between;\n}\n\n.list .person {\n  flex-basis: 23%;\n}\n```\n\n現在，每一欄之間的間隙將會平均分佈。\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n### 利用屬性選擇器填滿空白連結的文字內容\n\n當 `<a>` 元素沒有文字內容，但有 `href` 屬性的時候，可以這樣做：\n\n```css\na[href^='http']:empty::before {\n  content: attr(href);\n}\n```\n\n這真的非常方便。\n\n#### [示範](http://codepen.io/AllThingsSmitty/pen/zBzXRx)\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n### 幫沒有類別的連結設定一個預設樣式\n\n幫沒有套用 class 的超連結設定一個預設樣式：\n\n```css\na[href]:not([class]) {\n  color: #008000;\n  text-decoration: underline;\n}\n```\n\n使用者透過後台 CMS 系統插入的超連結通常沒有 `class` 屬性，以上樣式可以針對這些超連結進行設定，且不會影響其它樣式定義。\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n### 等比例的方塊\n\n要建立一個固定比例的方塊 (Box)，你需要的就是將 `padding-top` 或 `padding-bottom` 設定到 div 元素：\n\n```css\n.container {\n  height: 0;\n  padding-bottom: 20%;\n  position: relative;\n}\n\n.container div {\n  border: 2px dashed #ddd;\n  height: 100%;\n  left: 0;\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n```\n\n在 `padding-bottom` 設定 `20％` 意味著各個 div 方塊的高度等同於 20% 的寬度。無論 Viewport 現在的寬度多少，子元素的 div 將維持其寬高比（100％ / 20％ = 5:1）。\n\n#### [示範](http://codepen.io/AllThingsSmitty/pen/jALZvE)\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n### 為破圖定義樣式\n\n只要一點 CSS 就可以美化所有破圖：\n\n```css\nimg {\n  display: block;\n  font-family: sans-serif;\n  font-weight: 300;\n  height: auto;\n  line-height: 2;\n  position: relative;\n  text-align: center;\n  width: 100%;\n}\n```\n\n接著新增一個 偽元素規則 (pseudo-elements rules) 來顯示使用者訊息，以及這張破圖的 URL 參考：\n\n```css\nimg::before {\n  content: \"We're sorry, the image below is broken :(\";\n  display: block;\n  margin-bottom: 10px;\n}\n\nimg::after {\n  content: '(url: ' attr(src) ')';\n  display: block;\n  font-size: 12px;\n}\n```\n\n想學習更多這類樣式技巧，可以參考 [Ire Aderinokun](https://github.com/ireade/) 的 [原始文章](http://bitsofco.de/styling-broken-images/)。\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n### 用 `rem` 來調整全域大小；用 `em` 來調整區域大小\n\n在根元素設定基礎字體大小後 (`html { font-size: 100%; }`), 使用 `em` 設定文字元素的字體大小：\n\n```css\nh2 {\n  font-size: 2em;\n}\n\np {\n  font-size: 1em;\n}\n```\n\n然後設定模組的字體大小為 `rem`：\n\n```css\narticle {\n  font-size: 1.25rem;\n}\n\naside .module {\n  font-size: 0.9rem;\n}\n```\n\n現在，每個模組變得獨立，更容易、靈活的樣式便於維護。\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n### 隱藏沒有靜音並設定自動播放的影片\n\n當你在一個可以自訂樣式的後台環境設定網站樣式時，這是一個不錯的小技巧。畢竟自動撥放影片是蠻惱人的，這個技巧可以幫助你避免影片在沒有靜音的情況下自動撥放。\n\n```css\nvideo[autoplay]:not([muted]) {\n  display: none;\n}\n```\n\n你看，我們再次利用了 [`:not()`](#使用-not-選擇器來決定表單是否顯示邊框) 偽類別 (pseudo-class) 的優勢。\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n### 使用 `:root` 選擇器來設定彈性的字體大小\n\n在響應式版面(responsive layout)中，字體大小通常需要根據不同的 Viewport (畫面大小) 進行調整。你可以根據 `:root` 所定義的 Viewport 高度與寬度來調整字體大小：\n\n```css\n:root {\n  font-size: calc(1vw + 1vh + 0.5vmin);\n}\n```\n\n現在你便能使用依 `:root` 字級為基準的 `rem` 單位了。\n\n```css\nbody {\n  font: 1rem/1.6 sans-serif;\n}\n```\n\n#### [示範](http://codepen.io/AllThingsSmitty/pen/XKgOkR)\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n### 為了更好的行動體驗來設定表單元素的 `font-size`\n\n為了避免使用者在行動瀏覽器 (iOS Safari, 等等）點擊 `<select>` 的下拉選單時在 HTML 表單元素進行縮放，你可以加上`font-size` 到這些選取器樣式規則：\n\n```css\ninput[type='text'],\ninput[type='number'],\nselect,\ntextarea {\n  font-size: 16px;\n}\n```\n\n:dancer:\n\n<sup>[回到目錄](#table-of-contents)</sup>\n\n\n### 使用指標事件來控制滑鼠事件\n\n[指標事件](https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events)允許您指定滑鼠如何與其觸控的元素進行互動。 要停用按鈕上的預設指標事件，例如：\n\n```css\nbutton:disabled {\n  opacity: .5;\n  pointer-events: none;\n}\n```\n\n就這麼簡單。\n\n<sup>[回目錄](#目錄)</sup>\n\n\n### 在用作間距的換行符上設置`display: none`\n\n正如[Harry Roberts指出](https://twitter.com/csswizardry/status/1170835532584235008)，這有助於防止CMS用戶使用額外的換行符\n\n```css\nbr + br {\n  display: none;\n}\n```\n\n<sup>[回目錄](#目錄)</sup>\n\n\n## 瀏覽器支援度\n\n以上技巧支援 Chrome, Firefox, Safari, 最新版本與 Edge 瀏覽器。\n"
  }
]