html,css总结,长期更新

css书写方式4种

  • style

    1    <style></style>
    
  • link 外链式

    1    <link rel="stylesheet" href="xxx.css">
    
  • 导入式

    最不常见

    不等待css加载完毕,而是立即渲染html,所以页面会有素面朝天的时间

    1<style>
    2    @import url(css/css.css);
    3</style>
    
  • 行内式

    只给一个标签使用,牺牲批量设置能力

    1<h2 style="color:red;">
    

display

改变元素的特性

inline-block;inline;block

1  <!-- h1/p/div/span/a/img -->
2  <!-- HTML考虑一个问题: 每个元素在页面当中到底占据多大的空间 -->
3  <!-- 某些元素非常重要: 独占一行 -> 类型: 块级元素(block level): h元素/p/div -->
4  <!-- 某些元素属于内容的一部分: 没有必要独占一行, 其他内容在同一行显示 
5                              -> 类型: 行内级元素(inline level)
6                              -> span/a/img/strong/i
7  -->

text-align

文本居中

1.xx{
2  text-align: center;
3}

块级元素里 ,对文本 和图片都有效。

块级套块级,里面块级剧中

1.xx{
2  margin: 0 auto; 
3}

字体

font-size

1.box{
2  font-size:12px;
3  font-size:2em; /*针对父级2的倍*/
4  font-size: 200%; /*针对父级2的倍*/
5}

font-family

从左边到右边适配找。找到则停止。

1body {
2  font-family: "Microsoft YaHei", "Heiti SC", tahoma, arial, "Hiragino Sans GB", "\5B8B\4F53", sans-serif;
3}

font-weight

1.box{
2  font-weight:700;
3  font-weight:bold;  /*700和bold等价*/
4}

line-height

行高,line-height=height 这样文字就是居中

1.box{
2  line-height:100px;
3  height:100px;
4}

font

 1    .box {
 2      /* 关于字体的属性 */
 3      font-size: 30px;
 4      font-weight: 700;
 5      font-variant: small-caps;
 6      font-style: italic;
 7      font-family: serif;
 8      line-height: 30px;
 9
10      /* 缩写属性 */
11      /* 1.5的行高是相对于font-size的 */
12      font: italic small-caps 700 30px/1.5 serif;
13    }

选择器权重

 1<!DOCTYPE html>
 2<html lang="en">
 3<head>
 4  <meta charset="UTF-8">
 5  <meta http-equiv="X-UA-Compatible" content="IE=edge">
 6  <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7  <title>Document</title>
 8  <style>
 9    div.box {
10      color: red !important; /* 10000 */
11    }
12
13    /* id选择器: 100 */
14    #main {
15      color: orange;
16    }
17
18    /* 类选择器: 10 */
19    .box {
20      color: blue;
21    }
22
23    /* 元素选择器: 1 */
24    div {
25      color: purple;
26    }
27
28    /* 通配选择器: 0 */
29    * {
30      color: yellow;
31    }
32  </style>
33</head>
34<body>
35
36  <!-- 内联样式: 1000 -->
37  <div id="main" class="box one two" style="color: blue;">我是div元素</div>
38
39</body>
40</html>

定位position

标准流static

默认的,position:static 就是标准流

1    .box {
2      display: inline-block;
3      position: static;
4      /* static  是默认的 下面是无效的  */
5      left: 0;
6      top: 100px;
7      bottom: 20px;
8      right: 30px;
9    }

relative;

relative: 相对定位 , 相对原来的位置(最左上角)

固定定位

相对于视口

position: fixed;

绝对定位

position: absolute;

在没有祖先元素定位的情况下, 相对于的是谁? 视口

祖先定位 未必就是relative,也可以是fixed,absolute.

绝对定位的特点

absolute/fixed 就可以任意设置宽高 ,不在汇报宽高 给 上级元素

fixed 也算是绝对定位,只是她永远是相对于视口,而absolute 她则看祖先有没有定位元素。

z-index

仅对定位元素有效,有position

浮动

float和position一样可以脱离标准流。

特点

  • 一旦浮动后,脱离标准流, 定位元素层叠在浮动元素上面

  • 不超出包含块的左右边界

  • 浮动元素之间不能层叠, 另外一个元素已经在那个位置了,后面的只能紧贴着前一个浮动元素(左浮找左浮,右浮找右浮), 如果水平方向剩余的空间不足,浮动元素将向下移动,直到有足够的空间为止。

  • 浮动元素不能和行内级内容层叠,行内级内容将会被浮动元素推出

clear

浮动,不再向父亲元素汇报高度,导致父亲高度塌陷的问题 。如果解决?

清楚浮动。

清楚浮动的目的是让父亲元素计算高度的时候,把浮动子元素也算进去。

  1. 给父亲增加高度
  2. 在父亲最后面增加空的元素,clear:both;
  3. 在父亲增加伪元素
 1    .clear-fix::after{
 2            content: "" ;
 3            clear:both;
 4            display:block;
 5            height:0; /*浏览器兼容性*/
 6            visibility:hidden; /*浏览器兼容性*/
 7    }
 8    .clear-fix{
 9      /* 兼容ie6/ie7 */
10      *zoom: 1;
11    }

flex 布局

开启了 flex 布局的元素叫 flex container

flex container 里面的直接子元素叫做 flex item

当flex container中的子元素变成了flex item时, 具备一下特点:

  • flex item的布局将受flex container属性的设置来进行控制和布局;
  • flex item不再严格区分块级元素和行内级元素;
  • flex item默认情况下是包裹内容的, 但是可以设置宽度和高度;

设置 display 属性为 flex 或者 inline-flex 可以成为 flex container

  • flex: flex container 以 block-level 形式存在
  • inline-flex: flex container 以 inline-level 形式存在
1display: inline-flex;
2display:flex;

flex布局模型

主轴、交叉轴

flex相关的属性

应用在 flex container 上的 CSS 属性

  • flex-flow
  • flex-direction
  • flex-wrap
  • flex-flow
  • justify-content
  • align-items
  • align-content

应用在 flex items 上的 CSS 属性

  • flex-grow
  • flex-basis
  • flex-shrink
  • order
  • align-self
  • flex

flex-direction

flex items 默认都是沿着 main axis(主轴)从 main start 开始往 main end 方向排布

flex-direction 决定了 main axis 的方向,有 4 个取值

row(默认值)、row-reverse、column、column-reverse

用来修改主轴。

flex-wrap

flex-wrap 决定了 flex container 是单行还是多行

  • nowrap(默认):单行
  • wrap:多行
  • wrap-reverse:多行(对比 wrap,cross start 与 cross end 相反)

flex-flow

flex-flow 属性是 flex-direction 和 flex-wrap 的简写

1  /* flex-direction: row-reverse;
2  flex-wrap: wrap-reverse; */
3  flex-flow: row-reverse wrap-reverse;

justify-content

justify-content 决定了 flex items 在 main axis 上的对齐方式

  • flex-start(默认值):与 main start 对齐
  • flex-end:与 main end 对齐
  • center:居中对齐
  • space-between:
    • flex items 之间的距离相等
    • 与 main start、main end两端对齐
  • space-around:
    • flex items 之间的距离相等
    • flex items 与 main start、main end 之间的距离是 flex items 之间距离的一半
  • space-evenly:
    • flex items 之间的距离相等
    • flex items 与 main start、main end 之间的距离 等于 flex items 之间的距离

align-item

align-items 决定了 flex items 在 cross axis 上的对齐方式

  • normal:在弹性布局中,效果和stretch一样 (高度必须是auto,或者没设置就是auto)
  • stretch:当 flex items 在 cross axis 方向的 size 为 auto 时,会 自动拉伸至填充 flex container
  • flex-start:与 cross start 对齐
  • flex-end:与 cross end 对齐
  • center:居中对齐 (常用)
  • baseline:与基准线对齐