翻译:疯狂的技术宅
原文: https://medium.freecodecamp.o...
许多前端开发人员都在用 Normalize 为他们的网站设计样式。一些人喜欢在 Normalize.css 中添加一些本身偏好的样式,我也同样。css
在本文中,我会与你分享我本身的 CSS reset 项目(除了 Normalize.css 以外我还使用它们)。html
我将 reset 项分为8类:前端
box-sizing
属性改变了 CSS 盒子模型的工做方式。它会改变计算 width
、 height
、 padding
、 border
和 margin
的方式。git
box-sizing
的默认设置是 content-box
。我更喜欢将其改成 border-box
,由于这样更容易设置 padding
和 width
.。程序员
有关 Box Sizing 的更多信息,你可能对“了解Box大小”感兴趣。github
html { box-sizing: border-box; } *, *::before, *::after { box-sizing: inherit; }
浏览器对不一样元素 margin
和 padding
的设置各不相同。当我不了解这些时,默认设置会让我失望。可是我更喜欢经过本身编码设置全部边距和填充。web
/* Reset margins and paddings on most elements */ body, h1, h2, h3, h4, h5, h6, ul, ol, li, p, pre, blockquote, figure, hr { margin: 0; padding: 0; }
我在不少状况下都使用无序列表,并且不少状况下都不须要 disc
样式。在这里我将 list-style
设置为 none
。当我须要 disc
样式时,会在特定的 <ul>
上手动设置它。面试
/* Removes discs from ul */ ul { list-style: none; }
浏览器不会继承表单和按钮的排版。他们将 font
设置为 400 11px system-ui
。我认为这是使人难以置信和奇怪的。因此我老是要手动让它们从祖先元素继承样式。segmentfault
input, textarea, select, button { color: inherit; font: inherit; letter-spacing: inherit; }
不一样的浏览器为表单元素和按钮设置了不一样的边框样式。我很不喜欢这些默认样式,宁愿将它们设置为 1px solid gray
。浏览器
input, textarea, button { border: 1px solid gray; }
我对按钮作了一些调整:
padding
设置为 0.75em
和 1em
,由于这看起来更符合我经验中的合理默认值。border-radius
。button { border-radius: 0; padding: 0.75em 1em; background-color: transparent; }
最后,我将 pointer-events: none
设置为按钮内的元素。这主要用于 JavaScript 交互。
(当用户点击按钮中的某些内容时,他们点击的内容是 event.target
,而不是按钮。若是按钮内有 HTML 元素,这种风格能够更轻松地处理 click
事件)。
button * { pointer-events: none; }
媒体元素包括 img
、 video
、 object
、 iframe
和 embed
。我倾向于让这些元素符合其容器的宽度。
I also set these elements to display: block because inline-block creates unwanted whitespace at the bottom of the element.
我还将这些元素设置为 display: block
,由于 inline-block
在元素的底部建立了不须要的空格。
embed, iframe, img, object, video { display: block; max-width: 100%; }
我不多使用表格,但有时它们可能颇有用。这是个人默认样式:
table { table-layout: fixed; width: 100%; }
当元素具备 hidden
属性时,应该从视图中隐藏它们。 Normalize.css 已经为咱们作了这件事。
[hidden] { display: none; }
这种风格的问题是它的特异性低。
我常常将 hidden
添加到用类设置的其余元素中。类的特异性高于属性,而且 display: none
属性不起做用。
这就是为何我选择用 !important
提升[hidden]
的特异性。
[hidden] { display: none !important; }
若是一个组件须要 JavaScript 才能工做,我会添加一个 <noscript>
标签让用户知道(若是他们已经禁用了JavaScript)。
这样为 <noscript>
标记建立默认样式:
/* noscript styles */ noscript { display: block; margin-bottom: 1em; margin-top: 1em; }
不少人对我提到的这些样式风格感兴趣。这个连接是我在 Github 的 CSS Resets 仓库(https://github.com/zellwk/css...)。