为什么 HTML/CSS 语义很重要
网上有很多关于这个的文章!只需谷歌它,你会发现很多宝贵的信息。
这是一个很好的例子:语义 HTML 有多重要?
语义 html 很重要,因为它是:
干净——阅读和编辑更容易,在维护期间节省时间和金钱,而且您不必强迫所有用户下载臃肿的样式库,其中许多甚至在网站上都没有使用
更易于访问——更多种类的设备可以更好地理解它。然后,这些设备可以根据最适合设备的方式添加自己的样式和演示。它也更适合 JS 框架。
搜索引擎友好——这仍然值得商榷,因为搜索引擎对内容而不是代码进行排名,但搜索引擎正在更多地利用微格式之类的东西来理解内容。
对我来说最重要的论点是语义方法只是……正确的做法。仔细遵循这个方法,你就会少有后悔的理由。
为什么我不同意@Mohamad 的回答
谷歌是一个坏例子
谷歌的语义方法是极端主义的,并且多次违反他们自己的风格指南,这很荒谬。只要看看 Google 搜索结果或 HTML 的 HTML 代码,你就会感到恶心。有必要了解谷歌是一个超高负载的网站,他们以毫秒为单位交换一切。
CSS 很笨重,使用 SASS
Mohamad 的主要论点是语义方法在大型项目中是困难的。事实上,这只适用于老式 CSS。
事实上,使用纯 CSS 的语义样式会适得其反。项目越大,采用语义方法所需的努力就越多。
但是有SASS。任何尝试过 SASS 的人,都永远不会回到原版 CSS。SASS 提供了许多令人难以置信的强大改进,其中一些使编码在语义上毫不费力。
SASS 代码被编译成普通的 CSS 代码。了解 SASS 最重要的一点是,您只需要关心 SASS 代码的结构和可读性。生成的 CSS 代码可能难以阅读并包含重复项,但这不是问题,因为 CSS 是由服务器压缩的。
@延长
与 HTML/CSS 语义相关的最重要的 SASS 特性是@extend
指令。它允许您将可重用的样式块注入语义选择器,同时生成高效的 CSS。
首先,声明一个要重用的样式块,例如:
%glyph {
display: inline;
width: 16px;
height: 16px;
background-repeat: no-repeat; }
您可以稍后在语义上将其包含到不同的选择器中:
.star {
@extend %glyph;
background-image: url('../images/star.png'); }
.extenral-link {
@extend %glyph;
background-image: url('../images/external-link.png'); }
生成的 CSS 将非常有效:
.star, .extenral-link { 显示:内联;宽度:16px;高度:16px;背景重复:不重复;}
.star { 背景图像: url("../images/star.png"); }
.extenral-link { background-image: url("../images/external-link.png"); }
@包括
不幸的是,您不能@extend
在媒体查询中使用漂亮的功能。因此,如果您进行响应式设计,则必须生成带有重复片段的 CSS 代码。正如我之前所说,由于 gzip,CSS 中的重复不是问题,重要的是 SASS 的清洁度。
Mixins ( @include
) 允许您将可重用样式块注入选择器。它们没有有效地分组,但它们接受参数并且可以为不同的语义选择器生成不同的样式:
@import 'singularitygs';
$breakpoint: 300px;
$grids: 2 3;
$grids: add-grid(6 at $breakpoint);
%column {
background-color: pink;
min-height: 5em;
margin-bottom: 1em;}
#welcome {
@extend %column;
@include grid-span(1, 1);
@include breakpoint($breakpoint) {
@include grid-span(2,1); }}
#product-features {
@extend %column;
@include grid-span(1, 2);
@include breakpoint($breakpoint) {
@include grid-span(2,3); }}
#description {
@extend %column;
clear: both;
@include breakpoint($breakpoint) {
@include grid-span(2,5); }}
产生:
#welcome, #product-features, #description {
background-color: pink;
min-height: 5em;
margin-bottom: 1em;
}
#welcome {
width: 38.09524%;
float: left;
margin-right: -100%;
margin-left: 0%;
clear: none;
}
@media (min-width: 300px) {
#welcome {
width: 31.03448%;
float: left;
margin-right: -100%;
margin-left: 0%;
clear: none;
}
}
#product-features {
width: 57.14286%;
float: right;
margin-left: 0;
margin-right: 0;
clear: none;
}
@media (min-width: 300px) {
#product-features {
width: 31.03448%;
float: left;
margin-right: -100%;
margin-left: 34.48276%;
clear: none;
}
}
#description {
clear: both;
}
@media (min-width: 300px) {
#description {
width: 31.03448%;
float: right;
margin-left: 0;
margin-right: 0;
clear: none;
}
}
演示:http ://sassbin.com/gist/5883243/
指南针扩展
正如您在上面注意到的,我使用了一个grid-span
未在代码中声明的 mixin。那是因为它来自令人敬畏的 Singularity 扩展。
众多 Compass 扩展的生态系统为您提供了一套满足所有需求的强大工具:语义网格系统、响应式设计、颜色、数学、各种样式......您不必为每个项目重新发明一千个轮子建造!
阅读有关 SASS 的内容
对于 SASS 新手来说,这是一个很好的起点:https ://github.com/Snugug/training-glossary/wiki ,由Sam Richard aka Snugug创建。