css初学精华笔记

css元素分类

  1. 块级元素
    常见的有<div><p><h><ul><li>,也可以通过display:block;来设置为块级元素
    块级元素的特点:
    1、 每个块级元素都是从新的一行开始,并且气候的元素也是另起一行
    2、 元素的高度、宽度、行高以及顶和底边的边距都是可以设置的
    3、 元素宽度在不设置的情况下,默认市父级元素的100%
  2. 内联元素
    常见的有<span><a><label><strong>就是典型的内敛元素也就是行内元素。当然块级元素也可以通过设置display:inline;讲元素设置为内联元素。
    内敛元素的特点:
    1、 和其他元素都在一行
    2、元素的高度和宽度以及顶部边距都是不可设置的
    3、元素的宽度就是它包含的文字或图片的宽度,不可改变。
  3. 内敛块状元素
    内敛块状元素就是同时具备内敛元素和块状元素的特点,display:inline-block就是讲元素设置为内敛块状元素,<img><input>就是内敛亏装标签
    内敛块状元素特点:
    1、 和其他元素都在一行
    2、 元素的高度、宽度和行高以及顶部编剧都可以设置。

css布局模型

  1. 流动模型
    流动市默认的网页布局模式,也就是网页在默认状态下HTML网页元素都是更具流动模型来就行网页内容布局的,即顺着文档流解析,
  2. 浮动模型
    解决块级元素无法并排现实的问题
  3. 层模型
    就行photoshop中的图层一样可以对每个图层进行精确定位操作
    1. 绝对定位(position:absolute)
      即讲元素从文档流拖出来,然后使用left,right,top,bottom属性相对于最接近的一个具有定位属性的父包含块(即父级元素拥有相对定位对其绝对定位进行约束)进行绝对定位。如果不存在这样的包含块,则相对于body元素,即相对于游览器进行定位。
    2. 相对定位(position:relative)
      如果想对元素设置层模型中的相对定位,需要设置position:relative,它通过left,right,top,bottom属性确定元素在正常文档流中的偏移位置。相对定位完成的过程市首先按static(float)方式生成一个元素,然后相对以前的位置移动。
    3. 固定定位(position:fixed)
      固定定位,与absolute定位类型相似,但它的相对移动坐标市视图(屏幕内的网页窗口)本身。由于视图本身市固定的,它不会随游览器窗口的滚动条变化而变化,或改变游览器窗口的显示大小,因此固定定位的元素始终位于游览器窗口内视图的某个位置,不会受文档流影响。

ul dl ol

dl用来定义一个列表,dt用来定义列表的一部分头部,dd用来定义列表中一部分的具体描述
ul无须列表
ol有序列表

css负边框

  1. 设置margin(left/top)为负值可以微调元素的位置
  2. 但是如果使用right和buttom则会使其附着的元素向本元素靠拢并覆盖
  3. 使用浮动时如果使用margin负值则会留空

经典布局圣杯布局

圣杯布局市三列布局,中间宽度自适应,两边定宽,这样做的优势是重要的东西放在文档流前面可以先渲染。也就是在html文档中中间的部分要写在左右布局之前。
当然这样的布局是面向PC端的,移动端由于屏幕宽度较小,不推荐多列布局。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <style media="screen">
    .wrapper{
         padding:0px 150px 0px 150px;
    }
 .main{
   width: 100%;
   background: red;
   height: 30px;
   float: left;

 }
 .left{
   width: 150px;
   background: blue;
   height: 30px;
   float: left;
   margin-left: -100%;
  position: relative;
  left: -150px;
 }
 .right{
    height: 30px;
   width: 150px;
   background: gray;
   float: left;
   margin-left: -150px;
   position: relative;
   right: -150px;

 }
    </style>
    <title></title>
  </head>
  <body>
  <div class="wrapper">
    <div class="main">
    main
    </div>
    <div class="left">
left
    </div>
    <div class="right">
right
    </div>
  </div>

  </body>
</html>

经典布局双飞燕布局

双飞燕布局是在圣杯布局的前提下进行改进的:不再使用position和padding,而是在main中增加一个div设置margin来进行布局

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <style media="screen">
    .wrapper{
        width: 100%;
    }
 .main{
   width: 100%;
   background: red;
   height: 30px;
   float: left;

 }
 .main .content{
   margin-left: 150px;
   margin-right: 150px;
 }
 .left{
   width: 150px;
   background: blue;
   height: 30px;
   float: left;
   margin-left: -100%;
 }
 .right{
    height: 30px;
   width: 150px;
   background: gray;
   float: left;
   margin-left: -150px;
 }
    </style>
    <title></title>
  </head>
  <body>
  <div class="wrapper">
    <div class="main">
    <div class="content">
      main
    </div>
    </div>
    <div class="left">
left
    </div>
    <div class="right">
right
    </div>
  </div>

  </body>
</html>

最新flex布局

BFC(block formatting context)

块级格式化作用范围:它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用。当涉及到可视化布局的时候,BFC提供了一个环境,HTML元素在这个环境中按照一定的规则进行布局。一个环境中元素不会影响到其他环境中的布局。比如浮动元素会形成BFC,浮动元素内部子元素受浮动元素的影响,两个浮动元素之间是互补影响的。这里有点类似BFC就是一个独立的行政单位的意思,也可以说BFC是一个作用范围,可以把它结识成一个独立的容器,并且这个容器的里box布局,与这个容器外的毫不相干。
如何产生BFC:当一个HTML元素满足下面的条件中的任何一点,都可以产生BFC:
1. float的值不为none
2. overflow的值不为visible
3. display的值市table-cell,table-caption,inline-block中的任何一个
4. position的值部位relative和static

BFC能做什么
  1. 不和浮动元素重叠
    如果一个浮动元素后面跟着一个非浮动的元素,那么就会产生一个覆盖的现象,很多自适应的两栏布局就是这么做的。
    看下面一个例子
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style media="screen">
    .aside{background:#f00;width:170px;float:left;height:300px;}
.main{background:#090;height:100%;overflow: hidden;}
    </style>
  </head>
  <body>
    <div class="aside">
</div>
<div class="main">
</div>
  </body>
</html>

我们通过设置BFC来达到去除覆盖。
2. 清楚元素内部浮动
只要把父元素设为BFC就可以清理子元素的浮动了,最常见的用法就是在父元素上设置overflow: hidden样式,对于IE6加上zoom:1就可以了(IE Haslayout)。

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<style>
html,body {height:100%; }
* { padding:10px; margin:0; color:#000; text-decoration:none; list-style:none; font-family:"微软雅黑" }
.outer{width:300px;border:1px solid #666;padding:10px;overflow: hidden;}
.innerLeft{height:100px;width:100px;float:left;background:#f00;}
.innerRight{height:100px;width:100px;float:right;background:#090;}
</style>
</head>

<body>
<div class="outer">
  <div class="innerLeft"></div>
  <div class="innerRight"></div>
</div>
</div>
</body>
</html>
  1. 解决上下相邻元素重叠
    看下面例子:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<style>
html,body {height:100%; }
* { padding:0; margin:0; color:#fff; text-decoration:none; list-style:none; font-family:"微软雅黑" }
.rowone{background:#f00;height:100px;margin-bottom:20px;overflow:hidden;}
.rowtow{background:#090;height:100px;margin-top:20px;position:relative}
</style>
</head>

<body>
<div class="rowone">
</div>
<div class="rowtow">
</div>
</body>
</html>

根据 CSS 2.1 8.3.1 Collapsing margins 第一条,两个相邻的普通流中的块框在垂直位置的空白边会发生折叠现象。也就是处于同一个BFC中的两个垂直窗口的margin会重叠。
根据 CSS 2.1 8.3.1 Collapsing margins 第三条,生成 block formatting context 的元素不会和在流中的子元素发生空白边折叠。所以解决这种问题的办法是要为两个容器添加具有BFC的包裹容器。
所以解这个问题的办法就是,把两个容器分别放在两个据有BFC的包裹容器中,IE里就是触发layout的两个包裹容器中!
解决方法:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<style>
html, body { height:100%; }
* { padding:0; margin:0; color:#fff; text-decoration:none; list-style:none; font-family:"微软雅黑" }
.mg {overflow:hidden; }
.rowone { background:#f00; height:100px; margin-bottom:20px; }
.rowtow { background:#090; height:100px; margin-top:20px; }
</style>
</head>

<body>
<div class="mg">
    <div class="rowone">
    </div>
</div>
<div class="mg">
    <div class="rowtow">
    </div>
</div>
</body>
</html>

hasLayout表现出来的特性跟BFC很相似,所以可以认为是IE中的BFC。上面的规则几乎都遵循,所以上面的问题在IE里都可以通过触发hasLayout来解决。
编码规范https://github.com/ecomfe/spec

CSS选择器

  1. 子选择器
    ul >Li
  2. 类选择器
    li
  3. 后代选择器
    ul li
  4. ID选择器
  5. 通用选择器
    *
  6. 伪类选择器
    a:hover
  7. 分组选择器
    li,span{}
  8. 标签选择器
    a{}
  9. 属性选择器
    a[href$=pdf]
    a[title*=title]
    a[title^=pdf]
    nth-of-type(n)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值