---恢复内容开始---

本文用自己的理解,总结网上或者自身经历的问题,加以汇总,方便查找:

一、浏览器默认样式

1、浏览器处理css&html

a、css作用范围:盒子模式、浮动、定位、背景、字体

2、css布局方式:

  1. 经典三列布局
  2. Bootstrap栅格布局
  3. 百度首页布局
  4. 微博布局
  5. 人人网布局
  6. 瀑布流布局

3、层叠样式表:

a、层叠:层叠就是浏览器对多个样式来源进行叠加,最终确定结果的过程。即对相同标签的样式融合,且内联>内部>外部(!important可将样式提到最高级),但实际有5个--

最底层是浏览器默认样式,然后是用户样式--字体等设置

4、浏览器默认样式分析:

a、display:table 和 block 最大的区别在于:包裹性。 提到包裹性,就不得不提一下float和absolute

b、table-cell是多列布局的最新解决方案,比使用float更加有效(不兼容IE6、7)

c、line-height:1.12 针对英文没问题,但是中文看起来很别扭

另外,1.12是一个相对值(即1.12em),与文字有关的距离设置最好用相对值,这样做的好处就是当自定义了1em的绝对px时,line-height也会跟着变

d、inline-block

e、<br/>为何能实现换行::before, :after { white-space: pre-line }

5、浏览器对html的处理:浏览器将载入的html变为dom树,但是此时没有任何显示样式。所以显示的样式,都是css定义的,浏览器只会通过css来渲染视图样式

6、block元素:默认为block的元素,是默认样式规定的,不是浏览器的内核规定的

7、display:list-item:ul,li标签使用此样式

8、display:table: <table>和<div>在容器尺寸上最大区别是什么?答案是——div宽度和父容器相同,table宽度根据内容而定——即table具有“包裹性”。

                 盒子的宽度将在内容宽度的基础上再增加(padding宽度 + border宽度 + margin宽度)之和

9、display:table-cell:多列布局:

10、body样式:由于*的优先级最低,所以先用*{margin:0}来规范,在统一设置body的margin。

        Line-height是具有继承性的,在body中设置了,body下面所有的文字都会继承生效,最好使用相对值。

11、em & px:em是相对的,浏览器默认情况下令1em === 16px,由于font-size和margin都是通过em来定义的,当em被修改时,不管字体大小修改,

        margin值也会跟着修改。这就是em好用之处!从现在开始,与字体大小有关的css,全部都用em。

12、inline-block:能被父容器居中、能设置高度宽度和margin、不会像table或div那样占一行。与table相比既有包裹性 又不会占一行

13、<br>样式:换行是white-space: pre-line效果。

二、选择器

1、选择器分类:标签选择器、属性选择器。

2、多标签选择器:

  选择一个祖先的所有子孙节点,例如 div p{…}包括div的2级三级。。。

  选择一个父元素的所有直属节点,例如 div > p{…}仅一级

  某一个元素紧挨着的兄弟节点,例如 li + li{…}

  某一个元素的所有同胞节点,例如 span ~ a{…}

3、属性选择器:除id、class两种特殊外,还可通过属性名选择:img[title]{…      },属性名和属性值选择:input[type=’text’]{…}

4、伪类:伪类分为UI伪类和结构化伪类。

  UI伪类:

  结构化伪类:

5、伪元素:

  afert&before可以为标签添加前后内容

6、选择器的优先级:“I-C-E”计算公式==>Id\Class\Element,遇到一个id就往特指度数值中加100,遇到一个class就往特指度数值中加10,遇到一个element就往       特指度数值中加1,越大优先级越高。如

div p#large ul.list li

114

!important优先级最高,高于上面一切。* 选择器最低,低于一切。不同选择器的特指度比较时,不区分加载的顺序(相同选择器在层叠时,后加载的覆盖前加载的)

但:直接设置的样式要高于继承的样式,不管优先级多大

得出red

三、盒模型:

1、css的展现分为文字和块,

  文字:例如设置字号、字体、颜色、背景色、是否加粗等

  块:盒子模型,float,position,display

2、盒子:

  margin,padding和border(content)

3、盒子的宽:

  在盒子模型中,我们设置的宽度都是内容宽度,不是整个盒子的宽度。而整个盒子的宽度是:(内容宽度 + border宽度 + padding宽度 + margin宽度),这样       我们改四个中的其中一个,都会导致盒子宽度的改变。这对我们来说不友好。

  解决方法:添加box-sizing:border-box,宽度变为宽度是内容 + border + 边框的宽度(不包括margin)

        

4、margin的纵向重叠:

  纵向的margin是会重叠的,大的会把小的“吃掉”,且margin与border内无关,意义在于布局

5、常用的三角形:

  transpanent设置透明,顺序为上右下左

四、浮动

1、float多列布局:实际应用table,但table代码量大不利于SEO,才采用float,而float原本意义为文字环绕--图片float:left之后,文字会环绕图片。

2、float的破坏性:被设置了float的元素会脱离文档流。也正是为了文字的环绕

3、float的包裹性:float也具有包裹性,且display仍是block

4、float的清空格:

  

  由于float会导致节点脱离文档流结构,所以正常img之间的换行符不生效

5、清除浮动的4种方法:

为父元素添加overflow:hidden;

  浮动父元素;

  clear:both--

  clearfix:原理与clear:both相同

五、float布局

1、三列布局

  

2、两列布局

  

3、bt的栅格布局:也是float

  

六、display

1、块元素和流元素

2、display详细定义

  1. list-item:通过它可以模拟li列表样式;
  2. table:也是一个“块”,但和block相比,table具有包裹性;
  3. table-cell:最新的多列布局解决方案
  4. inline:就是文字和图片,你设置宽度和高度是无效的,通过监控可以知道,该元素实际的宽度和高度都是auto  
  5. block;即盒模型
  6. inline-block:以流形式排列,但单个又是块(可设置宽度等)  

如何把inline-->block:    display:block;

               display:table;

               float:left;

               position:absolute/fixed

 七、定位

1、position:static:即不设置定位

2、position:relative:即相对定位,relative会导致自身位置的相对变化,而不会影响其他元素的位置、大小的变化。这是relative的要点之一。还有第二个要点,就是position:relative/absolute/fixed都会产生一个新的文档流

  

3、position:absolute:递归查找父元素,如果找到一个设置了position:relative/absolute/fixed的元素,就以该元素为基准定位,如果没找到,就以浏览器边界定位(实际是画布的左上角)

  ①absolute元素脱离当前文档流。和relative不同,其他三个元素的位置重新排列了。只要元素会脱离文档结构,它就会产生破坏性,导致父元素坍塌。

  ②absolute元素具有“包裹性”。

  ③设置top、left时 是相对于当前文档流而言

  1. 设置absolute会使得inline元素被“块”化
  2. 设置absolute会使得元素已有的float失效
  3. absolute会使元素悬浮在页面里,如果有多个悬浮元素,层级如何确定?答案是“后来者居上”

4、position:fixed:与abolute不同fixed不管是哪个文档流,都在你设置的位置,永远相对于画布左上角

  

---恢复内容结束---

前端学习历程--css①的更多相关文章

  1. 前端学习:CSS的学习总结(图解)

    前端学习:CSS的学习总结(图解) CSS代码笔记 CSS简介 css的引入方式和书写规范 CSS选择器 CSS属性 CSS盒子模型 CSS的定位

  2. 2016.01.22 前端学习 HTML/CSS

    学习HTML/CSS  http://edu.51cto.com/course/course_id-3116.html 明日实践

  3. 前端学习 之 CSS(三)

    九:浮动 浮动是css里面布局最多的一个属性,也是很重要的一个属性. float:表示浮动的意思. 属性值: none: 表示不浮动,默认 left: 表示左浮动 right:表示右浮动 例: htm ...

  4. 前端学习历程--vue

    ---恢复内容开始--- 一.对比其他框架 1.react: 共同点: 使用 Virtual DOM 提供了响应式(Reactive)和组件化(Composable)的视图组件. 将注意力集中保持在核 ...

  5. 前端学习之CSS

    CSS介绍 CSS(Cascading Style Sheet, 层叠样式表)定义如何显示HTML元素, 给HTML设置样式, 让它更加美观. 当浏览器读到一个样式表, 它就会按照这个样式表来对文档进 ...

  6. 前端学习 -- Html&Css -- 条件Hack 和属性Hack

    条件Hack 语法: <!--[if <keywords>? IE <version>?]> HTML代码块 <![endif]--> <keyw ...

  7. 前端学习笔记——CSS选择器

    学习css选择器之前我们先了解下css规则: CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明: 选择器通常是需要改变样式的 HTML 元素. 每条声明由一个属性和一个值组成. 1.id选 ...

  8. 前端学习 之 CSS(二)

    五:继承性和层叠性 css有两大特性,即继承性和层叠性. 1. 继承性 面向对象语言都会存在继承的概念,在面向对象语言中,继承的特点:继承了父类的属性和方法.那么我们现在主要研究css,css就是在设 ...

  9. 前端学习 之 CSS(一)

    一:什么是 CSS? ·CSS 指层叠样式表 (Cascading Style Sheets) ·样式定义如何显示 HTML 元素 ·样式通常存储在样式表中 ·把样式添加到 HTML 4.0 中,是为 ...

随机推荐

  1. 终于把eShopOnContainer部署成功了。

    先上图说明一下,然后把步骤一部一部写上来吧.

  2. ES6 扩展运算符 三点(...)

    含义 扩展运算符( spread )是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. console.log(...[, , ]) // 1 2 3 conso ...

  3. 10.30 rest_framework总结

    2018-10-30 20:25:23 终于学完了rest_framework  这个框架! 这个框架有一些基本组件!最重要的就是看源码!要一个类一个类的去找!按顺序! 并且要自己配置类的时候要先看源 ...

  4. express.js graphql express-graphql

    文档 创建应用 const l = console.log; var express = require("express"); var graphqlHTTP = require ...

  5. Git查看两个版本之间修改了哪些文件

    gdiff 63e3b647d55fcc643e793e650c893be8601719b1 548cdaf01dbc2f08d1ca0b697a24afe512b75a2f --stat git l ...

  6. vue中子传父,父传子的具体用法

    先说明下父组件Login,子组件signCon 子拿到父数据可以通过,在子组件里面设置props:['name']的方法拿到. 首先在父组件中定义数据了: data(){Englishname:'li ...

  7. Phpstorm 2018及2017.3.2激活码(DataGrip WebStorm 激活码)

    PhpStrom的下载地址:https://www.jetbrains.com/phpstorm/ 2018适应 最新版PhpStorm 2018正式版改进了PHP 7支持,改进代码完成功能. 直接用 ...

  8. sonarqube安装的坑

    1.按照官网安装 结果启动不了,看了log日志以后,发现是es报错,不能以root权限启动

  9. Java新帮派——数组

    一.什么是数组: 数组是一个变量,存储相同数据类型的一组数据 声明一个变量就是在内存空间划出一块合适的空间 声明一个数组就是在内存空间划出一串连续的空间 二.数组基本要素: 标识符:数组的名称,用于区 ...

  10. 主席树 || 可持久化线段树 || BZOJ 3653: 谈笑风生 || Luogu P3899 [湖南集训]谈笑风生

    题面:P3899 [湖南集训]谈笑风生 题解: 我很喜欢这道题. 因为A是给定的,所以实质是求二元组的个数.我们以A(即给定的P)作为基点寻找答案,那么情况分两类.一种是B为A的父亲,另一种是A为B的 ...