CSS笔记

作者: 其实小吴人挺好 | 来源:发表于2020-02-20 15:11 被阅读0次

    css(CascadingStyle sheets)
    css称为css样式或层叠样式表,主要用于设置HTML页面的文字内容(字体、大小、对齐方式等)
    图片的外形(宽高、边框样式、边距)、以及版面的布局等外观显示样式。

    规则:
    h1 {color:red; font-size:25px;}
    h1 选择器
    color 属性
    red 值

    color:red; 值

    注意:
    1、选择器用于指定CSS样式作用的HTML对象,花括号内是对该对象设置的具体样式。
    2、属性和属性值以 键值对 的形式出现。
    3、属性是对指定的对象设置的样式属性,例如字体大小、文本颜色等
    4、属性和属性值之间用英文“:”连接
    5、多个“键值对”之间用英文“;”进行区分

    一,字体样式属性
    1,font-size:字号大小

    font-size属性用于设置字号,该属性的值可以使用相对长度单位,也可以使用绝对长度单位。
    其中相对长度单位比较常用,推荐使用像素单位px,绝对长度单位使用较少
    
    相对长度单位:
    pm: 相对于当前对象内文本的字体尺寸
    px: 像素
    
    绝对长度单位:
    in  英寸
    cm  厘米
    mm  毫米
    pt  点
    

    2,font-family:字体
    font-family属性用于设置字体
    例子:p{font-family:"微软雅黑";}

    可以同时指定多个字体,中间以逗号隔开,表示如果浏览器不支持第一个字体,则会尝试下一个,直到找到合适的字体
        
    常用技巧:
            1、现在网页中普遍使用14px+
            2、尽量使用偶数的数字字号,ie6等老式浏览器支持奇数会有bug
            3、各种字体之间必须使用英文状态下的逗号隔开
            4、中文字体需要加英文状态的引号,英文字体一般不需要加引号。当需要设置英文字体时,英文字体必须位于中文字体名之前
            5、如果字体中包含空格、#、$等符号,则改字体必须加英文状态下的单引号或双引号,例如:font-family:"Time New Roman"
            6、尽量使用系统默认字体,保证在任何用户浏览器中都能正确显示
            
    Unicode字体
    在css中设置字体名称,直接写中文是可以的,但是在文件编码(GB2313,UTF-8)不匹配是会产生乱码的错误。
    
    XP系统不支持微软雅黑的中文字体
    方案一:可以使用英文来替代,比如 font-family:"Microsoft Yahei"
    
    方案二:在Css直接使用Unicode编码来写字体名称可以避免这些错误。使用Unicode写中文体名称,浏览器是可以正确的解析
    font-family:"\5FAE\8F6F\96C5\9ED1",表示设置字体为“微软雅黑”。
    
    
    
    font-weight:字体粗细
    
    字体加速除了用b和strong标签之外,可以使用CSS来实现,但是CSS是没有语义的。
    font-weight属性用于定义字体的属性,其可用属性值:normal bold bolder,lighter,100~900(100的整数)
    
    技巧
    数字400等价于normal,而700等价于bold,但是我们更喜欢用数字来表示
    
    
    font-style:字体风格
    字体倾斜除了使用 i 和 em标签之外,可以使用CSS来实现,但是CSS是没有语义的
    
    normal:默认值,浏览器会显示标准的字体样式
    italic:浏览器会显示斜体的字体样式
    oblique:浏览器会显示倾斜的字体样式
    
    技巧:
    平时我们很少给字体加斜体,反而喜欢给斜体标签(em,i)改为普通样式
    
    
    font:综合设置字体样式(简写)
    font属性用于对字体样式进行综合设置,其基本语法格式如下
    选择器{font:font-style font-weight font-size/line-height font-family}
            样式  粗细  大小/行高   字体
        
    使用font属性时,必须按上面的语法格式中的顺序书写,不能更换顺序,各个属性以空格隔开
    
    注意:其中不需要设置的属性可以省略(取默认值),但必须保留font-size和font-family属性,否则font属性将不起作用。
    

    二、开发者工具(Chrome)
    F12 或 shift+ctrl+i 打开开发者工具
    技巧:不多说

    三、选择器
    指定应用特定的HTML元素,需要找到该目标元素。

    1、标签选择器(元素选择器)
        标签选择器是指用HTML标签名称作为选择器,按标签名称分类,为界面中某一类标签指定统一的CSS样式。
        
        语法:
        标签名{属性1:属性值; 属性2:属性值 属性3:属性值;}
        或者
        元素名{属性1:属性值; 属性2:属性值 属性3:属性值;}
        
        标签选择器最大的优点是能快速为界面中同类型的标签统一样式,同时这也是他的缺点
        不能设计差异化样式。
        
    2、类选择器
        类选择器使用"."(英文点号)进行标识,后面紧跟类名
        
        语法:
        .类名{属性1:属性值; 属性2:属性值 属性3:属性值;}
        
        标签调用的时候用: class="类名" 即可;
        
        类选择器最大的优势是可以为元素对象定义单独或相同的样式。
        
        技巧:
        1,长名称或词组可以使用中横线来为选择器命名。
        2,不建议使用"_"下划线来命名CSS选择器
        
        命名规范:
        http://www.divcss5.com/jiqiao/j4.shtml
        或百度一大堆
        
        
    
    3、多类名选择器
        可以给标签指定多个类名,从而达到更多的选择目的。
        
        注意:
        1)样式显示效果跟HTML元素中的类名先后顺序没有关系,受CSS样式书写的上下顺序有关
            也就是,两个类选择器使用重复的属性,会显示的是顺序在下面那一个选择器的样式
        
        2)各个类名中间用空格隔开
        多类名选择器在后期布局比较复杂的情况下,还是较多使用的
    
    4、ID选择器
        id选择器使用“#”进行标识,后面紧跟id名
        
        语法:
        #id名{属性1:属性值; 属性2:属性值 属性3:属性值;}
        
        该语法中,id名即可为html元素的id属性值,大多数HTML元素都可以定义id属性,元素的id值是唯一的,只能对应
        于文档中某一个具体的元素,用法基本和类选择器相同。
        
        
    5,id选择器和类选择器的区别
        W3C标准规定,在同一个界面内,不允许有相同名字的id对象出现,但是允许相同名字的class
        类选择器好比身份证的人名。id选择器好比身份证的身份证号码,只有一个
    
    6、通配符选择器
        通配符选择器用“*”号表示,他是所有选择器中作为范围最广的,能匹配页面中所有的元素。
        
        *{属性1:属性值; 属性2:属性值 属性3:属性值;}
        
        例如下面的代码,使用通配符选择器定义css样式,清除所有HTML标记的默认边框
        *{margin:0;}
        
        注意:
        认识就好,平时少用
        
    7,伪类选择器
        也是一个选择器,伪类选择器用于向某些选择器添加特殊的效果,
        比如:给链接添加特殊效果。
        
        伪类选择器使用的是2个点 比如:  :link{}
        
        链接伪类选择器
            :link  未访问的链接 (点击过后就会一直是已经访问的链接状态)
            :visited 已访问的链接
            :hover  鼠标移动到链接上的效果
            :active 选定的链接
            
            注意写的时候,他们的顺序尽量不要颠倒, 按照lvha的顺序,记忆:love hate lv包好
            
    8,结构(位置)伪类选择器(css3 兼容性问题) 挑葫芦娃
    :first-child: 选取属于其父元素的首个子元素的指定选择器
    :last-child: 选取属于其父元素的最后一个子元素的指定选择器
    :nth-child(n): 匹配属于其父元素的第N个子元素,不论元素的类型 even偶数 odd奇数 n 从0开始
    :nth-last-child(n): 选择器匹配属于其元素的第N个子元素的每个元素,不论元素的类型,从最后一个开始计算
                        n可以为数字、关键字或公式
                        
    目标伪类选择器
    :target 目标伪类选择器 选择器可用于选取当前活动的目标元素
    配合锚点,点击定位之后目标的活动样式修改
    

    四、外观属性
    color:文本颜色
    1、预定义的颜色,如 red greed blue等
    2、十六进制,如 #FF0000 #FF6600 ,实际工作中,十六进制是最常见的定义颜色的方式
    3、RGB代码,如红色可以表示为rgb(255,0,0)或者rgb(100%,0%,0%)

        需要注意的是,如果使用RGB代码的百分比颜色值,取值为0时也不能省略百分号,必须写上0%
        
    
    line-height:行间距
        行与行之间的距离,字符的垂直间距。一般称为行高。
        属性值有三种:px em 和百分比% 
             
    text-align:水平对齐方式
        text-align属性用于设置文本内容的水平对齐,相当于html中的align对齐属性
        left:左对齐
        right:右对齐
        center:居中对齐
        
    text-indent:首行缩进
        text-indent属性用于设置首行文本的缩进,其属性值可为不用单位的数值,em字符宽度的倍数、或相对于
        浏览器窗口宽度的百分比%,允许使用负值,建议使用em作为设置单位。
        
        1em尺寸相当于一个字的宽度,
        
    
    letter-spacing:字间距
        letter-spacing属性用于定义字间距,所谓字间距就是字符与字符之间的空白。属性值可以
        用不同单位的数值,允许使用负数,默认为normal
        
    word-spacing:单词间距
        word-spacing属性用于定义英文单词之间的间距,对中文字符无效。和letter-spacing一样,其属性值可为不用
        单位的数值,允许使用负数,默认为normal
    
        word-spacing和letter-spacing均可对英文进行设置。不同的是letter-spacing定义的字母之间的间距
        而word-spacing定义的是英文单词之间的间距
        
        
    word-break:自动换行
    
        normal:使用浏览器默认的换行规则
        break-all 允许在单词内换行。
        keep-all只能在半角空格或连字符处换行。
        
    
    颜色半透明(css3):
    文字颜色到了CSS3我们可以采取半透明的格式
    color:rgba(r,g,b,a) a是alpha 透明的意思 取值范围0~1之间 col or:rgba(0,0,0,0.3)
    
    
    文字阴影(css3)
    text-shadow:水平位置 垂直位置 模糊距离 阴影颜色;
    
    对应属性值:
    h-shadow:必需。水平阴影的位置。允许负数
    v-shadow:必需。垂直阴影的位置。允许负数
    blur:可选。模糊距离
    color:可选。阴影的颜色。
    

    五、引入css样式表(书写位置)
    1、行内模式(内联样式)
    使用过标签的style属性设置元素的样式,其基本语法格式如下
    <标签 style="属性1:属性值1;属性2:属性值2...">内容</标签>
    语法中style是标签的属性,实际上任何HTML标签都拥有style属性,用来设置行内式。
    其中属性和值的书写规范与css样式规则相同,行内式只对其所在的标签及嵌套在其中的子标签起作用

    2、内部样式表(内嵌式)
        内嵌式是将css代码集中写在HTML文档的head头部标签中,并且用style标签定义
        <head>
        <style>
            选择器{属性1:属性值1;属性2:属性值2...}
        </style>
        </head>
        
        语法中,style标签一般位于head标签title标签之后,也可以把他放在html文档的任何地方
    
    3、外部样式表(外链式)
        链入式是将所有的样式放在一个或多个以.css为扩展名的外部样式表文件中,通过link标签将外部样式表文件
        链接到HTML文档中,其基本语法格式如下:
        <head>
        <link href="CSS文件的路径" type="text/css" rel="stylesheet" />
        </head>
        
        注意:link是单标签
        该语法中,link标签需要放在head头部标签中,并且必须指定link标签的三个属性,
        -herf:定义所链接外部样式表文件的URL,可以是相对路径,也可以是绝对路径
        -type:定义所链接文档的类型,在这里需要指定为text/css,表示链接的外部文件为css样式
        -rel:定义当前文档于被链接文档之间的关系,在这里需要指定为"stylesheet",表示被链接的文档是一个样式表文件。
    

    六、标签的显示模式
    html标签一般分为块标签和行内标签两种类型,它们也称块元素和行内元素

    1、块级元素(block-level)
        每个标签通常都会独自占据一整行或多整行,可以对其设置高度、宽度、对齐等属性,常用于网页布局和网页结构的搭建
        <h1>~<h6><div><p><ol><ul><li>等
        
        块级元素的特点:
        1、总是从新行开始
        2、高度,行高,外边距,以及内边距都可以控制
        3、宽度默认是容器的100%
        4、可以容纳内联元素和其他块元素 
         
    2、行内元素(inline-level)
        行内元素(内联元素)不占有独自的区域,仅仅靠自身的字体大小和图像尺寸来支撑结构,一般不可以设置宽高
        高度,对齐等属性,常用于控制页面中文本的样式
        <span><a><strong><b><em><i><ins><u>等
        
        行内元素的特点:
        1、和相邻行内元素在一行上。
        2、高、宽无效,但水平方向的paddin和margin可以设置,垂直方向的无效
        3、默认宽度就是它本身内容的宽度
        4、行内元素只能容纳文本或者其他行内元素
        
        注意:
            1、只有文字才能组成段落 因此p里面不能放块级元素,同理还有这些标签h1~h6,dt
                他们都是文字类块级标签,里面不能放其他块级元素
            2、链接里面不能再放链接
        
    3、行内块元素(inline-block)
        在行内元素中有几个特殊的标签<img /><input /><td>可以对他们设置和对齐属性,有些资料可能会称它们为行内块元素
        
        行内块元素的特点:
            1、和相邻行内元素(行内块)在一行上,但是之间会有空白缝隙。
            2、默认宽度就是它本身内容的宽度
            3、高度,行高,外边距以及内边距都可以控制
    
    4、标签显示模式转换 display
        块转行内:display:inline
        行内转块:display:block
        块、行内元素转换为行内块:display:inline-block
        此阶段,我们只需关心这三个。后面再学
    

    七,css复合选择器
    复合选择器是由两个或者多个基础选择器,通过不同的方式组合而成的,目的是为了可以选择
    更准确更精细的目标元素标签

    1、交集选择器
        交集选择器由两个选择器构成,其中第一个为标签选择器,第二个为class选择器,两个选择器之间不能
        有空格,如h3.special
        
        h3.class{color:red; font-size:25px;}
        h3:标记选择器
        class:类别选择器
        
        技巧:
        交集选择器是并且的意思。即...又...的意思???
        比如:p.one 选择的是:类名为.one的段落标签
        用的相对来说比较少,不建议使用
        
        注意:第一个是标签选择器,第二个是class选择器
        
        
    2、并集选择器(css选择器分组)
        是各个选择器通过逗号连接而成的,任何形式的选择器(包括标签选择器,class选择器,id选择器)
        都可以作为并集选择器的一部分,如果某些选择器定义的样式完全相同,或部分相同,就可以利用
        并集选择器为它们定义相同的css样式
        
        .class,h3{ 属性1:属性值1; 属性2:属性值2;}
        
        例子:
            p,div,h1{
                color: orange;
            }
            
        技巧:
        并集选择器的意思,就是说,只要逗号隔开的,所有选择器都会执行后面样式
        比如:.one,p,#test{...}表示 .one和p 和 #test这三个选择器都会执行颜色为红色,
        
        注意:是使用逗号隔开的。
        
    3、后代选择器
        后代选择器又称为包含选择器,用来选择元素或元素组的后代,其写法就是把外层标签写在前面
        内层标签写在后面,中间用空格分隔,当标签发生嵌套时,内层标签就成为标签的后代
        
        .class h3{...;....;}
        .class 类别选择器
        h3 标签选择器
        
        子孙后代都可以这么选择,或者说,它能选择任何包含在内的标签。
        
        
        实例:
            .nav ul li{
                color: orange;
            }
        
        注意:是使用空格隔开的
        
    
    4、子元素选择器
        子元素选择器只能选择作为某元素子元素的元素。其写法就是把父级标签写在前面,子级标签
        写在后面,中间跟一个 > 进行连 接,注意,符号左右两侧各保留一个空格
        
        .class > h3 {....;....;}
    
        这里的子 值的是 亲儿子 不包括孙子 重孙子之类
        
        比如:.demo > h3{....} h3一定是demo亲儿子,demo元素包含着h3.
        
        注意:在指定颜色时候,它爷给它爹指定颜色,但是它儿子没有颜色时会使用上它爹的颜色,
                这是应该给个颜色给它儿子,再让它爷给它爹指定颜色。
                
                是使用 > 隔开的,符号两边要给空格
        
        
        
    
    
    
    5、属性选择器
        选取标签带有某些特殊属性的选择器,对齐进行修改
        
        选择器名[]{}//属性选择器用中括号来表示
        
        E[attr]{}  存在attr属性即可设置css
        E[attr=val]{} 属性值完全等于val
        E[attr*=val]{} 属性值里包含val字符 并且在任意位置
        E[att^val]{}  属性值里包含val字符 并且在开始位置 
        E[attr$=val]{} 属性值包含val字符并且在结束位置
        
            
    6、伪元素选择器(CSS3)
        区分:
            .demo 类选择器
            :demo 伪类选择器
            ::first-letter 伪元素选择器
            
    
        1,E::first-letter 文本的第一个单词或字(如中文,日文,韩文)
        
        2,E::first-line 文本第一行
        
        3,E::selection 可改变选中文本的样式
        
        重要:
        在E元素内部的开始位置和结束位创建一个元素,该元素为行内元素,且必须要结合content属性使用。
        4,E::befor{content:"w";} 
        5,E::after{content:"e";}
        则插入W在前面,E插入在后面
    

    八、背景
    1、简单介绍
    background-color:pink;
    background-image:url(image/xx.jpg);
    background-repeat:no-repeat;//默认平铺

        1、利用方位名词 修改背景图片的位置
            background-position:left top;
            ..
            方位名词没有顺序
            方位名词只有一个时,另外一个默认为居中
        
        2、精确单位,第一个值是X坐标,第二个值是Y坐标
        
            background-position:10px 30px;
            
        3、混搭使用
            backgrounp-position:10px center;
    
    
    2、背景附着
        background-attachment:scroll | fixed
        
        scroll: 背景图像是随对象内容滚动
        fixed: 背景图像固定
        
        说明:
        设置或检索背景图像是随对象内容滚动还是固定的
        
        
    3、背景简写
        background 属性的值的书写顺序官方并没有强制标准的,为了可读性,建议如下写法
        background:背景颜色 背景图片地址 背景平铺 背景滚动 背景位置
        background:transparent url() repeat-y scroll 50% 0;
        
    
    4、背景透明(CSS3)
        background:rgba(0,0,0,0.3);
        
        最后一个参数是alpha透明度 取值范围0-1之间
        注意:背景半透明是指盒子背景半透明,盒子里面的内容不受影响
        同样,可以给文字和边框透明 都是rgba的格式来写。
    
    5、背景大小缩放
        通过background-size设置背景图片的尺寸
        1、可以设置长度单位px或百分比
        2、设置cover时,会自动调整缩放比例,保证图片始终填充满背景区域,如有溢出部分,则会被隐藏
        3、设置为contain会自动调整缩放比例,保证图片始终完整显示在背景区域
        
        background-size:300px 100px;
        
        
    6、多背景
        以逗号分隔可以设置多背景,可用于自适应布局
    
        background-image:url(...),url(...);
            
        注意:
            如果设置的多重背景图之间存在着交集(即存在着重叠关系),前面的背景图会覆盖在后面的背景图之上
            为了避免背景色将图像盖住,背景色通常都定义在最后一组上
            
    7、凹凸文字
        文本修饰
        text-decoration 通常我们用于文字修改装饰
    

    九、css三大特性
    1、css层叠性
    指多种css样式的叠加
    比如先给某一个标签指定了内部文字颜色为红色,接着又指定了颜色为蓝色,此时出现一个标签指定了相同样式不同值的情况,
    这就是样式冲突

        如果出现样式冲突,则会按照css书写的顺序,以最后的样式为准
    
    2、css继承性
        继承性是指书写css样式时,子标签会继承父标签的某些样式,如文本颜色和字号,想要设置一个可继承的属性,
        只需将它应用于父元素即可
        
        跟文字有关系的会继承,其他的一般不会去继承
        
    3、css优先级
        css权重,css specificity 用于衡量css值优先级
        specificity用一个四位的数来表示,值从左到右,左边最大
        标签选择器       0,0,0,1
        类、伪类        0,0,1,0
        ID选择器       0,1,0,0
        行内样式        1,0,0,0
        
        !important      无穷大
        
        权重可以叠加
        比如:标签选择器 + 标签选择器 = 0,0,0,2
    

    十、盒子
    网页编写就是盒子摆放的过程

    1、边框
        语法:
        border:border-width || border-style || border-color
        
        边框属性-设置边框样式(border-style)
        none:没有边框、忽略所有边框的宽度(默认值)
        solid:边框为单实线(最为常用)
        dashed:虚线
        dotted:边框为点线
        
    
    2、表格的细线边框
        table{border-collapse:collapse}
        这个表示边框合并在一起
        
    
        
    3、圆角边框
        border-radius:左上 右上 右下 左下(顺时针)4个值
        
        border-radius:左上&右下 右上&左下(对角线)2个值
        
        border-radius:左上  右上&左下 右下(Z之字型)3个值
        
        注意:可以取百分比值
        
    4、内边距
        padding:上下左右            一个值
        padding:上下 | 左右         两个只
        padding:上 | 左右 | 下      三个值
        
    
    5、外边距
        
        和外边距值设置一致
    
        外边距实现盒子居中
        可以让一个盒子实现水平居中,需要满足以下两个条件
        1、必须是块级元素
        2、盒子必须指定了宽度
        
        然后下面带代码就可以使块级元素水平居中
        
        选择器{ width:xxpx;margin:0 auto;}
        
    6、文字水平居中 与 盒子水平居中的区别
            
        文字居中是通过:
        text-align:center;
        
        盒子水平居中:
        margin:0px auto;
        
    7、插入图片和背景图片的区别
        
        插入图片其实就是一个盒子,修改高宽控制大小
        
        背景不会占位置,
        控制大小需要通过
        background-size:xxpx xxpx;
        更改位置通过
        background-position:
        
    8、清除元素的默认边框
        浏览器的默认border有默认的8px的外边距
        body,ul,li {margin:0;padding:0;}
        全部清零内外边距
        
    
    9、行内元素没有上下内边距,只有左右内边距
        
    
    10、外边距合并
        使用margin定义块元素的垂直外边距时,可能会出现外边距的合并。
    
    11、相邻块元素垂直外边距的合并
        当上下相邻的两个块元素相邻时,如果上面的元素有下边距margin-bottom
        下面的元素有上边距margin-top,则他们之间的垂直间距不是margin-bottom
        与margin-top之和,而是两者中的较大值。这种现象被称为相邻块元素垂直外边距的合并
    
    12、父子级元素外边距合并
        嵌套关系的块元素,如果父元素没有上内边距以及边框,则父元素的上边距会
        与子元素的上外边距发生合并,合并后的外边距为两者中的较大者,即使父元素的
        上外边距为0,也会合并
        
        解决:
            可以为父元素定义1像素的上边框或上内边距
            可以为父元素添加overflow:hidden.
        
        
    13、盒子的计算尺寸
        盒子尺寸= 宽|高 + border + padding + margin;
        控件尺寸= 宽|高 + border + padding;
        
    14、设置padding不影响盒子大小
        如果一个盒子没有宽度,则padding不影响宽度
        如果一个盒子没有给定宽度/高度或者继承父亲的宽度/高度,则padding不会影响本盒子大小
        
    
    15、盒子模型的稳定性
        使用盒子布局的优先级
        width -> padding -> margin
        
        原因:
            1、margin会有外边距合并还有ie6下面margin加倍的bug
            2、padding会影响盒子大小,需要进行加减计算
    
    
        
    16、css3盒模型(标准的idth+padding+border 或者是固定的)
        CSS3中通过box-sizing来指定盒模型,即可指定为content-box,border-box,
        这样计算盒子大小的方式就发生了改变
        
        1、box-sizing:content-box 盒子大小为width+padding+border 即为默认值
        2、box-sizing:border-box 盒子大小为width 就是说padding和border是包含在width里面的
        
        注意:上面标注的width值的是CSS属性里设置的width:length content的值是会自动调整的
    
    17、盒子阴影
        box-shadow:水平位置 垂直位置 模糊位置 阴影尺寸 阴影颜色 内/外阴影
        
        1、前两个属性时必须的、其余的可以省略
        2、外阴影(outset),默认是outset,但不要编写,写了没有阴影效果
            内阴影可以写上 inset
    

    十一、浮动
    元素排列方式有3种:普通流 浮动 定位

    普通流
        实际上就是网页内标签元素正常的从上到下,从左到右排列顺序
    
    浮动的定义:
        元素的浮动是指设置了浮动属性的元素会脱离标准流的控制,移动到其父元素中指定位置的过程
    浮动的通俗定义:
        指元素漂浮起来,不受标准流的限制,漂浮在标准流的上面,压住标准流
        属性值:
            left   元素向左浮动
            right  元素向右浮动
            none   元素不浮动
            
    浮动特性(**************************):
        1、浮动元素总是找离他最近的父级元素对齐,不会超出内边距,边框的范围
        2、块级元素添加浮动之后,具有行内块的特性(包裹、但是可以设置大小)
        3、行内元素添加浮动之后,具有行内块的特性
        注意行内块的特性,一行可以放多个,有宽度和高度,盒子的大小是有内容决定
        
    浮动的元素位置
        跟上一个元素,也就是,如果上一个元素有浮动,则A元素顶部会和上一个元素的顶部对齐,如果上一个元素时标准流
        则A元素的顶部会和上一个元素的底部对齐
    
    浮动的目的,就是为了让多个元素同一行上显示
    
    总结:
        1、加了浮动的元素盒子是浮起来的,也就是漂浮在其他的标准流的盒子
        2、加了浮动的盒子,不占位置,它浮起来,原来的位置被下一个其他标准流的盒子占有
        3、浮动的盒子需要和标准流的父级搭配使用,其次特别的注意浮动可以使元素显示模式体现为行内块特性
        
        
    清除浮动:
        目的:为了解决父级元素因为子级浮动引起内部高度为0的问题
        在某种情况下,父级元素没有设置高度,而子级元素又设置浮动,子级元素就会脱离标准流,这时导致父级元素的
        高度变为0(标准流中,父级元素没有设置高度时会根据子级元素的大小撑开高度,也就是包裹内容)
        
    清除浮动的方法:
        其实本质可以称之为闭合浮动
        清除浮动就是把浮动的盒子圈到里面,让父盒子闭合出口和入口不让他们出来影响其他元素
        
        clear属性用于清除浮动,其基本语法格式
        left  不允许左侧有浮动元素(清除左侧浮动的影响)
        right 不允许右侧有浮动元素(清除右侧浮动的影响)
        both  同时清除左右两侧浮动的影响
        
        额外标签法
        是W3C推荐的做法是通过在浮动元素末尾添加一个空标签
        例如<div style="clear:both"></both>
        
        父级添加overflow属性方法
        触发BFC方式,可以实现清除浮动效果
        给父级添加 overflow为hidden|auto|scroll 都可以实现
        
        after伪元素清除浮动
        :after方式为空元素的升级,好处是不用单独添加标签
        
        使用方法
            .clearfox:after{ content:".";display:block;height:0;clear:both;visibility:hidden; }
            .clearfix{*zoom:1;}/* IE6、7专有 */
            
        使用before 和 after 双伪元素清除浮动(标准写法)
        使用方法:
        .clearfix:before, .clearfix:after{
            content: "";
            display: table;
        }
    
        .clearfix:after{ 
            clear: both;
        }
        .clearfix{
            *zoom:1;
        }
    

    十二、版心和布局流程
    版心:
    版心是指网页中主体内容所在的区域。一般在浏览器窗口中水平居中,常见的宽度为960px 980px 1000px 1200px等

    布局流程:
    1、确认界面的版心(可视区域)
    2、分析页面中的行模块,以及每个行模块中的列模块
    3、制作HTML页面,CSS文件
    4、CSS初始化,然后开始运用盒子模型的原理,通过DIV+CSS布局来控制网页的各个模块
    

    十三、定位
    元素的定位属性主要包括定位模式和边偏移两个部分
    top 顶部偏移量,定义元素相对于其父元素上边线的距离
    bottom 顶部偏移量,定义元素相对于其父元素下边线的距离
    left 顶部偏移量,定义元素相对于其父元素左边线的距离
    right 顶部偏移量,定义元素相对于其父元素右边线的距离

    也就是以后定位要和这边偏移值搭配使用了,比如top:100px ; left:30px 等等
    
    1、定位模式
        在css中,position属性用于定义元素的定位模式,其基本语法格式如下,
        选择器{position:属性}
        
        position属性的常用值:
        static 自动定位 网页中所有的标签都是静态定位的(默认静态)(对偏移无效的)
                (一般用来清除定位,原来定位的盒子,不想加定位了,可以加上这个。)
                
        relative 相对定位,相对于其原文档流的位置进行定位
                (自恋型 相对于自己移动 相对定位是不脱离标准流)
        absolute 绝对定位,相对于其上一个已经定位(有定位相对定位和绝对定位)的父元素进行定位
                (拼爹型  完全脱标的,是不占位置的)
                (父元素没有定位,子元素以浏览器为基准对齐)
                
                子绝父相:
                        1,相对定位  占有位置,不脱标
                        2,绝对定位  不占有位置  脱标
                
                
        fixed  固定位置,相对于浏览器窗口进行定位
                (固定定位,完全脱标,不占用位置 固定定位一定要给宽高)
                
        
    
        
        绝对定位实现水平/垂直居中:
            普通的盒子是左右margin 改为auto即可,但是对于绝对定位就是无效了
            
            定位的盒子也可以水平或者垂直居中,有一个算法(比如垂直居中)
            1,首先left偏移父元素宽度的一半的值(也可以设置为50%)
            2,然后left边距 设置为自己宽度负一半的值
            这样就居中啦
            
            
    2、z-index (叠放次序)
        当对多个元素同时设置定位时,定位元素之间有可能会发生重叠。
        
        想调节重叠顺序,可以对定位元素应用z-index层叠等级属性,其取值可为正整数、负数、0
        
        注意:
            1,z-index的默认值是0,取值越大,定位元素在层叠元素中越居上
            2,如果取值相同,则根据书写顺序,后来居上
            3,后面数字一定不能加单位
            4,只有相对定位,绝对定位,固定定位有此属性,其余标准流,浮动,静态定位都无此属性,亦不可指定此属性。
        
    
    定位总结:
                        是否脱标占有位置            是否可以使用边偏移           移动位置基准
                        
    静态static            不脱标、正常模式            不可以                     正常模式    
    相对定位relative    不脱标、占有位置            可以                      相对自身位置移动
    绝对定位            完全脱标,不占用位置      可以                      相对于定位父级移动位置
    固定定位            完全脱标,不占用位置      可以                      相对于浏览器移动位置
    
    
    
    定位模式转换:
        跟浮动一样,元素添加了 绝对定位和固定定位之后,元素模式就会发生转换,都转为行内块模式
        因此,比如行内元素(行内元素不可以设置宽高)如果添加了绝对定位或者固定定位之后,可以不用转换模式,直接给高度和宽度就可以了
    

    十四、元素的显示与隐藏

    1、display:
        none:隐藏对象 (与它相反的是display:block 除了转换为块级元素之外,同时还有显示元素的意思。)
                隐藏之后,不再保留位置。
        
    2、visibility 可见性
        visible: 对象可见
        hidden:对象隐藏
        
        特点:隐藏之后,继续保留原有位置。
    
    3、overflow 溢出
        检索或设置当对象的内容超过其指定高度及宽度时如何管理内容
        visible: 不剪切内容也不添加滚动条
        hidden:不显示超过对象尺寸的内容,超出的部分隐藏掉
        
        auto:超出自动显示滚动条,不超出不显示滚动条
        scroll: 不管超出内容否,总显示滚动条
    

    十五、用户界面样式
    所谓的界面样式,就是更改一些用户操作的样式,比如 更改用户的鼠标样式,表单轮廓等,但是比如滚动条的样式改动受到了很多浏览器的
    抵制,因此我们就放弃了,防止表单域拖动

    1、cursor : default 小白 pointer 小手  move移动 text 文本
        就是鼠标放在身上查看效果
        
        尽量不要用hand 因为 火狐不支持,pointer ie6以上都支持
        
    2、轮廓 outline
        (表单的轮廓)
        是绘制于元素周围的一条线,位于边框边缘的外缘,可起到突出元素的作用
        outline:outline-color || outline-style || outline-width
        
        如果不想设置:outline:0  或者 outline:none;
        <input type="text" style="outline:0" />
        
    3、防止拖拽文字域resize
        resize:none 这个单词可以防止 火狐、谷歌等浏览器随意的拖动 文本域。
        outline:none 取消轮廓线
        
        右下角默认可以拖拽:
        <textarea></textarea>
        
        右下角不可以拖拽
        <textarea style="resize:none;"></textarea>
        
    4、vertical-align 垂直对齐
        以前带有宽度的块级元素居中对齐,是margin:0 auto
        
        文字居中对齐:text-align:center;
        
        vertical-align :baseline | top  | middle | bottom
        
        设置或者检索对象内容的垂直对齐方式。
        vertical-align 不影响块级元素中的内容对齐,它只针对于行内元素或者行内块元素,特别是行内块元素,通常用来控制图片和表单文字的对齐。
        vertical-align 主要控制图片和文字的垂直关系,默认的图片会和文字基线对齐 
        
        
    5、去除图片底侧空白缝隙
        图片和表单等行内块元素,他的底线会和父级盒子基线对齐,这样会造成图片底侧会有空白缝隙
        
        解决方法:
            1.转换成块级元素
            2.给img vertical-align:middle | top 等等,让图片不要和基线对齐
        
        
        
    6、溢出的文字隐藏
        1.word-break:自动换行
            normal 使用浏览器默认的换行规则
            break-all 允许在单词内换行 (wudalao 拆成 wuda  lao)
            keep-all  只能在半角空格或连字符处换行(和默认差不多)
            主要处理英语单词
        
        2.while-space: 设置或检索对象内文本显示方式。通常我们使用于强制一行显示内容
            normal:默认处理方式
            nowrap:强制在同一行内显示所有文本,直到文本结束或者遭遇br标签对象才换行。
        
        3,text-overflow 文字溢出
        text-overflow:clip | ellipsis
        设置或检索是否使用一个省略标记(...) 表示对象内文本溢出
        clip:不显示省略号,而是简单的裁切
        ellipsis: 当对象内文本溢出时显示省略标记(...)
            
        注意:要先强制一行显示,while-space:nowrap; 还有text-overflow:hidden 一起使用才有效果
    

    十六、css精灵技术(sprite) 小妖精

    网页向服务器请求背景图像作为修饰,当网页中的图像过多时,服务器就会频繁地接受和发送请求,降低页面的加载速度。
    为了减少服务器接受和发送请求的次数,提高页面的加载速度,出现了CSS精灵技术(也称为CSS Sprites,css雪碧)
    
    精灵技术本质
    所谓的CSS精灵是一种处理网页背景图像的方式,它将一个界面涉及到的所有零星背景图像都集中到一张大图中去,
    然后将大图应用于网页,这样当用户访问该界面时,只需向服务器发送一个请求,网页中的背景图像即可全部展示出来。
    这个由很多小背景图像合成的大图被称为精灵图
    
    使用:
        网页元素只需要精灵图中不同位置的某个小图,要想精确定位到精灵图中的某个小图,就需要使用CSS的backgroud-image、background-repeat和background-position属性进行背景定位
        其中最关键的是使用background-position属性精确的定位。
    

    十七、字体图标
    大图不但增加了总文件的大小,还增加了很多额外的网络请求,而且不能很好的进行缩放,图片放大和缩小会失真,这时候就可以使用“字体图标”了

    字体图标的优点:
    可以做出和图片一样可以做的事情,改造透明度、旋转度等
    本质上其实就是文字,可以很随意的改变颜色、产生阴影、透明效果等等
    本身体积很小,但携带的信息并没有削减。
    几乎支持所有的浏览器
    移动端设备可以使用
    
    1、字体图标使用流程
        1.UI人员设计字体图标的效果图(SVG)
        2.前端人员上传生成兼容字体文件包
        3.前端人员下载兼容字体文件包到本地
        4.把字体文件引入到HTML界面中
        
        上传生成字体包
        http://icomoon.io
        http://www.iconfont.cn
    

    十八、滑动门(文本自动撑开容器)
    为了使各种形状的背景能够自适应元素中文本内容的多少,出现了css滑动门技术。使各种特殊形状的背景能够自由拉伸滑动,以适应元素内部的文本,可用性更强。最常见于各种导航栏的滑动门

    核心技术
        核心技术就是利用CSS精灵(主要是背景位置)和盒子padding撑开宽度,以便能适应不用字数的导航栏
        
    布局:
        <li><a herf="#"><span>导航栏内容</span></a></li>
    
    总结:
        1,a 设置背景左侧,padding撑开合适宽度
        2,span设置背景右侧,padding撑开合适宽度剩下由文字继续撑开宽度
        3,之所以a包含span就是因为 整个导航都是可以点击
    

    十九、before 和 after伪元素(详解)
    之所以称之为伪元素,是因为它们不是真正的界面元素,html没有对应的元素,但是其所有用法和表现行为与真正的界面元素一样,
    可以对其使用诸如页面元素一样的css样式

    注意:
    1,伪元素:before和after添加内容默认是inline元素,这两个元素的content属性,表示伪元素的内容设置:befroe和:after是必须设置content属性,否则不起作用
    2,伪元素是不占位置的。
    
    注意区分伪元素选择器,和伪类选择器 例如:伪类 :hover   伪元素::before
    

    二十、过渡(CSS3)
    transition 过渡效果实现补间动画

    transition:要过渡的属性   花费时间    运动曲线    何时开始
    如果是多组属性变化,还是用逗号隔开。
    
    
    属性:
        transition: 简写属性,用于在一个属性中设置四个过渡属性
        transition-property:    规定应用过渡的CSS属性名称
        transition-duration:    定义过渡效果花费的时间 默认0 单位是秒 s 比如:0.5s 这个s必须要写
        transition-timing-function:规定过渡效果的时间曲线。默认是ease  (linear:均速 ease:缓慢下来 ease-in:加速 ease-out:减速 ease-in-out:先加速后减速)
        transition-delay        规定过渡效果何时开始。默认是0
    
    例子:         transition: width 0.5s ease-out 0s;
    
    
    如果想要多个属性都变化,写个all就可以
    
        
    2,2D变形
        translate:水平移动
        1、translate(x,y) 水平居中方向和垂直方向同时移动(也就是)
        2、translate(x) 仅水平方向移动(X轴移动)
        3、translate(Y) 仅垂直方向移动(Y轴移动)
        
        transform:translate(50%); //走自己的一半宽度
        transform:translate(100px); //走100px
        
        rotate(deg),旋转角度
        
        
    3,transform-origin:可以调整元素转换变形的原点
    
    比如:
        div{transform-origin:left top;transform:rotate(45deg);}//改变元素原点到左上角,然后进行顺时针旋转45度
        
    如果是4个角,可以用left top 这些,如果想要精确的位置,可以用px像素
        div{transform-origin:10px 10px;transform:rotate(45deg);}
        
    4,rotateX() 沿着X轴旋转
       rotateY() 沿着Y轴旋转
       rotateZ() 沿着Z轴旋转
    
    
    
    5、3D
        x坐标 左边是负的 右边是正的
        y坐标 上边是负的 下边是正的
        z坐标 里面是负的  外边是正的
        
        
    6、透视
        透视可以将一个2D平面,在转换的过程中,呈现3D效果
        
        
            原理:近大远小
            浏览器透视:将近大远小的所有图像,透视在屏幕上
            perspective:视距,表示视点距离屏幕的长短,视点,用于模拟透视效果是人眼的位置
            
            
        perspective:500px 视距越小,效果越明显(给父容器添加视距效果)
            
        
        transform:translate3d(x,y,z); x 和y可以是px或者% z只能是px;
        
    7、两面翻转
        两个盒子重合,前面翻转180度隐藏掉,后面的接着翻转180度可见
        
        backface-visibility:hidden;不是正面则隐藏
    

    二十一、动画(animation)
    语法格式:
    animation:动画名称 动画时间 运动曲线 何时开始 播放次数 是否反方向

        css3 动画属性
            @keyframes          规定动画
            animation           所有动画属性的简写属性,除了animation-play-state 属性
            animation-name      规定@keyframes 动画名
            animation-duration  规定动画完成一个周期所花费的秒或毫秒。默认是0
            animation-timing-function 规定动画的速度曲线。默认是 ease
            animation-delay     规定动画何时开始
            animation-iteration-count 规定动画被播放的次数 默认是1
            animation-direction 规定动画是否在下一周期逆向地播放 默认 normal (normal 正常方向 reverse 反方向运行 alternate 动画先正常运行再反方向运行,并持续交替运行
                                                                                alternate-reverse 先方向运行,再正方向运行,并持续交替)
            animation-play-state 规定动画是否正在运行或暂停,默认是running
            animation-fill-mode  规定对象动画时间之外的状态
                
            
            
        @keyframes 动画名称{ form{} to{}}           ->定义动画
        
        transform:translate rotate ;多组变形 
    

    二十二、伸缩布局
    主轴:Flex容器的主轴主要用来配置Flex项目,默认是水平方向
    侧轴:与主轴垂直的轴称为侧轴,默认是垂直方向
    方向:默认主轴从左到右,侧轴默认从上到下

    主轴和侧轴并不是固定不变的,通过flex-direction可以互换
    
    使用:
    类似weight
    在父容器中定义 display:flex;
    
    在子容器中定义 flex:1, 平分  或者在子容器中的各个子容器设置平分的值 
    1,2,1 中间的2就是占2/4 的大小
    
    设置最大最小值
    min-width:
    max-width:
    保证盒子被挤压或者拉伸太厉害
    
    如果固定其中的子盒子的宽度,其他设置了flex的值,则会固定盒子之后剩下的大小进行划分
    
    
    flex-direction: column;//row 是水平方向  column 是垂直方向
    

    二十三、 调整对齐对齐方式
    主要控制容器内子元素的对齐方式。

    1、 justify-content (水平对齐)
        flex-start 默认值。项目位于容器的开头,让子元素从容器的开头排序       白话:让子元素从父容器的开头开始排序
        flex-end 项目位于容器的结尾。白话:让子元素从父容器的后面开始排序
        center  项目位于容器的中心。白话:让子元素在父容器中间显示
        
        space-between 项目位于各行之间留有空白的容器内  白话:左右的盒子贴近父盒子,中间平均分布空白间隙
        space-around 项目位于各行之前、之间、之后都留有空白的容器内    白话:相当于给每一个盒子添加了左右margin外边距
    
    
    2、  align-items 调整侧轴对齐,(上面相当于水平对齐,这个相当于垂直对齐)
        和上面的属性类似
        stretch:默认值。项目被拉伸以适应容器 白话:让子元素的高度拉伸适用父容器(子元素不给高度的情况下)
        
        
        
    3、  flex-wrap 控制是否换行
        nowrap 默认值。规定灵活的项目不拆行或不拆列。不换行,则收缩 显示
        wrap 规定灵活的项目在必要的时候拆行或拆列
        wrap-reverse:规定灵活的项目在必要的时候拆行或拆列,但是以相反的顺序 (翻转)
        
        
        
    4、  align-content 堆栈(由flex-wrap产生的独立行)对齐
        针对flex容器里面多轴(多行)的情况,align-items是针对一行情况下进行排列。
        
        必须对父元素设置自由盒属性display:flex;并且设置排列方式为横向排列flex-direction:row;并且设置换行,flex-wrap:wrap;
        这样设置才会起作用(flex-flow: row wrap;)注意,是在多行的情况下才会起作用;
        stretch:拉伸以适应容器
        center:
        flex-start
        flex-end
        space-between
        space-around
        
        
        flex-flow是flex-diraction、flex-wrap的简写形式(flex-flow: row wrap;)
        
    5、 order控制子项目的排列顺序,正序方式排序,从小到大
        对排列的顺序进行排序
        order: 1;(数值越小越往前)
    

    二十四、BFC(块级格式化上下文) 就是一个封闭的区域
    BFC他是一个独立渲染的区域,只有Block-level box参与,它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干
    里面的盒子浮动,都不会对外部盒子有影响

    1、display 属性为block list-item table 的元素,会产生BFC
    
    2、产生BFC的条件(块级元素才具有BFC特性)
        float 属性不为none
        position为absolute 或fixed
        display为inline-block,table-cell table-caption flex inline-flex
        overflow不为visible   
        
    3、BFC布局规则特性
        1,在BFC中,盒子从顶端开始垂直地一个接一个地排列
        2,盒子垂直方向的距离由margin决定,属于同一个BFC的两个相邻盒子的margin会发生重叠
        3,在BFC中,每一个盒子的左外边缘(margin-left)会触碰到容器的左边缘(border-left)(对于从右到左的格式来说,则触碰到右边缘)
        4,BFC的区域不会与浮动盒子产生交集,而是紧贴浮动边缘
        5,计算BFC的高度时,自然也会检测浮动的盒子高度
        
        它是一个独立的渲染区域,只有Block-level box参与,他规定了内部的Black-level Box如何布局,并且与这个区域外部毫不相干0
    
    4、作用(常用 overflow:hidden)
        可以清除内部元素的浮动
        解决外边距合并问题
        制作右侧自适应
    

    二十五、补充知识
    渐进增强 progressive enhancement
    针对低版本浏览器进行构建页面,保证最基本的功能,然后在针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验
    类似爬山,由地处往高处爬

    优雅降级
    一开始就构建完整的功能,然后再针对低版本浏览器进行兼容
    类似蹦极,由高往低处下落
    
    浏览器前缀
    -webkit-            google chrome safari android browser
    -moz-               firefox
    -o-                 opera
    -ms-                internet explorer,edge
    -khtml-             konqueror
    
    背景渐变
    背景渐变有很严重的兼容问题,需要加上前缀进行兼容
    background:-webkit-linear-gradient(起始位置,起始颜色,结束颜色)
    background:-webkit-linear-gradient(起始位置,颜色 位置,颜色位置)(top,red 0%,greed 20%,red 100%)
    
    浏览手机等html显示地址:www.csstats.com
    W3C统一验证工具:http://validator.w3.org/unicorn/
    css压缩 http://tool.chinaz.com/Tools/CssFormat.aspx 或者 http://tool.chinaz.com/Tools/CssFormat.aspx
    
    
    转换ico图标 http://www.bitbug.net/
    <!-- 引入ico图标 1,他不是iconfont字体 2,位置是放到head标签中间 3,后面type=image/x-icon 4,为了兼容要将favicon.ico这个图标放在根目录-->
    <!-- 这个写法基本上所有的网站都是这样写,小图标 -->
    <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
            
    
            
    三大标签优化
    1、网页title标题
    title具有不可替代性,是我们的内页第一个重要标签,是搜索引擎了解网页的入口。
    
    标签的长度:Google(70KB),35个中文
                Baidu(56kb),28个中文
                
    关键字分布:最先出现的词语权重越高
    
    关键字词频:主关键词出现3次
                辅关键词出现一次
                
    
    建议:
        首页标题,网站名(产品名) 网站的介绍
        
    例如:
        京东(JD.COM)-综合网购首选-正品低价、品质保障、配送及时、轻松购物!
    
        
    2、description 网站说明
    对于关键词的作用明显降低,但由于很多搜索引擎,仍然大量采用网页的MATA标签中描述部分作为搜索结果的“内容摘要”。
    
    京东网:
        京东JD.COM-专业的综合网上购物商城,销售家电、数码通讯、电脑、家居百货、服装服饰、母婴、图书、食品等数万个品牌优质商品.便捷、诚信的服务,为您提供愉悦的网上购物体验!
    
    注意点:
    1、描述中出现关键词,与正文内容相关,这部分给人看的,所以要写的很详细,吸引用户
    2,同样遵循简短原则,字符数含空格在内不要超过120汉字
    3,补充在title和keywords中未能充分表述的说明
    4,用英语逗号 时关键词1,关键词2
    
    <meta name="description" content="京东JD.COM-专业的综合网上购物商城,销售家电、数码通讯、电脑、家居百货、服装服饰、母婴、图书、食品等数万个品牌优质商品.便捷、诚信的服务,为您提供愉悦的网上购物体验!" />
    
    3、keywords 是页面关键词,是搜索引擎关注点之一,keywords应该限制在6~8个关键词左右,电商类网站可以多 少许
        
    京东网:
        <meta name="Keywords" content="网上购物,网上商城,手机,笔记本,电脑,MP3,CD,VCD,DV,相机,数码,配件,手表,存储卡,京东"/>

    相关文章

      网友评论

          本文标题:CSS笔记

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