利用CSS3的定位页面元素


Posted in HTML / CSS onAugust 29, 2009

虽然我们已经使用CSS2.1选择器排除掉了所有的class和id,显然还会有很多更复杂的情况需要CSS3的高级选择器来解决。让我们通过完成一下的实例来了解一下如何在不使用无用的class和id属性的情况下利用CSS3定位页面元素。
相关下载:CSS3.0参考手册下载
使用一个唯一的日志(post)ID定位所有日志

wordpress提供给我们一种包含了ID的每篇日志的源代码输出。这种信息通常用于导航和/或了解资料的意图,不过CSS3可以利用这些唯一的ID来定义这些日志的样式。当然,你还可以像往常那样为每篇日志添加class=”post”这样的属性,但这就与我们练习的意图相冲突了(再加上它没有一点乐趣所在)。使用”子字符串匹配选择器”,我们就可以像下面这样定位所有日志和它们的不同元素了。

article[id*=post-] {} /* 定位所有日志 */
article[id*=post-] header h1 {} /* 定位所有日志中的h1标签 */
article[id*=post-] section p {} /* 定位所有日志中的p标签 */
我没仍然可以使用同样的方式定位评论的元素和它们的子元素。

article[id*=comment-] {} /* 定位所有评论 */
article[id*=comment-] header h1 {} /* 定位所有评论中的h1标签 */
article[id*=comment-] section p {} /* 定位所有评论中的p标签 */
定位一些指定的区域(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></section>
<section>
<section>定位这个section元素</section>
</section>
<section>
<section>定位这个section元素</section>
</section>
<section>
<section>但不定位这个section元素</section>
<section>和这个section元素</section>
</section>
<section></section>
</section>

我们可以仅使用以下一行选择器:
section>section:only-of-type {}

再次唠叨,你可以固执的为每个元素添加ID属性,但你会失去代码的可扩展性、维护性和绝对简洁的结构与表现相分离。CSS3的确能让我们可快速更方便的定位几乎所有没有ID和class属性的页面元素。

HTML / CSS 相关文章推荐
CSS3中几个新增加的盒模型属性使用教程
Mar 01 HTML / CSS
CSS3中的Transition过度与Animation动画属性使用要点
May 20 HTML / CSS
CSS3绘制六边形的简单实现
Aug 25 HTML / CSS
HTML5 对各个标签的定义与规定:body的介绍
Jun 21 HTML / CSS
html5 button autofocus 属性介绍及应用
Jan 04 HTML / CSS
html5实现完美兼容各大浏览器的播放器
Dec 26 HTML / CSS
html5 canvas绘制矩形和圆形的实例代码
Jun 16 HTML / CSS
HTML5利用约束验证API来检查表单的输入数据的代码实例
Dec 20 HTML / CSS
h5页面唤起app如果没安装就跳转下载(iOS和Android)
Jun 03 HTML / CSS
HTML5获取当前地理位置并在百度地图上展示的实例
Jul 10 HTML / CSS
AmazeUI图片轮播效果的示例代码
Aug 20 HTML / CSS
clear 万能清除浮动(clearfix:after)
May 21 HTML / CSS
CSS3属性使网站设计增强同时不消弱可用性
Aug 29 #HTML / CSS
HTML5和CSS3让网页设计提升到下一个高度
Aug 14 #HTML / CSS
用CSS3将你的设计带入下个高度
Aug 08 #HTML / CSS
CSS3 优势以及网页设计师如何使用CSS3技术
Jul 29 #HTML / CSS
CSS3 优势以及网页设计师如何使用CSS3技术
Jul 29 #HTML / CSS
HTML5 CSS3给网站设计带来出色效果
Jul 16 #HTML / CSS
CSS3 圆角效果
Jul 15 #HTML / CSS
You might like
一个取得文件扩展名的函数
2006/10/09 PHP
深入分析PHP引用(&amp;)
2014/09/04 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
JavaScript 应用类库代码
2008/06/02 Javascript
Jquery replace 字符替换实现代码
2010/12/02 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
点击进行复制的JS代码实例
2013/08/23 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
JS实现在页面随时自定义背景颜色的方法
2015/02/27 Javascript
理解javascript异步编程
2016/01/27 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
JS异步加载的三种实现方式
2017/03/16 Javascript
React 高阶组件入门介绍
2018/01/11 Javascript
jQuery实现左右滑动的toggle方法
2018/03/03 jQuery
vue解决使用$http获取数据时报错的问题
2019/10/30 Javascript
JavaScript如何借用构造函数继承
2019/11/06 Javascript
JavaScript实现飞舞的泡泡效果
2020/02/07 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
nginx配置域名后的二级目录访问不同项目的配置操作
2020/11/06 Javascript
python检测远程udp端口是否打开的方法
2015/03/14 Python
Python中字符串的处理技巧分享
2016/09/17 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
python搭建服务器实现两个Android客户端间收发消息
2018/04/12 Python
python中with用法讲解
2020/02/07 Python
python中添加模块导入路径的方法
2021/02/03 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
平面设计的岗位职责
2013/11/08 职场文书
农村葬礼主持词
2014/03/31 职场文书
学习考察心得体会
2014/09/04 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
CDPR谈《巫师》新作用虚幻5原因 称不会为Epic独占
2022/04/06 其他游戏
Python 图片添加美颜效果
2022/04/28 Python
Python开发简易五子棋小游戏
2022/05/02 Python