内联样式与类

Cor*_*art 34 css inline-styles

在我的脑海里,我总是知道在任何项目中使用内联样式的类.但是,是否有任何文章/帖子/博客定义每个的利弊?我正在讨论这个问题,我似乎无法找到很久以前我读过的关于此的博文.

tyl*_*erl 31

首先:

  • 如果HTML是独立于整个站点设计构建或生成的(例如共享模板代码),则添加合理命名的类和ID,专门链接到外部样式表.使用足够的元素来允许任意CSS操作.例如,请参阅CSS Zen Garden.这适用于所有CMS,程序,脚本和其他动态生成的网站内容.HTML输出必须完全不包含任何类型的样式或布局.没有例外.

假设您正在处理静态内容,那么:

  • 如果有任何方法可以重用该样式,请将其设为类并链接到样式表.

  • 如果没有办法再重复使用样式(这是一个在其他地方没有意义的一次性事物),那么使用<style>引用元素#id的块.

  • 如果CSS属性仅在周围HTML的上下文中有意义(例如,一些用法clear:),那么我将样式内联到元素中.

很多人称之为异端,就像很多人都谴责goto现代编程语言的任何用法一样.

然而,我认为应该根据您的情况选择最能减少整体工作量的方法,而不是订阅风格教条.样式表添加了一个间接级别,使站点级别的更改变得容易,并有助于建立一致性.但是如果你在每个页面上有几十个只在一个地方使用的类,那么你实际上是在增加你的工作量,而不是减少它.

换句话说,不要因为人们告诉你这是正确的方式而做一些愚蠢和混乱的事情.

  • 我主要同意这些观点,但如果你更进一步说明:为什么不放弃样式块和id(点#3) - 而只是使用内联这些元素?首先,这意味着您无需将无用的id添加到不需要它们的标记中,并且您不必在文档中跳转就可以减少工作量.除此之外我还没有看到它真正添加的东西:) (7认同)

gbl*_*zex 25

有一个简单的原因.CSS的重点是将内容(HTML)与表示(CSS)分开.这一切都与可访问性和代码重用有关.

  • +1这一切归结为重用.但有时内联一种很少或根本没有重用可能性的样式可以帮助减少实际上值得重用的类库中的混乱. (14认同)
  • 然后是速度/尺寸优势.外部CSS文件可以定义冗余格式规则,有时会大幅缩小HTML的大小.外部CSS文件可以下载一次,并在用户访问期间进行缓存. (2认同)

Anu*_*rag 7

如果有选择,我的第一选择是类/其他选择器.但是,有些情况下内联样式是唯一的方法.在其他情况下,只有一个CSS类本身需要太多的工作,而其他类型的CSS选择器在那里更有意义.

假设你必须斑马条纹给定的列表或表格.您可以简单地使用选择器来完成工作,而不是将特定类应用于每个备用元素或行.这将使代码保持简单,但它不会使用CSS类.为了说明三种方式:

仅使用课程

.alternate {
    background-color: #CCC;
}

<ul>
    <li>first</li>
    <li class="alternate">second</li>
    <li>third</li>
    <li class="alternate">fourth</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

使用class +结构选择器

.striped :nth-child(2n) {
    background-color: #CCC;
}

<ul class="striped">
    <li>first</li>
    <li>second</li>
    <li>third</li>
    <li>fourth</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

使用内联样式

<ul>
    <li>first</li>
    <li style="background-color: #CCC">second</li>
    <li>third</li>
    <li style="background-color: #CCC">fourth</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

第二种方式看起来最便携,并封装给我.要从任何给定的容器元素添加或删除条带,只需添加或删除striped该类.

但是,有些情况下,内联样式不仅有意义,而且是唯一的出路.当可能值的集合很大时,尝试为每个可能的状态提前创建类将是愚蠢的.例如,允许用户通过拖动动态地将某些项目放置在屏幕上的任何位置的UI.该项目必须绝对或相对于实际坐标定位,例如:

<div style="position: absolute; top: 20px; left: 49px;">..</div>
Run Code Online (Sandbox Code Playgroud)

当然,我们可以为div可以采用的每个可能的位置使用类,但不建议这样做.人们很容易明白为什么:

.pos_20_49 {
    top: 20px;
    left: 49px;
}
.pos_20_50 {
    top: 20px;
    left: 50px;
}
// keep going for a million such classes if the container size is 1000x1000 px

<div class="pos_20_49">..</div>
Run Code Online (Sandbox Code Playgroud)


小智 5

使用常识。

每个人都知道,在理想的世界中,演示文稿和内容应该分开。每个人都知道很多时候这种方法效果不佳。我们都知道您应该使用div而不是表格进行布局,但是我们也知道,在任何情况下,如果您无法完全控制内容,则将无法正常工作。

下载500k样式表以对一个元素进行样式设置是因为您已获取所有可能的样式并将其粘贴在样式表中将杀死您的页面,下载500个较小的样式表以对页面进行样式设置是因为您需要全部样式也会杀死您的页面。

重用概念很好,但是现实是,重用仅在某些情况下有用。这几乎同样适用于该概念存在的任何地方。如果您的项目按照您想要的去做,在每个合理的浏览器中都去做,以一种有效的方式去做,并且可靠地去做,那么您就很好了,重构CSS不会比编写代码难得多。