前端必备之CSS(一)

CSS 是 Cascading Style Sheet 的缩写,翻译为 “层叠样式表”。CSS定义如何显示HTML的标签样式,用于呈现网页效果。使用CSS可以实现网页内容与表现的分离,极大地提高了工作效率。

【学习重点】

  •  掌握基本语法与用法
  •  能够正确使用CSS选择器

1.1   CSS基本用法

1.1.1  css样式

样式是CSS最小的结构单元,每个样式包含两部分内容,选择器和声明(规则),如图所示。

 1.1.2  CSS注释

html 的注释是 //行注释 快捷键 ctrl+?

css 注释方式仅有 /* 被注释的内容 */ 快捷键 ctrl+?

注释可以用来调节 bug,注释一行,调试一行

 1.1.3  CSS应用

CSS样式代码必须保存在.css 类型的文本文件中,或者放在网页内<style>标签中,或者插在网页标签的 style 属性值中。CSS样式应用方法主要包括4种:行内样式、内嵌样式、链接样式以及导入样式。

1、行内样式

行内样式就是把CSS样式直接放在代码内的标签中,一般都放入标签的style 属性中,由于行内样式直接插入标签中,故是一种最直接的方式,同时也是修改最不方便的样式。

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
</head>
<body>
    <h1 style='color:#f00;'>linux is very much!</h1>        
    <h1 style='color:#00f;'>linux is very much!</h1>        
</body>
</html>
View Code

2、内嵌样式

内嵌样式通过将CSS写在网页源文件的头部,即在<head>中,通过使用HTML的<style>标签中将其包围,其特点是:该样式只能在此页面中应用,解决行内样式多次书写的弊端。

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
    <!-- style标签中专门用来放置样式 -->
    <style>
        /*标签选择器*/
        *{
            font-family: 微软雅黑;
        }

        h1{
            color:#f00;
        }
    </style>
</head>
<body>
    <h1>linux is very much!</h1>        
    <h1>linux is very much!</h1>        
</body>
</html>
View Code

3、链接样式

链接样式通过HTML的<link>标签,将外部样式表的文件链接到HTML文档中,这也是网站应用最多的方法,同时也是最实用的方式。这种方法将HTML文档和CSS文件完全分离,实现结构层和表示层的彻底返利,增强网页结构的扩展性和CSS样式的可维护性。

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
    <link rel="stylesheet" href="index.css">
</head>
<body>
    <h1>linux is very much!</h1>        
    <h1>linux is very much!</h1>        
</body>
</html>
View Code

4、导入样式

导入样式使用@import命令,在内部样式表中导入外部样式表。

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
    <style>
        @import url(index.css);
                h1{
                        color:#aaf;
                    }
    </style>
</head>
<body>
    <h1>linux is very much!</h1>        
    <h1>linux is very much!</h1>        
</body>
</html>   
注意:@import url(index.css);必须写在h1{}前面,不然无效,要置顶 
View Code

 提示:

两种导入样式表的方法比较:

link属于HTML标签,而@import是css提供的。

页面被加载时,同时下载link链接的css文件与html结构(异步),而@import引用的CSS会等到页面被脚在完成再加载(同步)。

@import 在IE5以上才能识别,而link是html标签,我兼容性问题。

link权重高于@import

以上四种样式的优先级为:行内样式>内嵌样式>链接样式>导入样式;

1.1.4   CSS权重

根据上面计算规则,计算下面权重值

 1 <style type="text/css">
 2 h3{color:#ff7300;}            /*加权值=1分*/
 3 .f14{font-size:14px;}          /*加权值=10分*/
 4 #head{width:960px;}            /*加权值=100分*/
 5 h3 .f14{font-weight:bold;}        /*加权值=1分+10分=11分*/
 6 #head h2{border:1px solid #ff73;}    /*加权值=100分+1分=101分*/
 7 div p{padding:0 10px;}            /*加权值=1分+1分=2分*/
 8 div #head{margin:0 auto;}            /*加权值=1分+100分=101*/
 9 #head h2 span{float:right;}            /*加权值=100分+1分+1分=102分*/
10 #head .f14 em{float:right;}            /*加权值=100分+10分+1分=111分*/
11 #head .f14 span em{float:right;}        /*加权值=100分+10分+1分+1分=112分*/
12 #head div h2 .f12 span em{color:#000;}   /*加权值=100分+1分+1分+10分+1分+1分=114分*/ 

 2.1  CSS选择器 

CSS通过选择器控制html元素,CSS选择器对网页对象可以实现一对一、一对多或者多对一的匹配。

2.1.1  基本选择器

1、标签选择器

标签选择器直接引用HTML标签名称,也称为类型选择器,类型选择器规定了网页元素在页面默认的显示样式。因此,标签选择器可以快速,方便的控制页面标签的默认样式效果。

p {
    font-size: 12px;                           /* 字体大小为12像素 */
    color: red;                             /* 字体颜色为红色 */
}

2、类选择器

类选择器允许以一种独立于文档元素的方式来指定样式。该选择器可以单独使用,也可以与其他元素结合使用。

在使用类选择器之前,需要修改具体的文档标记,以便类选择器正常工作。为了将类选择器的样式与元素关联,必须将 class 指定为一个适当的值。

<style type="text/css">
.font18px {/* 字体大小类  */
    font-size:18px;                             /* 字体大小为18像素 */
}
.underline {/* 下划线类 */
    text-decoration:underline;                    /* 字体修饰为下划线 */
}
.italic {/* 斜体类 */
    font-style:italic;                            /* 字体样式为斜体 */
}
</style>

<p class="underline">问君能有几多愁,恰似一江春水向东流。</p>
<p class="font18px italic underline">剪不断,理还乱,是离愁。别是一般滋味在心头。</p>
<p class="italic">独自莫凭栏,无限江山,别时容易见时难。流水落花春去也,天上人间。</p>

3、ID选择器

ID选择器以井号(#)作为前缀,然后是一个自定义的ID名。应用ID选择器可以使用id属性来实现。只要在标签中定义id属性,然后把改属性设置为事先定义好的ID选择器名称即可。

<style type="text/css">
#box {/* ID样式  */
    background:url(images/2.jpg) center bottom; /* 定义背景图像并居中、底部对齐 */
    height:200px;                              /* 固定盒子的高度 */
    width:400px;                              /* 固定盒子的宽度 */
    border:solid 2px red;                        /* 边框样式 */
    padding:100px;                             /* 增加内边距 */
}
</style>
<div id="box">问君能有几多愁,恰似一江春水向东流。</div>

4、通配符选择器

如果HTML 所有元素都需要定义相同的样式,这是不妨使用通配符选择器。通配符选择器是固定的,用(*)来表示。

<style type="text/css">
* {
    margin: 0; 
    padding: 0;
}

</style>

2.1.2  组合选择器

当把两个或多个基本选择器组合在一起,就形成了一个复杂的选择器,通过组合和选择器可以精确匹配页面元素,CSS提供了多种组合基本选择器的方式。

1、包含选择器

包含选择器通过空格标识符来表示,前面的一个选择器表示包含框对象的选择器 , 而后面表示为被包含的选择器。

<style type="text/css">
    #header p { font-size:14px;}
    #main p {font-size:12px;}
</style>
<div id="header">
        <p>头部区域第1段文本</p>
        <p>头部区域第2段文本</p>
        <p>头部区域第3段文本</p>
</div>
<div id="main">
        <p>主体区域第1段文本</p>
        <p>主体区域第2段文本</p>
        <p>主体区域第3段文本</p>
</div>

2、子选择器

子选择器是指父元素所包含的子元素。子选择器使用尖括号(>)表示。

<style type="text/css">
span { /* span元素的默认样式 */
    font-size:12px;                            
}
div > span { /* div元素包含的span子元素的默认样式 */
    font-size:24px;                           
}
</style>

<h2>
    <span>HTML文档树状结构</span>
</h2>
<div id="box"> 
    <span class="font24px">问君能有几多愁,恰似一江春水向东流。</span>
</div>

3、相邻选择器

相邻选择器,通过加号(+)分隔符进行定义。其前后选择符的关系是兄弟关系,即在HTML中,两个标签前为兄后为弟,否则样式无法应用。

<style type="text/css">
    p+h3 { background-color: #0099FF;    /* 设置背景色 */ }
</style>
<div class="header">
    <p>相邻选择器</p>  #p同级后面的h3就只有相邻的一个
    <h3>通过p控制h3</h3>
</div>

4、兄弟选择器

CSS3增加的一种新的选择器,它通过波浪号(~)分隔符进行定义。其基本结构是第一个选择器指定同级前置元素,后面的选择器指定指定其后所有匹配元素,前后选择符关系必须是兄弟关系。

<style type="text/css">
p ~ h3 { background-color: #0099FF;    /* 设置背景色 */ }
</style>

<div class="header">
    <p>兄弟选择器</p>  #p同级后面所有的h3
    <h3>11111111</h3>
    <h3>22222222</h3>
    <h3>33333333</h3>
</div>

5、分组选择器

分组选择器通过逗号(,)进行分割定义。其基本结构是第一个选择器指定的匹配元素,后面的的选择器指定另一个匹配元素,最后把前后选择器匹配的元素都取出来。

<style type="text/css">
h1, h2, h3, h4, h5, h5, h6 {
    background-color: #99CC33;    /* 设置背景色 */
    margin: 0;    /* 清除标题的默认外边距 */
    margin-bottom: 10px;    /* 使用下边距拉开各个标题之间的距离 */
}
</style>
<h1>h1元素<span>这里是span元素</span></h1>
<h2>h2元素<span>这里是span元素</span></h2>
<h3>h3元素<span>这里是span元素</span></h3>
<h4>h4元素<span>这里是span元素</span></h4>
<h5>h5元素<span class="S1">这里是span元素</span></h5>
<h6>h6元素<span class="S2">这里是span元素</span></h6>

 2.1.3  属性选择器

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
    <style>
        *{
            font-family: 微软雅黑;
        }
                h1[class]{    #指定了属性名,但没有确定属性值
                    color:#aaf;
                }
        
        h1[id][class]{    #指定了多个属性名,但都没有确定属性值
            background: #aaf;
        }
                h1[id ^= "f1"]{    #id属性以f1开头的
            background: #aaf;
        }
                h1[id $= "id2"]{    #id属性以id2结尾的
            background: #aaf;
        }
                h1[id *= "f2"]{    #id属性包含f2的
            background: #aaf;
        }
                h1[id |= "f3"]{    #id属性值是f3或者以f3-  开头的值
            background: #aaf;
        }
    </style>
</head>
<body>
    <h1 id='f1-id1'>111111111111111111111</h1>
    <h1 id='f2-id2' class='h1-class2'>222222222222222222222</h1>
    <h1 id='f3-id3'>333333333333333333333</h1>
    <h1>444444444444444444444444</h1>
</body>
</html>            
View Code

2.1.4  伪类选择器

CSS伪类是用来添加一些选择器的特殊效果。

语法:selector:pseudo-class {property:value;}

其中selector表示选择器,pseudo-class 为伪类名称,property是CSS属性,value为CSS的属性值。

1、动态伪类

动态伪类是一类行为类样式,这些伪类并不存在HTML中,只有当用户与页面进行交互时才能体现出来,动态伪类选择器包括两种形式:

锚点伪类,这是一种在链接中常见的的样式,如  :link,:visited.

行为伪类,也称为用户操作伪类,如   :hover 、:active、:focus.

:focus用于元素成为焦点时的样式效果,常用于表单元素上

a:link {color:gray;} /* 链接未访问时前景色为灰色 */ 
a:visited {color:yellow;} /* 链接被访问后前景色为黄色 */ 
a:hover {color:green;} /* 鼠标悬浮在链接上时前景色为绿色 */ 
a:active {color:blue;} /* 鼠标点击链接那一下前景色为蓝色*

 

 提示:对于这四个伪类要想全部生效,那么就要设置它们的先后顺序,要让他们遵循一个爱恨原则  l(:link)ov(:visited)e-h(hover)a(:active)te

 2、结构伪类

  • :first-child  选择某个元素的第一个子元素
  • :last-child  选择某个元素的最后一个子元素
  • :nth-child()  选择某个元素的一个子或多个特定的子元素
  • :nth-last-child  选择某个元素的一个子或多个特定的子元素,从这个元素的最后一个子元素开始计算
  • :nth-of-child  选择指定的元素
  • :nth-last-of-child  选择指定的元素,从元素的最后一个开始计算
  • :fist-of-type  选择一个上一级元素下的第一个同类子元素
  • :last-of-type  选择一个上一级元素下的最后一个同类子元素
  • :only-child  选择的元素是它的父元素的唯一一个子元素
  • :only-of-type  选择一个元素是它的上级元素的唯一一个相同类型的子元素
  • :empty  选择的元素里面没有任何内容

 

 

 

 

 

 

 

 

 

更新中。。。

posted @ 2019-07-08 16:32  观月吖  阅读(332)  评论(1编辑  收藏  举报