温馨提示  2024年 6月我们已经停止开发者板块文章内容更新,谢谢来访。存档数据
前端 2023-09-20 40 次阅读

css权威指南

使用CSS的优点

  • 易于使用,减少工作量。
  • 样式丰富。
  • 方便管理,利于复用
  • 有层叠属性
  • 缩减文件大小

CSS中的两种基本元素:块级元素和行内元素

  • 块级元素独占一行,block
  • 行内元素一行可以放多个。inline,行内和内联是不太一样的??
  • HTML中,行内元素是不能包含块级元素的

页面本身应当有一定的结构

CSS的引入

  • link标签
<link rel="stylesheet" type="text/css" href="sheet1.css" media="all">


  • 外部样式表,link必须放在head元素中,但千万不能放在其他元素(如title)内部,这样web浏览器才能找到并加载样式表。
  • 文件扩展名 .css 不绝对非要有,但是为了保证老的浏览器,还是带上。
  • rel (relation),关系为stylesheet/alternatestylesheet(候选样式表),当为alternatestylesheet时,还应该带上属性title,title还可以分类,作为用户选择的关键字,IE不支持候选。
  • type值为text/css ,描述使用link加载的数据的类型,以便浏览器确定导入的是css,并进行相应操作。
  • href+样式表的URL,绝对URL或者相对URL
  • media,值为all,说明这个样式表要应用于所有表现媒体,这个属性值很多。主要标识此css文件的使用硬件范围
  • 一个文档可以有多个样式表,若有多个,浏览器会将他们合并,全部用于文档
  • style
  <style type="text/css"></style>


  • 必有type,值为"text/css"
  • 有media属性和link相同
  • @import指令
@import url(sheet2.css);

  • import不得不要放到style容器中
  • 可以有多个import,每个都会加载并使用,没有候选
  • 一些老的浏览器无法处理@import指令,可以利用这一点,对浏览器隐藏样式。
  • 可以在后面加上前面media的值,效果一样
  • 相对URL/绝对URL
  • 如果一个外部样式表需要使用其他外部样式表中的css,用@import
  • @import不得不要出现在样式规则之前,否则会被忽略(win中的IE不会忽略任何位置的@import)


选择器

  • 元素选择器
  • 选择器分组,用逗号分隔
  • 通配 *
  • 类选择器
  • 类选择器结合标签选择器
p.warning {font-size: 14px;} //选择class属性包含warning的所有p元素


  • 多类选择器,选择包含类1和类2的选择器,将两个类名连着写,也可以结合标签选择器
p.warning.help {background: red;}


  • ID选择器,一个HTML文档中只能有一个ID选择器,ID选择器不能结合使用,因为ID属性不允许有以空格分隔的词列表
  • 属性选择器,
  • 具体属性选择器。注意这样的属性选择要求属性格式必须完全匹配,如果值本身用空格隔开,属性选择也要隔开
h1[某属性] {color: red;} //选择具有某属性的全部h1标签
*[title] {color: red;} //选择包含标题的所有元素

//根据多个属性选择
a[href][title]{color: red;} //选择同时有href和title属性的

//根据具体属性选择
a[href="http://www.waq.org/about.html"] {color: red;} //为指向web服务器上某个特定文档的超链接设置属性
p[book="1"] {color: red;} //选择book属性为1的p元素
a[href="http://www.waq.org/about.html"][title="home"] {color: red;}//选择href为指定,且title为home的a标签
  • 部分属性选择器
p[foo~="bar"] {} //选择foo属性包含bar的p元素
p[foo^="bar"] {} //选择foo属性以bar开头的所有p
p[foo$="bar"] {} //选择foo属性以bar结尾的所有p
p[foo*="bar"] {} //选择foo属性中包含字串bar的所有元素
  • 特定属性选择器
  *[lang|="en"] {} //选择lang属性等于en或者已en-开头的所有元素


  • 后代选择器
  h1 em {color: red;} //选中h1下的所有em,不论em嵌套的层次多深
  ul ol ul em {color: red;}
  ul ol, ul em {color: red;}//这样也可以哦
  • 选择子元素 子元素是直接的关系,后代元素是直接或间接
h1 > strong {color: red;} //选择是h1的子元素,并且和h1紧邻的元素!就是匹配在文档树中直接相连的部分


  • 选择相邻的兄弟元素
h1 + p {color: red;} //选择紧接在一个h1元素后出现的所有p,h1要和p有共同的父元素(选的是p,h1不会被选上)


  • 伪类选择器 能够在文档中插入假想的类
  • 链接伪类 伪类的顺序很重要,通常建议:link-visited-focus-hover-active 不要用动态伪类改变布局,因为css规范说,文档首次显示后,用户代理不用重绘文档,所以用伪类改变布局有可能没有效果。
//静态伪类
a:link {} //当链接未被访问时
a:visited {} //当链接已经被访问
//动态伪类
a:focus {} //当前拥有输入焦点的元素
a:hover{} //当前鼠标停留的元素
a:active{} //被激活的元素,当鼠标停在一个超链接上,并点击就会激活这个超链接。
  • 选择伪类
p:first-child {} //选择作为某元素第一个子元素的所有p元素设置为粗体!!注意是p,不是选择p元素的第一个子元素!!


  • 结合伪类 注意不要把互斥的伪类结合,比如一个链接不能同时是已访问和未访问
a:link:hover {} //当一个链接未被点击 且 鼠标停留时
a:visited:hover {} //当一个链接已经点击 且 鼠标停留时
  • 伪元素选择器 能够在文档中插入假想的元素,共计有四个伪元素
  • 设置首字母样式 :first-letter
  • 设置第一行的样式 :first-line 这两种伪元素只能应用于标记或段落,不能应用于超链接,所能添加的属性也有限制,伪元素必须放在选择器的最后面
  • 在元素之前插入 :before
  • 在元素之后插入 :after


结构和层叠

###选择器优先级 选择器的特殊性,标识了选择器的优先级,用户代理是计算选择器的特殊性来判断具体应该使用哪种样式,特殊性一般是有四个数字组成,权重逐个递减,也就是 1,0,0,0是要大于0,1,1,2的,多个选择器同时时,可以先相加,再比较。 优先级排序:!important>内联样式>ID选择器>类选择器>标签选择器>通配符 !important;要用的话在每个属性后面都要写,不然没用

继承

  • 向上传递,只有一个,就是给body元素的背景样式可以传到html元素。
  • 向下传递,一般是这样
  • 有些属性不能继承,border,font这些属性不能继承

层叠规则

  1. 按权重和起源排序。有!important的胜出,再比较起源,正常权重的创作人员优先于正常权重的读者样式,但是当两个都有!important时,相反。用户代理的默认样式是影响最小的
  2. 再按优先级排序
  3. 按顺序排序,后面的覆盖前面的


值和单位

颜色表示:

  • rgb(255,255,255);
  • rgb(75%,50%,50%);
  • color: red;
  • color: #000;color: #808080;

web安全色,指在256色计算机系统上总能防止抖动的颜色

长度单位:

  • 绝对长度单位:
  • in (英寸)
  • cm (厘米)
  • mm (毫米)
  • pt (点)一英寸是72点
  • Pica (派卡)1派卡是12点
  • 相对长度单位
  • em定义为一种给定字体的font-size值,随着元素的不同而不同,比如一个h1字体的大小是24像素,h2是18像素,p是12像素,给他们的左边距都设置1em,那么他们的左边距就分别为24px,18px,12px。在设置字体大小的时候,em的值会相比较父元素的字体大小改变。
  • ex是指字体中小写x的高度,所以不同的字体是截然不同的。
  • px,1像素(px)就是显示器上的一个小框


字体

所有属性值例中的第一个属性为默认属性

1.字体选择

font-family属性,当字体名中有一个或者多个空格,或者有#或$之类的符号,属性值需要加引号(单引号/双引号),当有多个字体值时,为递减候选属性。

h2 {font-family : Wedgie, 'Karrank%', fantasy}


2.字体加粗

400 定义为normal,700对应bold

h1 {font-weight:normal/bold/bolder/lighter/100/200/300/400/500/600/700/800/900/inherit}


3.字体大小

h1 {font-size:medium/xx-small/x-small/small/large/x-large/xx-large/smaller/larger/<length>/<%时根据父元素字体大小计算>/inherit}


4.风格字体

h1 {font-style:normal/italic/oblique/inherit}// 竖直/斜体/倾斜/继承


5.字体变形

h1 {font-variant:normal/small-caps/inherit}// 正常/小型大写字母文本


6.拉伸和调整字体

h1 {font-stretch:normal/wider/narrower/ultra-condensed/...}// 正常/小型大写字母文本



文本属性

1.缩进文本

所有块级元素应用,行内无法用(如果想让行内元素的第一行缩进,可以用边距实现)。图像也没办法用,不过如果一个块级元素的首航有一个图像,它会随着移动。值可以为负值。

p {text-indent:<length>/<%相比较缩进元素的父元素的宽度>/inherit}
p {text-indent : 10px;} //所有首行缩进3em

2.水平对齐