前端实战项目中20条CSS代码使用注意事项

这次给大家带来前端实战项目中20条CSS代码使用注意事项,下面就是实战案例,一起来看一下。

01、谨慎使用外边距属性

与其它的属性不同,垂直方向上的外边距相遇时将会发生折叠。这意味着如果一个元素的下边距遇到了另一个元素的上边距,那么二者中较大的一个将被留下。下面是一个简单的例子。

 

.square { width: 80px; height: 80px; } .red { background-color: #F44336; margin-bottom: 40px; } .blue { background-color: #2196F3; margin-top: 30px; }

其实上述两个元素在垂直方向上的距离并不是 70px, 而是 40px, 蓝色正方形的 margin 没有被计算在内。 有很多的方法消除这种默认的行为,但最好的方法是只使用一个方向上的 margin 属性,比如说 margin-bottom 。

02、利用盒子模型布局

盒子模型自然有其存在的理由。float 和 inline-block 当然也可以工作,但它们都是样式化文档的基础工具,而不是整个网站。从某种意义来说, Flexbox 是为更容易更精确创建我们想要的布局而设计的。

Flexbox 模型提供的一系列属性给了开发者更大的灵活性,而且你一旦熟悉了它们,那创建任何响应式布局都是轻而易举的事。浏览器对 Flexbox 的支持也已经接近完美,所以已经没有什么理由能够阻止你使用 Flexbox 了。

.container {        display: flex;        /* Don't forget to add prefixes for Safari */        display: -webkit-flex;    }

03、执行 CSS 重置

尽管这些年来情形已经有所好转,但是各浏览器的默认行为还是存在很多分歧。解决这个问题最好的办法就是使用一个 CSS 重置文件为所有元素重新设置默认样式。这可以让你在一个纯净的样式环境下工作,并且在所有浏览器中产生相同的结果。

有很多的库做这个工作做的非常不错,比如 normalize.css, minireset, 和 ress, 纠正了浏览器间的不一致。如果你不想使用库,你也可以自己制作一个简单的 CSS 重置,像下面这样。

  * {        margin: 0;        padding: 0;        box-sizing: border-box;    }

这可能看上去比较苛刻,但是消除了默认的 margin 和 padding 我们将更容易的摆放我们的元素,而不用担心它会占用额外的空间。box-sizing: border-box 是一个很受用的属性,我们将在下面介绍这个属性。

04、为所有元素使用 Border-box

许多初学者不知道 box-sizing 属性,但它的确很重要。了解它的最好办法就是看看它的两个可选值。

content-box(default) – 当我们为元素设置了宽度和高度,但那只是内容的尺寸。所有的 padding 和 border 都在不包含在内容当中,也就是在内容的外部。

举例来说,如果我们有一个 p它的宽度为 100px, padding 为 10px, 那么它的实际宽度为 120px。

border-box – padding和 border 被包含在 宽度和高度当中。 如果一个 p 的宽度为 100px ,而被设置了 box-sizing: border-box, 那么它的宽度将始终是 100px, 无论你添加多少 padding 和 border 。

为所有元素设置 border-box 将有利于样式化,而且你在也不用做乏味的数学运算了。

05、图像作为背景当你为自己的站点添加图片时,尤其是你想做响应式设计的时候,利用一个 p 标签并为其设置 background 属性,而不是使用 前端实战项目中20条CSS代码使用注意事项 元素。

似乎额外的工作并没有起到任何作用,但实际上这更利于你对图片设置样式,保持它们原有的尺寸或者根据比例变化,这需要借助 background-size,background-size 还有一些其它的属性。

 

img element

@@##@@

p with background image

img { width: 300px; height: 200px; } p { width: 300px; height: 200px; background: url(''); background-position: center center; background-size: cover; } section{ float: left; margin: 15px; }

这种技术的一个缺点是你页面的可访问性可能略有打击,因为你的图片不会被屏幕阅读器和引擎正确抓取。 这个问题可以被 object-fit 解决,但它还不被所有浏览器支持。

06、更好的 Table 边框 

HTML 中的 table 没什么意思。它们非常古怪,难以设计成响应式的,而且很难与整体风格一致。比如说,你想为 table 和其中的元素添加上边框,你可能会得到下面的结果。

前端实战项目中20条CSS代码使用注意事项

正如你所见到的,它有很多重复的边框而且看起来不是很好,有一个非常快速且简单的去除双边框的方法,就是将 border-collapse: collapse 添加到 table.

前端实战项目中20条CSS代码使用注意事项

这样看起来就好多了。

07、更好的注释方式

CSS 可能不是一门编程语言但它的代码仍然需要被记录,所以一些简单的注释将会对你的同事或者未来的自己很有帮助!

对于 CSS 中的一些比较大的模块,比如主要模块或者媒体查询,使用风格化的注释并且在其后留下一些空行。

    /*---------------        #Header    ---------------*/    header { }    header nav { }    /*---------------        #Slideshow    ---------------*/    .slideshow { }

设计中的一些细节或那些不是特别重要的模块,可以用单行注释。

 /*   Footer Buttons   */    .footer button { }    .footer button:hover { }

   另外,值得注意的是,CSS 中没有 // 注释,所以当你需要注释的时候你需要使用 /* */ 符号。

    /*  Do  */    p {           padding: 15px;        /*border: 1px solid #222;*/    }    /*  Don't  */    p {        padding: 15px;        // border: 1px solid #222;      }

08、命名连接

当 class 或者 id 不止一个单词的时候,需要使用 – 符号连接,  CSS 对大小写不敏感,所以骆驼命名法不是一个好的选择。很久以前,下划线不被支持所以破折号成为了默认约定。

 /*  Do     */    .footer-column-left { }    /*  Don't  */    .footerColumnLeft { }    .footer_column_left { }

09、不要重复设置  

CSS 的许多属性值都是从 DOM 树中的上一级继承下来的,因此命名为层叠样式表。让我们以 font 为例 – 它几乎总是继承自父节点,你不需要为页面中的每一个元素设置该属性。

你只需要为 或者

设置 font 样式,然后让它一级一级流传下去就可以了。 下面是一个很好的例子。

html {        font: normal 16px/1.4 sans-serif;    }

当然,在任何一个子元素中你都可以按照自己的需求改变这一样式。我要说的就是能使用继承获得的属性就不要再去一一指定了。

10、CSS 动画与变换  

不要通过直接更改元素的宽度和高度去动画元素,或者是更改 left/right/top/bottom。最好的办法是使用 transform() 属性因为它提供了更加圆滑的过渡效果而且可以让你的意图在阅读代码时更加易于理解。

下面是一个例子,我们想动画一个 ball,让它往右滑动。 不要去改变 left 的值,最好是使用 translateX() 。

 .ball {        left: 50px;        transition: 0.4s ease-out;    }    /* Not Cool*/    .ball.slide-out {        left: 500px;    }    /* Cool*/    .ball.slide-out {        transform: translateX(450px);    }

transform 以及它的所有方法(translate, rotate, scale 等)拥有几乎一致的浏览器兼容性,你可以自由使用它们。

11、不要 DIY, 使用库  

CSS 社区非常的庞大而且不断出现新的库。 库被提供于各种用途,从小片段到完善的框架,用于构建响应式程序,而且它们当中大部分都是开源的。

所以下次当你碰到 CSS 问题的时候,在你想自己动手去解决问题的时候,最好先去 Github 或者 CodePen 找找是否已经存在可用的解决方案。

12、保持选择器的特指度低  

不是所有 CSS 选择器都是生而相等的,当新手开发者书写 CSS 代码的时候通常期望它们写的选择器能够覆盖之前所有已存在的样式。 但是事情并不总像我们想的那样,就像下面这个例子:

a{        color: #fff;        padding: 15px;    }    a#blue-btn {        background-color: blue;    }    a.active {        background-color: red;    }

我们想为所有按钮添加 .active 类使其变为红色,但这是不起作用的,因为按钮已经被一个 id 选择器设置了 background-color,而 id 选择器具有更高的特指度。它们之间的规则就像下面这样:

ID (#id) > Class (.class) > Type (比如 header)。

特指度是可以堆叠的,所以 a#button.active 的特指度是高于 a#button 的。 使用特指度高的选择器将使你不断的使用更高的去覆盖那些原本存在的选择器,这将最终导致 !important 效果。

13、不要使用 !important  

很认真的告诉你,不要使用 !important。 即时的一个快速修复在将来可能导致大量的重写。相反,找出你 CSS 选择器不工作的原因,并且尝试去修复它。

只有在一种情景中使用 !important 是可以接受的,那就是你想覆盖那些在 HTML 中定义的行内样式。而且书写行内样式也是一种非常糟糕的方式,建议停止使用。

14、使用 text-transform  

在 HTML 中,当你使用大写字母的时候可能是出于某种语义目的,比如说你想强调一个单词的重要性。

 

Employees MUST wear a helmet!

如果出于某种目的你将一组文本都设置成大写,可以在 HTML 中正常书写文本,然后利用 CSS 转换其大小写。 它们看起来都是一样的,但是如果不在上下文中,你的内容将更有意义。  

Star Wars: The Force Awakens

.movie-poster { text-transform: uppercase;}

这同样适用于大写或者小写的字符串 – text-transform 属性可以将它们处理的很好。

15、Em, Rem 和 Pixel  

人们在对元素和文本设置尺寸应该用 em,rem 还是 px 有很多的争论。事实是,这三者都是可行的,有自己的优点和缺点。

所有的开发者和项目都是不同的,所以不应该有什么严格的规则说明什么时候该用哪一种。下面是一些提示和良好的做法:

em – 1 em 的大小与直接父元素的字体大小有关。 通常用于媒体查询,em 对响应式设计而言是非常棒的 ,但是将每个元素的 em 值转换为 px 的比例是非常难以计算的,因为你可能要在 DOM 树上逐级跟踪元素。

rem – 以 元素中的 font-size 为基准, rem 将比例化页面中的标题和段落变得很容易。保持 中默认的 font-size 并且为其它的元素设置 rem 是一种非常棒的方法。

px – 像素是最精确的控制方式,但是在 响应式设计中它并不友好,因为它不会随屏幕大小变化而自动缩放。它们是可靠的,易于理解的,并且在值和实际结果之间呈现出良好的视觉联系。

下面我要说的是,不要害怕尝试。去使用它们并且找出哪一种是你最喜欢的。 有时候 em 和 rem 很省事,尤其对于响应式界面。

16、在大项目中使用预处理器  

你可能已经听说过它们了 – Sass, Less, PostCSS, Stylus 。预处理器是 CSS 发展的下一阶段。 它们提供的功能诸如变量, CSS 函数,选择器嵌套以及其它一些非常酷的东西。这使得 CSS 代码非常易于管理,尤其在大项目中。

举个简单的例子,下面是使用了 CSS 变量和函数的 Sass 代码片段。

$accent-color: #2196F3;    a {        padding: 10px 15px;        background-color: $accent-color;    }    a:hover {        background-color: darken($accent-color,10%);    }

使用 CSS 预处理器的唯一缺点是,它们需要编译成真正的 CSS 代码,但是如果你已经决定在你的项目中使用一个构建脚本,那么这就不再是你应该烦恼的问题了。

17、Autoprefixers  

为各个浏览器添加前缀算得上是书写 CSS 代码最恼人的问题了。它们不一致,你永远无法精确的你需要哪一个,而且如果你真的去一个个适配并将它们都放到样式表中,你会发现这是一场噩梦。

感谢上天,有很多工具可以自动的帮你实现这一过程,甚至可以让你指定你需要支持的浏览器 :

在线工具: Autoprefixer 文本编辑器插件 – Sublime Text, Atom 库 – Autoprefixer

18、在项目中使用精简代码  

为了提高网站或app的页面加载速度我们需要总是使用精简代码 . 代码的精简版本会移除掉空白和重复的部分,这样会削减文件的大小. 当然,这样的话你的 CSS 代码将会变得非常难以阅读,所以最好总是提供一个 .min 的精简版本和一个常规的发展版本.

有很多不同的方法去精简 CSS 代码 :

在线工具 – CSS Minifier, CSS Compressor 文本编辑插件 – Sublime Text, Atom 库 – Minfiy , CSSO 和 CSSNano

根据你的工作流程,你可以选用上述一个选项,但是建议你总是使用某种方式自动执行此过程。

19、Can I Use

不同的浏览器仍然存在着很多不一致的兼容性问题, 利用 caniuse 或者其它类似的服务检测你正在使用的属性是否被广泛支持, 是否需要添加前缀, 或者说是否会在某平台下出现 bug .

仅仅检测是否仍然是不够的, 你仍然需要测试布局是否会无缘无故的崩溃. 充分了解用户经常使用的浏览器也会提供很大的帮助, 因此你可以看到好的支持是非常关键的.

20、Validate

验证 CSS 代码可能没有验证 HTML 或者 JavaScript 代码重要, 但是在一个 CSS 验证器上运行你的代码还是有帮助的, 它会提示你是否书写了错误或者比较糟糕的代码, 甚至会给出一些比较中肯的建议帮助你改进代码。

相信看了本文案例你已经掌握了方法,更多精彩请关注创想鸟其它相关文章!

推荐阅读:

立即学习“前端免费学习笔记(深入)”;

怎样使用JSON格式发送POST请求

小程序开发分享页面后返回首页

前端实战项目中20条CSS代码使用注意事项

以上就是前端实战项目中20条CSS代码使用注意事项的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1610115.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 01:14:41
下一篇 2025年12月24日 01:15:00

相关推荐

  • css+transition做出显隐动画

    这次给大家带来css+transition做出显隐动画,的注意事项有哪些,下面就是实战案例,一起来看一下。 我们先来看效果图 像这样的一个带过渡效果的小部件在我们实际开发中的应用几率还是比较大的,但是在开发微信小程序的过程中可能有的小伙伴发现transition这个属性它不好使(下面说明)所以我们这…

    好文分享 2025年12月24日
    000
  • CSS实战项目中书写规范与顺序

    这次给大家带来CSS实战项目中书写规范与顺序,CSS实战项目中书写规范与顺序的注意事项有哪些,下面就是实战案例,一起来看一下。 CSS书写顺序  1.位置属性(position, top, right, z-index, display, float等) 2.大小(width, height, pa…

    2025年12月24日
    000
  • CSS层叠机制使用详解

    这次给大家带来CSS层叠机制使用详解,CSS层叠机制使用的注意事项有哪些,下面就是实战案例,一起来看一下。 css中为什么要有层叠机制 因为在css中可能会有多个样式同时影响同一个元素的某个属性,层叠机制可以解决作者(写代码的人),用户(浏览页面的人)和用户代理(一般指浏览器)的样式冲突。 在层叠中…

    好文分享 2025年12月24日
    000
  • 关于CSS的图像拼合技术

    这篇文章主要介绍了关于CSS的图像拼合技术 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下    图像拼合就是单个图像的集合。    有许多图像的网页可能需要很长事件来加载和生成多个服务器的请求。    使用图像拼合会降低服务器的请求数量,并节省带宽。 图像拼合–创建一个…

    好文分享 2025年12月24日
    000
  • CSS的positon属性的分析

    这篇文章主要介绍了关于CSS的positon属性的分析,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 position是CSS中非常重要的一个属性,通过position属性,我们可以让元素相对于其正常位置,父元素或者浏览器窗口进行偏移。postion也是初学者容易搞不清楚状况的一个属…

    2025年12月24日 好文分享
    000
  • CSS样式的覆盖规则

    下面为大家带来一篇css样式覆盖规则全面了解。内容挺不错的,现在就分享给大家,也给大家做个参考。 大家都知道CSS的全称叫做“层叠样式表”,但估计很多人都不知道“层叠”二字的含义。其实,“层叠”指的就是样式的覆盖,当一个元素被运用上多种样式,并且出现重名的样式属性时,浏览器必须从中选择一个属性值,这…

    好文分享 2025年12月24日
    000
  • 提高css性能的方法

    这篇文章主要介绍了css性能优化提高css性能的方法,不规范的css会导致很多性能问题,所以学习掌握css性能优化技巧是非常必要的,对css性能优化知识感兴趣的朋友一起学习吧 不规范的css会导致很多性能问题,这些问题可能在一些小的项目中不够明显,但是在大型项目中就会显现出来。 css匹配原理 在优…

    好文分享 2025年12月24日
    000
  • 利用CSS自定义绿色复选框按钮的样式

    这篇文章主要介绍了关于CSS自定义绿色复选框按钮的样式,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 HTML自带的复选框或者单选框按钮样式都是比较简单的一种. 而有时候这些表单控制, 可能需要配合自己的主题样式. 需要去美化他们. 以前可能需要借助JS的实现. 现在CSS也可以完全…

    2025年12月24日
    000
  • 如何使用css transition属性实现带动画显隐的微信小程序部件

    这篇文章主要介绍了使用css transition属性实现一个带动画显隐的微信小程序部件的相关资料,需要的朋友可以参考下 我们先来看效果图 像这样的一个带过渡效果的小部件在我们实际开发中的应用几率还是比较大的,但是在开发微信小程序的过程中可能有的小伙伴发现transition这个属性它不好使(下面说…

    2025年12月24日
    000
  • webpack混用css module的方法

    这篇文章主要介绍了webpack项目轻松混用css module的方法,内容挺不错的,现在分享给大家,也给大家做个参考。 前言 本文讲述css-loader开启css模块功能之后,如何与引用的npm包中样式文件不产生冲突。 比如antd-mobilenpm包的引入。在不做特殊处理的前提下,样式文件将…

    好文分享 2025年12月24日
    000
  • css中border属性之制作网页虚线

    这篇文章主要介绍了css制作网页中的虚线(border属性的使用方法),需要的朋友可以参考下 这里边框属性的虚线边框border控制虚线。以下配置的css 高度(css height)和css 宽度(css width)为350像素。 一、四边为虚线边框 border:1px dashed #000…

    好文分享 2025年12月24日
    000
  • 关于CSS中的before和:after伪元素的使用分析

    这篇文章主要介绍了css中的before和:after伪元素使用详解,包括对一些非文本内容的插入操作使用,需要的朋友可以参考下 如果你一直密切关注着各种网页设计的博客,你可能已经注意到了:before和:after伪元素已经在前端开发中获得了相当多的关注。特别是在Nicolas Gallagher的…

    2025年12月24日
    000
  • JS和CSS实现渐变背景特效的代码

    这篇文章主要介绍了js和css实现的漂亮渐变背景特效代码,包含6个渐变效果,涉及javascript针对页面元素属性动态操作的相关技巧,需要的朋友可以参考下 本文实例讲述了JS+CSS实现的漂亮渐变背景特效代码。分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: 立即学习“前端免费…

    2025年12月24日
    000
  • 如何解决CSS图片下面有间隙的问题

    这篇文章主要介绍了css图片下面有间隙的6种解决方案,需要的朋友可以参考下 在进行页面的p+CSS排版时,遇到IE6(当然有时Firefox下也会偶遇)浏览器中的图片元素img下出现多余空白的问题绝对是常见的对於 该问题的解决方法也是「见机行事」,根据原因的不同要用不同的解决方法,这里把解决直接把解…

    好文分享 2025年12月24日
    000
  • 如何用CSS实现带阴影效果的黑色导航菜单效果

    这篇文章主要为大家介绍了css实现带阴影效果的黑色导航菜单效果,通过css设置背景图片切换效果实现带阴影的导航菜单功能,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了CSS实现带阴影效果的黑色导航菜单效果。分享给大家供大家参考。具体如下: 这是一款CSS实现带阴影效果黑色导航菜单,有立体…

    2025年12月24日
    000
  • 如何设置CSS 文本字体颜色

    这篇文章主要介绍了css 文本字体颜色设置方法(css color),需要的朋友可以参考下 一、认识CSS 颜色(CSS color) 这里要介绍的是网页设置颜色包含有哪些;网页颜色规定规范。 1、常用颜色地方包含:字体颜色、超链接颜色、网页背景颜色、边框颜色2、颜色规范与颜色规定:网页使用RGB模…

    2025年12月24日
    000
  • DIV和CSS实现仿京东商城导航条效果

    这篇文章主要为大家介绍了p+css实现仿京东商城导航条效果,涉及页面p+css布局涉及结合onmouseout鼠标事件动态切换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了p+CSS实现仿京东商城导航条效果。分享给大家供大家参考。具体如下: 这里演示了p+CSS实现仿京东商城…

    2025年12月24日
    000
  • CSS中百分比的问题解析

    这篇文章主要介绍了浅谈css中的百分比,在定义css样式的时候经常会用的 “%”这个长度单位,但是这个百分比到底是相对于谁的百分比呢 本文介绍了浅谈CSS中的百分比,分享给大家,具体如下: 结论: 标准流中的元素,看其属性有没有继承性。对于width和margin-left,它是可以继承的,它会参照…

    2025年12月24日 好文分享
    000
  • CSS中层叠机制的解析

    这篇文章主要介绍了浅谈css层叠机制的相关资料,层叠机制可以解决作者(写代码的人),用户(浏览页面的人)和用户代理(一般指浏览器)的样式冲突,现在分享给大家,也给大家做个参考。 css中为什么要有层叠机制 因为在css中可能会有多个样式同时影响同一个元素的某个属性,层叠机制可以解决作者(写代码的人)…

    好文分享 2025年12月24日
    000
  • Html和css实现纯文字和带图标的按钮的代码

    这篇文章主要介绍了html和css实现纯文字和带图标按钮的方法,按钮有很多种外观,本文介绍了纯文字和带图标两种按钮,感兴趣的小伙伴们可以参考一下 本文总结一下一些基础页面元素的实现方式,后续陆续更新。首先我们遇到最多的可能是按钮的切图,按钮可能有很多种外观,但是一般可分为纯文字的和带图标的按钮,下面…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信