体面编码之CSS和HTML

解道jdon 2021-05-03 05:32:26
html css 编码 体面


CSS也是代码。本指南中其他主题的项目适用。它需要代码审查,并且需要进行自动和手动质量检查和规则 - 就像任何其他应用程序代码一样。可怜的CSS很难修改和扩展,并且很难改变或重构应用程序。

使CSS接近其样式的组件代码。阅读:文件

解决设计不一致问题。UI设计有时在其样式上不一致,例如间距或颜色。避免将这些内容转移到应用程序的样式代码中; 不一致的不一致性会影响产品,但它们也往往会导致糟糕的CSS。一些不一致是微不足道的,而另一些则需要与设计师讨论。

规则

使用语义类名称。描述规则的目的(例如product),而不是规则的内容(例如redBackground)。然而,有少数例外,其中表现/实用类可能是有用的。

将相关规则放在文件中。这使维护人员更容易发现它们,因此在进行修改时更有可能将它们考虑在内。

每行一个选择器。每行多个对可读性有害。

避免选择器紧密耦合到DOM结构。这样做会使样式和DOM难以修改而不会破坏另一个。注意指定许多类(镜像DOM树)或使用>子组合子的选择器。

将声明置于深思熟虑的顺序中。包含随机(或按时间添加)顺序的声明的规则更难以阅读并在心理上快速可视化。它们也容易出现多个冲突(即意外覆盖)声明。一个经过深思熟虑的排序,其中最重要的声明首先出现,相关的声明被组合在一起,避免了这些问题。使用linter强制执行排序。已建立和流行的排序(其中包括预设)包括ConcentricRECESSSMACSS

使用标准颜色,间距等变量。这样做可以避免重复,并有助于确保一致性。

特点和技术

在不合适的地方避免固定尺寸。固定尺寸从浏览器的大小调整功能中取消了元素,导致布局不适应浏览器大小,并且在更改内容时需要手动调整。它们通常不具备现代布局功能。

在不合适的地方避免绝对定位。绝对定位通过将元素定位在特定坐标处,将元素从布局流中取出。这些需要手动调整以将周围的元件装配在一起,并且一旦被引入布局中就倾向于增殖。它们通常不具备现代布局功能。

避免使用浮动来定位元素。浮点数的目的是允许内容在元素周围流动。然而,它们在历史上以不是为其设计的方式使用,以实现当时CSS中无法实现的布局。现代布局功能如flexbox是更好的选择,因此现在使用浮动很少是必要或不合适的。

避免使用text-align对齐元素。这是一个继承的属性,因此使用它对齐的元素的子元素必须通过设置它们自己来抵消不需要的文本对齐text-align。使用flexbox来对齐元素。

避免使用!important。应该避免将此添加到声明中以强制赢得选择器特异性竞赛。它突破了正常的特殊规则(处于声明级别),并且在不使用另一个规则的情况下不能被覆盖!important- 趋向于导致其使用的扩散。

根据情况使用margin 或padding 。Margin 边距在元素周围创建空间; 用它来分隔元素和其他元素。相邻的垂直折叠。padding 填充在元素内(边框和内容之间)创建空间; 用它来分隔元素的内容和边缘。想想你需要达到的目标,如果你发现自己需要重复自己以保持一致的所需间距,那就再想一想。

避免使用过时的技术。CSS功能的进步继续为许多传统技术带来更新,更好的替代方案,并且在浏览器中广泛支持它们。使用它们。随着flexbox的出现,不再需要许多黑客攻击和解决方法。

注意不同浏览器中的功能支持。要么只使用应用程序支持的所有浏览器支持的那些,要么执行渐进增强。请参阅MDN文档页面上的 “我可以使用参考”和浏览器兼容性表。使用linter自动执行兼容性检查。

隔离

命名空间选择器避免无意中影响不需要的元素。类名和选择器是在全局空间(页面)中定义和操作的,因此必须采用策略来始终如一地轻松避免影响不需要的元素的规则。示例包括使用组件的根类作为其所有样式规则的选择器,BEM和CSS模块的前缀。即使采用这种策略,也需要特别注意避免父组件无意中影响嵌套在其中的其他组件。

避免“reaching ”嵌套组件以添加/覆盖其样式。这些样式与嵌套组件的内部实现(DOM和自己的样式)相关联,如果发生变化则不太可能被考虑 - 使它们变得脆弱且难以维护。这类似于在面向对象编程中使用/修改私有状态。相反,让嵌套组件在其根目录上支持“选项/模式类”,父组件可以应用于选择加入。

使组件不受任何关于它们在何处/如何使用的影响。影响组件元素外部的样式(例如定位/布局/间距)应留待使用该组件的父代码指定。

有关编写可伸缩CSS的更多信息,我建议Jarno Rantanen 使用“8个简单的规则来实现强大,可扩展的CSS体系结构”指南。

文档(CSS)

建立文档说明浏览器错误解决方法。这样做可以突出并解释不寻常或混乱的风格,为您未来的自我和他人带来好处。对于众所周知的问题,可以用简短的短语和指向例如flexbugs的链接简洁地完成。

解释非显而易见的“魔术值”的选择,例如宽度和间距。记录这些内容可以更有信心地进行未来的更改,并避免回归。选择适合特定最长期望值的宽度是一个例子。

HMTL

通常避免使用id属性。在页面上多次使用相同的id值无效。在由多个组件组成的应用程序中,一些组件具有多个实例,很容易违反该要求。但是,该属性对滚动到页面上特定位置的链接很有用。

使用语义标记。除了<div>和<span>之外还有许多元素,它们传达了意义。在适当的地方使用它们,例如:标题,部分,表格和段落。

避免使用CSS以外的任何类。使用类的选择器通常用于以编程方式选择特定元素,例如在JavaScript代码或集成测试中。在修改标记和CSS时,很容易忘记这些不太明显的用法 - 导致破损。使用专用的自定义属性(例如data-id,test-id)来代替。

将复杂的代码/表达式保留在HTML模板之外。模板通常需要依赖这些东西进行条件渲染和数据绑定。将复杂的模板与HTML模板混合使得自身和标记更难以遵循。相反,为它们提取变量和/或方法。

 

版权声明
本文为[解道jdon]所创,转载请带上原文链接,感谢
https://www.jdon.com/51268

  1. HTML + CSS + JavaScript to achieve cool Fireworks (cloud like particle text 3D opening)
  2. HTML + CSS + JavaScript realizes 520 advertising love tree (including music), which is necessary for programmers to express themselves
  3. Solve the problem of Web front-end deployment server (it can be deployed online without a server)
  4. HTML + CSS + JS make wedding countdown web page template (520 / Tanabata Valentine's Day / programmer advertisement)
  5. What else can driverless minibus do besides "Park connection"?
  6. Cloud native leads the era of all cloud development
  7. NRM mirror source management tool
  8. Bring it to you, flex Jiugong
  9. Lolstyle UI component development practice (II) -- button group component
  10. Deconstruction assignment in ES6
  11. Luo 2 peerless Tang clan was officially launched. The official gave a key point, and the broadcast time was implied
  12. 20初识前端HTML(1)
  13. 当新零售遇上 Serverless
  14. 20 initial knowledge of front-end HTML (1)
  15. When new retail meets serverless
  16. [golang] - go into go language lesson 5 type conversion
  17. [golang] - go into go language lesson 6 conditional expression
  18. HTML5(八)——SVG 之 path 详解
  19. HTML5 (8) -- detailed explanation of SVG path
  20. 需要开通VIP以后页面内容才能复制怎么办?控制台禁用javascript即可
  21. Web前端|CSS入门教程(超详细的CSS使用讲解,适合前端初学者)
  22. 实践积累 —— 用Vue3简单写一个单行横向滚动组件
  23. Serverless 全能选手,再下一城
  24. What if you need to open a VIP to copy the page content? Just disable JavaScript on the console
  25. Web front end | CSS introductory tutorial (super detailed CSS explanation, suitable for front-end beginners)
  26. Practice accumulation - write a single line horizontal scroll component simply with vue3
  27. Dili Reba is thin again. She looks elegant and high in a strapless hollow skirt, and her "palm waist" is beautiful to a new height
  28. Serverless all-round player, next city
  29. The difference between MySQL semi synchronous replication and lossless semi synchronous replication
  30. Vue表单设计器的终极解决方案
  31. The ultimate solution for Vue form designer
  32. Nginx从理论到实践超详细笔记
  33. Yu Shuxin's red backless swimsuit is split to the waist and tail, with a concave convex figure and excessive color matching, and his face is white to dazzling
  34. Nginx ultra detailed notes from theory to practice
  35. 【动画消消乐|CSS】086.炫酷水波浪Loading过渡动画
  36. typecho全站启用https
  37. CCTV has another popular employee. The off-site interpretation is very professional, and the appearance ability is no less than that of Wang Bingbing
  38. [animation Xiaole | CSS] 086. Cool water wave loading transition animation
  39. Enable HTTPS in Typecho
  40. 50天用JavaScript完成50个web项目,我学到了什么?
  41. 根据JavaScript中原生的XMLHttpRequest实现jQuery的Ajax
  42. What have I learned from completing 50 web projects with JavaScript in 50 days?
  43. "My neighbor doesn't grow up" has hit the whole network. There are countless horse music circles, and actor Zhou Xiaochuan has successfully made a circle
  44. 根据JavaScript中原生的XMLHttpRequest实现jQuery的Ajax
  45. Implement the Ajax of jQuery according to the native XMLHttpRequest in JavaScript
  46. Implement the Ajax of jQuery according to the native XMLHttpRequest in JavaScript
  47. 30 + women still wear less T-shirts and jeans. If they wear them like stars, they will lose weight
  48. 数栈技术分享前端篇:TS,看你哪里逃~
  49. Several stack technology sharing front end: TS, see where you escape~
  50. 舍弃Kong和Nginx,Apache APISIX 在趣链科技 BaaS 平台的落地实践
  51. Abandon the landing practice of Kong and nginx, Apache apisik on the baas platform of fun chain technology
  52. 浪迹天涯king教你用elementui做复杂的表格,去处理报表数据(合并表头,合并表体行和列)
  53. 前端HTML两万字图文大总结,快来看看你会多少!【️熬夜整理&建议收藏️】
  54. Wandering around the world king teaches you to use elementui to make complex tables and process report data (merge header, merge table body rows and columns)
  55. 路由刷新数据丢失 - vuex数据读取的问题
  56. Front end HTML 20000 word graphic summary, come and see how much you can【 Stay up late to sort out & suggestions]
  57. Route refresh data loss - vuex data reading problem
  58. Systemctl系统启动Nginx服务脚本
  59. Systemctl system startup nginx service script
  60. sleepless