CSS基础

作者: hmj1993 | 来源:发表于2018-04-18 16:32 被阅读17次

概念

CSS指层叠样式表(级联样式表),作用是用来美化html标签

书写位置

<head>
<style type="text/css">
//样式代码
</style>
</head>

选择器

选择器是一个选择谁的过程

  • 基础选择器
  1. 标签选择器
标签{
属性:值;
}
  1. 类选择器
.自定义类名{
属性:值;
}

特点:谁调用,谁生效
一个标签可以多个类选择器
多个标签可以调用同一个类选择器
命名规则:不能用纯数字或者数字开头来定义类名
不能使用特殊符号(_除外)来定义类名
不推荐使用汉字来定义类名
不推荐使用标签名,属性值,属性来定义

  1. id选择器
#自定义类名{
属性:值;
}

特点:谁调用,谁生效
一个标签只能调用一个id选择器
一个id选择器在一个页面只能调用一次

  1. 通配符
*{
属性:值;
}
  • 复合选择器
  1. 交集选择器
标签+类/id选择器{
属性:值;
}

特点:既是某个标签,而且这个标签调用了类/id选择器

  1. 后代选择器
选择器+空格+选择器{
属性:值;
}

后代选择器的基本要求:包含/嵌套关系
特点:父在前,子在后
无限制隔代
只要能代表这个标签,可以是标签选择器,类选择器,id选择器自由组合

  1. 子代选择器
选择器>选择器{
属性:值;
}

特点:选择的是直接下一代

  1. 并集选择器
选择器,选择器,选择器{
属性:值;
}

文本元素

  • 属性
    1.1 font-size:文字大小
    1.2 font-weight :文字粗细 100-900 其中700为加粗;不推荐使用font-weight:bold;
    1.3 font-family:文字字体,如微软雅黑
    1.4 font-style:文字样式,normal正常(默认),italic斜体
    1.5 line-height:行高
    1.6 color:文本颜色(前景色)
    1.7 background-color:背景色
    1.8 text-align:内容的水平对齐方式,图片也适用,left/right/center
    1.9 text-indent:首行缩进,通常为2em

  • 文本属性连写
    font:italic 700 16px/40px 微软雅黑;(最好按照这个顺序书写属性值,其中连写时font-size和font-family必写)

  • font-family的表达方式
    1.直接写中文名称,如微软雅黑,宋体,黑体
    2.写字体的英文名称,如microsoft yahei,SimSun,SimHei
    3.unicode编码,如/5FAE/8F6F/96C5/9ED1,/5B8B/4F53,/9ED1/4F53,获取方法为在console面板中输入escape("XXX")即可获取,把获取到的值中’%u‘改为’/‘

样式表书写位置

  • 内嵌式写法
<head>
  <style type='text/css'>
    样式表内容
  <style>
</head>
  • 外链式写法
<head>
<link rel='stylesheet' href='css文件路径'>
</head>
  • 行内样式表
    <p style='color:red;font-size:20px;'>...</p>

  • 三种写法特点:
    内嵌式样式:只作用于当前文件,没有真正实现结构表现分离;
    外链式写法:作用范围是当前站点,范围广,真正实现了结构表现分离;
    行内样式表:作用范围仅限于当前标签,范围小,结构表现混在一起,不推荐使用。

标签分类(显示方式)

  • 块元素
    典型代表:div,h1-h6,p,ul,li
    特点:独占一行;可以设置宽高;嵌套(包含)下,子块元素宽度(没有定义的情况下)和父块元素宽度默认一致。

  • 行内元素
    典型代表:span,a,strong,em,del,ins
    特点:在一行上显示;不能直接定义宽高;宽高默认根据内容撑开

  • 行内块元素(内联元素)
    典型代表:img,input
    特点:在一行上显示;可以设置宽高

  • 块元素转行内元素:
    display:inline;不能再设置宽高

  • 行内元素转块元素:
    display:block;可以设置宽高

  • 块和行内元素转行内块元素:
    display:inline-block;在一行上显示并且可以设置宽高

css三大特性:

  • 层叠性
    当多个样式作用于同一个(同一类)标签时,样式发生了冲突,总是执行写在下面的样式
  • 继承性
    继承性发生的前提是包含(嵌套)关系
    文字颜色,文字大小,字体,文字粗细,文字样式,行高可以继承,即文字的所有属性都可以继承
    特殊情况:
    h系列不能继承文字大小,
    a标签不能继承文字颜色
  • 优先级
    默认样式<标签选择器<类选择器<id选择器<行内样式<!important
    ==>>0<1<10<100<1000<1000以上
    优先级的特点
    1.继承的权重为0
    2.权重会叠加

链接伪类

a:link{属性:值;}<==>a{属性:值;}效果是一样的,链接的默认状态
a:visited{属性:值;} 链接访问之后的状态
a:hover{属性:值;}鼠标放到链接上显示的状态
a:active{属性:值;}链接激活的状态,即鼠标放着不松手
:focus{属性:值;}获取焦点
label for id(获取光标焦点)
<label for="...">***</label><input type='text' id='...'>
注意:如果四个链接伪类都使用,按顺序书写。

文本修饰

text-decoration 默认为none,下划线underline ,删除线line-through

背景属性

  1. background-color 背景颜色
  2. background-image 背景图片url("")
  3. background-repeat 背景平铺 no-repeat/repeat(默认)/repeat-x/repeat-y
  4. background-position背景定位left/right/center/top/bottom
    当方位值只写一个的时候,另外一个值默认居中;
    当写两个方位值的时候,顺序没有要求
    写两个具体值的时候,如20px 30px,第一个值代表水平方向距左边框的距离,第二个值代表垂直方向距上边框的距离
  5. background-attachment 背景是否滚动scroll (默认)/fixed
    如果为fixed,position是相对浏览器的;如果为scrol,position是相对父标签的

背景属性的连写

background:red url("") no-repeat bottom fixed;
连写的时候没有顺序要求,url为必写项

行高

浏览器默认文字大小:16px
行高:基线与基线之间的距离即文字高度➕上下边距
基线:一段文字内容中底部最高的底线
下边距:文本盒子的最下面
上边距:文本盒子的最上面
顶线:文字内容的最上面
底线:文字内容的最下面
一行文字行高和父元素高度一致时,垂直居中显示

行高的单位

行高单位 文字大小 行高值
px 20px 20px
em 20px 40px
% 20px 30px
2 20px 40px

总结:
单位除了像素以外,其余单位情况下行高都是与文字大小乘积

父元素行高单位 父元素文字大小 子元素文字大小 子盒子行高值
40px 20px 30px 40px
2em 20px 30px 40px
150% 20px 30px 30px
2 20px 30px 60px

总结:
不带单位时,行高是和子元素文字大小相乘,em和%的行高是和父元素文字大小相乘,行高以像素为单位,就是定义的行高值
推荐行高使用像素为单位

盒子模型

作用:页面布局

  • border:边框
    border-top-style线型solid(实线)/dotted(点线)/dashed(虚线)
    border-top-color线的颜色
    border-top-width线的宽度
    border-top:5px solid red;(连写特点:无顺序要求,但是线型不能少)
    border:5px solid red;
    border:0 none;(input标签去除原始边框)
    outline-style:none;(input focus状态时去除轮廓线)

  • padding:内边距
    padding-left/padding-right/padding-top/padding-bottom
    连写:padding:20px;上下左右都是20px;
    padding:20px 30px;上下20px,左右30px;
    padding:10px 20px 30px;上10px ,左右20px,下30px;
    padding:10px 20px 30px 40px;上10px 右20px 下30px 左40px;
    内边距影响盒子大小:
    内边距会撑大盒子,会影响盒子的宽度

  • margin:外边距,盒子和盒子之间的距离
    margin-left/margin-right/margin-top/margin-bottom
    连写:margin:20px;上下左右都是20px;
    margin:20px 30px;上下20px,左右30px;
    margin:10px 20px 30px;上10px ,左右20px,下30px;
    margin:10px 20px 30px 40px;上10px 右20px 下30px 左40px;

  • 垂直方向外边距合并:
    垂直方向的两个盒子,如果都设置了垂直方向外边距,取得是设置的比较大的值。

  • 外边距塌陷
    嵌套的盒子,直接给子盒子设置垂直方向的外边距,会发生外边距塌陷
    解决方法:
    1.给父盒子设置边框(不推荐使用)
    2.给父盒子设置overflow:hidden;(bfc :格式化上下文)

  • 盒子的宽度=定义的宽度+左右边框的宽度+左右内边距的宽度。
    嵌套/包含的盒子如果子盒子没有定义宽度,给子盒子设置左右内边距且内边距小于父盒子的宽度,不会撑大盒子,但是如果左右内边距大于父盒子宽度,不会撑大盒子,自己会变大

边框合并(table的属性)

border-collapse:collapse;

行内元素可以定义左右的内外边距,上下会被忽略(不起作用)。
行内块可以定义内外边距。

文档流(标准流)

元素自上而下,自左而右。块元素独占一行,行内元素在一行上显示,碰到父元素的边框换行

浮动布局

float: left/right;

  • 特点:
    1.元素浮动之后不占据原来的位置(脱标);
    2.浮动的盒子在一行显示;
    3.行内元素浮动之后转为行内块元素(不建议使用,因为脱标了,最好使用display)

  • 浮动的作用
    1.文本绕图
    2.制作导航
    3.网页布局

  • 清除浮动
    1.当父盒子没有定义高度,嵌套的盒子浮动之后,下边的元素发生未知错误,会顶上去;
    2.清除浮动不是不用浮动,而是清除浮动产生的不好的影响;
    3.清除浮动的方法:
    clear:left/right/both
    工作中最常用的是clear:both;
    3.1 额外标签法:在最后一个浮动元素后添加标签(不推荐使用,因为需要添加很多额外的标签)
    <div style=“clear:both;”></div>
    3.2 给父级元素使用格式化上下文:overflow:hidden;(不推荐使用,因为当如果有内容在盒子之外就会被剪裁,不能使用)
    3.3 给浮动元素的父元素添加伪元素清除浮动

.clearfix:after{
content:"."/" ";
display :block;
height:0;
line-height:0;
visibility:hidden;
clear:both;
}
//为了兼容ie浏览器,加上以下代码
.clearfix{
zoom:1;
}

css初始化

为了考虑到浏览器的兼容问题,其实不同浏览器对有些标签的默认值是不同的,如果没有对css初始化,往往会出现浏览器之间的页面差异。

  • overflow:
    1.visible(默认,内容不会被修剪,内容会呈现在元素框之外)
    2.hidden(元素框之外的会被修剪)
    3.scroll(超出的内容被藏起来,需要滚动显示,不管有没有超出,都会显示滚动条)
    4.auto(内容超出s才会显示滚动条,反之不会)

定位

position

  • 静态定位position:static;:(默认,就是文档流/标准流)
    方向left/right/top/bottom
    left:100px;
  • 绝对定位position:absolute;
    特点:
    1.元素使用绝对定位之后,不占据原来的位置(脱标);
    2.元素使用绝对定位,位置从浏览器出发;
    3.嵌套的盒子,父盒子没有使用定位,子盒子绝对定位,子盒子的位置从浏览器出发;
    4.嵌套的盒子,父盒子子盒子都使用了绝对定位,子盒子的位置从父盒子出发;
    5.给行内元素使用了绝对定位,会变成行内块元素(不推荐使用,最好使用display:inline-block;)
    z-index:调整元素的层叠顺序,默认值0-999,值越大,元素越在上面
  • 相对定位position:relative;
    特点:
    1.使用相对定位,位置从自身出发;
    2.没有脱标,还占据原来的位置;
    3.⭐️子绝父相(父元素相对定位,子元素绝对定位,不使用父元素绝对定位是因为父元素会脱标,下面的元素会顶上去),子元素的位置会从父元素出发;4.行内元素使用相对定位不能转成行内块元素。
  • 固定定位position:fixed;
    特点:
    1.固定定位之后,不占据原来的位置,会脱标;
    2.元素使用固定定位之后,位置从浏览器出发;
    3.行内元素使用固定定位之后会变成行内块元素(不推荐使用,因为会脱标,最好使用display:inline-block;)。

定位的盒子居中显示

1.margin:0 auto;只能让标准流的盒子居中;
2.定位的盒子居中(脱标),先向右走父元素盒子的一半,再向左走子盒子宽度的一半

left:50%;
margin-left:-width/2.0px;//(当前元素宽度的一半,向右为正数,向左为负)

标签包含规范

1.div可以包含所有的标签
2.p标签不能包含div,h1-h6等块标签
3.h1可以包含p,div等标签
4.行内元素尽量包含/嵌套行内元素
5.行内元素不要包含块元素

规避脱标流

1.尽量使用标准流
margin-left:auto;将盒子左侧充满,代替浮动float:right
2.标准流解决不了的时候用浮动
3.浮动解决不了用定位

图片和文字垂直居中对齐

vertical-aligninline-block效果最好,默认属性是vertical-align:baseline;
给图片设置vertical-align:middle;可以让图片和文字垂直对齐;
vertical-align的其余值:top/bottom等

css可见性

overflow:hidden;溢出隐藏
visibility:hidden;隐藏元素,但是还占据原来的位置
display:none;隐藏元素,不占用原来的位置
display:block;元素可见
display:none/block常配合js使用

css之内容移除(写了文字但是又不需要被看见,网页优化)

1.使用text-indent,如

a{
display:inline-block;
text-indent:-5000em;
}

2.使用overflow:hidden,如

div{
width:300px;
height:0px;
padding-top:100px;
over-flow:hidden;
}

css精灵图

属性选择器

input[type=text][class]

emmet语法(插件)

相关文章

网友评论

    本文标题:CSS基础

    本文链接:https://www.haomeiwen.com/subject/bnophftx.html