iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >CSS设计原则的示例分析
  • 518
分享到

CSS设计原则的示例分析

2024-04-02 19:04:59 518人浏览 薄情痞子
摘要

今天就跟大家聊聊有关CSS设计原则的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。相信大多数人都有过关于CSS的痛苦经历,从我加入公司到现在

今天就跟大家聊聊有关CSS设计原则的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

相信大多数人都有过关于CSS的痛苦经历,从我加入公司到现在,不到两年的时间里,听到最多CSS相关的讨论就是‘很难调’。所以我也一直在探究这其中有怎样的问题,为什么很多人觉得CSS很难写,如何才能让其他人更优雅的写CSS。在Code Review的时候,我渐渐的发现了问题所在,其实很多人已经掌握了丰富的CSS知识,但却不知道如何分组属性写成class。最后只好在需要改变样式的元素上随意起个名字做class然后把所有要写的属性丢进这个class里,如果优先级不够,再把前面的选择器都加上。结果就是CSS代码不断堆积,重复和冗余不断增多,维护也变得举步维艰。

问题找到了,但如何解决呢,虽然我在项目组内做了几次分享,还经常在Code Review的时候提出一些问题,却还是收效甚微。有时候知道什么是正确的很容易,但知道如何才能做到正确却很难。直到最近,看了几本书之后,发现了一个很适合指导设计CSS的方法,那就是五个为什么或者叫五问法。五问法来自丰田的精益生产,后来自然衍生到了精益创业中,在DDD以及UX相关书籍中都会见到这个方法,其主旨是深入发觉大量现象的背后所隐藏的真正原因。乍一看它是一个管理方法,其实我觉得它是一种思维方式,即刨根问底的找到问题的根本原因并解决。所以被应用于各个领域,自然对于CSS所面临的问题也正恰如其分。
场景示例

先来举个例子吧,某天Code Review发现了一条CSS代码是这样写的:

CSS 

  1. .max-width {   

  2.     max-width: 300px;   

  3. }  

由此产生了以下对话(纯属虚构):

    UI Dev:“不应该这样写,这和直接写内联样式有什么区别呢?”

    Dev:“如果我不加最大宽度,页面上那个元素左边就会多出一部分,不然加个margin外边距可以吗?”

    UI Dev:“这个...我也不确定,我从没遇到过这样的问题,一定是哪里有问题。”

    Dev:“确实这样写也挺不好的,过一段时间就不知道这行代码什么意思了,也不敢修改它。但究竟应该如何写呢?”

    UI Dev:“呃,这样吧,我们来试试五个为什么,找找问题的根本原因。”

    Dev:“好啊,CSS的问题也困扰我好久了,能解决就最好了。”

    UI Dev:“首先问问,为什么要给元素加最大宽度呢?”

    Dev:“因为不加就就会多出一部分呀。”

    UI Dev:“那为什么这个元素会多一部分呢?”

    Dev:“因为没加最大宽度,开个玩笑,别生气,其实我也不确定,不过用DevTools看了一下,好像它的父元素的宽度也不对。”

    UI Dev:“已经接近了,为什么父元素的宽度不对?”

    Dev:“因为父元素的内边距两边不一样。”

    UI Dev:“为什么父元素的内边距不一致?”

    Dev:“啊,我知道了,原来为父元素的父元素写了一个last的伪选择器,它是用来把padding-right设为0的,因为父元素现在正好是最后一个,所以被影响了。”

    UI Dev:“别急,为什么要把最后一个元素的padding-right设为0?”

    Dev:“因为原先最后面的那个元素里面是一个无法修改样式的控件,需要把padding-right设为0才能放得下。”

    UI Dev:“所以这才是问题所在,我们的意图是给空间的容器加上padding-right为0的属性对吗?而不是给最后一个元素加,所以应该写一个class,也许叫做‘widget-container’之类的,放在那个容器上,然后把last伪选择器删掉,如此一切就正常了。原先出问题的地方其实是没问题的。”

    Dev:“原来是这样,太好了,我学到了,样式出问题的地方不一定是代码有问题的地方,五个为什么太有用了。”

这样反复问多次“为什么”可以让我们找到问题的根本所在,如果仅仅从表面现象去解决问题很可能导致南辕北辙的后果。而且在例子中的last伪选择器就是因为没有找到根本原因而简单粗暴的写了这样一行代码而导致的。这个例子还很好的展现了五个为什么对于CSS的益处,不仅是找到问题的根本原因,还使得我们在写CSS的时候意图更加明确。如此一来,class命名难的问题也迎刃而解,padding-right应该为的0的元素是那个控件的容器,所以很容易想出“widget-container”这样的名字,因为通过五个为什么的方法找到了真正的意图,此时,class叫什么和应该放在哪都是水到渠成了。
按比例投入

但有时候我们所面对的项目不会这么善良,“为什么”的层级越多,说明CSS的关系也越复杂,所以现在我们来谈谈五个为什么中的一个重要原则,按比例投入。其主旨是小问题小投入,大问题大投入,问题等级越高,投入也应该越大。在CSS中来讲,就是当发现样式异常时,使用五个为什么深入找到的根本原因所在之处的重复次数越多,说明问题越严重,对问题的解决方案也应投入的更多。

再回到上面的例子中,通过一个元素位置异常的问题,找到根本原因来自一个控件需要内边距为0的容器元素,由于第一次发现,所以选择投入较小的解决方案,针对该控件加一个class用来去掉内边距。目前看来是很正确的,但如果接二连三的从不同的问题上深入找到这个控件上,那就说明问题等级提升了,不应该仅仅是在每个调用控件的容器上添加该class。此时我们可以考虑其他方式,比如把所有容器内边距都设为0,而有针对性的对内部元素添加外边距,如果问题等级继续提升,还可以修改甚至替换控件,或者重构其他部分来适应该控件。总之就是要按问题等级选择解决问题的手段,这样的好处不仅仅是原先在精益中那样可以自动调节效率,还可以等样式需求更明确的时候作出相应的重构。

由于CSS的描述性,使得它很自由,所以同一个需求,往往一百个开发者有一百种实现。在第一次碰到一个需求时,更是很难写出最佳实现,只能有针对性的写一个专属class把需要的属性扔进去。其实问题不在于此,而在于之后是否能在相同问题出现时重构原先的代码,根据所有相关问题写出更具普适性的class。有经验的UI Dev有时会通过经验来判断,直接写出这种class,Bootstrap这类框架就是这样的,但没有或较少经验的开发者就会产生疑惑。五个为什么的按比例投入原则可以很好的驱动CSS的开发,用深入的根本原因连接不同元素甚至不同页面上出现的问题,这样使我们能够安心的以目前的问题等级来组织代码,等到再次碰到问题并找到这里,才再次重构以解决问题。

看完上述内容,你们对CSS设计原则的示例分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网node.js频道,感谢大家的支持。

--结束END--

本文标题: CSS设计原则的示例分析

本文链接: https://www.lsjlt.com/news/81803.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • CSS设计原则的示例分析
    今天就跟大家聊聊有关CSS设计原则的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。相信大多数人都有过关于CSS的痛苦经历,从我加入公司到现在...
    99+
    2024-04-02
  • java面向对象设计原则之开闭原则示例解析
    概念 唯一不变的是不断的变化,在软件开发中应该对需求的变化持开放态度,我们要做的就是如何将这种变化对我们现有的成果带来最小的冲击。开闭原则直接面对面向对象程序的目标扩展性和可维护性,...
    99+
    2024-04-02
  • bootstrap中css样式设计的示例分析
    bootstrap中css样式设计的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。由于项目需要,所以打算好好学习下bootstrap框架,之前了解一点,框架总体不难,但...
    99+
    2023-06-08
  • css命名规则的示例分析
    这篇文章主要为大家展示了“css命名规则的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css命名规则的示例分析”这篇文章吧。头:header   内容...
    99+
    2024-04-02
  • Hive架构设计及原理的示例分析
    这篇文章给大家分享的是有关Hive架构设计及原理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Hive架构设计及原理1.什么是Hive:Hive是构建在Hadoop之上的数据仓库平台,可以结构化的数据文...
    99+
    2023-06-03
  • jQuery设计的示例分析
    这篇文章主要介绍了jQuery设计的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。选择元素jQuery的基本设计思想和主要用法,就是...
    99+
    2024-04-02
  • CSS包含块规则的示例分析
    这篇文章给大家分享的是有关CSS包含块规则的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、确立包含块包含块是一个非常重要的概念,通常包含块是当前元素的最近祖先元素的内...
    99+
    2024-04-02
  • CSS编程中响应式设计的示例分析
    今天就跟大家聊聊有关CSS编程中响应式设计的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。现在,响应式Web设计无疑是非常流行的。对于新人,...
    99+
    2024-04-02
  • 分析Go语言接口的设计原则
    目录一、前言二、开闭原则三、依赖倒置原则3.1、什么是依赖倒置原则  3.2、一个耦合度极高的模块关系设计3.3、面向抽象层依赖倒转一、前言 go的interface写起来更自由, ...
    99+
    2024-04-02
  • CSS代码命名规则的示例分析
    小编给大家分享一下CSS代码命名规则的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 1. 技俩属性轨范 单个名目划...
    99+
    2024-04-02
  • CSS样式覆盖规则的示例分析
    这篇文章给大家分享的是有关CSS样式覆盖规则的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首先需要明确的是,很多情况都会导致一个元素被运用上多种样式,样式覆盖的规则也需...
    99+
    2024-04-02
  • MySQL索引创建原则的示例分析
    小编给大家分享一下MySQL索引创建原则的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、适合创建索引1、字段的数值有唯一性限制根据Alibaba规范,...
    99+
    2023-06-29
  • CSS设计模式实例分析
    今天小编给大家分享一下CSS设计模式实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2024-04-02
  • css优先级计算的示例分析
    这篇文章主要为大家展示了“css优先级计算的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css优先级计算的示例分析”这篇文章吧。主要的css选择器有i...
    99+
    2024-04-02
  • CSS规则书写不完全的示例分析
    CSS规则书写不完全的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。从 CSSLint 的规则中,我们可以窥探到很多有意思的的 CSS...
    99+
    2024-04-02
  • css不识别后面规则的示例分析
    这篇文章将为大家详细讲解有关css不识别后面规则的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 子决定器加标明(>) 合用浏览器: IE7以上版本及非...
    99+
    2024-04-02
  • jsp设计模式的示例分析
    这篇文章给大家分享的是有关jsp设计模式的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。jsp设计模式一:介绍记得初学jsp的时候,总喜欢把他和asp,php去比较,也习惯于使用asp的开发模式去写jsp...
    99+
    2023-06-03
  • 响应式设计的示例分析
    小编给大家分享一下响应式设计的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.什么是响应式设计?响应式设计就是在网站开发过程中根据用户操作以及设备的环境...
    99+
    2023-06-08
  • PHP设计模式的示例分析
    这篇文章将为大家详细讲解有关PHP设计模式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。               &nb...
    99+
    2023-06-15
  • Observer设计模式的示例分析
    这篇文章主要介绍了Observer设计模式的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Observer设计模式说明假设我们有个高档的热水器,我们给它通上电,当水温...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作