HTML+CSS学习笔记(七)

上次我们说到了建立CSS的三种方式,这一次我们开始将目光放在具体的实现细节上。我们知道,CSS样式规则有两个主要部分,选择器决定将格式化应用到哪些元素上,而声明则定义要应用的格式化,这一次,我们重点关注如何定义CSS选择器。

选择器可以定义五个不同的标准来选择要进行格式化的元素。

  1. 元素的类型或名称

h1{color:red;}

  1. 元素所在的上下文

h1 em{color:red}; //这里em才是被选择的元素,只应用于包含在h1中的em

  1. 元素的类和ID

.error{color:red;} //类

#gaudi{color:red;} //ID

  1. 元素的伪类和伪元素

a:link{color:red;} //这种属于伪类元素,表示页面上未被访问的链接

  1. 元素是否有某些属性和值

a[title]{color:red;} //含有title属性的a元素

a[href="http://www.example.com"] //href属性值为该网址的a元素

选择器可以使用这五个标准的任意组合,多数情况下一到两个即可,也可以对几个不同的元素应用相同的样式。

注意:编写CSS的一个重要目标是让选择器尽可能的简单,仅保持必要的特殊性,充分利用样式的层叠特性,即元素的后代会继承祖先元素的样式。同时应将通用设计元素挑选出来,编写一个类,从而可以在不同的地方共享这种样式,CSS也更易于维护,尽量减少ID选择器的使用。

  1. 按名称选择元素

    也即类型选择器,就是HTML中的各种标签,浏览器对于不同的标签会默认有一些样式,当然,你完全可以修改它。通配符*可以匹配所有的标签,因此也很少使用到。

  2. 按类或ID选择元素

    按类选择:.classname ,关于class的名称最好抽象一些,比如说可以设置为color而非red。多个类可以叠加在一起,如.classname1.classname2,中间不用加空格,特殊性高于单一的类元素

    按ID选择:#IDname

    注意:除非必须特别针对目标元素,最后不要在id或class选择其中添加元素名称。一再强调的是,减少ID选择器的使用,但它仍有其存在的价值,如:在页面中定义锚,在编写JavaScript为特定的页面元素应用特殊行为时

  3. 按上下文选择元素

    CSS中可以根据元素的祖先、父元素或者同胞元素来定位。


article p{color:red;} //article中的所有p元素,无论隔了多少代

article>p{color:red;} //article中的子元素为p的元素,只隔了一代

article h1+p{color:red;} //article后代元素中直接跟在h1后面的p元素

article h1~p{color:red;} //article后代元素中出现在h1后面的p元素(可以不直接相邻)

  1. 选择第一个元素和最后一个元素

    有时需要选择第一个或者最后一个元素,就要用到:first-child:last-child伪类。


<ul>

<li>1</li>

<li>2</li>

<li>3</li>

</ul>

可以用ul li:first-child来选择第一个<li>元素,反过来用:last-child可以选择最后一个

  1. 选择元素的第一个字母或者第一行

    我们可以使用伪类:first-letter:first-line只选择元素的第一个字母或者第一行

    比如:


p:first-letter{color:red;} //使得每段的第一个字母变成红色

至于:first-line,根据浏览器的显示效果,第一行不是固定的,但无论以何种方式看,受影响的始终只有第一行。

  1. 按状态选择链接元素

    CSS允许根据连接的当前状态对他们进行格式化,这是通过一系列伪类实现的,链接的状态是由使用者决定的,在代码中是无法指定链接的状态的。

    有这么几个伪类。


a:link{color:red;} //设置未被激活链接的样式

a:visited{color:orange;} //设置访问过的链接的样式

a:focus{color:purple;} / /设置获得焦点(通常是键盘选择)时链接的样式

a:hover{color:green;} //设置光标悬浮在链接上时的样式

a:active{color:blue;} //设置光标点击链接时的样式

应该始终按照上面的顺序定义链接的样式,避免链接处于多种状态,当然,只选择其中几个也是完全可以的。

  1. 按属性选择元素

    可以给具有给定属性或属性值的元素进行格式化,CSS提供了多种方法,包括只检查属性名,检查全部或者部分属性值。

    通用格式如下

    element[attribute="value"],中括号可以继续写下去。


a[href]{color:red;}

a[class="link"]{color:red;}


  1. 指定元素组

    我们经常需要将相同的样式规则应用于多个元素,一个一个设置自然可以,不过我们有更好的办法,即利用"组选择器"。

    其实没有看上去那么复杂,只要将多个选择器用","隔开,就可在大括号里编写统一的样式。


h1,

p,

a{

color:red;

}

选择器不一定非得是元素名称,可以很复杂,上面前七条里的规则都可以,其实这只不过是把单独写的合并在一起了而已,拆开来效果一样。

有时为应用于多个选择器的共同样式设置一个规则,然后再为每个选择器设置更加个性化的样式,这种方法经常用到,要注意的是后面的规则会覆盖前面的规则。

总结:选择器越简单越好,不仅方便查询,而其便于维护,仅保持最低的特殊性即可,要知道,特殊性越强,适用性就越窄。从最简单的开始,逐渐的增强特殊性,完全符合"渐进增强"的原则。

时间: 2024-10-10 07:56:05

HTML+CSS学习笔记(七)的相关文章

CSS学习笔记09 简单理解BFC

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>BFC</title> 6 <style type="text/css"> 7 .div1 {background-color: #FCE38A; width: 200px; height: 100px;}

css 学习笔记 一

 css学习笔记1 1.选择特定元素的选择符: 上下文选择符 标签1 标签2 {声明}      其中标签2是要选择的目标,而只有在标签1是其祖先元素(不一定是父元素)的情况下才会被选中.     css代码: body代码: 理解:section标签 article标签就属于上下文的关系,即article为section的后代,只有应用了section的样式,才能应用article的样式.注意:继承关系中的空格问题,有空格的表示祖先与后代的关系,css写法,body的代码为,说明页面样式表文件

第十七篇:博采众长--初探WDDM驱动学习笔记(七)

基于WDDM驱动的DirectX视频加速重定向框架设计与实现 现在的研究生的论文, 真正质量高的, 少之又少, 开题开得特别大, 动不动就要搞个大课题, 从绪论开始到真正自己所做的内容之间, 是东拼西凑地抄概念, 抄公式, 达到字数篇幅的要求, 而自己正真做了什么, 有哪些实际感受, 做出的内容, 相比前面的东拼西凑就几点内容, 之后就草草结束, 步入感谢的段落. 原因不光只有学生自己, 所谓的读研, 如果没有一个环境, 学生有再大的愿望, 再强的毅力, 到头来也只是空无奈. 有些导师要写书,

马哥学习笔记七——LAMP编译安装之MYSQL

1.准备数据存放的文件系统 新建一个逻辑卷,并将其挂载至特定目录即可.这里不再给出过程. 这里假设其逻辑卷的挂载目录为/mydata,而后需要创建/mydata/data目录做为mysql数据的存放目录. 2.新建用户以安全方式运行进程: # groupadd -r mysql # useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql # chown -R mysql:mysql /mydata/data 3.安装并初始化my

css学习笔记四

广州天气变冷了,css学习笔记还是要总结. 总结: 1:几米页面静态页面主要是一列结构头部banner图,mainbody部分放文字内容和图书图片,底部是页面的版权信息 2:腾讯软件中心静态页面制作(二列浮动布局) 3:w3cschool静态页面制作 4:垂直菜单,水平菜单(li设置float),圆角菜单(利用背景图片), 鼠标移上去菜单高度变化(margin-top以及line-height), 鼠标移上去菜单宽度变化 (用jq写是利用hover和hide,用原生js写是文档加载完,遍历li里

html+css学习笔记 3[浮动]

inline-block/float(浮动) 回顾:inline-block 特性:      1.块在一排显示 2.内联支持宽高 3.默认内容撑开宽度 4.标签之间的换行间隙被解析(问题) 5.ie6 ie7不支持块属性标签的inline-block(问题) float浮动: 1.块在一排显示     2.内联支持宽高     3.默认内容撑开宽度      4.脱离文档流     5.提升层级半层 文本流 float:left | right | none | inherit; 文档流是文档

html+css学习笔记 2[标签]

img标签/a标签 <img src="图片地址" alt="图片名"/>  图片(单标签)alt属性 是图片名字,是给百度搜索引擎抓取使用:     a标签: 链接/下载/锚点 href地址等于标签id     target 链接打开方式     blank  新窗口     self     当前窗口     <base target="_blank"/> 定义页面链接默认打开方式   常见标签 div        

Lua学习笔记(七):迭代器与泛型for

1.迭代器与闭包 迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素.在Lua中我们常常使用函数来描述迭代器,每次调用该函数就返回集合的下一个元素. 迭代器需要保留上一次成功调用的状态和下一次成功调用的状态,也就是他知道来自于哪里和将要前往哪里.闭包提供的机制可以很容易实现这个任务.记住:闭包是一个内部函数,它可以访问一个或者多个外部函数的外部局部变量.每次闭包的成功调用后这些外部局部变量都保存他们的值(状态).当然如果要创建一个闭包必须要创建其外部局部变量.所以一个典型的闭包的结构包含

python学习笔记七:条件&循环语句

1.print/import更多信息 print打印多个表达式,使用逗号隔开 >>> print 'Age:',42 Age: 42   #注意个结果之间有一个空格符 import:从模块导入函数 import 模块 from 模块 import 函数 from 模块 import * 如果两个模块都有open函数的时候, 1)使用下面方法使用: module1.open()... module2.open()... 2)语句末尾增加as子句 >>> import ma

CSS学习笔记总结和技巧

跟叶老师说项目,他叫我写一个静态首页,看起来挺简单的,但是下手才发现在真的不会怎么下手啊,什么模型啊模块啊都不懂,写毛线啊!! 如图:页面下拉还有侧栏,中间内容等. 可是答应跟老师做了,不能怂啊,于是硬着头皮,花两三天看在慕课网上学习Bootstrap(讲得挺好的,建议大白去看一下),其实我刚看完不久,里面很多东西其实作者都总结得很不错,还有演示. 收获很多,打算再看一下HTML的div+css布局,花一两天时间就可以写完那个界面.就是这么自信,哈哈哈~ 不逼自己一把,你永远不知道自己有多优秀.