学习笔记-CSS
学习笔记-CSS

学习笔记-CSS

1.CSS介绍

CSS(Cascading Style Sheets),又称层叠样式表,是一种用来表现HTML标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。


2.CSS学习

1.CSS语法

p为选择器,font-size为属性名,12px为属性值
p {
font-size:12px; /*字号*/
color:blue; /*文字颜色*/
text-align:left /*左对齐*/
font-weight:bold; /*加粗*/
}

2.CSS添加方法:

行内添加法:直接添加到标签内部,仅对当前页面有效
  <body><p style="color:red;">文本</p></body>

内嵌样式:添加在头部,仅对当前页面有效
  <head>
      <style type="text/css">
          p{
              color:red;
          }
      <style>
  </head>

单独文件:可用于不同网页文件,便于维护
  外部样式表文件:style.css
         p{
              color:red;
         }
网页文件:
        <head>
          <link rel="stylesheet" href="css/style.css">
        </head>

优先级:
  多重样式可以层叠,覆盖;遵循就近原则
  行内样式>内嵌样式>链接样式>浏览器默认样式

3.CSS选择器:

标签选择器:
  内嵌样式:
  <style type="text/css">
   body {background-color:#ccc;   /*背景为灰色*/
         text-align:center;
         font-size:12px}
   h1   {font:"黑体";font-size:20px;}
   p    {color:red;font-size:16px;}
   hr   {width:200px}
  </style>

类别选择器:可被多次引用
  css:
      <style type="text/css">
       p    {font-size:12px;}
       .one {font-size:18px;}
       .two {font-size:24px;}
      </style>
  HTML:
      <body>
      <p class="one">类别一</p>
      <p class="one">类别一</p>
      <p class="two">类别二</p>
      <p class="two">类别二</p>
      <p>普通段落中的文字</p>
      </body>

ID选择器:具有唯一性
  css:
      <style type="text/css">
       #one {font-size:18px;}
       #two {font-size:24px;}
      </style>
  HTML:
      <body>
      <p id="one">文字一</p>
      <p id="two">文字二</p>
      <p>普通段落中的文字</p>
      </body>

嵌套声明:
  对段落p内span标签内文本生效
  css:
      <style type="text/css">
          p span{
                  color:red;
          }
      </style>
  HTML:
      <body>
          <p><span>天使投资</span>是投资方式的一种</p>
      </body>

集体声明:
  css:
      <style type="text/css">
          h1,p {
                  color:red;
          }
      </style>
  HTML:
      <body>
          <h1>欢迎访问论坛</h1>
          <p>欢迎访问论坛</p>
      </body>

全局声明:
  对所有元素标签生效
  css:
      <style type="text/css">
          * {
             text-align:center;
          }
      </style>
  HTML:
      <body>
          <h1>欢迎访问论坛</h1>
          <p>欢迎访问论坛</p>
          <h2>欢迎访问论坛</h2>
      </body>

混合:
  多个class选择器混用,用空格分开
  <div class="one yellow left">......</div>

  id和class混用
  <div id="my" class="one yellow left">.......</div>

  id选择器不可以多个同时使用,也不能使用多次,id属性具有唯一性,只能使用
   一次

4.CSS样式(1):文字样式

单位:
  px:像素
  em:字符类型单位,自动适应用户使用的字体,2em--2个字符
  %:百分比;子层会继承父层的属性,父层默认属性乘百分比得子层属性
颜色:
  red,blue,green:颜色名
  rgb(x,x,x):RGB值0-255
  rgb(x%,x%,x%):RGB百分值
  rgba(x,x,x,x):RGB值,透明度.a值:0.0(完全透明)与1.0(完全不透明)
  #rrggbb:十六进制数,红色:#ff0000
文本:
  color:文本颜色,red #f00/rgb(255,0,0)
  letter-spacing:字符间距,2px,-3px
  line-height:行高,14px/1.5em/120%,当height和line-height为同一值时,文
  本垂直居中
  line-align:对齐,center/left/right/justify(两端对齐,左右无空白)
  text-decoration:装饰线,none/overline/underline/line-through(删除线)
                  none可除去超链接下划线
  text-indent:首行缩进,2em
字体:
  font:在一个声明中设置所有的字体属性,font:bold 18px '幼圆'
       有一定顺序,font:斜体 粗体 字号/行高 字体;
  font-family:字体系列,设置字体,font-family:"Microsoft YaHei"
  font-size:字号,14px,120%
  font-style:斜体,italic
  font-weight:粗体,bold

5.CSS样式(2):背景、超链接样式

背景:(空元素需要先定义元素的高度和宽度)
  background-color:颜色,包括颜色名和rgb值
  background-image:url("logo.jpg"),背景图片附超链接地址(相对路径),图
                   片会覆盖背景颜色
  background-repeat:repeat 背景图片填充方式,棋盘格的填充,repeat在水平
                    和垂直方向上填充满整个网页
                    repeat-x  填充一行
                    repeat-y  填充一列
                    no-repeat  一幅很大的背景图片出现只显示一次
  background:颜色 图片 repeat
链接:(:伪类选择器)
  a.link:普通的、未被访问的链接
  a.visited:用户已访问的链接
  a.hover:鼠标指针位于链接的上方悬停
  a.active:链接被点击的时刻,若链接为下载链接,则下载期间一直为活动状态
  有一定顺序,Love&hate,l>v>h>a
css:
  a.link {
          text-decoration:none;
          color:#09f;/*未访问*/
  }
  a.visited {
          text-decoration:none;
          color:#930;/*已访问*/
  }
  a.hover {
          text-decoration:underline;
          color:#03c;/*鼠标悬停*/
  }
  a.active {
          text-decoration:none;
          color:#03c;/*按下鼠标*/
  }

  鼠标悬停放大:
  a {
      font-size:22px;
  }
  a.hover {
      font-size:120%;
  }

6.CSS样式(3)列表和表格:

列表List:(无序列表ul有序列表ol共用样式)
  list-style:所有用于列表的属性设置于一个声明中
  list-style-image:为列表项标志设置图像,即标志位置用图片替代
      list-style-image:url("images/bullet1.gif");   相对路径
  list-style-position:标志的位置
      list-style-position:inside;标记向右缩进到列表区域内
      list-style-position:outside;标记向左回退到列表区域外
  list-style-type:标志的类型,每行列表前的标记
      无序列表ul:
          none:无标记
          disc:默认,标记是实心圆
          circle:标记是空心圆
          square:标记是实心方块
      有序列表ol:
          decimal:标记是数字,默认
          lower-roman:小写罗马数字
          upper-roman:大写罗马数字
          lower-alpha:小写英文字母
          upper-alpha:大写英文字母
          lower-Greek:小写希腊字母
          lower-latin:小写拉丁字母
          upper-latin:大写拉丁字母
表格table:
  表格大小:
    table {
           width:  500px;
           height: 200px;
    }
  表格边框:
    table {
           border:1px solid #eee; /*一个像素宽,实线,灰色*/
    }
    table {
           border-collapse:collapse;
           /*将表格单元框和单元格边框合并,重合在一起*/
    }
  奇偶选择器:
    可将表格隔行添加颜色,便于阅览
    :nth-child(odd|even)  odd关键字表示奇数,even关键字表示偶数
    HTML:
      tr:nth-child(odd) {
          background-color:#EAF2D3;
      }

7.CSS布局与定位:

盒子模型:页面元素的大小,边框,与其他元素的距离
定位机制:文档流,浮动定位,层定位

7.1.盒子模型(1):
概念:页面上区域、图片、导航、列表、段落,都可以是盒子
    content:内容
    height:高度
    width:宽度 border-width:上 下 左 右
    border:边框 border-top/-left/-right/-bottom
    padding:内边距
    margin:外边距
    均为CSS样式的属性
    一个盒子实际宽度、高度:content+padding+border+margin
    <style type="text/css">
    #box {
        width:20px;
    }
    </style>
    ...<div id="box">...
overflow属性:
  当内容溢出盒子框时,overflow属性取值
    hidden:超出部分不可见
    scroll:显示滚动条
    auto:如果有超出部分,显示滚动条
border属性:
    border-width:px, thin, medium, thick
    border-style:dashed(虚线), dotted(点), solid(实线), double(双实线)
    border-color:颜色
    border:width style color
水平分隔线:
    .line {
        height:1px;
        width:500px;
        boder-top:1px solid #e5e5e5;
    }
7.2.盒子模型(2):
对浏览器默认的设置清零:
* {
   margin:0;
   padding:0;
}
取值:px, %(外层盒子的宽度和高度)
  上对应下,左对应右,顺时针
  margin:1px, 1px, 1px, 1px; 上右下左
  margin:1px, 2px, 3px; 省略最后一个,则左则值等于右侧值2px
  margin:1px, 2px; 上下相等,左右相等
  margin:1px; 上下左右相等
      div {
           width:100px;
           height:100px;
           margin:15px 20px 15px 30px;
           border:1px solid red;
      }
margin的合并:垂直方向合并,水平方向不合并,哪个方向高,留下哪个方向的边距
水平居中:
    图片、文字水平居中:text-align:center;
    div水平居中:margin:0 auto;  浏览器自动计算左右边距值
    CSS:
      #newsimglist{
          text-align:center;
          font-size:0;  /*否则图间有空隙*/
      }
      #newsimglist img{
          height:100px;
          width:100px;
          margin-left:5px;
          border:1px solid #0cf;
          padding:5px;
      }
    HTML:
      <div id="newsimglist">
          <img src="images/crisis.jpg">
          <img src="images/crisis.jpg">
          <img src="images/crisis.jpg">
      </div>
7.3.CSS定位机制:
用处:确定盒子位置
文档流flow:
默认定位,从上到下,从左到右
元素分类:block, inline, inline-block
   block:
        独占一行,元素的height, width, margin, padding都可设置
        如:<div>,<p>,<h1>...<h6>,<ol>,<ul>,<table>,<form>
        将a设置为block元素:
        a {
           display:block;
        }
   inline:
        不单独占用一行,width、height不可设置,width就是它包含的文字或图
        片的宽度,不可改变,
        inline元素之间有一个间距问题
        如:<span>,<a>
        将div转化为inline元素:
        div {
             display:inline;
        }
   inline-block元素:
        同时具备inline元素和block元素的特点,不单独占用一行,元素的
        height,width,margin,padding都可设置
        如:<img>
   元素类型转化:display
浮动float:
  左右并列,左边向左浮动,右边向右浮动
  用处:多列布局;图文混排
  float属性:
      left:左浮动
      right:右浮动
      none:不浮动
      <div>float:left<div/>
  情况分析:
      1.当多个box不浮动时每个box单独占据一行,当第一个box向右浮动脱离文
        档流,后面的box则会向上占据box1原有的位置
      2.当宽度足够时,多个box浮动则会排布在同一列,当宽度不够时,后续box
        会跳转到第二行;
        当第一个box高度大于后续box时,跳转时后续box会在第一个box过高而多
        占据的位置之后填补
  clear属性:
      both:清除左右两侧的浮动
      left\right:清除单侧浮动
          用法:使用单侧清除浮动时,可以将多个box都靠一边放置,如靠右,第
               二个box使用clear:right,则两个box都居右显示
              当使用双侧浮动清除,该box单独占据一行
      none:默认值,只在需要移除已指定的清除值时用到层定位layer:
      摆在上面的层可以遮蔽下面的层,使用position属性设定
  position属性:
      static:默认值,没有定位,元素出现在正常的流中,top, bottom, left, 
             right, z-index无效
      fixed:固定定位,相对于浏览器窗口进行定位(坐标原点始终在窗口的左上
            方),不会随浏览器窗口的滚动条滚动而变化,总在视线里的元素
          #fix-box{
              width:200px;
              height:200px;
              border:1px solid red;

              position:fixed;
              left:100px;     /*距离坐标的距离*/
              top:50px;
          }
      relative:相对定位,相对于其直接父元素进行定位
               定位为relative的元素脱离正常的文档流中,但其在文档流中的
               原位置依然存在,如果其下存在static元素,则不会占据其原位 
               置
               relative定位的层总是相对于其直接父元素,无论其父元素是什
               么定位方式
      absolute:绝对定位,相对于static定位以外的第一个父元素进行定位
               定位为absolute的层脱离正常文本流,但与relative的区别:其在
               正常流中的原位置不再存在,static元素会占据其原位置
               对于absolute定位的层总是相对于其最最近的定义为absolute或
               relative的父层,而这个父层并不一定是其直接父层
               对于absolute定位的层,如果其父层中都未定义absolute  
               relative,则其将相对body进行定位
      relative+absolute:
               父元素box1:position:relative;
               子元素box2:position:absolute;
               子元素box2:top,bottom,left,right相对于父元素来进行偏移定
                          位,为负值时可以超出父元素区域
               当box1移动时,box2也会随之移动
z-index:值大在上面
          值很小如-999,则为底层;值很大如999,则为顶层