web基础 —— css 选择器

派生选择器:它们依赖于上下文关系来应用或者避免某项规则。在 CSS2 中,它们称为派生选择器。

li strong {
    font-style: italic;
    font-weight: normal;
  }

下面是它施加影响的 HTML:

<p>The strongly emphasized word in this paragraph is<strong>red</strong>.</p>
<h2>This subhead is also red.</h2>
<h2>The strongly emphasized word in this subhead is<strong>blue</strong>.</h2>

id 选择器

#red {color:red;}

CSS 类选择器

.center {text-align: center}

属性选择器

[title] {color:red;}

属性和值选择器

[title=W3School]
{
border:5px solid blue;
}

CSS 元素选择器 : 在 W3C 标准中,元素选择器又称为类型选择器(type selector)。

html {color:black;}
h1 {color:blue;}

选择器分组:
例如,如果您想把很多元素显示为灰色,可以使用类似如下的规则:

body, h2, p, table, th, td, pre, strong, em {color:gray;}

后代选择器

h1 em {color:red;}

子元素选择器

h1 > strong {color:red;}

相邻兄弟选择器

html > body table + ul {margin-top:20px;}

锚伪类 :

a:link {color: #FF0000}		/* 未访问的链接 */
a:visited {color: #00FF00}	/* 已访问的链接 */
a:hover {color: #FF00FF}	/* 鼠标移动到链接上 */
a:active {color: #0000FF}	/* 选定的链接 */

当为链接的不同状态设置样式时,请按照以下次序规则:
a:hover 必须位于 a:link 和 a:visited 之后
a:active 必须位于 a:hover 之后

伪类:

属性描述
:active向被激活的元素添加样式。
:focus向拥有键盘输入焦点的元素添加样式。
:hover当鼠标悬浮在元素上方时,向元素添加样式。
:link向未被访问的链接添加样式。
:visited向已被访问的链接添加样式。
:first-child向元素的第一个子元素添加样式。
:lang向带有指定 lang 属性的元素添加样式。

伪元素

属性描述
:first-letter向文本的第一个字母添加特殊样式。
:first-line向文本的首行添加特殊样式。
:before在元素之前添加内容。
:after在元素之后添加内容。

CSS 样式

  • 背景色:可以使用 background-color 属性为元素设置背景色。这个属性接受任何合法的颜色值。
p {background-color: gray;}

背景色从元素中的文本向外少有延伸,只需增加一些内边距:

p {background-color: gray; padding: 20px;}

背景图像:如果需要设置一个背景图像,必须为这个属性设置一个 URL 值

body {background-image: url(/i/eg_bg_04.gif);}
  • CSS 文本

缩进文本:CSS 提供了 text-indent 属性,该属性可以方便地实现文本缩进。

p {text-indent: 5em;}
  • 水平对齐:text-align 是一个基本的属性,它会影响一个元素中的文本行互相之间的对齐方式。
  • 值 left、right 和 center 会导致元素中的文本分别左对齐、右对齐和居中。

字间隔:word-spacing 属性可以改变字(单词)之间的标准间隔。其默认值 normal 与设置值为 0 是一样的。

p.spread {word-spacing: 30px;}
p.tight {word-spacing: -0.5em;}

字母间隔:letter-spacing 属性与 word-spacing 的区别在于,字母间隔修改的是字符或字母之间的间隔。
与 word-spacing 属性一样,letter-spacing 属性的可取值包括所有长度。默认关键字是 normal(这与 letter-spacing:0 相同)。输入的长度值会使字母之间的间隔增加或减少指定的量:

h1 {letter-spacing: -0.5em}
h4 {letter-spacing: 20px}

字符转换:text-transform 属性处理文本的大小写。这个属性有 4 个值
none
uppercase
lowercase
capitalize
默认值 none 对文本不做任何改动,将使用源文档中的原有大小写。顾名思义,uppercase 和 lowercase 将文本转换为全大写和全小写字符。最后,capitalize 只对每个单词的首字母大写。

h1 {text-transform: uppercase}
  • CSS 字体
  • CSS 链接
  • CSS 列表
  • CSS 表格
  • CSS 轮廓
    文本装饰: text-decoration 属性,这是一个很有意思的属性,它提供了很多非常有趣的行为,text-decoration 有 5 个值:
    none
    underline
    overline
    line-through
    blink
    不出所料,underline 会对元素加下划线,就像 HTML 中的 U 元素一样。overline 的作用恰好相反,会在文本的顶端画一个上划线。值 line-through 则在文本中间画一个贯穿线,等价于 HTML 中的 S 和 strike 元素。blink 会让文本闪烁,类似于 Netscape 支持的颇招非议的 blink 标记。

none 值会关闭原本应用到一个元素上的所有装饰。通常,无装饰的文本是默认外观,但也不总是这样。例如,链接默认地会有下划线。如果您希望去掉超链接的下划线,可以使用以下 CSS 来做到这一点:

a {text-decoration: none;}

CSS 字体属性

属性描述
font简写属性。作用是把所有针对字体的属性设置在一个声明中。
font-family设置字体系列。
font-size设置字体的尺寸。
font-size-adjust当首选字体不可用时,对替换字体进行智能缩放。(CSS2.1 已删除该属性。)
font-stretch对字体进行水平拉伸。(CSS2.1 已删除该属性。)
font-style设置字体风格。
font-variant以小型大写字体或者正常字体显示文本。
font-weight设置字体的粗细。

CSS 列表:要修改用于列表项的标志类型,可以使用属性 list-style-type:

ul {list-style-type : square}

上面的声明把无序列表中的列表项标志设置为方块。

列表项图像
有时,常规的标志是不够的。你可能想对各标志使用一个图像,这可以利用 list-style-image 属性做到:

ul li {list-style-image : url(xxx.gif)}

列表标志位置:可以确定标志出现在列表项内容之外还是内容内部。这是利用 list-style-position 完成的。

简写列表样式:list-style 的值可以按任何顺序列出,而且这些值都可以忽略。只要提供了一个值,其它的就会填入其默认值。

li {list-style : url(example.gif) square inside}

list-style 的值可以按任何顺序列出,而且这些值都可以忽略。只要提供了一个值,其它的就会填入其默认值。

**轮廓(outline)**是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。CSS outline 属性规定元素轮廓的样式、颜色和宽度。
CSS 边框属性

属性描述
outline在一个声明中设置所有的轮廓属性。
foutline-color设置轮廓的颜色。
foutline-style设置轮廓的样式。
outline-width设置轮廓的样式。

CSS 框模型 (Box Model) 规定了元素框处理元素内容、内边距、边框 和 外边距 的方式。
在这里插入图片描述
元素框的最内部分是实际的内容,直接包围内容的是内边距。内边距呈现了元素的背景。内边距的边缘是边框。边框以外是外边距,外边距默认是透明的,因此不会遮挡其后的任何元素。

提示:背景应用于由内容和内边距、边框组成的区域。

内边距、边框和外边距都是可选的,默认值是零。但是,许多元素将由用户代理样式表设置外边距和内边距。可以通过将元素的 margin 和 padding 设置为零来覆盖这些浏览器样式。这可以分别进行,也可以使用通用选择器对所有元素进行设置:

  • 假设框的每个边上有 10 个像素的外边距和 5 个像素的内边距。如果希望这个元素框达到 100 个像素,就需要将内容的宽度设置为 70
    像素,请看下图:
    在这里插入图片描述
#box {
  width: 70px;
  margin: 10px;
  padding: 5px;
}

CSS 内边距 :也通过使用下面四个单独的属性,分别设置上、右、下、左内边距:
padding-top
padding-right
padding-bottom
padding-left

h1 {
  padding-top: 10px;
  padding-right: 0.25em;
  padding-bottom: 2ex;
  padding-left: 20%;
  }

CSS 边框:如果您希望为元素框的某一个边设置边框样式,而不是设置所有 4 个边的边框样式,可以使用下面的单边边框样式属性:
border-top-style
border-right-style
border-bottom-style
border-left-style

  • 因此这两种方法是等价的:
p {border-style: solid solid solid none;}
p {border-style: solid; border-left-style: none;}
  • 边框的宽度
border-width 属性为边框指定宽度。

为边框指定宽度有两种方法:可以指定长度值,比如 2px 或 0.1em;或者使用 3 个关键字之一,它们分别是 thin 、medium(默认值) 和 thick。

p {border-style: solid; border-width: 5px;}

定义单边宽度
您可以按照 top-right-bottom-left 的顺序设置元素的各边边框:

p {border-style: solid; border-width: 15px 5px 15px 5px;}
  • 没有边框
p {border-style: none; border-width: 50px;}

尽管边框的宽度是 50px,但是边框样式设置为 none。在这种情况下,不仅边框的样式没有了,其宽度也会变成 0。边框消失了,为什么呢?
这是因为如果边框样式为 none,即边框根本不存在,那么边框就不可能有宽度,因此边框宽度自动设置为 0,而不论您原先定义的是什么。

边框的颜色: border-color 属性:它一次可以接受最多 4 个颜色值。
可以使用任何类型的颜色值,例如可以是命名颜色,也可以是十六进制和 RGB 值:

p {
  border-style: solid;
  border-color: blue rgb(25%,35%,45%) #909090 red;
  }

如果颜色值小于 4 个,值复制就会起作用。例如下面的规则声明了段落的上下边框是蓝色,左右边框是红色:

p {
  border-style: solid;
  border-color: blue red;
  }

注释:默认的边框颜色是元素本身的前景色。如果没有为边框声明颜色,它将与元素的文本颜色相同。另一方面,如果元素没有任何文本,假设它是一个表格,其中只包含图像,那么该表的边框颜色就是其父元素的文本颜色(因为 color 可以继承)。这个父元素很可能是 body、div 或另一个 table。

  • 定义单边颜色:还有一些单边边框颜色属性。它们的原理与单边样式和宽度属性相同:
    border-top-color
    border-right-color
    border-bottom-color
    border-left-color
    要为 h1 元素指定实线黑色边框,而右边框为实线红色,可以这样指定:
h1 {
  border-style: solid;
  border-color: black;
  border-right-color: red;
  }
  • 透明边框:CSS2 引入了边框颜色值 transparent。这个值用于创建有宽度的不可见边框。请看下面的例子:
<a href="#">AAA</a>
<a href="#">BBB</a>
<a href="#">CCC</a>
a:link, a:visited {
  border-style: solid;
  border-width: 5px;
  border-color: transparent;
  }
a:hover {border-color: gray;}

CSS 外边距:您可以使用下列任何一个属性来只设置相应上的外边距,而不会直接影响所有其他外边距:

margin-top
margin-right
margin-bottom
margin-left
h2 {
  margin-top: 20px;
  margin-right: 30px;
  margin-bottom: 30px;
  margin-left: 20px;
  }

当然,对于这种情况,使用 margin 可能更容易一些:

p {margin: 20px 30px 30px 20px;}

CSS 定位

  • CSS 相对定位
    相对定位是一个非常容易掌握的概念。如果对一个元素进行相对定位,它将出现在它所在的位置上。然后,可以通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动。
    如果将 top 设置为 20px,那么框将在原位置顶部下面 20 像素的地方。如果 left 设置为 30 像素,那么会在元素左边创建 30 像素的空间,也就是将元素向右移动。
#box_relative {
  position: relative;
  left: 30px;
  top: 20px;
}

在这里插入图片描述
CSS 绝对定位
设置为绝对定位的元素框从文档流完全删除,并相对于其包含块定位,包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。
绝对定位使元素的位置与文档流无关,因此不占据空间。这一点与相对定位不同,相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置。
普通流中其它元素的布局就像绝对定位的元素不存在一样:

#box_relative {
  position: absolute;
  left: 30px;
  top: 20px;
}

在这里插入图片描述
绝对定位的元素的位置相对于最近的已定位祖先元素,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块。
提示:因为绝对定位的框与文档流无关,所以它们可以覆盖页面上的其它元素。可以通过设置 z-index 属性来控制这些框的堆放次序

固定定位

{
position:fixed;
top:30px;
right:5px;
}

CSS 浮动浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样。
float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。
left 元素向左浮动。
right 元素向右浮动。
none 默认值。元素不浮动,并会显示在其在文本中出现的位置。
inherit 规定应该从父元素继承 float 属性的值。

要想阻止行框围绕浮动框,需要对该框应用 clear 属性。clear 属性的值可以是 left、right、both 或 none,它表示框的哪些边不应该挨着浮动框。
left 在左侧不允许浮动元素。
right 在右侧不允许浮动元素。
both 在左右两侧均不允许浮动元素。
none 默认值。允许浮动元素出现在两侧。
inherit 规定应该从父元素继承 clear 属性的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值