CSS基础知识

CSS简介

为了让网页元素的样式更加丰富,也为了让网页的内容和样式能拆分开,CSS由此慈祥而诞生,CSS是Cascading Style Sheets的首字母缩写,意思是层叠样式表。有了CSS,html中大部分表现样式的标签就废弃不用了,html只负责文档的结构和内容,表现形式完全交给CSS,html文档变得更加简洁(更方便爬虫爬取)。

CSS页面引入方式

  • 外链式:通过link标签,链接到外部样式页面中。【建议使用】
    <link rel="stylesheet" type="text/css" href="./css/main.css">href之前的内容都是固定的(ps:添加到head标签中)

ps:样式文件通常单放一个文件夹

  • 嵌入式:通过style标签,在网页上创建嵌入的样式表

通常做首页的时候用这种方式,加快加载速度

<head>
    <style type="text/css">
        div {
            width:100px;
            /*px:pixel:像素*/
            height:100px;
            color:red;
        }
        ……
    </style>
</head>

ps:对于0px,单位可写可不写

ps:css中,最后一行末尾的分号可写可不写

  • 内联式:通过标签的style属性,在标签上直接写样式
    <div style="width:100px; height:100px; color:red">……</div>

三种样式的代码示例:


# CSS基本语言及页面引用

## CSS基本语法

CSS的定义方法是:

选择器 {属性:值; 属性:值; 属性:值;}

选择器是将样式和页面元素关联起来的名称,属性是希望设置的样式属性,每个属性有一个多或多个值。

代码示例:
```css
/*
    css注释
*/
div {
    widht:100px;
    height:100px;
    color:red;
}

三种样式代码示例:

<!DOCTYPE html>
<html>
<head>
    <title>Document</title>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="./css/index.css">
    <!-- 第一种方式示例 -->
    <style type="text/css">
    /*第二种方式示例*/
        h1 {
            font-size: 20px;
            color: orange;
        }

    </style>
</head>
<body>
    <div>这是一个div标签</div>
    <h1>页面标题</h1>
    <a href="www.baidu.com" title="跳转到百度" style="font-size: 20px; color: pink;">百度一下</a>
    <!-- 第三种方式,在标签里面直接写样式 -->
</body>
</html>

常用的应用文本的CSS样式

  • color 设置文本的颜色,如:color:red;

  • font-size 设置文字的大小,默认16px,如:font-size:120x;

  • font-family 设置文字的字体,如:font-family:“微软雅黑";但是建议名字写成英文,如:Microsoft Yahei

  • font-style 设置字体是否倾斜,如:font-style:"normal";设置不倾斜;font-style:"italic";设置文字倾斜,通常是去掉倾斜

  • font-weight 设置文字是否加粗,如:font-weight:bold;字体加粗;font-weigth:normal;字体不加粗

  • line-height 设置文字的行高,设置行高相当于在每行文字的上下同时加间距,如:line-height:23px;

  • font同时设置文字的几个属性,写的顺序有兼容性问题,建议按照如下顺序些:font:是否加粗 字号/行高 字体,如:font: normal 12px/36px "微软雅黑";

  • text-decoration 设置文字的下划线,如:text-decoration:none;将文字下划线去掉,通常是去掉下划线,比如a标签的

  • text-indent 设置文字首行缩进,如:text-indent:25px;设置文字首行缩进25px

  • text-align设置文字水平对齐方式,如:text-align:center;设置文字居中对齐,此外有:left(默认), right

    • 对齐时应注意,对于超链接,其默认宽度就是文字的宽度,所以本身就是居中的,如果如果对齐设置text-align,则无效果,如果真要使其居中,需要转换类型

CSS颜色表示法

CSS颜色值主要有三种表示方法:

  1. 颜色名表示,比如:red, blue, green,yellowgreen
  2. 用rgb表示,比如:rgb(255,0,0) 表示红色
  3. 16进制数值表示,比如:#ff0000 表示红色,这种可以简写为#f00

后两种都是三原色表示法,三原色:红、绿、蓝,数值越大表示该种颜色越强,如果三个数值相同,则表示不同程度的灰色,(0,0,0)表示最强程度的黑色,“光越加越亮”

CSS选择器

常用的选择器有如下几种:

1. 标签选择器

标签选择器,此种选择器影响范围大,建议尽量应用在层级选择器中。

举例:

* {margin:0; paddign:0;} /* 星号是选择所有的标签 */
div {color:red;}

div a {...}
/*表示div标签下的a标签(包括div下的子子孙孙中的a)*/

div > a {...}
/*表示div的孩子中的a*/
<div><a href="#">...</a></div>  <!-- 对应以上两条样式 -->
<div class="box">......</div>   <!-- 对应以上两条样式 -->

2. id选择器

通过id名来选择元素,元素的id,所以一个样式设置项只能对应于页面上一个元素,不能复用,id名一般是给程序使用,所以不推荐使用id作为选择器

举例:

#box {color:red;}
<div id="box">......</div>  <!-- 对应以上一条样式,其他元素不允许应用此样式 -->

ps:id是所有标签的属性,所有的标签都有这个属性

4. 类选择器

最常用

通过类名来选择元素,一个类可应用多个元素,一个元素上也可以使用多个类,应用灵活,可复用,是CSS中应用最多的一种选择器。

举例:

.red {color:red;}
.big {font-size:20px;}
.mt10 {margin-top:10px;}
<div class="red">......</div>
<h1 class="red big">......</h1>
<!-- 类名可以用多个,比如此处的"red big",则此处可以用上面的red和big两种样式的叠加 -->
<p class="red mt100">......</p>

ps:id的权重高于类,所以如果对同一个标签采用id选择器和类选择器,id选择器生效,而类选择器无效

星号表示类选择器,井号表示id选择器

4. 层级选择器

主要应用在选择父类元素下的子元素,或者子元素下面的子元素,可与标签元素结合使用,减少命名,同时也可通过层级,防止命名冲突

举例:

.box span {
    /*配合标签选择器使用*/
    /*表示box类名下的span标签*/
    color: green;
    font-size: 40px;
}
.box em {
    font-style: normal;
    font-weight: bold;
    text-decoration: underline;
}
.box .red {
    /*配合类选择器使用*/
    /*box类(class="red")下面的red类*/
    color: pink;
}

5. 组选择器

多个选择器,如果有同样的样式设置,可以使用组选择器

举例:

.box01, .box02, .box03 {
    /*bxo01和box02和box03*/
    /*空格是层级选择器,逗号是组选择器*/
    font-size: 40px;
    text-indent: 2em;
    /*2em的意思是两个字符,即此处缩进两个字符*/
}
.box01 {
    color: red;
}
.box02 {
    color: green;
}
.box03 {
    color: blue;
}
<div class="box01">这是第一个div</div>
<div class="box02">这是第二个div</div>
<div class="box03">这是第三个div</div>

技巧:如何快速创建带class的div:输入div.clas,然后tab,其他标签同理

6. 伪类选择器以及伪元素选择器

常用的伪类选择器有hover,表示鼠标悬浮在元素上时的状态,伪元素选择器有before和after,他们可以通过样式在元素中插入内容。

伪类之hover:

.link {
    font-size: 30px;
    text-decoration: none;
    color: pink;
}
.link:hover {
    /*当鼠标悬停在link类上时*/
    color: gold;
}
<a class="link" href="www.baidu.com" title="跳转到百度">百度一下</a>

伪元素:

.box01, .box02 {
    font-size: 30px;
}

.box01:before {
    /*伪元素选择器之beofre,在前面塞东西*/
    content: "前面要添加的文字";
    /*content的内容在网页无法选中*/
    color:green;
    /*这里的颜色是对前面添加内容(即content)的修饰*/
}
.box02:after {
    content: "哈哈哈哈";
    color: pink;
}
<div class="box01">这是第一个div</div>
<div class="box02">这是第二个div</div>

7. E:nth-child(n)

E:nth-child(n):匹配元素类型为E,且是父级元素第n个子元素的元素。eg:.list div:nth-child(2),表示选择list类下面第二个div标签

CSS权重

CSS权重指的是样式的优先级,有两条或多条样式作用于一个元素,权重高的那条样式对元素起作用,权重相同的,后写的样式会覆盖前面写的样式

权重的等级

可以把样式的应用方式分为几个等级,按照等级来计算权重

  1. !important 加在样式属性值后,权重值为10000
  2. 内联样式,如:style="",权重值为1000
  3. ID选择器,如:#content,权重值为100
  4. 类,伪类和属性选择器,如:.content、:hover权重值为10
  5. 标签选择器和伪类元素选择器,如:div、p、:before权重值为1
  6. 通用选择器(*)、子选择器(>)、相邻选择器(+)、同胞选择器(~),权重值为0

累计叠加,如:#content .con {...}权重值为100+10,共110

盒子模型

盒子模型解释

元素在显示成一个方块,类似一个盒子,CSS盒子模型就是使用显示中的盒子来做比喻,帮助我们设置元素的对应的样式。

在盒子模型中,把元素叫做盒子,设置对应的样式分别为:盒子的宽度(width)、盒子的高度(height)、盒子的边框(border)、盒子内的内容和边框之间的边距(padding)、盒子与盒子之间的间距(margin)

其实就是学习一些新的样式属性而已

代码实现

.box {
    /*盒子整体控制*/
    width: 200px;
    height: 200px;
    background-color: gold;

    /*盒子边框设置*/
    border-top-color: black;
    border-top-width: 10px;
    border-top-style: solid;
    /*设置线的样式,solid | dashed | dotted*/
    
    /*实际上以上三句可以合为一起写,且对顺序无要求*/
    border-bottom: 15px dashed green;
    /*如何通过缩写将四个边设置成一样:
    border: 10px solid blue;*/

    /*内边距的设置*/
    padding-top: 20px;
    /*注意,由于添加了padding,上面设置的盒子的width和height会被改变*/
    /*即,其实padding是在原盒子大小的基础之上再添加的*/
    /*padding也可以缩写:padding: 20px 40px 80px 160px;依次为从上开始的顺时针方向*/
    /*如果padding跟3个值:上 左右 下*/
    /*如果paddding跟2个值:上下 左右*/
    /*如果跟一个值:四周*/

    /*外边距的设置,与padding相同*/
    margin-top: 100px;
<div class="box">盒子里面的文字</div>

如何保证盒子的真实尺寸

即不因添加了padding和border而导致盒子的真实大小发生改变

.box {
    width: 200px;
    height: 200px;
    /*个人理解,这里的width和height其实只是内容的*/
    background-color: pink;

    border: 10px solid #000;
    /*边框其实是在盒子的基础之上添加的,所以如果要保证盒子的大小不变,上面的width和height都需要-10*/

    padding: 20px;
    /*padding其实也是在盒子的基础之上添加的,如果要保证盒子的大小不变,上面的width和height还要-20*/
}

注意:body本身带有8px的border

技巧

  1. 如果将文本在格子中垂直居中而不用更改盒子的大小:line-height: 盒子的高度(即height)

  2. 如何实现文字的左边有空白而不更改盒子的宽度:text-indent: 空白像素px;

  3. margin的技巧:

    1. 设置元素水平居中:margin:x auto;上下边距为x,左右居中(相对于外一级)。注意:auto只能用在宽度上,不能用在高度上
    2. margin负值让元素位移及边框合并,注意:只有marigin有负值,border和padding都没有负值。(case:如果将多个方框挨着放并显示边框,由于都有边框,挨着的地方框线就会比较粗,此时可以将border设置为负值,让其仅显示一条框线)

margin中的注意事项

  • 外边距合并

外边距合并指的是,当两个垂直方向的盒子外边距(即上面盒子的下边距,下面盒子的上边距)相遇时,他们将形成一个外边距。合并后的外边距的高度等于两个发生合并外边距的高度中的较大者。解决方案如下:

  1. 使用这种特性
  2. 设置一边的外边距,一般设置margin-top
  3. 将元素浮动或者定位
  • margin-top的塌陷

在两个盒子嵌套的时候,内部的盒子设置的margin-top会加到外边的盒子上,导致内部的黑字margin-top设置失败,解决方式如下:

  1. 外部盒子设置一个边框
  2. 外部盒子设置overflow:hidden(把溢出的元素隐藏起来,本来是设置元素溢出的属性),因为有时候就是要做溢出的效果,所以此种方法不是很好用
  3. 使用伪元素类:类似于加边框,代码如下:
.clearfix:before {
    content:"";
    display:table;
    /*让空字符显示为table*/
}

塌陷示例:

<!DOCTYPE html>
<html>
<head>
    <title>margin-top的塌陷</title>
    <meta charset="utf-8">
    <style type="text/css">
        .con {
            width: 300px;
            height: 300px;
            background-color: gold;
        }
        .box {
            width: 200px;
            height: 100px;
            background-color: green;
            margin-top: 100px;
            /*本来相让里面的盒子和外面的盒子边距为100px,
            结果里面盒子的margin-top和外面盒子的margin-top合并了,
            导致里面盒子与外面盒子的上面并没有分开,
            反而是两个盒子整体与浏览器上边框有了100px的边距*/
        }
    </style>
</head>
<body>
    <div class="con">
        <div class="box"></div>
    </div>

</body>
</html>

CSS元素溢出

当子元素的尺寸超过父元素的尺寸时,需要设置父元素显示溢出的子元素的方式,设置的方法是通过overflow属性来设置。

overflow的设置项

  1. visible 默认值。内容不会被修剪,会呈现在元素边框之外。
  2. hidden 内容会被修剪,并且其余内容是不可见的,此属性还怎样清除浮动、清除margin-top塌陷的功能。
  3. scroll 内容会被修剪,但是浏览器会显示滚动条以方便用户查看其余内容。(如果内容没有超出,右边和下面还是有滚动条的痕迹)
  4. auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余内容。(内容多过盒子才有滚动条,没有超过就没有滚动条)
  5. inherit 规定应该从父元素继承overflow属性。(很少用)

元素溢出的效果代码(会发现文字出现在盒子之外):

<!DOCTYPE html>
<html>
<head>
    <title>元素溢出</title>
    <meta charset="utf-8">
    <style type="text/css">
        .box {
            width: 300px;
            height: 200px;
            /*设置了盒子的属性*/

            border: 1px solid pink;
            margin: 50px auto 0;
            line-height: 30px;
        }

    </style>
</head>
<body>
    <div class="box">
        1. visible 默认值。内容不会被修剪,会呈现在元素边框之外。
        2. hidden 内容会被修剪,并且其余内容是不可见的,此属性还怎样清除浮动、清除margin-top塌陷的功能。
        3. scroll 内容会被修剪,但是浏览器会显示滚动条以方便用户查看其余内容。
        4. auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余内容。
        5. inherit 规定应该从父元素继承overflow属性。
    </div>
</body>
</html>

盒子类型

元素就是标签,布局中常用的有三种标签,块元素、内联元素、内联块元素(即盒子的3种类型)。

块元素

也可以称为行元素,布局中常用的标签如:div、p、ul、li、h1-6、dl、dt、dd等元素都是块元素,它在布局中的行为:

  • 支持全部的样式
  • 如果没有设置宽度,默认的宽度为富级宽度100%
  • 盒子占了一行,及时设置了宽度

记忆:h1-6是标题,自然单放一行;p是段落,也单放一整行;ul、li是无序列表,dl、dt、dd是定义列表,对于列表,其一项也该占用一行

内联元素

也可以称为行内元素,布局中常用的标签如:a、span、em、b、strong、i等元素都是内联元素,他们在布局中的行为:

  1. 支持部分样式(不支持宽、高、margin上下、padding上下)(记忆:他们只是行内的一部分,没必要单独设置上下的相关属性)
  2. 宽高由内容决定
  3. 盒子并在一行
  4. 代码换行,盒子之间会产生间断
  5. 子元素是内联元素,父元素可以用text-align属性设置子元素水平对齐方式(记忆:因为其只是一行内的一部分,所以可以设置在水平的对齐)

记忆:a是超链接,span是一行中的部分内容,em表示强调,b是粗体,strong也是加粗效果,i是专业词汇,他们都没有必要单独放一行,所以是内联元素

解决内联元素间隙的方法

  1. 代码写成一行即可(不建议)
  2. 将内联元素的父级设置font-size为0,内联元素自身再设置font-size

内联块元素

内联块元素,也叫行内块元素,是新增的元素类型,现有元素没有归于此类的,img和input的行为类似这种元素,但是也归类于内联元素,我们可以用display属性将块元素或者内联元素转化成这种元素。他们在布局中表现的行为:

  1. 支持全部样式
  2. 如果没有设置宽高,宽高由内容决定
  3. 盒子并在一行
  4. 代码换行,盒子会产生间距
  5. 子元素是内联块元素,父元素可以用text-align属性设置子元素水平对齐方式

内联块相当于集合了块元素和内联元素的优点,而且不会有margin的合并问题

这三种元素,可以通过display属性来互相转化,不过实际开发中,块元素用得比较多,所以我们经常把内联元素转化为块元素,少量转化为内联块,而要使用内联元素时,直接使用内联元素,而不用块元素转化了。

display属性

display属性是用来设置元素的类型及隐藏的,常用的属性有:

  1. none 元素隐藏且不占用位置
  2. block 元素以块元素显示
  3. inline 元素以内联元素显示
  4. inline-block 元素以内联块元素显示

display none结合hover使用示例:使鼠标悬停时才显示某部分内容

<!DOCTYPE html>
<html>
<head>
    <title>display元素</title>
    <meta charset="utf-8">
    <style type="text/css">

        .con {
            width: 200px;
        }
        .con h3 {
            font-size: 30px;
        }
        .box2 {
            width: 200px;
            height: 200px;
            background-color: gold;
            display: none;
            /*隐藏box2*/
        }
        .con:hover .box2 {
            /*con hover 时,下面的box2*/
            display: block;
        }

    </style>
</head>
<body>
    <div class="con">
        <h3>文字标题</h3>
        <div class="box2">文字标题的说明</div>
    </div>
</body>
</html>

CSS浮动

浮动特性

  1. 浮动元素有左浮动(float:left)和右浮动(float:right)两种
  2. 浮动的元素会向左或向右浮动,碰到父元素边界、其他元素才停下来
  3. 相邻浮动的块元素可以并在一行,超出父元素宽度就换行
  4. 浮动让内联元素或块元素自动转化为行内块元素(此时不会有行内块元素间隙问题)
  5. 浮动元素后面没有浮动的元素会占据浮动元素的位置(个人理解,设置了浮动的元素相当于向上面浮动了一层);没有浮动的元素内的文字会避开浮动的元素
  6. 父元素如果没有设置尺寸(一般是高度不设置),父元素内整体浮动的元素无法撑开父元素(浮动的元素向上面浮动了一层),父元素需要清除浮动
  7. 浮动元素之间没有垂直margin的合并

代码示例:

<!DOCTYPE html>
<html>
<head>
    <title>css浮动</title>
    <meta charset="utf-8">
    <style type="text/css">
        .con {
            width: 480px;
            height: 80px;
            border: 1px solid gold;
            margin: 50px auto 0;
        }
        .con .box1, .con .box2 {
            width: 60px;
            height: 60px;
            /*display: inline-block;*/
            /*float: left;*/
            margin: 10px;
        }
        .box1 {
            background-color: green;
            float: left;
        }
        .box2 {
            background-color: pink;
            float: right;
        }
    </style>
</head>
<body>
    <div class="con">
        <div class="box1"></div>
        <div class="box2"></div>
    </div>

</body>
</html>

用列表制作菜单

ul注意事项:

  1. ul自带样式——小圆点,由于其对于不同的浏览器显示的不一样,所以常常去掉,如果一定要使用小圆点,通常去掉后自己再添加。

  2. ul自带margin和padding,所以通常需要去掉。

<!DOCTYPE html>
<html>
<head>
    <title>菜单</title>
    <meta charset="utf-8">
    <style type="text/css">
        .menu {
            width: 694px;
            height: 50px;
            list-style: none;
            /*设置小圆点样式:无*/
            margin: 50px auto 0;
            /*ul本身有margin和padding,常常需要自己设置以对其进行覆盖*/
            padding: 0;
        }
        .menu li {
            width: 98px;
            height: 48px;
            border: 1px solid gold;
            background-color: white;
            float: left;
            margin-left: -1px;
            text-align: center; /*left | right | center | justify,左、右、中间、两端*/
            line-height: 48px;
        }
        .menu li a {
            display: block;
            /*使a标签转换为块元素,从而使文字可以“撑开”*/
            text-decoration: none;
            font-size: 16px;
            font-family: 雅黑;
            color: pink;

        }
        .menu li a:hover {
            background-color: gold;
            color: white;
        }

    </style>
</head>
<body>
    <ul class="menu">
        <li><a href="#">首页</a></li>
        <li><a href="#">学校概况</a></li>
        <li><a href="#">学院部门</a></li>
        <li><a href="#">师资队伍</a></li>
        <li><a href="#">科学研究</a></li>
        <li><a href="#">招生就业</a></li>
        <li><a href="#">公共服务</a></li>
    </ul>
</body>
</html>

注意:对于内联元素,类似font-color属性无用,直接用color等代替

一般来说,首页的像素误差在3px以内、其他页面在5px以内以内都是允许的

清除浮动

当子元素float而父元素不给高度时,由于子元素撑不起父元素,所以需要清除浮动

  1. 父级上增加属性:overflow:hidden
  2. 在最后一个子元素的后面加一个空的div,给它的样式属性clear:both(不推荐),即<div style="clear:both"></div>
  3. 使用成熟的清楚浮动样式类,clearfix
.clearfix:after, .clearfix:before {content:""; display: table;}
.clearfix:after {clear:both;}   
.clearfix {zoom:1;}
/*以上三行可以同时解决清除浮动的问题和margin-top的塌陷问题*/

ps:after和before有时候ie不认,为了防止这个问题,所以以上代码添加了zoom:1,意为网页不放大也不缩小

清除浮动的使用方法:

.con {...overflow:hidden}
或者
<div class="con clearfix">

代码示例:

<!DOCTYPE html>
<html>
<head>
    <title>清除浮动</title>
    <meta charset="utf-8">
    <style type="text/css">
        .list {
            width: 210px;
            /*height: 400px;*/
            border: 1px solid #000;
            margin: 50px auto 0;
            list-style: none;
            padding: 0;/*
            overflow: hidden;*/ /*清除浮动的方式一*/
            /*不设置height,并使用此属性,使浮动的元素可以撑开父级元素*/

            text-align: center;
            /*使下级文字水平居中*/

        }
        .list li {
            width: 50px;
            height: 50px;

            background-color: gold;
            margin: 10px;
            float: left;
            /*浮动的元素撑不开父级元素*/

            line-height: 50px;
            /*使文字垂直居中*/

        }
        .clearfix:before {
            /*解决margin-top的塌陷问题*/
            content: "";
            display: table;
        }

        .clearfix:after {
            /*清除浮动的方式三,类似于方式二*/
            content: "";
            display: table;
            clear: both;
        }

    </style>
</head>
<body>
    <ul class="list clearfix">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
        <!-- <div style="clear: both;" class="清除浮动的方式二"></div> -->
    </ul>
</body>
</html>

定位

文档流:指盒子按照html标签编写的顺序依次从上到下,从左到右排列,块元素占一行,行内元素在一行之内从左到右,先写的先排列,后写的排在后面,每个盒子都占有自己的位置。

关于定位

我们可以使用css的position属性来设置元素的定位类型,position的设置项如下:

  1. relative 生成相对定位元素,元素所占据的文档流的位置保留,元素本身相对自身原位置进行偏移。(比较少用,常作为绝对定位的参照物)
  2. absolute 生成绝对定位元素,元素脱离文档流,不占据文档流的位置,可以理解为漂浮在文档流的上方,相对于上一个定位的父级元素来进行定位,如果找不到,则相对于body元素进行定位
  3. fixed 生成固定定位元素,元素脱离文档流,不占据文档流的位置,可以理解为漂浮在文档流的上方,相对于浏览器窗口进行定位
  4. static 默认值,没有定位,元素出现在正常的文档流中,相当于取消定位属性或者不设置定位属性
  5. inherit 从父元素继承position属性的值

定位要配合偏移写

定位的元素相当于自己起来了

定位元素的偏移

定位的元素还需要用left,right,top或者bottom来参照元素的偏移值,即偏移的基准,可以用百分比(例:50%) 。ps:百分比可以配合margin的负值实现居中显示的效果

代码示例:

公用html:

<!DOCTYPE html>
<html>
<head>
    <title>定位</title>
    <meta charset="utf-8">
    <style type="text/css">
</head>
<body>
    <div class="con">
        <div class="box1"></div>
        <div class="box2"></div>
    </div>
</body>
</html>

相对定位css:

.con {
    width: 400px;
    height: 400px;
    border: 1px solid #000;
    margin: 50px auto 0px;
}
.con .box1, .con .box2 {
    width: 300px;
    height: 100px;
    margin: 10px;
}
.con .box1 {
    background-color: green;
    position: relative;
    left: 50px;
    top: 50px;
    /*对box1设置偏移*/

}
.con .box2 {
    background-color: gold;
}

绝对定位css:

.con {
    width: 400px;
    height: 400px;
    border: 1px solid #000;
    margin: 50px auto 0px;
    position: relative;
    /*设置父级的定位,使box1有上一级设定了定位的父级,从而使之相对于con来进行定位*/
    /*父级本身没有变化,因为没有设置偏移*/
}
.con .box1, .con .box2 {
    width: 300px;
    height: 100px;
    margin: 10px;
}
.con .box1 {
    background-color: green;
    position: absolute;
    /*相对于body,脱离文档流*/
    left: 50px;
    top: 50px;
    /*对box1设置偏移*/

}
.con .box2 {
    background-color: gold;
}

固定定位css:

        .con {
            width: 400px;
            height: 400px;
            border: 1px solid #000;
            margin: 50px auto 0px;
        }
        .con .box1, .con .box2 {
            width: 300px;
            height: 100px;
            margin: 10px;
        }
        .con .box1 {
            background-color: green;
            position: fixed;
            /*设置固定定位:相对于浏览器窗口*/
            left: 50px;
            top: 50px;
            /*对box1设置偏移*/

        }
        .con .box2 {
            background-color: gold;
        }

定位元素层级

定位元素是浮动在正常的文档流之上的,可以用z-index属性来设置元素的层级,值为数值,如:z-index:10代表将元素层级设置为10。注意,层级改变位置不变

定位元素特性

绝对定位固定定位的块元素和行内元素会自动转化我行内块元素

定位代码示例:图标显示

<!DOCTYPE html>
<html>
<head>
    <title>图标案例</title>
    <meta charset="utf-8">
    <style type="text/css">
        .box {
            width: 100px;
            height:100px;
            background-color: gold;
            margin: 50px auto 0px;
            position: relative;
            border-radius: 14px;
            /*设置圆角*/
        }
        .box .cornor {
            width: 28px;
            height: 28px;
            position: absolute;
            /*相对于父级元素定位*/
            border-radius: 14px;
            right: -14px;
            top: -14px;
            background-color: red;
            text-align: center;
            line-height: 28px;
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="cornor">5</div>
    </div>

</body>
</html>

ps:opacity:数值,可以设定透明度

backgroung属性

属性解释

background属性是css中应用比较多,且比较重要的一个属性,它是负责给盒子设置背景图片和背景颜色的,background是一个复合属性,它可以分解成如下几个设置项:

  1. background-color 设置背景颜色
  2. background-image 设置背景图片地址
  3. backgroung-repeat 设置背景图片如何重复平铺,有no-repeat,repeat(缺省值),repeat-x,repeat-y
  4. background-position 设置背景图片的位置(水平值 垂直值,有center | left | right,center | top | bottom,也可以设置数值)
  5. background-attachment 设置背景图片是固定还是随着页面滚动条滚动,一般不用,值有fixed(不动)

实际应用中,我们可以用background属性将上面的所有设置项放一起,而且也建议这么做,这样做性能更高,而且兼容性更好,比如:"background: #00FF00 url(bgimage.gif) no-repeat left center fixed",这里面的"#00FF00"是设置background-color,"url(bgimage.gif"是设置background-image,"no-repeat"是设置background-repeat,"left center"是设置background-position,"fixed"是设置backgroun-attachmemt,各设置项用空格隔开,有的设置项不写也是可以的,它会使用默认值,没有顺序要求(建议有自己的顺序风格)

重要应用:应用position中调节数值可以实现在网页的不同部分显示一张图中的不同位置,从而提高性能。ps:此时url只写一次即可,

动画

transform变换

需要触发

  • transform-function
  1. translate(x,y) 设置盒子位移,水平和垂直方向同时移动,参数为"数值px",可以用transform-origin定义旋转的基点
  2. scale(x,y) 设置盒子缩放,参数为"数值",大数值大于1放大,小于1缩小,中心点为元素的中心位置
  3. rotate(deg) 设置盒子旋转,参数为"数值deg",可以用transform-origin定义旋转的基点
  4. skew(x-angle, y-angle) 斜切变换,使元素在水平和垂直方向同时扭曲(X轴和Y轴同时按一定的角度值进行扭曲变形),参数分别为水平和垂直的扭曲角度,"数值deg, 数值deg"
  5. perspective 设置透视距离
  6. transform-style flat | preserve-3d | 设置盒子是否按3d空间显示
  7. translateX、translateY、translateZ 设置三维移动,可以用transform-origin定义旋转的基点
  8. rotateX、rotateY、rotateZ 设置三维转动
  9. scaleX、scaleY、scaleZ 设置三维缩放
  10. transform-origin 设置变形的中心点
  11. backface-visibility 设置盒子背面是否可见(默认可见)
  12. transfor-origin(x, y) 改变元素的基点,x和y的值可以是百分值,em,px,还可以是字符参数left, center ,right, top, bottom

用法示例:

transform: none | transform-funstion; /*我们可以同时使用多个函数,即同时进行多种属性的操作*/

animation动画

可以让元素自己动,不需要触发

  1. @keyframes 定义关键帧动画
  2. animation-name 动画名称
  3. animation-duration 动画持续时间
  4. animation-timing-function 动画曲线 linear(匀速) | ease(缓冲) | steps(步数)
  5. animation-delay 动画延迟,ms,s
  6. animation-iteration-count 动画播放次数 n | infinte
  7. animation-direction 动画结束后是否反向还原 normal | Alternate,注意,如果设置了alternate,图像的一变一回算两次,
  8. animation-play-state 动画状态 paused | running
  9. animation-fill-mode 动画前后的状态 none(缺省) | forwards(结束时停留在最后一帧) | backwards(停留在定义的开始帧) | both(前后都应用)
  10. animation:name duration timing-function delay iteration-count direction 同时设置多个属性(有顺序要求)

代码示例:

<!DOCTYPE html>
<html>
<head>
    <title>animation动画</title>
    <meta charset="utf-8">
    <style type="text/css">
        .box {
            width: 100px;
            height: 100px;
            background-color: gold;
            animation: moving 1s 0.5s 5;
            /*将下面的动画给box*/
            animation-direction: alternate;l
        }
        .box:hover {
            /*当鼠标放上去的时候,暂停播放*/
            animation-play-state: paused;
        }
        @keyframes moving{
        /*定义动画,并为其取名moving*/
            /*利用from和to定义两个状态*/
            from {
                width: 100px;
            }
            to {
                width: 500px;
            }

        }
    </style>
</head>
<body>
    <div class="box"></div>
</body>
</html>

风车旋转案例:

<!DOCTYPE html>
<html>
<head>
    <title>风车旋转</title>
    <meta charset="utf-8">
    <style type="text/css">
        img {
            display: block;
            widows: 400px;
            height: 400px;
            margin: 50px auto 0px;
            animation: rot 1s linear infinite;
        }
        @keyframes rot {
            from {
                transform: rotate(0deg);
            }
            to {
                transform: rotate(360deg);
            }
        }
        img:hover {
            animation-play-state: paused;
        }
    </style>
</head>
<body>
    <img src="./风车.jpg">
</body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,754评论 1 92
  • 基本常识与实践 css的每一个语句包括一个场所,以及这个场所的一个属性,还要应用到这个属性一个样式,一个典型的cs...
    丁俊杰_阅读 1,039评论 0 0
  • 1.认识CSS样式CSS全称为“层叠样式表 (Cascading Style Sheets)”,它主要是用于定义H...
    静默丶阅读 5,711评论 30 95
  • 1 什么是CSS? CSS通常称为CSS样式表或层叠样式表(级联样式表),主要用于设置HTML页面中的文本内容(字...
    前白阅读 654评论 0 8
  • 那年我送你的雨伞,那年我送你的胭脂。 或许如你所说我们都不适合入循道之路。 我说城里胭脂铺的老板娘很好看。 你笑着...
    李小猫呢阅读 565评论 0 3