资讯专栏INFORMATION COLUMN

如何用自己喜欢的 CSS 风格重置网站的样式

shaonbean / 1930人阅读

摘要:翻译疯狂的技术宅原文许多前端开发人员都在用为他们的网站设计样式。一些人喜欢在中添加一些自己偏好的样式,我也一样。我认为这是令人难以置信和奇怪的。不同的浏览器为表单元素和按钮设置了不同的边框样式。这种风格的问题是它的特异性低。

翻译:疯狂的技术宅
原文:https://medium.freecodecamp.o...

许多前端开发人员都在用 Normalize 为他们的网站设计样式。一些人喜欢在 Normalize.css 中添加一些自己偏好的样式,我也一样。

在本文中,我会与你分享我自己的 CSS reset 项目(除了 Normalize.css 之外我还使用它们)。

我将 reset 项分为8类:

盒子大小

删除边距和填充

列表

表格和按钮

图像和嵌入视频

表格

隐藏属性

Noscript

调整盒子大小

box-sizing 属性改变了 CSS 盒子模型的工作方式。它会改变计算 widthheightpaddingbordermargin 的方式。

box-sizing 的默认设置是 content-box。我更喜欢将其改为 border-box,因为这样更容易设置 paddingwidth.。

有关 Box Sizing 的更多信息,你可能对“了解Box大小”感兴趣。

html {
  box-sizing: border-box;
}
*,
*::before,
*::after {
  box-sizing: inherit;
}
删除边距和填充

浏览器对不同元素 marginpadding 的设置各不相同。当我不了解这些时,默认设置会让我失望。但是我更喜欢通过自己编码设置所有边距和填充。

/* 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 样式时,会在特定的

    上手动设置它。

    /* Removes discs from ul */
    ul {
      list-style: none;
    }
    表单和按钮

    浏览器不会继承表单和按钮的排版。他们将 font 设置为 400 11px system-ui。我认为这是令人难以置信和奇怪的。所以我总是要手动让它们从祖先元素继承样式。

    input,
    textarea,
    select,
    button {
      color: inherit; 
      font: inherit; 
      letter-spacing: inherit; 
    }

    不同的浏览器为表单元素和按钮设置了不同的边框样式。我很不喜欢这些默认样式,宁愿将它们设置为 1px solid gray

    input,
    textarea,
    button {
      border: 1px solid gray; 
    }

    我对按钮做了一些调整:

    将按钮的 padding 设置为 0.75em1em ,因为这看起来更符合我经验中的合理默认值。

    删除了应用于按钮的默认 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;
    }

    媒体元素包括 imgvideoobjectiframeembed。我倾向于让这些元素符合其容器的宽度。

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

    如果一个组件需要 JavaScript 才能工作,我会添加一个

    这样为

    /* noscript styles */
    noscript {
      display: block;
      margin-bottom: 1em;
      margin-top: 1em;
    }
    总结

    很多人对我提到的这些样式风格感兴趣。这个链接是我在 Github 的 CSS Resets 仓库(https://github.com/zellwk/css...)。

    本文首发微信公众号:jingchengyideng 欢迎扫描二维码关注公众号,每天都给你推送新鲜的前端技术文章

    欢迎继续阅读本专栏其它高赞文章:

    12个令人惊叹的CSS实验项目

    世界顶级公司的前端面试都问些什么

    CSS Flexbox 可视化手册

    过节很无聊?还是用 JavaScript 写一个脑力小游戏吧!

    从设计者的角度看 React

    CSS粘性定位是怎样工作的

    一步步教你用HTML5 SVG实现动画效果

    程序员30岁前月薪达不到30K,该何去何从

    7个开放式的前端面试题

    React 教程:快速上手指南

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/116018.html

相关文章

  • [译]148个资源让你成为CSS专家

    摘要:层叠样式表二修订版这是对作出的官方说明。速查表两份表来自一份关于基础特性,一份关于布局。核心第一篇一份来自的基础参考指南简写速查表简写形式参考书使用层叠样式表基础指南,包含使用的好处介绍个方法快速写成高质量的写出高效的一些提示。 迄今为止,我已经收集了100多个精通CSS的资源,它们能让你更好地掌握CSS技巧,使你的布局设计脱颖而出。 CSS3 资源 20个学习CSS3的有用资源 C...

    impig33 评论0 收藏0
  • 7 个开放式 CSS 面试题及回答策略

    摘要:通过面试者的答案可以得知他都知道哪些开发语言。这个问题的答案能够知道求职者有没有可靠的资源,这些资源在未来开展项目时可能会派上用场。对这个问题的诚实回答可以帮助面试官为求职者提供合适的团队。 翻译:疯狂的技术宅原文:https://www.indeed.com/hire/i... 不管你是面试官还是求职者,里面的思路都能让你获益匪浅。 你用 CSS 多久了? 解析: 这个问题可以让面...

    AJie 评论0 收藏0
  • 按钮样式正确方式

    摘要:按钮样式的正确方式如果你正在建立一个网站或一个应用,你可能会用到按钮,也许看起来像按钮的链接。这是我们想要做的事情可应用于链接或按钮的按钮样式我们希望有选择地应用它,因为我们的页面中会有其他链接和按钮样式。 按钮样式的正确方式 如果你正在建立一个网站或一个web应用,你可能会用到按钮,也许看起来像按钮的链接。不管怎样,让这些正常展示是很重要的。 在本教程中,我们将为和元素以及一个自定义...

    DataPipeline 评论0 收藏0
  • 学习何用CSS变量创建网页响应布局 — css var()

    摘要:只是需要把要改变的属性在重新重置一下,需要在媒体查询中拥有自己的选择器,但会招致额外的大量代码,像下面这样查看效果新方法下面让我们来看如何使用变量来解决这个问题。 在创新的2018年已经过去,在2019年看看如何简单做成响应性的网站 如果你未曾听说过CSS变量,那么我告诉你,它就是CSS的一种新功能,可以让你拥有在样式表中使用变量的能力,这样做时并不需要什么特别的设置呦。 从本质上讲,...

    Yuanf 评论0 收藏0
  • 学习何用CSS变量创建网页响应布局 — css var()

    摘要:只是需要把要改变的属性在重新重置一下,需要在媒体查询中拥有自己的选择器,但会招致额外的大量代码,像下面这样查看效果新方法下面让我们来看如何使用变量来解决这个问题。 在创新的2018年已经过去,在2019年看看如何简单做成响应性的网站 如果你未曾听说过CSS变量,那么我告诉你,它就是CSS的一种新功能,可以让你拥有在样式表中使用变量的能力,这样做时并不需要什么特别的设置呦。 从本质上讲,...

    jemygraw 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<