Web前端笔记

第二部分:css学习

1. 概述

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

2. css基本语法

css基本语法

  • css的定义方法是:
    选择器名称 { 属性:值; 属性:值; 属性:值;}
  • 选择器是将样式和页面元素关联起来的名称,属性是希望设置的样式属性每个属性有一个或多个值。
    代码示例:
/*
css注释 ctrl+"/" 或 ctrl+shift+"/"
*/

div{
width:100px;
height:100px;
color:red
}
  • css样式表引入使用的3中方式‘
  • css页面引入方法:
    1、外联式:通过link标签,链接到外部样式表到页面中,link标签放在head标签下面。
    2、嵌入式:通过style标签,在网页上创建嵌入的样式表,style 放在head标签下面。
    3、内联式:通过标签的style属性,在标签上直接写样式,直接写在div标签属性里面。 ......

3. css文本设置

  • 常用的应用文本的css样式:
    color 设置文字的颜色,如: color:red;
    font-size 设置文字的大小,如:font-size:12px;
    font-family 设置文字的字体,如:font-family:‘微软雅黑’;
    font-style 设置字体是否倾斜,如:font-style:‘normal’; 设置不倾斜,font-style:‘italic’;设置文字倾斜
    font-weight 设置文字是否加粗,如:font-weight:bold; 设置加粗 font-weight:normal 设置不加粗
    line-height 设置文字的行高,设置行高相当于在每行文字的上下同时加间距, 如:line-height:24px; 行高示例图片
    font 同时设置文字的几个属性,写的顺序有兼容问题,建议按照如下顺序写: font:是否加粗 字号/行高 字体;如: font:normal 12px/36px ‘微软雅黑’;
    text-decoration 设置文字的下划线,如:text-decoration:none; 将文字下划线去掉(a标签链接自带下划线,去掉下划线)
    text-indent 设置文字首行缩进,如:text-indent:24px; 设置文字首行缩进24px 行高示例图片
    text-align 设置文字水平对齐方式,如text-align:center 设置文字水平居中
    ----注意:

4. css颜色表示方法

  • css颜色值主要有三种表示方法:
    1、颜色名表示,比如:red 红色,gold 金色
    2、rgb表示,比如:rgb(255,0,0)表示红色
    3、16进制数值表示,比如:#ff0000 表示红色,这种可以简写成 #f00

5. css选择器

  • 1、标签选择器
    标签选择器,此种选择器影响范围大,建议尽量应用在层级选择器中。
    格式:标签名{}
    *{margin:0;padding:0}
    div{color:red} ....
  • 2、类选择器
    通过类名来选择元素,一个类可应用于多个元素,一个元素上也可以使用多个类,
    应用灵活,可复用,是css中应用最多的一种选择器。
    格式:.类名{}
    .red{color:red}
    .blue{color:blue}
    .big{font-size:20px}
    .mt10{margin-top:10px} ....

....

....

  • 3、id选择器
    通过id名来选择元素,元素的id名称不能重复,所以一个样式设置项只能对应于页面上一个元素,
    不能复用,一个id只能应用于一个元素,id名一般给程序使用,所以不推荐使用id作为选择器。
    格式:#id名{}
    #box{color:red} ....
  • 4、层级选择器
    主要应用在选择父元素下的子元素,或者子元素下面的子元素,
    可与标签元素结合使用,减少命名,同时也可以通过层级,防止命名冲突。
    即使有相同的子元素命名,但是在不同的父类下面,这样冲突就避免了
    格式:.类名 子标签名{}
    .类名 .子类名{}
    .box span{color:red}
    .box .red{color:pink}
    .red{color:red} .... ​​....​​
....
  • 5、 组选择器
    多个选择器,如果有同样的样式设置,可以使用组选择器。
    格式:.类名, .类名, .类名{}
    .box1,.box2,.box3{width:100px;height:100px}
    .box1{background:red}
    .box2{background:pink}
    .box2{background:gold} .... .... ....
  • 6、伪类及伪元素选择器
    常用的伪类选择器有hover,表示鼠标悬浮在元素上时的状态,
    伪元素选择器有before和after,它们可以通过样式在元素中插入内容。
    格式:.类名:
    .box1:hover{color:red}
    .box2:before{content:‘行首文字’;}
    .box3:after{content:‘行尾文字’;} .... .... ....

6. css盒子模型

  • 盒子模型解释
    元素在页面中显示成一个方块,类似一个盒子,CSS盒子模型就是使用现实中盒子来做比喻,
    帮助我们设置元素对应的样式。把元素叫做盒子,设置对应的样式分别为:
    盒子的宽度(width)
    盒子的高度(height)
    盒子的边框(border)
    盒子内的内容和边框之间的间距(padding)
    盒子与盒子之间的间距(margin)
    盒子模型示意图如下:012_盒子模型示意图.png
  • 盒子模型实际尺寸
    盒子的width和height设置的是盒子内容的宽和高,
    不是盒子本身的宽和高,盒子的真实尺寸计算公式如下:
    盒子宽度 = width + padding左右 + border左右
    盒子高度 = height + padding上下 + border上下
  • 盒模型使用技巧及相关问题
  • margin相关技巧
    1、设置元素水平居中: margin:x auto;
    2、margin负值让元素位移及边框合并
  • 外边距合并
    外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。
    合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。
    解决方法如下:
    1、使用这种特性
    2、设置一边的外边距,一般设置margin-top
    3、将元素浮动或者定位
  • margin-top 塌陷
    在两个盒子嵌套时候,内部的盒子设置的margin-top会加到外边的盒子上,
    导致内部的盒子margin-top设置失败,解决方法如下:
    1、外部盒子设置一个边框
    2、外部盒子设置 overflow:hidden
    3、使用伪元素类:
  • 盒子模型使用直接参考案例

7. css元素溢出

  • css元素溢出: 比如,盒子固定了尺寸(实际是固定的的内容尺寸),但是文字内容太多,
    多余的文字内容就会给定的尺寸以外,文字内容尺寸固定,实际的盒子尺寸也就固定了
    多余的文字内容就会溢出到盒子外面
  • 当子元素的尺寸超过父元素的尺寸时,需要设置父元素显示溢出的子元素的方式,
    设置的方法是通过overflow属性来设置。
  • overflow的设置项:
    1、visible 默认值。内容不会被修剪,会呈现在元素框之外。
    2、hidden 内容会被修剪,并且其余内容是不可见的,此属性还有清除浮动、清除margin-top塌陷的功能。
    3、scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。不管内容是否溢出,都会显示滚动条。
    4、auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。自动判断内容是否溢出,溢出才加滚动条。
    5、inherit 规定应该从父元素继承 overflow 属性的值。

8. 块元素、内联元素、内联块元素

  • 元素就是标签,布局中常用的有三种标签,
    块元素、内联元素、内联块元素,了解这三种元素的特性,
    才能熟练的进行页面布局。
  • 块元素
    块元素,也可以称为行元素(比如div盒子,块元素会占一行,因此都是自动换行排列),
    布局中常用的标签如:div、p、ul、li、h1~h6、dl、dt、dd等等都是块元素,
    它在布局中的行为:
    1、支持全部的样式
    2、如果没有设置宽度,默认的宽度为父级宽度100%(比如div下面的div)
    3、盒子占据一行、即使设置了宽度
  • 内联元素
    内联元素,也可以称为行内元素,布局中常用的标签如:a、span、em、b、strong、i等等都是内联元素,
    它们在布局中的行为:
    1、支持部分样式(不支持宽、高、margin上下、padding上下)
    2、宽高由内容决定
    3、盒子并在一行
    4、代码换行,盒子之间会产生间距
    5、子元素是内联元素,父元素可以用text-align属性设置子元素水平对齐方式
    6、内联元素直接设置text-align无效,上面方法可以水平居中,实际开发先display转换为块元素,然后text-align:center
    解决内联元素间隙的方法
    1、去掉内联元素之间的换行
    2、将内联元素的父级设置font-size为0,内联元素自身再设置font-size
  • 内联块元素(行内块元素)
    内联块元素,也叫行内块元素,是新增的元素类型,现有元素没有归于此类别的,
    img和input元素的行为类似这种元素,但是也归类于内联元素,
    我们可以用display属性将块元素或者内联元素转化成这种元素。
    它们在布局中表现的行为:
    1、支持全部样式
    2、如果没有设置宽高,宽高由内容决定
    3、盒子并在一行
    4、代码换行,盒子会产生间距
    5、子元素是内联块元素,父元素可以用text-align属性设置子元素水平对齐方式。
  • 这三种元素,可以通过display属性来相互转化,
    不过实际开发中,块元素用得比较多,
    所以我们经常把内联元素转化为块元素,少量转化为内联块,
    而要使用内联元素时,直接使用内联元素,而不用块元素转化了。
  • display属性-元素类型相互转换
    display属性是用来设置元素的类型及隐藏的,常用的属性有:
    1、none 元素隐藏且不占位置
    2、block 元素以块元素显示
    3、inline 元素以内联元素显示
    4、inline-block 元素以内联块元素显示

9. 浮动

  • 浮动特性
    1、浮动元素有左浮动(float:left)和右浮动(float:right)两种
    2、浮动的元素会向左或向右浮动,碰到父元素边界、其他元素才停下来
    3、相邻浮动的块元素可以并在一行,超出父级宽度就换行
    4、浮动让行内元素或块元素自动转化为行内块元素(此时不会有行内块元素间隙问题)
    5、浮动元素后面没有浮动的元素会占据浮动元素的位置,没有浮动的元素内的文字会避开浮动的元素,形成文字饶图的效果
    6、父元素如果没有设置尺寸(一般是不设置高度),父元素内整体浮动的元素无法撑开父元素,父元素需要清除浮动
    7、浮动元素之间没有垂直margin的合并(margin-top不存在塌陷问题,垂直方式不会自动合并,会两个间距相加)
  • 浮动注意:
    一个大盒子中的小盒子最好同时给定浮动,可以左浮动也可以有浮动,
    比如一个大盒子有三个小盒子,第一个和第二个左浮动,第二个在给定margin就可以放在中间
    最后一个盒子给定右浮动,就可以靠右
    如果,大盒子中的有一个小盒子没有给定浮动,小盒子就会从大盒子左上角开始排列,占据一行,
    给定浮动的小盒子,如果也是靠近左上角,会浮动在为给定浮动盒子的上层,会形成覆盖
    - 参考04-web中index.html 部分,如果删除搜索框的fl左浮动,
    搜索框就会跑到左上角,但是由于不是浮动元素,搜索框出现了margin-top塌陷,上边距设置不会生效
  • 清除浮动
    1、父级上增加属性overflow:hidden
    2、在最后一个子元素的后面加一个空的div,给它样式属性 clear:both(不推荐)

    3、使用成熟的清浮动样式类,伪类元素,clearfix属性加在父元素class属性上
    .clearfix:after{
    content: ‘’;
    display: table;
    clear: both;
    }
  • 查看案例035

补充:公共样式类clearfix

  • 清除margin-top塌陷bug的伪类元素方法:
    /伪类,在小盒子前面插入空元素,类似于方法1设置边框/
    .clearfix:before{
    content: “”;
    display: table;
    }
  • 清除margin-top塌陷和清除父元素浮动合并可以写在一起,下面是完整的写法
    .clearfix:after,.clearfix:before{content: “”;display: table;}
    .clearfix:after{clear:both;}
    .clearfix{zoom:1;}
    使用:

10. 定位

  • 文档流
    文档流,是指盒子按照html标签编写的顺序依次从上到下,从左到右排列,
    块元素占一行,行内块元素在一行之内从左到右排列,
    先写的先排列,后写的排在后面,每个盒子都占据自己的位置。
  • 关于定位
    我们可以使用css的position属性来设置元素的定位类型,position的设置项如下:
    1、relative 生成相对定位元素,(用的少)
    元素所占据的文档流的位置保留,
    元素本身相对自身原位置进行偏移。
    2、absolute 生成绝对定位元素,
    元素脱离文档流,不占据文档流的位置,可以理解为漂浮在文档流的上方,
    相对于上一个设置了定位的父级元素来进行定位,如果找不到,则相对于body元素进行定位。
    3、fixed 生成固定定位元素,
    元素脱离文档流,不占据文档流的位置,
    可以理解为漂浮在文档流的上方,相对于浏览器窗口进行定位。
4、static 默认值,没有定位,元素出现在正常的文档流中,相当于取消定位属性或者不设置定位属性。
5、inherit 从父元素继承 position 属性的值。
  • 定位元素的偏移
    定位的元素还需要用left、right、top或者bottom来设置相对于参照元素的偏移值。
  • 定位元素层级
    定位元素是浮动的正常的文档流之上的,可以用z-index属性来设置元素的层级
  • 定位元素特性
    绝对定位和固定定位的块元素和行内元素会自动转化为行内块元素(内联块元素)

11. background属性

  • 属性解释
  • background属性是css中应用比较多,且比较重要的一个属性,它是负责给盒子设置背景图片和背景颜色的,
    background是一个复合属性,它可以分解成如下几个设置项:
    background-color 设置背景颜色
    background-image 设置背景图片地址
    background-repeat 设置背景图片如何重复平铺
    background-position 设置背景图片的位置
    background-attachment 设置背景图片是固定还是随着页面滚动条滚动
background-position的设置,可以在水平方向设置“left”、“center”、“right”,
在垂直方向设置“top”、“center”、“bottom”,除了设置这些方位词之外,
还可以设置具体的数值
  • 实际应用中,我们可以用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”是设置background-attachment,
    各个设置项用空格隔开,有的设置项不写也是可以的,它会使用默认值。