css--基础

### 图片格式
- JPEG
    - 支持颜色多. 可以压缩. 不支持透明
    - 一般显示颜色丰富的图片可以使用jpeg
- GIF
    - 支持的颜色少. 支持简单的透明. 支持动态图
    - 一般显示单一颜色的图片或动图
- PNG
    - 支持的颜色多. 支持复杂的透明
    - 可以用来显示颜色丰富,透明度复杂的图片
- 图片格式选择原则
    - 效果一致 选择小的
    - 效果不一致 选择效果好的  

## CSS样式
- CSS负责页面的样式 (表现) 
- CSS又叫做层叠样式表

### 内联样式
- 将样式编写到标签style属性中称之为内联样式
- 内联样式只对当前标签起作用
- 缺点:
    - 不方便复用
    - 会造成结构和表现的耦合
- 例子:

        <p style="color:red;font-size:60px;">测试</p>


### style标签
- 可以将样式表编写到head中的style标签里
- 然后通过CSS选择器来选中指定的元素.并为其设置样式
- 优点:
    - 可以同时为多个相同标签设置样式
    - 方便后期维护
    - 使结构和表现进一步分离
- 缺点:
    - 只能在当前的页面中使用
- 例子:
                 
        <style type="text/css">
            p{
                 color:red;
                 font-size:60px;
              }
        </style>      

### 外部的css文件
- 通过link标签引入到当前页面中
- ````<link rel="stylesheet" type="text/css" href=""/>````
- 优点:
    - 可以在不同的页面中同时应用相同的CSS样式
    - 使结构和表现完全分离
    - 方便后期的维护

## CSS基本语法
- 选择器
    - 通过选择器选中页面中指定的元素
    - 选择器后的声明块样式将会应用到这个元素上
- 声明块 
    - 使用大括号表示
    - 名值对结构
    - 样式名和值之间用冒号连接.以分号结束 
- 选择器 声明块
- ````p {color:red}````
- CSS注释: /**/

##### 块元素 (block) 
- 块元素无论大小. 都会独占页面一行
- 一般页面使用块元素进行布局
- 块元素中会包含内联元素
- p元素中不能任何的块元素
- a元素中可以包含任何元素. 除了a本身
- 块元素代表 --> div元素

##### 内联元素 (inline)
- 内联元素只会占用自身大小的位置
- 使用内联元素选中文本来为其设置样式
- **内联元素不可以设置宽高(与块元素最大的区别)**
- 内联元素代表 --> span元素

### 样式的继承
- 祖先元素上设置的样式同时也会应用到后代元素上
- 继承实际上简化了开发. 但不是所有的样式都会被继承
- 可继承类型:
    -  字体系列
    -  文本系列
    -  color
    -  visibility 元素可见性
    -  表格布局属性
    -  列表布局属性
    -  生成内容属性
    -  光标属性
    -  页面样式属性
    -  声音样式属性
- 不可继承类型:
    -  display
    -  vertical-align
    -  text-decoration
    -  text-shadow
    -  盒模型相关
    -  背景相关
    -  定位相关
    -  宽高相关

## CSS 选择器
- 元素选择器
    - 根据标签名选中元素
    - 语法: 标签名 {}
    - p {}
- ID选择器
    - 根据元素的ID属性值选中元素  
    - 语法: #id {}
    - #box {}
- 类选择器
    - 根据元素的class属性值选中元素
    - 语法: .class {}
    - .box1 {}
- 并集选择器
    - 同时选中多个选择器对应的元素. 以逗号隔开
    - 选择器1 , 选择器2, 选择器3 {}
    - p , #box , .box1 {}
- 交集选择器
    -  层层筛选出相交符合的具体选择器元素. 中间没有任何分隔
    -  标签名选择器1选择器2
    -  p.box1 {} 
- 通配选择器
    - 可以选中页面所有的元素
    - 性能差
    - * {} 
- 后代元素选择器
    - 选中指定祖先元素的指定后代
    - 祖先元素 后代元素 {}
    - div span{}
    - 以空格隔开. 越短性能越好
- 子元素选择器
    - 选中父元素的指定子元素
    - 父元素>子元素 {}
    - p>.class{}
- 伪类选择器
    - 伪类表示元素所处的一种特殊状态
    - a:link 未访问过的普通链接
    - a:visited 访问过的链接 
    - a:hover 鼠标移入时的链接
    - a:active 鼠标点击时的链接

### 选择器的优先级
- 当使用不同的选择器为同一个选择设置相同的样式时, 此时样式可能会发生冲突
- 优先级
    - 内联样式 1000
    - ID选择器 100
    - 类和伪类选择器 10
    - 元素选择器 1
    - 通配选择器 0
    - 继承的样式 无
    - !important 最高优先级
- 如果在样式最后添加!important 则获取最高的优先级
- 计算优先级时, 先将所有选择器优先级相加再比较. 相加不会超过选择器的最大数量级
- 如果两个选择器优先级一致. 则谁在后面就用谁

### 元素之间的关系
- 父子元素
- 祖先后代元素
- 兄弟元素


----------

### 单位
##### 长度单位
- PX 像素
    - 固定值. 开发用的最多单位 
- % 百分比
    - 使用百分比的值会自动根据父元素的属性来计算  
    - 在自适应页面中会大量使用百分比
##### 颜色单位
- 颜色单词
- RGB值 
- **十六进制的RGB值** 
- rgba 带透明度的十六进制的RGBA值


## 盒子模型 (box Model)
- CSS将网页中每一个元素都设计成一个矩形的盒子
- 每一个盒子从内到外都包括如下几个内容:
    - 内容区 (content)
    - 内边距 (padding)
    - 边框 (border)
    - 外边距 (margin)


##### 内容区 content
- 内容区相当于盒子的内部的空间. 所有的内容和子元素都在内容区中
- 相关属性:
    - width 设置内容区宽度
    - height 设置内容区高度

##### 内边距 padding
- 内容区和边框之间的距离
- 修改内边距会影响盒子可见大小
- 可有四个方向的内边距
    - padding-top
    - padding-right
    - padding-bottom
    - padding-left
- 简写属性
    - padding: 上 右 下 左
    - padding: 上下 右左   
- 背景会自动延伸到内边距上

##### 边框 border
- 边框是盒子的边缘
- 修改边框会影响盒子可见大小
- 修改边框至少要设置三个样式:
    - border-width 
    - border-color 
    - border-style
- 简写属性
    - border : color width style(solid)   
    - 也可指定具体某一边的边框 border-(right bottom top left)
- 盒子的可见框大小由内容区、内边距和边框共同决定

##### 外边距 margin
- 外边距表示当前盒子和其他盒子之间的距离
- 外边距不会影响盒子的可见大小
- 可有四个方向的外边距
    - margin-top
    - margin-right
    - margin-bottom
    - margin-left
- 外边距可设置负值. 如果为负值,元素会向相反方向移动 
- 设置盒子居中: ````margin{0 auto}```` 
- 外边距特点:
    - 由于元素在页面中默认是靠左靠上显示
    - 默认情况下,修改左上外边距会影响当前元素的位置
    - 而修改右下外边距时, 会影响其他元素的位置
- 外边距重叠:
    - 水平方向外边距相邻不会重叠而是求总和
    - 垂直方向相邻的外边距会发生重叠的现象  
    - 兄弟元素相邻外边距会取最大值
    - 父子元素相邻外边距会传递给父元素
    - 可使用padding或者border来解决

##### 内联元素盒模型
- 内联元素不可以设置width和height
- 内联元素支持水平方向内边距. 可以设置垂直方向内边距不影响布局
- 内联元素支持水平方向边框. 可设置垂直方向边框不影响布局
- 内联元素支持水平方向外边距. 不支持垂直方向的外边距


## CSS部分属性设置

##### dispaly
- 用来设置元素的显示类型
- 可选值
    - none 元素不会在页面中显示并且不会占据页面位置
    - block 元素作为块元素显示
    - inline 元素作为内联元素显示
    - inline-block 元素作为行内块元素显示

##### visibility
- 用来设置元素显示状态
- 可选值
    - visible 默认值. 元素在页面中可见
    - hidden 元素在页面中隐藏.但会占据页面位置
    
##### overflow 
- 设置元素如何处理溢出内容
- 可选值
    - visible 默认值. 溢出内容会在父元素以外位置显示
    - hidden 移除内容会被剪裁不会显示
    - scroll 会为父元素添加水平和垂直双向滚动条
    - auto 根据需要自动添加滚动条
 
##### opacity 
- 设置元素透明
- 样式值是0-1之间的值
- 1 表示完全不透明
- 0 表示完全透明


##### 清除默认样式
    *{
        margin:0
        padding:0
    }     

    //清除ul列表的项目符号
    list-style:none


#### CSS 文档流
- 文档流指的是网页中的一个位置. 文档流可以说是网页的基础.默认情况下所有元素都在文档流中
- 块元素在文档流中的特点:
    - 块元素在文档流中自上向下垂直排列
    - 块元素在文档流中默认宽度是父元素的100%. 
    - 默认高度被内容(子元素)撑开
- 内联元素在文档流中的特点:
    - 内联元素在文档流中自左向右水平排列
    - 如果不足一行容纳所有元素会另起一行继续水平排列
    - 内联元素在文档流中高度和内容都被内容撑开  

posted @ 2017-08-10 22:46  TTup*  阅读(121)  评论(0编辑  收藏  举报