CSS基础

1. 概述

CSS 主要是用于定义 HTML 内容在浏览器内的显示样式,如文字大小、颜色、字体和粗细等。使用 CSS 的好处是通过定义某个样式,可以让网页上不同位置的文字有着统一的字体。

例题如:

  1. 将段落中的文字大小改为 20px并加粗,同时颜色设为红色。

    p{
    font-size:20px;
    color:red;
    font-weight:bold;
    }

  2. 将一个段落中某些不连续的内容设置为同一格式(字体颜色为红色)。

    span{
    color:red;
    }

2. 语法

  1. 语法概述
    CSS 样式由 选择符声明 组成,其中 声明 又由 属性 组成。如在 CSS 语句 p{color:red} 中,p 是选择符,{color:red;} 是声明,声明又由属性 color 和值 red 组成。

    声明中的属性和值组成的键值对的个数可以有多个。

    如:

    p{
    cont-size:12px;
    color:red; # 声明中的最后一个属性可以没有分号,但是为了以后修改方便一般也加上分号
    }

  2. 注释语句

    和 HTML 代码一样,CSS 中也有注释语句,在 CSS 中用 /*content*/ 来为代码注释。

3. CSS 样式基本知识

CSS 样式可以写在 HTML 标签中,也可以写在 HTML 文件中,还可以写在外部的 CSS 文件中,根据 CSS 存放的位置我们可以将其划分为 内联式、嵌入式和外部式三种。

  1. 内联式 CSS,直接写在现有的 HTML 标签中

    如:

    HelloWorld

  2. 嵌入式 CSS,写在 HTML 页面中

    当一个 HTML 页面中的多个地方需要设置相同的格式,我们可以在 HTML 页面中另外设置一个 <style> 标签,并在该标签内定义 CSS 样式,同时在需要使用该样式的内容中引用该样式即可。

    如:


    HelloWolrd

  3. 外部式 CSS,写在单独的 CSS 文件中

    外部式 CSS 可以将各种样式的定义都写在一个 CSS 文件中,并且在需要引用的 HTML 文件中通过 <link> 标签引用该样式。

    如:

    <link href='base.css' rel='stylesheet' type='text/css'/>,其中,rel='stylesheet' type='text/css' 是固定写法不可变。

    <link> 标签一般写在 <head> 标签之内。

    base.css

    span{
    font-size:12px;
    color:red;
    }

    index.html




    外部式css样式



    Hello,World



  4. 三种方法的优先级

    结论先摆出来:内联式 > 嵌入式 > 外部式,实际上也是秉承一个"就近原则"。

4. 选择器

  1. 什么是选择器

    选择器就是标识每个样式的字符串组合,如:

    body{
    color:red;
    font-size:12px;
    }

    中,body 就是选择器。

  2. 标签选择器

    标签选择器,其实就是用 HTML 代码中的标签作为选择器。如:

    p{
    font-size:12px;
    }
    h1{
    color:red;
    font-weight:normal;
    }

  3. 类选择器

    类选择器在 CSS 样式编码中是最常用到的,其语法为:

    .类选择器名{css样式代码}

    注意是以英文圆点开头,类选择器名可以随便起,但不能起中文名。
    如:

    /* 定义样式 */
    .question-id{
    font-size:12px;
    color:red;
    }

    /* 引用样式 */

    我曾经是一个胆小如鼠的小男孩,现在已经成长为一个胆小如鼠的老男孩了。

  4. ID 选择器

    ID 选择器的作用在大多数情况下都类似于类选择器,不过与类选择器存在如下差别:

    1.定义时要用 # 开头而不是英文圆点

    2.引用时要指定 id=id_name 而不是 class=class_name

    如:

    /* 定义样式 */
    #setGreen{
    color:green;
    }

    /* 引用样式 */

    我曾经是一个胆小如鼠的小男孩,现在已经成长为一个胆小如鼠的老男孩了。

  5. 类选择器和 ID 选择器的区别

    相同点:可以应用于任何元素

    不同点:

    ① ID 选择器只能在一个 HTML 文档中使用 1 次,类选择器可以使用多次
    ② 类选择器可以词列表方法为一个元素同时设置多个样式,如 <p class="font-big color-red"></p>而 ID 选择器不可以。

  6. 子选择器

    子选择器是作用于让某个类选择器下的第一级指定标签,用 > 号指定,如:

    .food>li{
    border:1px solid red;
    }

    的作用是,让引用了 food 类的标签下的第一级 <li> 标签呈现样式所定义的效果。

  7. 包含选择器

    在子选择器的基础之上,不仅对一级指定标签生效,还对所有指定标签生效,用空格指定而不是 > 号指定。如:

    .food li{
    border:1px solid red;
    }

    的作用是,让引用了 food 类的标签下所有的 <li> 标签呈现样式所定义的效果。

  8. 通用选择符

    通用选择器的作用是匹配 HTML 中所有的标签元素,如 * {color:red} 该代码会将 HTML 中所有的标签内元素都设置为红色。

  9. 伪类选择符

    伪类选择器为 HTML 中标签下不存在的状态(如鼠标滑过的状态)设置样式,如:给 HTML 中的一个标签设置鼠标滑过时的样式应该这么写 a:hover{color:red},该代码为 <a> 标签处于鼠标滑过状态设置颜色为红色的样式。

    到目前为止,可以兼容所有浏览器的伪类选择符只有 a:hover,当然还有其他一些伪类选择符也可以兼容部分浏览器和标签。

  10. 分组选择符

    当你想为 HTML 中的多个标签使用同一种样式时,可以使用分组选择符,如下所示:

    h1,a,p,span{
    color:red;
    }

    中间用 , 号隔开,即可为 h1 a p span 标签同时设置 color:red; 样式。

5. 继承、层叠和特殊性

  1. 继承

    CSS 的某些样式是具有继承特性的,即该样式不仅作用于指定标签(或者引用了该样式的标签),还作用于该标签下的子标签,如:

    p{color:red}

    我曾经是一个胆小如鼠的小男孩,现在已经成长为一个胆小如鼠的老男孩了。

    定义的样式 p{color:red} 不仅作用于 <p> 标签本身,还作用于 <p> 标签下的 <span> 标签。

    但是,不是所有的样式都具备继承性,如border:1px solid red 就不具备继承性。

  2. 层叠

    层叠就是在 HTML 文件中对于同一个元素,当定义了多个权重相同的样式时,会根据这些样式的前后顺序来决定使用的样式,如:

    p{color:red;}
    p{color:green;}

    我曾经是一个胆小如鼠的小男孩,现在已经成长为一个胆小如鼠的老男孩了。

    那么,段落 <p> 则会被设置为绿色,可以理解为后面定义的会把前面定义的样式覆盖掉,所以也是就近原则吧。这里再复习一下各种样式的优先级:内联式 > 嵌入式 > 外部式

  3. 特殊性

    有时候我们为同一个元素设置了不同的 CSS 样式,那么该元素究竟用哪一个样式呢?如下所示:

    p{color:red}
    .first{color:green}

    我曾经是一个胆小如鼠的小男孩,现在已经成长为一个胆小如鼠的老男孩了。

    实际上,该元素采用的 CSS 样式根据定义的权值而定,权值高的被采用。权值规则如下所示:

    p{color:red;} /权值为1/
    p span{color:green;} /权值为1+1=2/
    .warning{color:white;} /权值为10/
    p span.warning{color:purple;} /权值为1+1+10=12/
    #footer .note p{color:yellow;} /权值为100+10+1=111/

    此外,继承也有权值但是很低,有的文献提出它只有 0.1 。

  4. 重要样式

    在设计网页时,有时候需要对定义的某些样式设置最高权值,怎么办?可以使用 important 关键字来解决。如下:

    p{color:red!important;}
    p{color:green}

    我曾经是一个胆小如鼠的小男孩,现在已经成长为一个胆小如鼠的老男孩了。

6. 格式化排版

6.1 文字排版

我们可以利用 CSS 样式为网页中的文字设置字体、字号、颜色等样式属性。

  1. 设置字体

    body{font-family:"宋体";}
    body{font-family:"Microsoft-Yahei";}
    body{font-family:"微软雅黑";}

    其中,用英文兼容性比中文要好一点。

    注意:不建议设置不常用字体,因为如果浏览器上没有安装你设置的字体,那么就会显示默认字体。

  2. 设置字号和颜色

    p{
    font-size:20px;
    color:#666;
    }

  3. 斜体加粗下划删除线s

    p span{
    font-weight:bold; /* 加粗 /
    font-style:italic; /
    斜体 /
    text-decoration:underline; /
    下划线 /
    text-decoration:line-through; /
    删除线 */
    }

6.2 段落排版

  1. 缩进

    p{text-indent:2em;}

    菲茨杰拉德,二十世纪美国文学巨擘之一,兼具作家和编剧双重身份。他以诗人的敏感和戏剧家的想象为"爵士乐时代"吟唱华丽挽歌,其诗人和梦想家的气质亦为那个奢靡年代的不二注解。


    菲茨杰拉德,二十世纪美国文学巨擘之一,兼具作家和编剧双重身份。他以诗人的敏感和戏剧家的想象为"爵士乐时代"吟唱华丽挽歌,其诗人和梦想家的气质亦为那个奢靡年代的不二注解。

  2. 行间距(行高)

    p{line-height:1.5em;}

    菲茨杰拉德,二十世纪美国文学巨擘之一,兼具作家和编剧双重身份。他以诗人的敏感和戏剧家的想象为"爵士乐时代"吟唱华丽挽歌,其诗人和梦想家的气质亦为那个奢靡年代的不二注解。

  3. 汉字和字母间距

    h1{
    letter-spacing:20px; /* 字(母)间距 /
    word-spacing:20px; /
    单词间距 */
    }

    汉字和字母间距用 letter-spacing,单词间距用 word-spacing

  4. 对齐

    为块状元素(后面会介绍到)中的文字、图片设置对齐方式(左右对齐或居中),可以使用 text-align 来指定:

    p{
    text-align:center; /* 居中 /
    text-align:left; /
    左对齐 /
    text-align:right; /
    右对齐 */
    }

7. 盒模型

7.1 元素介绍

在讲盒模型之前,先介绍一下 HTML 的标签元素大概分为 3 类:块状元素、内联元素(行内元素)和内联块状元素。

  1. 常见元素

    常见的块状元素有:

    <div> <p> <h1>...<h6> <ol> <ul> <dl> <table> <address> <blockquote> <form>

    常见的内联元素有:

    <a> <span> <br> <i> <em> <strong> <label> <q> <var> <cite> <code>

    常见的内联块状元素有:

    <img> <input>

  2. 块状元素

    特点:

    ① 每个块级元素都从新的一行开始,其后的元素也另占一行;

    ② 元素的高度、宽度、行高以及顶和底部边距都可设置;

    ③ 元素宽度在不设置的情况下,默认为其父容器的 100% 。

    将元素设置为块级元素:使用 display:block 关键字可以将元素设为块级元素,如下所示:

    a{
    display:block;
    }

    可将内联元素 <a> 设置为块级元素。

  3. 内联元素

    特点:

    ① 和其他元素在同一行上;

    ② 元素的高度、宽度、顶部和底部的边距不可设置;

    ③ 元素的宽度就是他包含的文字或图片的宽度,不可改变。

    将元素设置为内联元素:使用 display:inline 关键字可以将元素设为内联元素,如下所示:

    div{
    display:inline;
    }

    可将块级元素 <div> 设置为内联元素。

  4. 内联块状元素

    特点:

    ① 和其他元素都在一行上;

    ② 元素的高度、宽度、行高以及顶和底部边距都可设置;

    将元素设置为内联块状元素:使用 display:inline-block 关键字可以将元素设为内敛块状元素,如下所示:

    a{
    display:inline-block; /设置为内敛块状元素/
    width:50px; /在默认情况下宽度不起作用/
    height:50px; /在默认情况下高度不起作用/
    background:pink; /设置背景颜色为粉色/
    text-align:center; /设置文本居中显示/
    }

7.2 盒子模型

  1. 概述

    盒内边距用 padding,盒间边距用 margin,盒边框用 border 表示。

    其中,paddingmargin 还细分为 pading-top padding-bottom pading-left padding-rightmargin-top margin-bottom margin-left margin-right 四个填充。

    一般的块级标签都具备盒子模型的特征。

  2. 边框(完全)

    盒子模型的边框就是围绕着内容的线,这条线你可以设置它的粗细、样式和颜色。如下:

    /* 可以合并写 /
    div{
    border:2px solid red;
    }
    /
    还可以分开写 */
    div{
    border-width:2px;
    border-style:solid;
    border-color:red;
    }

    其中,border 代表边框,2px 代表粗细,solid 代表样式,red 代表颜色。

    border-width 中的宽度可以设置为 thin medium thick,但最常用的还是 px

    border-style 中的样式可以设置为 dashed(虚线) dotted(点线)solid(实线)

    border-color:#666 还可以设置为十六进制颜色,但不要忘记加 # 号。

  3. 边框(非完全)

    如果想要为盒子单独设置下边框而不是完全的边框,可以指定 border 的作用位置,如:p{border-bottom:2px dotted red}

    其他三边可以如下设置:

    p{
    border-top:2px dashed #666;
    border-left:1px solid #9b9b9b;
    border-right:3px dotted blue;
    }

  4. 宽和高

    一个元素的实际宽度(盒子的宽度) = 左边界 + 左边框 + 左填充 + 内容宽度 + 右填充 + 右边框 + 右边界。

    元素的高度也是同理。如下图代码:

    /* CSS 代码 */
    div{
    width:200px;
    padding:20px;
    border:1px solid red;
    margin:10px;
    }

    /* HTML 代码 */

    文本内容

    查看元素模型如下图所示:

    盒子元素

  5. 填充(padding)

    元素的内容与边框之间的距离是可以设置的,称为填充,填充也可分为上右下左(顺时针)。如:div{padding:20px 10px 15px 30px},注意顺序不要搞乱。

    同样的,以上代码也可以分开写:

    div{
    padding-top:20px;
    padding-right:10px;
    padding-bottom:15px;
    padding-left:30px;
    }

    如果上下左右都为 10px 还可以这么写:div{padding:10px;}

    如果上下为 10px 左右为 20px 可以这么写:div{padding:10px 20px;}

  6. 边界(margin)

    元素与元素之间的距离可以使用边界(margin)来设置,边界也可以分为 上右下左 。如:div{margin:20px 10px 15px 30px;}

    同样的,以上代码也可以分开写:

    div{
    margin-top:20px;
    margin-right:10px;
    margin-bottom:15px;
    margin-left:30px;
    }

    如果上下左右都为 10px 还可以这么写:div{margin:10px;}

    如果上下为 10px 左右为 20px 可以这么写:div{margin:10px 20px;}

8. CSS 布局

CSS 中关于布局模型一共有 3 种,分别是 flow(流动型) float(浮动型)layer(层型)。那么这三个模型到底是什么样的呢?

  1. 流动模型(flow)

    流动模型是默认的网页布局模式。其具有 2 个比较典型的特征:

    ① 块状元素默认占据一行,就算该块状元素只有一个文字,也会占据整行内容,多个块状一起的时候,会按顺序垂直向下;

    ② 内联元素不像块状元素那样霸道,可以多个元素共存于一行。

    总的来说就是:块状元素独占一行,内联元素共存一行。

  2. 浮动模型(float)

    上面提到,块状元素独占一行。但是如果希望两个块状元素并排显示,可以设置元素浮动。任何元素在默认情况下是不能浮动的,但是可以用 CSS 定义为浮动。如下所示:

    div{
    width:20px;
    height:20px;
    border:1px solid red;
    float:left;
    }

    以上 CSS 代码的效果是:两个 div 标签并排显示。若有 div1div2 标签,可以利用一下代码实现一左一右显示:

    div{
    width:20px;
    height:20px;
    border:1px red solid;
    }

    div1

    div2

    以上代码可以显示挨在一块的 div1div2 两标签并排并一左一右显示。

  3. 层模型(layer)

    类似 Photoshop 中非常流行的图层编辑功能,层模型可以实现将元素显示在网页上的任何位置,CSS 定义了一组定位属性来支持元素的层模型精准定位。

    层模型一共有 3 种形式:

    ① 绝对定位(position:absolute)

    ② 相对定位(position:relative)

    ③ 固定定位(position:fixed)

    其中:

    绝对定位:可以将元素从文档流中拖出来,然后使用 left right top bottom 属性相对于其最接近的一个具有定位属性的父包含块进行绝对定位。如果没有这样的包含块,则相对于 body 元素,即浏览器窗口。如下定义:

    div{
    width:200px;
    height:200px;
    border:1px solid red;
    position:absolute;
    left:100px;
    top:50px;
    }

    /* 将 div 标签定义为宽高都是200px且距离父元素左边距100px上边距50px的元素 */

    相对定位:实际上是相对于以前的位置进行重新定位。absolute表里如一,移动了就是移动了。relative只是表面显示移动了,但实际还在文档流中原有位置,别的元素无法占据。

    固定定位:在浏览器的固定位置,不会随着浏览器窗口滚动条的滚动而变化。

posted @ 2018-01-04 20:34  蚂蚁有毒  阅读(179)  评论(0)    收藏  举报