复习CSS

作者: AnnQi | 来源:发表于2017-09-05 19:36 被阅读0次

    互联网前端分为三层:结构,样式,行为

    HTML 超文本标记语言 从语义的角度上描述页面的结构
    CSS 层叠样式表 从审美的角度负责页面的样式
    JS JavaScript 从交互的角度描述页面的行为

    1、CSS整体感知

    CSS 层叠样式表,“层叠式”
    目前最新的,CSS3,目前我们用的是CSS2.1,相互不冲突。
    <style type="text/css">
    </style>
    Type表示类型,text表示他是纯文本。
    CSS对换行不敏感,对空格,也不敏感,但是他有他的标准,冒号,分号,都不能少。

    2. CSS选择器
    2.1标签选择器

    就是用标签名来当做选择器:
    1) 所有标签都可以当做选择器
    2) 不管这个标签藏的多深,都能被选择
    3) 选择所有的,而不是某一个,所以是共性的,而不是特性。
    一般用途在于CSS样式初始化。

    2.2 ID选择器

    表示选择ID

    #div{
        color: red;
    }
    

    1) 所有标签都可以有ID,ID的命名,要以字母开头,可以有数字,下划线。大小写严格区分,也就是说aa,和AA是两个不同的ID
    2) 同一个页面中,也就是同一个HTML文件中,不能出现两个重复的ID,也是独特的

    2.3 类选择器

    就是类选择器,英文叫做class。
    所谓的类,他是class属性,和ID相似,任何表情都可以带有类,并且是可以重复的
    一个元素可以有多个类
    正确的一个思路:就是多用所谓的“公共类”,就是我们的类可以提供公共服务。
    也就是说:
    1) 不要试图用一个类名把某个标签元素的所有样式写完,这个标签可以多携带几个类,一起完成这个标签的样式。
    2) 每个类尽可能的小,有一个公共的概念,能够让跟多的标签去使用它。
    Class控制样式,ID控制行为
    在我们的CSS里面,尽可能的用class去改变样式,除非极特殊的情况可以用ID,ID一般给JS使用。

    一个标签,可以同时被多种选择器选择,标签选择器,ID选择器,类选择器,这些选择器都可以选择上同一个标签,从而影响样式,CSS层叠式的第一层含义。

    3. 高级选择器
    3.1 后代选择器

    后代选择器不等于子代选择器,空格代表后代
    只要是选择标签的后代,不管隔了多少代,都能被选中。

    3.2并集选择器

    可以同时选择多个类名,用,隔开

    3.3交集选择器
    p.fg{color: blue;}
    

    必须同时满足两个条件,同时是P标签并且CLSS为fg

    3.4 通配符选择器
    *{margin:0;padding:0;}
    

    但是,通配符选择器效率不高,页面上标签越多的时候,效率越低。
    在项目开发中,需要改变全局,尽量用公共类

    3.5 儿子选择器

    IE7开始兼容,IE6不好使
    只能选择儿子,孙子一下选不中。

    4. CSS的继承性和层叠性。

    有些属性,当给自己设置的时候,自己的后代,也会被继承上,这就是继承性。

    4.1 那些属性可以被继承:

    Color,text-开头的,line-开头的,font-开头的
    当标签被设置这些属性的时候,他的后代都会被继承上这个属性,一层层继承下去,知道最小的一代
    上面的文字样式都可以被继承;所有关于盒子的,定位的,布局的属性都不能被继承。

    4.2 层叠性

    什么是层叠性?相当于权重;
    层叠性:处理CSS冲突的能力,所以要对权重进行计算,所有的计算,没有任何兼容问题。
    当选择器,选中某一个元素的时候,就要进行权重计算,
    ID的数量,类的数量,标签的数量
    一个ID=100的权重
    一个class=10的权重
    一个标签=1的权重。
    并且,没有进制,比如十个标签,不等于一个class,还是比一个class小。
    1,3,20
    1,2,7 当权重相同的时候,选择最近的哪个,继承的权重为0.

    权重问题:

    1) 先看有没有选中,如果选中了,那么以(id数,类数,标签数)来计算权重,谁大听谁的,如果都一样,听后面写的。
    2)如果没有被选中,那么权重都是0,那么就近,如果权重相同,就近原则。
    2)
    color: blue!important;
    表示绝对选中;不用计算任何权重问题;
    !important无法提升继承的权重,该是0还是0
    !important不影响就近原则。

    5. 盒模型

    一个盒子主要属性就5个:width,height,padding,border,margin.
    合起来就是一个盒模型。
    盒模型主要分:W3C盒模型和IE盒模型(CSS3里面重点详解)

    5.1 padding

    Padding 内边距,padding的区域是有背景色的,在CSS2.1的前提下,并且背景色和内容区域相同
    也就是说:background-color将填充border以内的所有区域
    Padding是四个方向,所以我们可以分别描述四个方向;
    Padding:20px 30px 50px;
    Padding四个方向分别为:上,右,下,左;
    Padding是可以用一个值包含四个方向;
    小属性:Padding-left:20px;
    大属性:padding:20px;
    小属性一定不能写在大属性上面,但是小属性可以写在大属性下面

    5.2 border

    边框:边框三要素:线型、粗细、颜色;
    颜色如果不写,默认黑色,其他不写,没有边框。
    一般在公司开发中,如果需要用到边框样式,则选择图片边框。一般不需要用到那些奇怪的属性。
    Borde:1px solid red;
    同样,可以拆分为三个小属性来写
    Border-width,border-style,border-color。
    小属性如果设置多个值,那么就是上右下左的顺序执行,并且用空格隔开。
    小属性还可以往下拆一层
    Border-top-width;
    平时在工作中,尽量用大属性写。

    6. 标准文档流

    宏观上来讲,我们的web页面,是一个流,必须从上往下一步步执行,就像织毛衣一样
    微观来讲:
    1) 空白折叠现象:
    比如,我们想让IMG标签之间没有空隙,则必须紧密相连。
    2) 高矮不齐,底边对齐
    3) 自动换行,一行写不满,换行写

    7. 块级元素和行内元素

    在标准文档流中,标签严格分为两个等级:
    1) 块级元素
    霸占一行,不能与其他任何元素并列,
    能接受宽高的设置
    如果不设置宽度,那么宽度默认为父级元素的100%
    2) 行内元素
    与其他元素并排,不能设置宽度和高度,默认的宽度就是内容的宽度。
    在之前的HMTL里面,我们标签分为:文本级、容器级
    文本级:p,span,a,b,I,u,em
    容器级:div,h,li,dt,dd
    CSS的分类,和上面很想,只有P不同
    所有文本级标签,都是行内元素,P是块级元素
    所有容器级标签都是块级元素。

    7.1块级元素和行内元素的互相转换

    Display:inline
    Display是显示模式的意思,inline就是行内
    Display:block
    转为块级元素
    Display:none 隐藏元素,并且元素不占位置。
    Visbility 元素不可见,但是会占用位置
    标准流里面限制很多,标签的性质很恶心,比如要并排,就是设置宽高,所以,我们要做一个操作,脱离标准文档流:
    CSS一共有是那种脱离标准文档流的手段:
    1) 浮动
    2) 绝对定位
    3) 固定定位

    8. 浮动

    浮动是CSS布局里面用的最多的一个属性。
    浮动的三个性质:

    8.1 浮动的元素脱标

    浮动的元素脱离了标准文档流,不再和其他元素同处一个水平面上。

    8.2 浮动的元素互相贴靠

    如果有足够空间,那么就会互相铁卡,实在靠不住,就自己靠墙

    8.3 浮动的元素有 “子围”
    9. 清除浮动
    9.1 清除浮动1:给浮动的元素的祖先元素添加高度。

    如果一个元素要浮动,那么他的祖先元素,一定要有高度,因为有高度的盒子,才能关注的浮动。

    9.2 clear:both

    经常用这个清除浮动,但是这个方法有个问题,会导致margin失效

    9.3 隔墙法

    在隔墙法的办法上,还有一个方法,内墙法。

    9.4 overflow:hidden;

    overflow:溢出,hidden:隐藏
    一个付清不能被自己浮动的儿子,撑出高度。但是,只要给父亲加上overflow:hidden,那么,父亲就能被儿子撑出高度。

    9.5 浏览器的兼容问题。

    第一:IE6,不支持小于12PX的盒子,任何小于12PX的盒子,在IE6里面看起来都大了一些。

    .box2{width: 5px;height: 5px;background: red;_font-size: 0px;}
    

    解决方法:将盒子的字号设置小于盒子的高度。
    浏览器hack,hack就是我们平时说的黑客,指浏览器提供的后门,专门针对某一个浏览器做兼容,IE6留了一个后门,只要给CSS属性前面加上_,那么这个属性就会变成IE6认识的专有属性。

    第二:IE6不支持用overflow:hidden来清除浮动
    那么,就给IE6单独加上一条属性:_zoom:1;
    这个属性可以出发浏览器的hasLayout机制,这个机制只有IE6才有,所以不用管是干嘛的。

    10. Margin

    Margin外边距

    10.1 margin 的坍塌现象。
    在标准文档流中,竖直、垂直方向的margin不叠加,以较大的那个为准。
    

    如果不在标准流,那么是不会出现坍塌现象。比如都浮动起来。

    10.2 盒子的居中。

    Margin:0 auto;
    Margin的值为auto,表示自动。当left、right两个方向,都是auto,则表示自动相同,就居中了
    1) 使用这个方法的时候,盒子必须有width,并且是明确的宽度。
    2) 只有标准流的盒子,才能用这个方法。
    3) 这个方法是居中盒子,不是居中盒子的内容。
    4) 居中内容:text-align:conter;

    10.3 平时开发善于用父亲的padding,而不是儿子的margin、

    如果父亲没有border,那么儿子的margin实际上是给文档流踹了一脚,所以,他的父亲也跟着掉下来了
    Margin这个属性,本质上是用来描述兄弟和兄弟之间的距离,最好不要用margin来表达父子之间的距离
    所以,我们开发中,善于用父亲的padding,而不是儿子的margin.

    10.4 关于margin的IE6兼容问题。

    IE6的双倍margin BUG。
    当出现连续浮动的元素,携带和浮动方向相同的margin,队首元素,会双倍margin
    解决方法:使浮动方向和margin方向相反,比如
    Float:left;margin-right:20px;
    在IE6里面,会出现3PX的BUG。
    解决方法:不用去管,出现这个情况,就是代码不标准,标准不允许子元素对父元素设置margin

    11. 行高

    CSS中,所有的行,都有行高,盒模型的padding,绝对不是直接作用在文字上的,而是作用在行上的。必须行高来设置文字居中。
    一般,为了严格保证文字在行里面居中,我们有个默认的规定:行高、字号,一般都是偶数。这样,它们的差,就是偶数,就能被2整除。

    11.2 font属性。

    使用font属性,能够将字号、行高、字体,都一起设置。
    font: 14px/250px"微软雅黑";
    等价于:
    Font-size:14px;
    Line-height:250px;
    Font-family:’微软雅黑’;
    网页上设置字体,必须是用户电脑已经安装的字体;
    在页面中,一般我们只用:微软雅黑,宋体,黑体,如果需要用到其他字体,一般选择切图。
    有的时候,为了防止用户电脑没有微软雅黑,那么就用英文状态下的逗号隔开,然后选择备选字体。
    font-family: "微软雅黑","宋体";
    备选字体可以有无数个,都用逗号隔开。
    我们在设置备选字体的时候,要把英文字体放在前面,这样所有的中文,就不能匹配英语字体,就自动变成后面的中文字体。
    所有中文字体,都有一个英文别名
    微软雅黑的英语别名是:
    Microsoft YaHei
    宋体的英语别名是:
    SimsSun.
    行高可以用百分比设置,表示字号的百分之多少,一般来说,都要大于100%,因为行高一定大于字号。
    Font:12px/24px;
    等价于:
    Font:12px/200%;

    12. 超链接的们美化。

    超链接就是a标签。

    12.1 伪类。

    a标签有四种伪类:
    a:link{
    表示用户没有点击过这个链接的样式。
    }
    a:visited{
    表示用户访问过这个链接的样式
    }
    a:hover{
    表示用户鼠标悬停的样式。
    }
    a:active{
    表示用户点击这个链接,但是没有松开鼠标的时候的样式
    }
    记住,这四种状态,在CSS中,必须按照顺序写,否则,失效
    然后,在他们那些前端前辈的研究中发现,这几个a标签的伪类美化,是可以简写的:
    a:link,a:visited是可以省略的,直接写在a标签里面

    13. Background
    13.1 background-color:red;

    背景颜色设置。
    有三中表示方法:
    单词、rgb、十六进制。

    13.2 background-image:

    给盒子加上背景图片。
    Background-image: url(img/1.png);
    用相对路径写。
    背景图片默认平铺开来。

    13.3 background-repeat

    设置背景图是否平铺,重复。
    有三个属性:
    background-repeat: no-repeat; 不重复
    background-repeat: repeat-x; 横向重复
    background-repeat: repeat-y; 纵向重复

    13.4 background-poisition

    背景属性定位。
    background-poisition: x轴移动量 y轴移动量;
    移动量用像素表达,并且可以为负数。

    13.5 CSS精灵:

    “CSS精灵”,也叫做“CSS雪碧”技术,是一种CSS图像合并技术,该方法是将小图标和背景图像合并到一张图片,然后用,CSS的背景定位来显示我们所需要的图片部分。
    优点:减少了HTTP请求,比如说原本有四张图片,那么就需要4个HTTP请求,但是用了CSS精灵,四张合为一张,HTTP请求就只有一个了。、

    13.6 background-attachment

    背景固定在网页,不会随着滚动条滚动而滚动。

    13.7 background是可以写成综合属性

    background:red url(img/1.png) no-repeat 100px 100px fixed;

    14. 相对定位

    定位有三种:相对定位、绝对定位、固定定位。
    相对定位:position: relative;
    什么是相对定位?
    相对定位,就是微调元素的位置,让元素相对自己原来本身的位置,进行位置调整
    相对定位不脱标,老家留坑,形影分离。
    相对定位不脱离标准文档流,真实位置,实在原来的位置,只不过肉眼看到的影子被定位过去了,到处飘。

    14.1 相对定位的用途

    相对定位有坑,所以一般不做“压盖效果”,在页面中的效果很小,就两个:
    1) 微调元素
    2) 做绝对定位的参考,子绝父相。
    相对定位有两个值:top,left。

    15. 绝对定位

    position: absolute;
    绝对定位比相对定位更灵活。
    并且绝对定位是脱离标准文档流的,所有的标准文档流的性质,在使用了绝对定位后,都不遵守了。
    然后,使用了绝对定位后,标签就不区分所谓的行内元素和块元素了,不需要display:block就可以设置宽高了。

    15.1 参考点

    绝对定位的参考点用TOP描述,如果没有相对定位做参考,则以页面的左上角为参考点,而不是浏览器的左上角。


    image.png
    Bottom相对于浏览器窗口底部为参考点。

    常用的方法,一个绝对定位的元素,如果父辈元素中出现了相对定位,那么就以父元素的左上角为参考点。
    然后,是听从最近的有定位的祖先元素,而不一定是父亲

    不一定非要相对定位,任何定位都可以做参考点。子绝父绝,子绝父相,子绝父固,都可以给儿子定位,但是,由于其他几个定位方法,没有一个盒子在文档流里面,所以不稳定,一般采取子绝父相,父亲没有脱标,儿子在父亲的范围内移动,是最好的。

    当我们使用了绝对定位后,margin失效了,那么,怎么居中?
    Left:50%;margin-left:负宽度的一半;

    16. 固定定位

    基于浏览器窗口的一个定位
    页面不管如何滚动,盒子显示的位置不变
    Position:fixed;
    IE6 不兼容。

    17. Z-index

    表示层叠关系
    Z-index表示谁压着谁,谁大就在上面。
    只有定位了的元素才能有z-index值,不管什么定位。
    Z-index没有单位,单纯的数字,只比较大小
    如果都没有z-index,那么,谁写在HTML后面,谁压住别人。
    从父现象,父亲z-index比别人小,自己再大也没用。

    相关文章

      网友评论

        本文标题:复习CSS

        本文链接:https://www.haomeiwen.com/subject/fnrpjxtx.html