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;

    1. 一行里面可以显示多个
    2. 无法设置宽高
    3. 大小由内容来决定

      行内元素:
      a span b u i s strong em ins del
      
  • 块级元素:display:block;

    1. 独占一行
    2. 可以设置宽高
    3. 默认宽度一整行

      块级元素:
      p h1-h6 div ul ol li dl dt dd
      
  • 行内块级元素:display:inline-block;

    1. 可以设置宽高
    2. 一行内可以显示多个

      行内块级元素:
      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,那么盒子会以盒子原来自己的位置偏移

  • 注意:

    1. 相对定位是相对于自己原来的位置
    2. 相对定位后的元素还在页面上占据位置(没有脱离标准流)

绝对定位

  • 代码:position:absolute;
  • 使用:

    position:absolute;
    left:0;
    top:0;
    // right:0;
    // bottom:0;
    
  • 特点:

    1. 如果设置绝对定位的元素没有父元素,那么这个元素相对于body来定位
    2. 如果设置绝对定位的元素有父元素,但是父元素没有定位,那么这个元素还是相对于body来定位
    3. 如果设置绝对定位的元素有父元素,而且父元素有定位(非static),那么这个元素是相对于父元素来定位
    4. 绝对定位的元素不在页面占据位置,即脱离了标准流

固定定位

  • 代码:position:fixed;
  • 使用:

    position:fixed;
    left:0;
    top:0;
    // right:0;
    // bottom:0;
    
  • 特点:

    1. 不管页面有多大,永远相对于浏览器的边框定位
    2. 固定定位的元素脱离了标准流,不在页面占位置

子绝父相

子元素用绝对定位,父元素用相对定位

居中

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;
- 浮动
- 绝对定位和固定定位 




 

posted @ 2017-05-31 18:48  我叫睡不醒  阅读(163)  评论(0编辑  收藏  举报