搜索
首页web前端css教程引入CCSS(组件CSS)

引入CCSS(组件CSS)

Feb 25, 2025 am 11:40 AM

Introducing CCSS (Component CSS)

引入CCSS(组件CSS)

钥匙要点

  • CCSS(组件CSS)是CSS体系结构,旨在简化大型Web应用程序的创作体验,使其可维护,可管理且可扩展。它鼓励基于组件的Web开发,将标记和样式捆绑到可重复使用的HTML元素中。 CCS的主要原理包括创建小型,独立的可重复使用的组件;确保组件是模块化和孤立的;编写可以组合和可预测的CSS;并清楚地记录所有CSS组件。
  • > CCSS使用特定的目录结构和命名约定,主要基于SMACSS和BEM方法。它还促进了诸如Grunt之类的任务跑步者的使用来自动执行通用任务,例如CSS汇编或HTML验证。
  • CCSS通过使样式模块化来提高Web应用程序的可扩展性,可维护性和性能,从而降低了样式在整个应用程序中发生冲突的风险,并允许浏览器仅解析要渲染的组件的样式。它与任何JavaScript框架兼容,可以与CSS预处理,例如Sass,Light或STYLUS。
  • > CCSS或组件CSS是一种架构,简化了大型Web应用程序的CSS创作体验。
  • >大型Web应用程序通常具有很多CSS文件,并且通常有许多开发人员同时处理这些文件。随着如此众多的框架,指南,工具和方法(OOCS,SMACS,BEM等)的出现,开发人员需要一个可维护,可管理且可扩展的CSS体系结构。
  • >
作为前端工程师,我相信基于组件的Web开发是前进的道路。 Web组件是通过W3C运行的标准集合。它们使我们能够将标记和样式捆绑到可重复使用的HTML元素中,这些元素是真正封装的

。这意味着我们需要开始考虑基于组件的CSS开发。当浏览器制造商正在实施这些标准时,我们可以在此期间使用

soft-apsapsulation

>让我们确切地查看CCSS是什么,以及如何在复杂的Web应用程序中为CSS架构中使用它。

CCSS 的元素 以下是完全或以修改的方式使用的主要元素,以实现CCSS体系结构的最佳配置。 > smacss 由乔纳森·斯诺克(Jonathan Snook)创建的Smacss代表CSS的可扩展和模块化体系结构。它更像是样式指南,而不是僵化的框架。在CCSS使用时,请阅读有关结构背景的SMACSS。

> bem

由Yandex的开发人员创建的 bem代表“块”,“元素”,“修改器”。这是一种前端方法,它是开发Web接口时的一种新思维方式。 Yandex的家伙提出了BEM,可以在Harry Roberts的出色文章中找到更多信息。

sass

Sass是具有超级大国的CS。我强烈推荐它,但是如果您愿意,您也可以少使用。请参阅SASS文档以获取更多信息。

指南针

指南针没有班级定义;这是SASS的扩展,可提供许多实用程序。它用于一般有用的混合蛋白和SASS汇编。在需要供应商前缀的情况下,应始终使用Compass Mixins。这再次是一个不错的选择和波旁威士忌,首先是一个很好的选择。

CCSS

的原理

现在让我们看一下CCSS的主要原理。> 基于组件的>

撰写可重复使用的小型和独立的组件。可重复使用的CSS组件是不仅存在于DOM树的特定部分或需要使用某些元素类型的组件。如有必要,应使用额外的HTML元素使组件可重复使用。

模块化和孤立的

>组件应具有UI某个部分所需的一切,并且具有一个焦点。每个组件都应隔离,这意味着它不会直接修改或取决于其他组件。

隔离比各个组件的代码重复使用更重要,因为重复使用可以增加依赖关系和紧密的耦合,最终使CSS易于管理。

综合

>以旨在减少花费时间写作时间的方式创作CSS时,应该以一种花费更多时间更改html课程的元素上的元素来修改或添加样式的方式来思考它。对于所有开发人员来说,当作者CSS就像组装乐高积木相比,比与CSS战争打架要容易得多。 CSS课程是应用来组成样式的构建块。

>

可预测的

>可预测性意味着当您作者CSS时,您的规则会按照您的期望。这对于拥有许多页面的大型应用程序很重要。避免使用过度复杂的选择器和通用类名称,因为这些名称可能会导致不可预测的CSS。

文档

大多数人认为CSS是不言自明的。实际上,通常情况并非如此! CSS组件必须具有清晰的文档,以描述他们的工作以及应如何使用。

目录结构

下面的

是一个示例目录结构,可更容易可视化。我还在CCSS GitHub repo中包括了一个示例设置。

styles
    ├── bootstrap.css
    ├── ext
    │   ├── bootstrap
    │   │   ├── _settings.scss
    │   │   └── bootstrap.scss
    │   └── font-awesome
    │       └── font-awesome.scss
    ├── font-awesome.css
    ├── images.css
    ├── main.css
    └── scss
        ├── _config.scss
        ├── base
        │   ├── _animation-classes.scss
        │   ├── _base-classes.scss
        │   ├── _base.scss
        │   └── images.scss
        ├── components
        │   ├── directives
        │   │   ├── _empty-state.scss
        │   │   ├── _legend.scss
        │   │   └── _status-message.scss
        │   ├── pages
        │   │   ├── _404.scss
        │   │   └── _redirect.scss
        │   └── standard
        │       ├── _alarm-state.scss
        │       ├── _graph-message.scss
        │       └── _panel.scss
        ├── main.scss
        ├── mixins
        │   ├── _animation.scss
        │   ├── _bem.scss
        │   └── _icon.scss
        └── themes
            └── _light.scss

仅编辑/作者在上面显示的文件夹中的SCSS/文件夹中的文件。这允许在EXT/文件夹中轻松更新外部库。许多应用程序从Bootstrap或Foundation(例如Bootstrap或Foundation)等外部CSS框架开始,因此我将它们添加到ext/内的示例设置中。但是,所有CSS都从头开始写了绝对可以。上面提到的其他所有内容仍然适用。

示例组件/目录非常适合AngularJS应用程序,但可以针对其他框架或应用程序进行自定义。更多信息在下面的“体系结构”部分中。

> 在HTML页面中,包括来自样式/文件夹的所有.css文件,其中包含所有编译的CSS(来自Grunt,Compass等)。永远不要改变它们。

命名约定 - 简化的BEM

    u-classname - 全球基础/实用程序类
  • > img-classname - 全局图像类
  • componentName - 标准组件(b)
  • componentName-ElementName - 组件的元素(e)
  • >
  • componentName-modifierName - 组件的修饰符(M)
  • >请注意Uppercamelcase组件名称样式,以指示它是主元素;这表示它是组件
的边界。元素和修饰符名称分别是元素名称和modifierName。请勿使用连字符( - )将组件名称分开,因为它们表示元素/元素名称的开始。

架构和设计 让我们考虑CCSS鼓励的体系结构。

grunt

grunt是一个很棒的任务跑步者,可以自动化许多常见的琐事(例如编译CSS或验证HTML)。还有其他任务跑步者;理想的工作流程涉及使用一个在开发中的文件,并在更改时重新编译CSS。

>文件组织

再次查看源自SMACSS的目录结构。请注意包含所有外部框架(例如Bootstrap)的Ext/ Directory。为了保持轻松升级,不应修改这些;相反,应将覆盖和扩展放在基础/目录中。

>

base/是您保留全局基础样式的位置。

>

_base.scss仅是元素选择器的基本样式。这些是“ CSS重置”。

>

_base-classes.scss是在许多页面,视图和组件中使用应用程序的所有实用程序类。带有u-

的前缀类名称

images.scss用作SCSS汇编源。它应将所有站点图像定义为数据URI。 /app/styles/images.css是从此文件生成的。

>

_ANIMATE.SCSS保留所有应用程序范围的动画类。

_bootstrap-overrides.scss仅保存框架。有时,框架选择器的特异性水平是如此之高,以至于覆盖它们需要较长的特定选择器。在SCSS组件的背景下,不应在全球层面上覆盖。相反,所有全球覆盖都可以转到这里。

组件

>上述未提及的可重复使用的CSS的任何单位都被认为是“组件”。我们使用AngularJS,因此将它们分类为3种类型的CSS组件:查看/页面,指令和标准;因此,源自smacss的目录结构。

在GitHub存储库中的示例设置中,我创建了明确的明确文件夹。如果您的应用程序很小,则可以将它们放在一个文件夹中。所有组件都遵循修改后的BEM命名约定与骆驼的结合。这使我

伟大的胜利

鼓励其他团队成员遵循BEM风格的语法。当使用典型的bem样式与 - , - 和__字符一起使用典型的bem样式时,它也避免了很多混乱,它们会生成类名称,例如module-name __child-name-modifier-name!> >组件中的CSS类定义顺序反映HTML视图也很重要。这使得更容易扫描,样式,编辑和应用类。最后,最好为Web应用程序拥有广泛的样式指南,并遵循CSS和SASS的指南(例如,避免@Extend)。

> ccss示例

>请参阅CSS的示例设置的代码。

>

这是sass中的一个示例组件:

此编译到以下CSS:

styles
    ├── bootstrap.css
    ├── ext
    │   ├── bootstrap
    │   │   ├── _settings.scss
    │   │   └── bootstrap.scss
    │   └── font-awesome
    │       └── font-awesome.scss
    ├── font-awesome.css
    ├── images.css
    ├── main.css
    └── scss
        ├── _config.scss
        ├── base
        │   ├── _animation-classes.scss
        │   ├── _base-classes.scss
        │   ├── _base.scss
        │   └── images.scss
        ├── components
        │   ├── directives
        │   │   ├── _empty-state.scss
        │   │   ├── _legend.scss
        │   │   └── _status-message.scss
        │   ├── pages
        │   │   ├── _404.scss
        │   │   └── _redirect.scss
        │   └── standard
        │       ├── _alarm-state.scss
        │       ├── _graph-message.scss
        │       └── _panel.scss
        ├── main.scss
        ├── mixins
        │   ├── _animation.scss
        │   ├── _bem.scss
        │   └── _icon.scss
        └── themes
            └── _light.scss
>您的HTML可能看起来像这样:

<span>.ProductRating {
</span>  <span>// nested element
</span><span>  <span>@include e(title) {</span>
</span>    <span>...
</span>  <span>}
</span>  <span>// nested element
</span><span>  <span>@include e(star) {</span>
</span>    <span>...
</span>    <span>// nested element's modifier
</span><span>    <span>@include m(active) {</span>
</span>      <span>...
</span>    <span>}
</span>  <span>}
</span><span>}</span>
>您可以参考简化的BEM Mixin,该Mixin使用参考选择器来实现此目标,并且比 @At-root更简单。与BEM合作在SASS 3.3中变得更加容易,这使我们能够编写易于理解的可维护代码。

贡献

在GitHub存储库中以问题/PR的形式贡献
<span><span>.ProductRating</span> {
</span>  ...
<span>}
</span><span>// nested element
</span><span><span>.ProductRating-title</span> {
</span>  ...
<span>}
</span><span>// nested element
</span><span><span>.ProductRating-star</span> {
</span>  ...
<span>}
</span>// nested element's <span>modifier
</span><span><span>.ProductRating-star--active</span> {
</span>  ...
<span>}</span>
添加更多示例,通过后处理,澄清等的改进等。

,请务必查看与CCSS相关的信用和有用资源的存储库。如果您有任何疑问或评论,请在下面的评论或github repo中发布它们。

>

经常询问有关组件CSS(CCSS)

的问题

> CCSS和传统CSS?

>传统CSS的主要区别是一种样式表语言,用于描述用HTML编写的文档的外观和格式。它旨在使内容与演示文稿的分离,包括布局,颜色和字体。另一方面,CCSS(组件CSS)是一种现代的样式方法,在该方法中,样式直接链接到其特定组件。这意味着样式在本地范围范围内范围范围为组件,从而降低了样式在应用程序中发生冲突的风险。这种方法使您的样式更加可维护,模块化且易于扩展。

> CCSS如何改善项目的可扩展性?

我可以使用任何JavaScript框架的CCSS吗?

是的,CCSS与任何JavaScript框架都兼容。无论您是使用React,Angular,Vue还是任何其他框架,都可以使用CCSS来样式组件。这使CCSS成为任何前端开发人员的多功能工具。

>

> CCSS如何处理全局样式?

,而CCSS主要用于造型单个组件,它也可以处理全球样式。您可以在单独的文件中定义全局样式,并根据需要将它们导入组件。这使您可以在应用程序中保持一致的外观和感觉,同时仍然从CCSS的模块化中受益。

>

>使用CCSS在内联样式上使用CCSS有什么好处?使用,有几个限制。他们无法使用媒体查询,伪级或伪元素。它们也具有最高的特异性,这可能会导致覆盖风格的困难。另一方面,CCSS提供了CSS的全部功能,包括使用媒体查询,伪级和伪元素的能力。它的特异性还低于内联样式,因此在必要时可以更轻松地覆盖样式。

>

> CCSS如何通过将样式范围范围范围划分到单个组件,CCSS,CCSS如何改善Web应用程序的性能?可以显着提高Web应用程序的性能。在传统的CSS中,浏览器必须解析整个CSS文件以渲染页面,这可以减慢渲染过程。但是,使用CCSS,浏览器只需要解析当前渲染的组件的样式,从而导致页面加载时间更快。

>我可以使用CCSS的CSS预处理器?这使您可以利用这些预处理器的功能,例如变量,混合素和嵌套规则,同时仍然从CCSS的模块化和可扩展性中受益。

> CCSS如何处理CSS特异性? CCSS的主要优点之一是它消除了与CSS特异性相关的问题。由于每个组件都有自己的样式,因此无需担心样式相互冲突或互相覆盖。这使得管理样式并降低与CSS特异性相关的错误的风险变得更加容易。

>我可以使用CCSS进行响应式设计吗?

是的,您可以将CCSS用于响应式设计。就像传统的CSS一样,CCSS支持媒体查询,这使您可以根据设备的屏幕尺寸应用不同的样式。这使得创建一个在所有设备上看起来都很好的响应式设计变得容易。

>

CCSS如何改善项目的可维护性?

更容易管理。每个组件都有自己的样式,因此,如果您需要更新或修改组件,则只需要更改该特定组件的样式即可。这降低了引入错误的风险,并使更新或重构代码更加容易。

>

以上是引入CCSS(组件CSS)的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Flexbox vs Grid:我应该学习两者吗?Flexbox vs Grid:我应该学习两者吗?May 10, 2025 am 12:01 AM

是的,youshouldlearnbothflexboxandgrid.1)flexboxisidealforone-demensional,flexiblelayoutslikenavigationmenus.2)gridexcelstcelsintwo-dimensional,confffferDesignssignssuchasmagagazineLayouts.3)blosebothenHancesSunHanceSlineHancesLayOutflexibilitibilitibilitibilitibilityAnderibilitibilityAndresponScormentilial anderingStruction

轨道力学(或我如何优化CSS KeyFrames动画)轨道力学(或我如何优化CSS KeyFrames动画)May 09, 2025 am 09:57 AM

重构自己的代码看起来是什么样的?约翰·瑞亚(John Rhea)挑选了他写的一个旧的CSS动画,并介绍了优化它的思维过程。

CSS动画:很难创建它们吗?CSS动画:很难创建它们吗?May 09, 2025 am 12:03 AM

CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For

@KeyFrames CSS:最常用的技巧@KeyFrames CSS:最常用的技巧May 08, 2025 am 12:13 AM

@keyframesispopularduetoitsversatoryand and powerincreatingsmoothcssanimations.keytricksinclude:1)definingsmoothtransitionsbetnestates,2)使用AnimatingmatematingmultationmatingMultationPropertiessimultane,3)使用使用4)使用BombingeNtibalibility,4)使用BombingingWithjavofofofofofoffo

CSS计数器:自动编号的综合指南CSS计数器:自动编号的综合指南May 07, 2025 pm 03:45 PM

CSSCOUNTERSAREDOMANAGEAUTOMANAMBERINGINWEBDESIGNS.1)他们可以使用forterablesofcontents,ListItems,and customnumbering.2)AdvancedsincludenestednumberingSystems.3)挑战挑战InclassINCludeBrowsEccerCerceribaliblesibility andperformiballibility andperformissises.4)创造性

使用卷轴驱动动画的现代滚动阴影使用卷轴驱动动画的现代滚动阴影May 07, 2025 am 10:34 AM

使用滚动阴影,尤其是对于移动设备,是克里斯以前涵盖的一个微妙的UX。杰夫(Geoff)涵盖了一种使用动画限制属性的新方法。这是另一种方式。

重新访问图像图重新访问图像图May 07, 2025 am 09:40 AM

让我们快速进修。图像地图一直返回到HTML 3.2,首先是服务器端地图,然后使用映射和区域元素通过图像上的单击区域定义了可单击区域。

DEV状态:每个开发人员的调查DEV状态:每个开发人员的调查May 07, 2025 am 09:30 AM

开发委员会调查现已开始参与,并且与以前的调查不同,它涵盖了除法:职业,工作场所,以及健康,爱好等。 

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。