当别人的 CSS Reset 不够用,你可以自己写

当别人的 CSS Reset 不够用,你可以自己写

在前端开发中,使用 CSS Reset 已经是十分常见的做法。然而,有时候我们发现别人的 CSS Reset 并不能完全满足我们的需求。这时候,我们就需要自己动手写一份符合我们需求的 CSS Reset 了。

  1. 什么是 CSS Reset?

在使用 CSS 渲染页面时,浏览器默认会对各元素进行一些默认的样式渲染。而不同的浏览器对默认样式的处理也可能不尽相同,这就会导致在不同浏览器和系统下,同一个页面元素的展示效果可能不一致。

CSS Reset 就是一种针对这种问题的解决方案,它可以帮助我们将不同浏览器默认样式之间的差异进行规避,从而达到更加一致的渲染效果。

  1. 为什么会需要自己写 CSS Reset?

虽然市面上已经有大量的 CSS Reset 在使用,但是在实际场景下,我们还有可能会遇到以下问题:

  • 部分 Reset 涉及的样式可能与我们自己的开发风格并不符合;
  • 内置 Reset 没有包含我们需要的某些样式;
  • 某些 Reset 可能已经过时或不够完整,或者有一些兼容性问题。

针对这些问题,我们就需要自己动手写一份自定义的 CSS Reset 来解决。

  1. 怎样写一份符合自己需求的 CSS Reset?

当我们需要自己动手写 CSS Reset 时,下面这些步骤可以帮助我们更好地完成这一过程。

3.1. 分析使用场景

在编写 CSS Reset 之前,首先我们要分析出自己所处的使用场景,以及页面中会出现的主要元素和布局,进而确定自己 CSS Reset 需要考虑哪些方面。

3.2. 熟悉 CSS 的基本语法和属性

在编写 CSS Reset 的过程中,我们需要使用到大量的 CSS 属性和规则。因此,在编写 CSS Reset 之前,必须要对 CSS 的基本语法和属性有一定的掌握。

3.3. 参考已有的 Reset

虽然自己写 Reset,但是完全从零开始可能并不是最好的方式。在编写过程中,我们可以参考一些已有的 Reset,从中了解到 CSS Reset 的一些实现方式、最佳实践以及一些注意事项。部分已有的 Reset 如 normalize.css、reset.css、base.css 等。

3.4. 编写 Reset 样式

在经过前面的准备后,我们开始进入 CSS Reset 的编写阶段了。首先,我们要针对使用场景,确定需要重置的 CSS 属性,并编写相应的 CSS 样式规则。比如,可以通过以下代码来重置页面的 margin 和 padding:

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

3.5. 添加需要的样式

在编写 Reset 的基础上,通常还需要添加自定义的样式,包括字体样式、色彩样式、布局样式等。这些样式需要考虑到使用场景和设计规范,同时要注意与已有样式的兼容性。

  1. 总结

对于前端工程师来说,对于基础工具使用自如是非常重要的,自主思考和注重实际场景的表现也是一种非常有益的学习方式。当我们需要的 CSS Reset 无法满足需求时,自己编写 CSS Reset 也是一种重要技能。在编写中,需要充分考虑使用场景、编写 Reset 样式以及添加自定义样式的三个阶段,这样才能使 CSS Reset 对开发效率和渲染效果都有很好的贡献。

参考代码如下:

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

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

这份代码包含了五个部分:

  • Reset 样式(1-10 行):重置了 body、h1、h2、h3、h4、h5、h6、ol、ul、i、em、table、img 等元素的默认样式。
  • 添加自定义样式(12-24 行):为 .container、h1、a 等元素添加了一些自定义的样式。
  • 容器(11 行):使用了 .container 类名的区域,设置了其最大宽度为 1000px,水平居中,上下内边距为 20px,背景色为 #f6f8fa,前景色为 #333,使用了 Source Sans Pro 字体,字号为 16px。
  • 标题(13 行):为 h1 元素设置了字体大小为 36px,行高为 1.3,加粗,下外边距为 20px。
  • 链接(15-18 行):为 a 元素设置了颜色为 #538ff7,去除了下划线样式,并在鼠标悬停时添加了下划线。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6489594d48841e98947a2748


猜你喜欢

  • CSS Flexbox 实现流式布局方案

    什么是流式布局? 流式布局又称为响应式布局,是指随着屏幕尺寸的变化,网页内容会自动的调整布局以适应不同设备的展示。流式布局是现代 Web 设计必不可少的技术,因为人们现在使用各种不同的设备来访问网站,...

    1 年前
  • 优化 Angular 应用的性能:RxJS 中的细节

    RxJS 是 Angular 框架中的一个核心库,它提供了强大的响应式编程能力,使得我们可以更加快速和高效的编写前端应用。然而,在实际的项目中,我们常常会面临性能问题,造成应用的卡顿和响应变慢,这时候...

    1 年前
  • 使用 Mocha 和 SuperTest 进行接口自动化测试

    随着前端开发的不断发展,现代化的Web应用程序架构变得越来越复杂。在开发过程中,无论您是在开发单页面应用,还是传统的多页面应用程序,都必须确保API接口的可靠性和正确性,以及客户端与服务端的协调配合。

    1 年前
  • Mongoose 中的 Embeds 和 Refs 使用技巧

    前言 Mongoose 是一个 MongoDB 处理库,它提供了一种简单的方式,来为你的应用创建数据库模型。Mongoose 支持多种数据类型,其中包括嵌套的数据类型。

    1 年前
  • 如何在 Redux 中实现请求 OAuth 数据的最佳实践

    OAuth 是一种授权机制,用于允许一个应用程序访问另一个应用程序的用户数据。在前端应用程序中,我们通常会使用 OAuth 作为用户身份验证和访问授权的一种方式,以访问第三方 API。

    1 年前
  • Socket.io 如何使用 websocket 代替 polling 传输方式

    前言 在前端开发过程中,我们经常需要使用实时通信(Real-Time Communication,简称 RTC)功能,比如与服务器进行双向数据传输。而传统的轮询(polling)方式虽然能够实现实时通...

    1 年前
  • 如何设计 RESTful API 的错误码和错误信息

    在设计 RESTful API 的过程中,错误码和错误信息的设计是非常重要的。合理的错误码和错误信息可以提高 API 的可用性和易用性,同时也可以帮助开发人员更快地定位并解决问题。

    1 年前
  • ECMAScript 2019:一词限流解决 JavaScript 的性能问题

    JavaScript 是现今最为流行的编程语言之一,但其性能问题一直受到诟病。为了解决这一问题,ECMAScript 2019 引入了一项新特性——一词限流(Word Limiting),其可以大幅提...

    1 年前
  • 如何在 Fastify 应用中使用 GraphQL

    前言 GraphQL 是一种用于API(应用程序接口)的查询语言,于2015年被Facebook发布,并迅速在业界流行起来。随着前后端分离的趋势,GraphQL 也逐渐成为前端开发人员的重要工具之一。

    1 年前
  • [Sequelize] 如何自定义校验器 validator/unique-validator

    在 Sequelize 中,校验器是一个关键的部分,它用于验证传递给模型的数据是否有效。 Sequelize 自带有一些常见的校验器,比如 notEmpty、isEmail、isUrl 等等。

    1 年前
  • Promise 和 Generator 函数配合使用的高级技巧

    前言 Promise 和 Generator 函数都是 ES6 引入的重要特性,它们分别解决了异步编程和迭代器的问题。但是单独使用它们还不够,只有将它们结合使用才能发挥出更大的威力。

    1 年前
  • HapiJS Request 数据验证详解

    在前端开发中,数据验证是非常重要的一环。通过对请求数据进行验证,可以保证数据类型安全,避免了由于使用错误数据导致的程序崩溃、数据丢失等问题。本文将介绍 HapiJS Request 数据验证的知识,帮...

    1 年前
  • MongoDB 遇到写入冲突如何解决?

    在 MongoDB 中,当多个客户端同时尝试对同一个文档进行写入操作时,就会发生写入冲突。这时就需要一些技巧和策略来避免和处理这种情况。在本文中,我们将介绍如何面对 MongoDB 中的写入冲突,并提...

    1 年前
  • 利用 SASS 实现响应式设计的基本原理

    响应式设计是现代网站开发中必不可少的一个概念,它可以使网站在不同的设备上展现出最佳的用户体验。而 SASS 是一种 CSS 预处理器,它可以更好地组织和维护 CSS 代码,同时也能够提供一些强大的特性...

    1 年前
  • 如何在 Webpack 中使用 React 模板

    React 是一款流行的 JavaScript 库,用于构建单页应用程序和复杂的用户界面。Webpack 是一款强大的模块打包工具,可以把多个模块打包成一个或多个文件,实现优化和代码分离。

    1 年前
  • 如何使用 Angular CLI 创建项目

    什么是Angular CLI Angular CLI是一个让你更加快速创建和开发Angular应用的命令行工具。它几乎涵盖了Angular应用从开发到测试,打包部署等的全过程,并且已成为Angular...

    1 年前
  • ECMAScript 2017 中的 Object.getOwnPropertyDescriptors() 方法的深入解读

    Object.getOwnPropertyDescriptors() 是 ECMAScript 2017 中新添加的一个方法。它可以将某个对象的所有自有属性的描述符全部返回,包括 configurab...

    1 年前
  • CSS Grid 布局中的各种单位:fr、auto-fit、repeat

    一直以来,前端开发人员都希望在网页布局方面拥有更多的自由和创造力,而CSS Grid就是这个问题的一个完美解决方案。CSS Grid布局用于创建基于网格的布局,而这种布局通常是在一个行和列的网格系统中...

    1 年前
  • 提高 Node.js 应用性能的技巧和工具

    Node.js 是一个快速的、轻量级的 JavaScript 运行环境,由于其高效性和灵活性,在前端开发中得到了广泛的应用。虽然 Node.js 有许多优点,但在开发大型应用时,应用性能可能会受到影响...

    1 年前
  • Kubernetes 中的 Namespace 详解

    前言 Kubernetes 是一个流行的容器编排平台,它可以帮助我们管理大规模的容器化应用程序。随着企业中使用 Kubernetes 的普及率不断增加,管理者必须考虑如何在更大、更复杂的环境中管理容器...

    1 年前

相关推荐

    暂无文章