css基础小总结
css重要知识点
三层分离
- html:页面结构
    - 从语义的角度描述页面结构
- css:页面样式
    - 从样式上修饰结构
- JavaScript:行为
    - 页面交互和动态效果
css三大特性
- 
继承性 > color以及tetx-,font-,line-开头的属性都可以继承 > a标签的颜色无法继承 > h标签的大小无法继承 > div的高度如果不设置由内容决定,如果没有内容,高度为0;div的宽度默认由父元素继承过来
- 
层叠性 权重相同时,后写的样式会覆盖先写的样式
- 
优先级 !important>行内样式>id选择器>类选择器>标签选择器>通配符>继承 *** important属性无法被继承- 
计算组合选择器的权重 (0,0,0,0) (行内样式,id选择器,类选择器,标签选择器) 1000 100 10 1
- 
规则 1. 先看有没有选中,如果选中了,那么以(id数,类数,标签数)来计算权重。谁大听谁的。如果都一样,听后写的为准。 2. 如果没有选中,那么权重是0。如果大家都是0,就近原则。
 
- 
文字
- 
字体连写 font: normal 900 30px/30px "microsoft yahei" 字体样式 字体粗细 字体大小/行高 字体类型
- 
首行缩进 text-indent: 2em;/*em 一个文字的距离*/
- 
文字修饰 text-decoration:none; // 默认,标准文本 text-decoration:underline; // 下划线 text-decoration:linethrough; // 中划线 text-decoration:overline; // 上划线
- 
行高 定义:第一行文字的基线到第二行文字的基线的距离 特点:默认情况下文字就是在自己的那一行垂直居中 应用:使用`line-height`设置行高和容器的高度相等,则文本会在容器中垂直居中 行高单位: px em % 无单位>. 在设置行高时,如果单位是em或者%,那么行高会先计算出结果以后再继承给子元素 
 >. 在设置行高时,如果没有单位,那么行高会先继承给子元素,然后再计算出行高
背景
background:background-color background-image background-repeat background-position; 
background: red;
background: url(xxx.jpg) no-repeat 100px 100px;
- 可以只设置颜色或者图片,但是不能在没有设置图片的情况下直接设置`background-repeat`和`background-position`
元素的显示方式
- 
行内元素: display:inline;- 一行里面可以显示多个
- 无法设置宽高
- 
大小由内容来决定 行内元素: a span b u i s strong em ins del
 
- 
块级元素: display:block;- 独占一行
- 可以设置宽高
- 
默认宽度一整行 块级元素: p h1-h6 div ul ol li dl dt dd
 
- 
行内块级元素: display:inline-block;- 可以设置宽高
- 
一行内可以显示多个 行内块级元素: img input
 
锚伪类
- `a:link`:给a标签设置没有访问过的样式
- `a:visited`:给a标签设置访问过的样式
- `a:hover`:设置鼠标放在**元素**上时的样式
- `a:active`:设置**元素**被点击时的样式
固定顺序:l v h a
盒子模型

注意:
 - 当一个大盒子包含一个小盒子,并且大小盒子都是块级元素,而且小盒子宽是继承于大盒子,那么设置小盒子的padding-left不会改变小盒子的大小
 - `body`标签默认带有`margin:8px;`
 - `p`标签默认带有`margin-top`和`margin-bottom`,值等于`font-size`的大小
 - `h`标签默认带有`margin-top`和`margin-bottom`
 - `ul`标签默认带有`margin-top`和`margin-bottom`以及`padding-left`
外边框的合并现象
如果两个div上下排列,给上面这个div设置margin-bottom,给下面这个div设置margin-top,那么两个margin会发生合并现象,合并后的值会取较大的那个
margin的塌陷现象及解决方案
如果一个大盒子中包含一个小盒子,给小盒子设置margin-top,大盒子会一起向下平移
- 解决方案:
    1. 给大盒子加一个边框(border)
    2. 给大盒子设置`overflow:hiden;`
    3. 设置小盒子浮动
浮动
float: left; //左浮动
float: right; //右浮动
- 浮动后的元素层级比标准流高
- 浮动后的元素显示模式会变成行内块
清除浮动产生的影响
浮动的影响:大盒子不设置高度,而且大盒子中的子盒子全部浮动,则大盒子的高度将不会被撑开
清除浮动:
1. 额外标签法:在浮动的元素后面加一个div,给这个div设置clear:both;
    - 内部标签法:可以撑开父盒子的高度
    - 外部标签法:不能撑开父盒子的高度
2. 给大盒子设置overflow: hidden;
    - 缺点:超出大盒子范围的内容会被裁剪
3. 伪元素清除浮动
    .clearfix:after {
        content:"";
        height: 0;
        line-height: 0;
        display: block;
        visiblity: hidden;
        clear: both;
    }
    .clearfix {
        zoom: 1;/*兼容ie6*/
    }
定位
- 作用:解决盒子与盒子之间的层叠问题
- 
使用: position:absolute; // 设置定位 left:0; // 定位以后距离浏览器左边框的距离 top:0; // 定位以后距离浏览器上边框的距离
静态定位
- 代码:position:static;
- 所有标准流默认都是静态定位
相对定位
- 代码:position:relative;
- 
使用: position:relative; left:0; top:0; // right:0; // bottom:0;
- 
特点:如果设置了相对定位并且设置了 left top right bottom,那么盒子会以盒子原来自己的位置偏移
- 
注意: - 相对定位是相对于自己原来的位置
- 相对定位后的元素还在页面上占据位置(没有脱离标准流)
 
绝对定位
- 代码:position:absolute;
- 
使用: position:absolute; left:0; top:0; // right:0; // bottom:0;
- 
特点: - 如果设置绝对定位的元素没有父元素,那么这个元素相对于body来定位
- 如果设置绝对定位的元素有父元素,但是父元素没有定位,那么这个元素还是相对于body来定位
- 如果设置绝对定位的元素有父元素,而且父元素有定位(非static),那么这个元素是相对于父元素来定位
- 绝对定位的元素不在页面占据位置,即脱离了标准流
 
固定定位
- 代码:position:fixed;
- 
使用: position:fixed; left:0; top:0; // right:0; // bottom:0;
- 
特点: - 不管页面有多大,永远相对于浏览器的边框定位
- 固定定位的元素脱离了标准流,不在页面占位置
 
子绝父相
子元素用绝对定位,父元素用相对定位
居中
margin: 0 auto; /*设置容器水平居中*/
text-align: center; /*设置文本水平居中*/
vertical-align: middle; /*设置图片与文字中线对齐*/
- 如果小盒子在大盒子中要定位并且水平居中,先设置大盒子相对定位,再设置子盒子绝对定位,然后设置子盒子left:50%;再设置子盒子margin-left值为-(小盒子宽度的一半),那么小盒子就会在大盒子中水平居中
    position:absloute;
    left:50%;
    top:0;
    margin-left: -50px;/*此处数值根据实际情况改变*/
- 如果小盒子在大盒子中要定位并且垂直居中,先设置大盒子相对定位,再设置子盒子绝对定位,然后设置top:50%;再设置子盒子margin-top值为-(小盒子高度的一半),那么小盒子就会在大盒子中垂直居中
    position:absloute;
    left:0;
    top:50%;
    margin-top: -50px;/*此处数值根据实际情况改变*/
元素的隐藏
overflow: hiiden; /*超出部分裁剪*/
visiblity: hidden; /*隐藏后还占据位置*/
display: none; /*隐藏后不占位置,使用display: block可以显示出来*/
层级z-index
div {
    position:absolute;
    z-index:5;
}
- z-index仅能在定位元素上奏效(绝对,固定,相对定位)
- 没有定位的元素,不管在HTML中出现的顺序如何,总是在带有定位的元素下方
css初始化
/*css初始化*/
/* 清除标签的默认margin padding*/
html,body,ul,li,dl,dt,dd,h1,h2,h3,p,img,input {
    margin: 0;
    padding: 0;
}
/*清除img的边框*/
img {
    border: 0;
}
/*清除li标签前的小点*/
li {
    list-style: none;
}
/*设置页面统一文字字体和颜色*/
body {
    font-size: 12px;
    color: #434343;
    font-family: "宋体";
    background-color: #FFF;
}
/*清除浮动*/
.clearfix:after {
    content: "";
    height: 0;
    line-height: 0;
    display: block;
    visibility: hidden;
    clear: both;
}
.clearfix {
    zoom: 1;/*兼容ie6*/
}
/*a标签设置*/
a {
    color: #434343;
    text-decoration: none;/*去下划线*/
}
a:hover {
    color: green;
}
/*左浮动*/
.fl {
    float: left;
}
/*右浮动*/
.fr {
    float: right;
}
透明度
- opacity:不透明度
- 
取值:0~1.0之间的小数 opacity:0.5; // 半透明
- 
注意:这个属性ie6不支持 filter:Alpha(opacity=50);// 兼容ie6
圣杯布局
<style>
    .content {
        padding: 0 200px;
        height: 200px;
        min-width: 200px;
    }
    .left {
        width: 200px;
        height: 200px;
        background-color: red;
        float: left;
        margin-left: -200px;
    }
    .right {
        width: 200px;
        height: 200px;
        background-color: yellow;
        float: right;
        margin-right: -200px;
    }
    .center {
        width: 100%;
        height: 200px;
        background-color: green;
        float: left;
        min-width: 200px;
    }
</style>
<div class="content">
    <div class="left"></div>
    <div class="center"></div>
    <div class="right"></div>
</div>
元素显示模式转换的三种方法
- display: inline-block;
- 浮动
- 绝对定位和固定定位 
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号