Web设计师
可以
使用HTML4和CSS2.1
实现一些很酷的东西 。我们
可以在不
使用
破旧的基于table布局的
根底上
实现文档逻辑
构造并
缔造内容
丰硕的网站 。我们
可以在不
使用内联<font>和<br>标签的
根底上对网站增加漂亮而细腻的
格调
款式 。事实上,我们当前的设计
威力已经让我们远离了那个可怕的阅读器战争时代、专有
协定和那些
充斥闪动、滚动和
闪耀的
俊俏网页 。
固然我们现在已经
广泛
使用了HTML4和CSS2.1,然而我们还
可以做得更好!我们
可以重组我们代码的
构造并能让我们的页面代码更富有语义化
特点 。我们
可以缩减带给页面漂亮外观
款式代码量并让他们有更高的可
扩大性 。现在,HTML5和CSS3正
蠢蠢欲动的期待大家,下面让我们来看看他们是不是真的能让我们的设计
晋升到下一个高度吧…
曾经,设计师们
时常会跟频繁
使用基于table的没有任何语义的布局 。不过最终还是要
感激像Jeffrey Zeldman和Eric Meyer这样的
思维改造者,聪慧的设计师们
渐渐的
承受了
绝对更语义化的<div>布局
代替了table布局,而且开始调用外部
款式表 。但
可怜的是,复杂的网页设计需求大量不同的标签
构造代码,我们把它叫做“<div>-soup” 综合症 。
兴许你很
相熟下面的代码:
只管这有些牵强,但上面这个实例还是
可以
注明
使用HTML4对一个复杂的设计进行代码化后依旧过于臃肿(其实xHTML1.1也不过如此) 。不过值得
冲动的是,HTML5解决“<div>-soup” 综合症并带给我们一套新的
构造化元素 。这些新的HTML5元素富有更
详尽的语义从而
接替了那些毫无语义的<div>标签,并同时为CSS的调用提供了”自然”的CSS钩子 。
下面是HTML5的解决
方案实例:
正如我们所见,HTML5
可以让我们用众多更语义化的
构造化代码标签
接替那些大量的无
意思的<div>标签 。这种语义化的
特点不只
晋升了我们网页的
品质和语义,而且大量削减了曾经代码中用于CSS必须调用的class和id属性 。事实上,CSS3也是
可以然通过我们
忽略掉全部class和id的 。
跟class属性说再见,
欢送整洁的标签
联合了富有新的语义化标记的HTML5,CSS3为web设计师们的网页提供了神普通的力量 。有了HTML5的能量,我们将得到更多的对文档代码的操纵权,有了CSS3的能量,我们的操纵权将趋于无穷大!
即便没有那些高级的CSS
取舍器,我们
依旧
可以通过
壮大的HTML5条调用不同的容器而不劳驾class和id这类属性 。像以前的DIV布局,我们在css中可能要这样调用:
我们再来看看基于HTML5的实例:
这是个
普及,但仍有一些问题需求解决 。在<div>实例中,我们需求通过class或id属性来调用页面中的元素 。这种逻辑将同意我们将
款式
利用到文档中的任何一个元素上,无论是整体还是个体 。例如在<div>实例中,.section 和 .content元素很容易定位 。然而在HTML5实例中,实际文档中会有众多个section元素 。其实我们
可以增加一些特定的属性
取舍器来调用那些不同的section元素,不过谢天谢地,我没现在
可以用少量的高级CSS
取舍器来定位不同的section元素 。
不
使用class和id定位HTML-5元素
下面让我们来看看如何在不
使用class和id的状况下定位HTML5页面元素的一个实例,我们
可以
使用三种CSS
取舍器来定位和辨认实例中的元素 。如下:
后辈
取舍器:[CSS 2.1]: EF
兄弟
取舍器:[CSS 2.1]: E + F
子元素
取舍器:[CSS 2.1]: E > F
下面让我们来看看如何不
使用class和id而
实现对文档中的那些section元素的定位吧:
定位最外层的<section>元素
考量到我们的例子并不是一套
完全的HTML5代码,所以我们
假如在<body>元素下有个<nav>元素与<section>元素是兄弟元素 。这样的话,我们就
可以向下面代码那样定位最外层的
<section>了:
body nav+section {}
定位下一个<section>元素
作为最外层<section>元素下的唯向来属子集元素,这个<section>元素
兴许
可以这样定位:
section>section {}
定位<article>元素
可以定位<article>元素的
步骤有众多,不过最
容易的
步骤固然便是
后辈
取舍器了:
section section article {}
定位<header>、<section>和<footer>元素
这三个元素分别在两个地方都浮现过,一是在<article>元素中浮现,另一是在<aside>元素中浮现 。这种差异能让我们轻松定位每个元素 。
article header {}
article section {}
article footer {}
或者一同定义:
section section header {}
section section section {}
section section footer {}
到当前为止,我们已经
使用CSS2.1
取舍器排除掉了全部的class和id 。那么我们为何还需求
使用CSS3呢?我很
庆幸你能这么问…
使用CSS3对HTML5元素进行高级定位
固然我们已经
使用CSS2.1
取舍器排除掉了全部的class和id,显然还会有众多更复杂的状况需求CSS3的高级
取舍器来解决 。让我们通过
实现一下的实例来了解一下如何在不
使用无用的class和id属性的状况下利用CSS3定位页面元素 。
使用一个唯一的日志(post)ID定位全部日志
wordpress提供应我们一种包括了ID的每篇日志的源代码输出 。这种信息通常用于导航和/或了解
材料的
用意,不过CSS3
可以利用这些唯一的ID来定义这些日志的
款式 。固然,你还
可以像
平常那样为每篇日志增加class=”post”这样的属性,但这就与我们练习的
用意相
摩擦了(再外加它没有丝毫乐趣所在) 。
使用”子字符串匹配
取舍器”,我们就
可以像下面这样定位全部日志和它们的不同元素了 。
我们
依旧
可以
使用同样的
模式定位评论的元素和它们的子元素 。
定位一些指定的区域(section)或文章(article)
有众多博客的日志量和评论量都相当大,HTML 5 会将它们由<section>或<article>元素构成 。为了定位哪些指定的<section>或<article>元素,我们就要转而
使用
壮大的“:nth-child”
取舍器了:
section:nth-child(1) {} /*
取舍第一个 <section> */
article:nth-child(1) {} /*
取舍第一个 <article> */
section:nth-child(2) {} /*
取舍第二个 <section> */
article:nth-child(2) {} /*
取舍第二个 <article> */
同样,我们
可以
使用“:nth-last-child”
取舍器定位反序的一些元素 。
section:nth-last-child(1) {} /*
取舍最终一个 <section> */
article:nth-last-child(1) {} /*
取舍最终一个 <article> */
section:nth-last-child(2) {} /*
取舍倒数第二个 <section> */
article:nth-last-child(2) {} /*
取舍倒数第二个 <article> */
使用更多的
模式
取舍指定元素
另一种
取舍HTML5中指定元素(如header、section和footer)的
步骤便是利用”:only-of-type”
取舍器的优势 。因为这些HTML5元素通常会在众多地方浮现不止一次,所以当我们想定位那种在父元素下仅浮现过一次的标签时这种
步骤很容易 。例如,我们要
取舍的是在某
元素中有切仅有的唯逐个个元素,如以下代码:
我们
可以仅
使用以下一行
取舍器:
section>section:only-of-type {}
再次唠叨,你
可以
执着的为每个元素增加ID属性,但你会失去代码的可
扩大性、
保护性和绝对简洁的
构造与
体现相
拆散 。CSS3确实能让我们可
快捷更容易的定位
几乎全部没有ID和class属性的页面元素 。
总结
我相信随着
工夫的推动和更多阅读器的
支撑,HTML5和CSS3将越来越受
欢送,它们将为web设计师们带来更无穷的能量,让我们的web前端更上一个台阶 。