《HTML5 精要剖析》- 1.5.3 开始发展应用程序/运用选择器组织CSS


HTML JavaScript 以及 CSS 都看过了,现在进阶一点,来看一个相当重要的东西 - 选择器,除了设定模式需要她,在 HTML5 时代,我们还可以依赖她萃取复杂的网页内容 …

到目前为止,前一篇文章“1.5.2 开始发展应用程序/调整加法运算器的 CSS 设定”中的加法运算程序,已经顺利的调整为我们要求的外观了,这个程序基本上算是已经完成基本的设计与开发了,不过它的CSS 还有进一步调整的必要,这一节就来谈这一部分。

设定CSS 最简单的方式,便是直接于所要设定的标签里面指定 style ?属性,我们在前述的讨论里面已经看到相关的范例,但在实际的开发上,为了方便维护并不太会这么作,除了针对某个特定的标签设定,大致上这些CSS 模式均是直接抽取出来统一管理,就如同撰写 JavaScript ?会配置在 当中的意思是一样的,这种作法有很多好处,我们先看实践,有了相关的经验,后续再讨论这种作法的优点。

同样的,依然以加法运算程序进行说明,在前面几篇文章的讨论过程中,针对两个文字方块作的CSS 设定几乎是相同的,如下式:


+

在这种情形下,重复设定让应用程序难以维护,一旦其中某些设定需要更动,相关的标签便须逐一调整其 style 模式,由于这只是教学用的范例,因此影响不大,实际上线运行的案例,通常会需要大量的CSS 设定,如此一来将导致大量的维护成本,为了改善这种状况,现在我们来调整CSS 的设定方式。首先在 里面配置以下的标签:



将原来设定于文字方块 style 属性里面的模式提取出来,配置于此组标签中,结果如下:



input
{
    width:60px;
    margin-right:10px;
    text-align:right;
}

其中的内容读者已经能够理解,现在请特别注意开始与结束的部分,由于这组模式将套用于 ,因此指定了input 这个名称,然后将所有的模式内容配置于大括弧即可。现在将HTML 中的两组 内容里面的style 属性整个移除,HTML 的部分看起来像这个样子,其中的 标签变干净了:



    +

    =

重新浏览网页,我们可以看到以下的效果:

如你所见,除了style 属性,只需撰写一次模式即达到相同的设定效果,不过仔细检视之后,会发现第二个文字方块与加号(+)连在一起了,然后与右边的= 按钮距离变大了,这是因为模式被指定套用至 标签,所有的 标签均会设影响,因此接下来,我们要进一步针对其中差异的部分进行设定,而在此之前,先谈谈选择器。

学习CSS 除了了解模式设定,另外一个重点便是选择器的运用,前者决定所要呈现的外观模式,后者让设计者能够指定这些模式所要套用的标签,回头看上述的设定,其中的input 便是一种选择器,表示大括弧中的模式会选择 HTML 中所有的 标签进行套用,如果将 改为 ,则这一组样将会套用至 标签,其它类推。

标签名称是最简单的选择器,但就如同上述讨论的,这并不够,即使相同的标签,也有部分不同的设定,以文字方块为例,左边a 文字方块为了增加与加法符号+ 的空隔必需将其 margin-right 模式项目值设定为 10px ,但是右边的b 文字方块则是必须设定margin-left ,否则将出现述的效果,增加的是= 按钮,为了针对特定模式设定的差异需求,我们需要另外一种id 属性识别选择器,这一种选择器以# 为前缀连接所要设定的标签id 属性,调整之后如下:



input
{
    width:60px;
    text-align:right;
}
#a
{
    margin-right:10px;
}
#b
{
    margin-left:10px;
}

Input 选择器中的 margin-right 移至#a 表示套用至id 属性为a 的标签,而#b 则设定 margin-left 属性。现在,CSS 会根据不同的选择器,找到所选择的标签进行套用,文字方块套用了 input 选择器中的模式, id 属性为 a 的文字方块,套用了 margin-right:10px 这一组属性,而 id 属性 b 的文字方块则再套用 margin-left:10px 属性,因此我们再一次得到相同的外观模式效果。好了,现在我们知道如何透过选择器切割CSS 的模式设定,这有很多的好处:

  • 方便进行CSS 的模式设定管理。
  • 独立于HTML 标签,可以在不影响网页内容定义下,更动外观设定。
  • 透过选择器设定,减少重复的 CSS 模式项目设定。

假设现在我想要将文字方块的背景与文字颜色一并作调整,可以经过以下的设定:


input
{
    width:60px;
    text-align:right;
    background:black ;
    color:silver ;
}

其中加入了 两组模式, background 表示背景颜色,而color 表示文字的颜色,因此我们得到了以下的结果:

如你所见,这些设定再一次改变了input 标签的外观。选择器的功能相当强大,这里面有相当多的细节,于后续的课程中进一步作讨论,而下一篇,我们将回到JavaScript ,结合这里所讨论的选择器,针对网页内容进行程序化控制。

原文:大专栏  《HTML5 精要剖析》- 1.5.3 开始发展应用程序/运用选择器组织CSS

原文地址:https://www.cnblogs.com/petewell/p/11509971.html

时间: 2024-10-08 21:50:28

《HTML5 精要剖析》- 1.5.3 开始发展应用程序/运用选择器组织CSS的相关文章

HTML5实战与剖析之历史管理(history对象)

HTML5新添加了对历史的管理,更新了history对象让管理历史状态更加方便了.在现代Web应用中,用户可以通过"前进"和"后退"按钮进行历史页面的切换.这让一些不在新页面中打开的新页面前进后退自如,提高了用户体验. 通过haschange事件,可以知道URL的参数什么时候发生了变化,也就是什么时候该有所反应.通过状态管理的API,能够在不加载新页面的情况下改变浏览器的URL.所以需要使用history.pushState()方法.history.pushStat

HTML5实战与剖析之媒体元素(3、媒体元素的事件及方法)

HTML5中的媒体元素除了拥有非常多的属性之外,video标签和audio标签还能够出发非常多事件和方法. 这些方法监控着不同的属性的变化,这些变化有可能是媒体播放的结果,也可能是用户操作媒体的结果. 以下就为大家開始介绍媒体元素的相关事件. abort:触发时机是下载中断. canplay:在能够播放的时候,readyState的值为2的时候触发. canplaythrough:readyState的值为3的时候,触发.播放能够继续,而应该不会中断的时候触发. canshowcurrentfr

HTML5实战与剖析之原生拖拽(四可拖动dragable属性和其他成员)

可拖动dragable属性 之前我们已经为大家介绍过几篇有关HTML5中原生拖拽的相关知识了.今天为大家介绍HTML5拖拽中的其他一些小东东,闲话不多说赶快一起看看吧. 在默认情况下,链接.文本和图像是可以拖动的,不用再写代码即可拖动.如果想让其他元素标签也可以拖动,那么只有HTML5能实现了.HTML5为所有HTML元素规定了dragable属性,表示元素是否可以拖动.链接和图像的标签中自动将dragable属性自动被设置成true,其他元素的dragable属性的默认值是false. 支持d

HTML5实战与剖析之WebSockets简介

HTML5 WebSockets规范定义了一个API,允许web页面使用WebSockets协议与远程主机双向沟通.介绍了WebSocket接口,并定义了一种全双工通信通道,通过一个套接字在网络上.HTML5 WebSockets提供极大的减少了不必要的网络流量和延迟而不能攀登的轮询和长轮询的解决方案是用来模拟全双工连接通过维护两个连接. HTML5 WebSockets账户代理和防火墙等网络危害,使得流媒体可以在任何连接,和能够支持在单个连接上游和下游的通信,HTML5 WebSockets-

HTML5实战与剖析之Web存储机制(Web Storage)

Web Storage是以Key-Value的形式进行数据持久性存储.Web Storage是为了克服由cookie带来的一些限制而产生的.当数据需要被严格控制在客户端上的时候,无须持续地将数据发回服务器.Web Storage的目标有两个:提供一种存储会话数据的路径;提供存储大量可以跨会话存在的数据的机制. 最初的Web Storage规范包含了两个对象的定义:sessionStorage对象和globalStorage对象.这两个对象在支持的浏览器中都是以window对象属性的形式存在,支持

HTML5实战与剖析之媒体元素

随着HTML5的到来,flash在手机端全部不能得到支持,这就使一项以flash制作的音乐播放和视频播放只能用HTML5中的媒体标签video标签和audio标签来制作了.很恰巧的是,移动端对HTML5中的媒体标签video标签和audio标签支持的非常好.这就使HTML5在移动端很流行. video标签和audio标签也提供了很实用的JavaScript API,允许创建自定义的控件.两个标签的用法如下. HTML代码 view source print? 1.<!-- 视频标签 --> 2

HTML5实战与剖析之媒体元素(4、检测编解码器的支持和Audio构造函数)

HTML5媒体元素检测编解码器的支持情况 虽然媒体元素可以实现音频和视频功能,但是并不是所有浏览器都支持video标签和audio标签的所有编解码器,这意味着开发人员必须提供很多歌媒体来源.在JavaScript API中能够检测浏览器是否支持某种格式和编解码器.这两个媒体元素都有一个canPlayType()方法,该方法接收一种格式/编解码器字符串,返回"probably"."maybe"或者""(空字符串).空字符串是假值,而"pr

HTML5实战与剖析之classList属性

classList属性究竟是干什么的,我们先撇下classList不管.我们考虑这么一个问题,那就是我们如何将拥有多个类名的元素中的其中一个类名删除呢?梦龙较劲脑汁儿终于想到一个实现的方法.将拥有类名li.meng和long,三个类名中的类名meng删除.代码如下 HTML代码 view source print? 1.<div class="li meng long">梦龙小站</div> JavaScript代码 view source print? 01.

HTML5实战与剖析之媒体元素(6、视频实例)

HTML5中的视频标签和及其模仿视频播放器的效果在一些手机端应用比较多.因为手机端基本上废除了flash的独断,让HTML5当家做主人,所以对视频支持的比较好.所以今天专门为大家奉上HTML5视频标签模拟视频播放器的小例子,让大家更好的理解HTML5和有效的应用在项目中. HTML代码 <!-- src中放上本地的ogv的音频 --> <video id="v1" src="Intermission-Walk-in.ogv"></vid