css干货部分

1.css的引入方式(三种):
        a.行内样式<div> <p style="color: green">我是一个段落</p>  </div>
        b.内接样式
            <style type="text/css">
                /*写我们的css代码*/
                span{ color: yellow; }
            </style>
        c.外接样式
            c.1 链接式 <link rel="stylesheet" href="./index.css">
            c.2 导入式
                <style type="text/css">
                    @import url('./index.css');
                </style> 
    2.css的选择器
        a.基础选择器
            a.1 标签选择器
                可以选择所有的标签,比如div,ul,li,p等等,不管标签藏得多深,都可以找到
                    /*标签选择器p*/
                    p{
                        color: red;
                    font-size: 20px;
                    }
                    
            a.2 id选择器(方式:#id)
                 同一个页面中id不能重复,任何的标签都可以设置id(id命名规范同函数名)
            a.3 类选择器
                a.3.1 所谓类,就是class 与id用法非常类似,任何标签都可以加类,                类还可以重复,属于归类的概念.
                a.3.2 同一个标签中可以携带多个类,用空格隔开
        b.高级选择器
            b.1 后代选择器 :使用空格表示后代选择器.顾名思义,父元素的后代(儿孙满堂)
            b.2 子代选择器 :使用>表示子代选择器.比如div>p,仅仅表示当前div元素选中的子代
            b.3 并集选择器 :多个选择器用逗号隔开.表示选中的多个标签所选中的所有元素
            b.4 交集选择器 :第一个标签必须是标签选择器,第二个必须是类选择器
                语法:div.active{}
            b.5 属性选择器 :根据标签的属性选择,选中当前的标签
                以for属性为例:
                     1 /*根据属性查找*/
                     2             [for]{
                     3                 color: red;
                     4             }       
                     6  /*找到for属性的等于username的元素 字体颜色设为红色*/
                     7             [for='username']{
                     8                 color: yellow;
                     9             } 
                     10  /*以....开头  ^*/ 
                     12             [for^='user']{
                     13                 color: #008000;
                     14             }
                     15             
                     16 /*以....结尾   $*/
                     17             [for$='vvip']{
                     18                 color: red;
                     19             }
                     20             
                     21 /*包含某元素的标签*/
                     22             [for*="vip"]{
                     23                 color: #00BFFF;
                     24             }
                     28 /*指定单词的属性*/
                     29             label[for~='user1']{
                     30                 color: red;
                     31             }
                     32             
                     33             input[type='text']{
                     34                 background: red;
                     35             }
            b.6 伪类选择器 :伪类选择器一般用在超链接a标签中,
                        使用a标签的伪类选择器,要遵循"爱恨准则"  LoVe HAte
                    示例:
                        1               /*没有被访问的a标签的样式*/
                        2         .box ul li.item1 a:link{
                        3             
                        4             color: #666;
                        5         }
                        6         /*访问过后的a标签的样式*/
                        7         .box ul li.item2 a:visited{
                        8             
                        9             color: yellow;
                        10         }
                        11         /*鼠标悬停时a标签的样式*/
                        12         .box ul li.item3 a:hover{
                        13             
                        14             color: green;
                        15         }
                        16         /*鼠标摁住的时候a标签的样式*/
                        17         .box ul li.item4 a:active{
                        18             
                        19             color: yellowgreen;
                        20         }
            b.7 伪元素选择器 
                    示例:
                        /*设置第一个首字母的样式*/
                                p:first-letter{
                                    color: red;
                                    font-size: 30px;

                                }
                                
                        /* 在....之前 添加内容   这个属性使用不是很频繁 了解  使用此伪元素选择器一定要结合content属性*/
                                p:before{
                                    content:'alex';
                                }
                                
                                
                        /*在....之后 添加内容,使用非常频繁 通常与咱们后面要讲到布局 有很大的关联(清除浮动)*/
                                p:after{
                                    content:'&';
                                    color: red;
                                    font-size: 40px;
                                }
    3.css的继承性和层叠性
        a.继承性 继承特点:继承了父类的属性和方法
            继承父类的属性
                a.1 有些属性可以继承:color,font-*,text-*,line-*.主要是文本级的标签元素
                a.2 一些盒子元素属性,定位的元素(浮动,绝对定位,固定定位)不能继承
        b.层叠性 权重的标签覆盖了权重小的标签(谁的权大听谁的)
            b.1 数: id的数量 class的数量 标签的数量     (顺序不能乱)
                    权重100    权重10    权重1

            b.2 继承来的属性,谁描述的近(距离)
            b.3 权重相同时,以后来设置的属性为准
            b.4 第一个选择器没有选中内层标签,那么它是通过继承来设置的属性,那么它的权重为0。第二个选择器选中了内层标签,有权重。

                第一种现象:当权重相同时,以后来设置的属性为准,前提一定要权重相同
                #box2 .wrap3 p{
                    color: yellow;
                }    
                #box1 .wrap2 p{
                    color: red;
                }
                我们会发现此时显示的是红色的。


                第二种现象: 前选择器没选中内层标签,它是通过继承来设置的属性,那么它的权重为0。    后选择器选中内层标签,有权重。
                #box1 #box2 .wrap3{
                    color: red;
                }
                #box2 .wrap3 p{
                    color: green;
                }
                我们会发现此时显示的是绿色的。

                 
                第三种现象:如果都是继承来的属性,谁描述的近,显示谁的属性。'就近原则'

                #box1 #box2 .wrap3{
                    color: red;
                }
                 .wrap1 #box2{
                    color: green;
                }
                我们会发现此时显示的是绿色的。
            b.5 !important :权限无限大(不能随便使用)
    4.盒模型 内层到外层content padding border margin
        a.盒模型的属性:
            a.1 内容的宽度
            a.2 height:内容的高度
            a.3 padding:内边距,边框到内容的距离
                1.padding区域有背景色,且背景颜色和内容颜色一样。也就是说background-color这个属性将    填充所有的border以内的区域
                2.padding有四个方向,分别描述4个方向的padding
                    描述的方法有两种:
                        1、写小属性,分别设置不同方向的padding
                        padding-top: 30px;
                        padding-right: 30px;
                        padding-bottom: 30px;
                        padding-left: 30px;
                         

                        2、写综合属性,用空格隔开

                        /*上 右 下 左*/
                        padding: 20px 30px 40px 50px ;
                        /*上 左右  下*/
                        padding: 20px 30px 40px;
                        /* 上下 左右*/
                        padding: 20px 30px;       
                        /*上下左右*/
                        padding: 20px;
                3.一些标签默认有padding:
                    比如ul标签,有默认的padding-left值。
                    那么我们一般在做站的时候,是要清除页面标签中默认的padding和margin。以便于我们更好的去调整元素的位置。

                    我们现在初学可以使用通配符选择器
                    *{
                      padding:0;
                      margin:0;    
                    }
                    But,这种方法效率不高。

                    所以我们要使用并集选择器来选中页面中应有的标签(不同背,因为有人已经给咱们写好了这些清除默认的样式表,reset.css)
            a.4 border:边框,就是指盒子的宽度
                边框三要素:粗细 线性样条 颜色
                    border- 3px;
                    border-style: solid;
                    border-color: red;
                    还可以单独对某一个方向进行设置(left,right,top,bottom)
            a.5 margin:外边框,盒子边框到附近最近盒子的距离
                margin: 20px;    /*表示四个方向的外边距离为20px*/
                margin-top: 30px;    /*表示盒子向下移动了30px*/
                margin-left: 50px;    /*表示盒子向右移动了50px*/
            a.6 计算宽高
                盒子的真实宽度=width+2*padding+2*border

        b.margin塌陷问题
            1.设置浮动后,不会出现margin塌陷问题
            2.设置浮动后,margin:0 auto;失效
                两个标准流下兄弟盒子 设置垂直方向上的margin时,以较大的为准,这种现象叫塌陷.
                没法解决,我们称为这种技巧叫“奇淫技巧”。
            
            margin:0 auto;表示上下外边距离为0,左右为auto的距离
                使用margin:0 auto;注意点:
                1.使用margin: 0 auto;水平居中盒子必须有width,要有明确width,文字水平居中使用text-align: center;
                2.只有标准流下的盒子 才能使用margin:0 auto; 
                当一个盒子浮动了,固定定位,绝对定位(后面会讲),margin:0 auto; 不能用了
                3.margin:0 auto;居中盒子。而不是居中文本,文字水平居中使用text-align: center;
 
    5.标准文档流
        web网页制作,就是从上往下的排版,这个排版就是流(类似织毛衣)
        a.空白折叠现象    :多个空格在一起只会显示一个
        b.高矮不齐,底边对齐                                                                        :文字,图片大小不一,会让页面的元素出现高矮不齐的现象,但是浏览器中会发现底边对齐.
        c.自动换行,一行写不满,换行写

    6.行内元素和块级元素
        a.行内元素,块级元素特点
            a.1行内元素
                1 与其他行内元素并排
                2 不能设置宽高,默认宽度就是文字的宽度.
            a.2块级元素
                1 霸占一行,不能与其他任何元素并列
                2 并接受宽高的设定,默认宽度父亲的100%
        b.行内元素,块级元素区分
            标签区分
                1.文本级标签:p,span,a,b,i,u,em.
                2.容器级标签:div,h系列,li,dt,dd.
            b.1 行内元素:除了p之外,所有文本级标签,都是行内元素.p是文本标签,却是个块级元素.
            b.2 块级元素:所有容器级标签都是块级元素,外加p这个块级元素.
        c.块级元素和行内元素的相互转换(display)
            c.1 块级元素转化成行内元素,例如div 对于div设置 display:inline 即可
            c.2 行内元素转化成块级元素,例如span 对于span设置 display;block 即可

    7.脱离标准流
        a.float:浮动    (none,left,right)
            a.1 浮动元素特点:
                1.浮动的元素脱标(脱离了标准流)
                2 浮动的元素互相贴靠
                3 浮动的元素有"子围"效果
                4 浮动的元素收缩的效果(浮动元素紧凑效果)
            a.2 清除浮动:
                1.清除浮动原因:影响页面布局,使页面排版错乱
                2.清除浮动的方法: 
                    .1.给父盒子设置高度    一般会常用页面中固定高度,且子元素并排.如导航栏
                    .2.clear:both     clear三值:left right both(当前元素左右两边都不允许有浮动)
                    .3.伪元素清除法     给浮动元素父盒子,也就是不浮动元素,添加clearfix的类,然后设置
                                    .clearfix:after{
                                        /*必须要写这三句话*/
                                        content: '.';
                                        clear: both;
                                        display: block;
                                    }

                                    例:/*新浪首页清除浮动伪元素方法*/
                                                  content: ".";
                                                    display: block;
                                                    height: 0;
                                                    clear: both;
                                                    visibility: hidden
                    .4.overflow:hidden
                                值                描述
                            visible    默认值。内容不会被修剪,会呈现在元素框之外。
                            hidden    内容会被修剪,并且其余内容是不可见的。
                            scroll    内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
                            auto    如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
                            inherit    规定应该从父元素继承 overflow 属性的值。

        b.绝对定位
        c.固定定位
    8.文本属性和字体属性
        a.文本属性:
            a.1 文本对齐:text-align属性规定元素中的文本的水平对齐方式.
                            属性值:none center left right justify
            a.2 文本颜色:    color属性
            a.3 文本首行缩进: text-indent属性规定元素首行所进度的距离,单位建议使用em
            a.4 text-decoration属性规定文本修饰的样式
                属性值:none(空 默认) underline(下划线) overline(定义文本上的一条线) line-through(定义穿过文本下的一条线)
                inherit(继承父元素的text-decoration属性的值)
            a.5 line-height 设定行高
        b.字体属性:
            b.1 字体大小: font-size表示设定字体大小,如果设定成inherit表示继承父元素的字体大小值.
            b.2 字体粗细: font-weight表示设置字体的粗细    属性值:none(默认值,标准粗细) bold(粗体) broder(更粗)
                   lighter(更细) 100~900(设置具体粗细,400等同于normal,而700等同于bold) inherit(继承父元素字体的粗细值)
            b.3 字体系列 font-family: "Microsoft Yahei", "微软雅黑", "Arial", sans-serif
                        出现浏览器不支持的字体,会尝试执行下一个
            b.4 line-height行高 
                针对单行文本垂直居中 
                    公式:行高的高度等于盒子的高度,可以是当行文本垂直居中,注意值适用于单行文本.
                针对多行文本垂直居中
                    行高的高度不能小于字体的大小,不然上下字之间会紧挨在一起.
                    padding-top:(盒子高度-行高*行数)/2px    (同时需要将盒子的高度降低前面的值)
    9.超链接导航栏案例 
            html结构
                <div class="nav">
                        <ul>
                            <li>
                                <a href="">路飞学城</a>
                            </li>
                            <li>
                                <a href="">老男孩</a>
                            </li>
                            <li>
                                <a href="">网站导航</a>
                            </li>
                            <li>
                                <a href="">网站导航</a>
                            </li>
                            <li>
                                <a href="">网站导航</a>
                            </li>
                            <li>
                                <a href="">网站导航</a>
                            </li>
                        </ul>
                    </div>

            css代码如下:
                *{
                padding: 0;
                margin: 0;
                }
                ul{
                list-style: none;
                }
                .nav{
                 960px;
                /*height: 40px;*/
                overflow: hidden;
                margin: 100px auto ;
                background-color: purple;
                /*设置圆角*/
                border-radius: 5px;
                }
                .nav ul li{
                float: left;
                 160px;
                height: 40px;
                line-height: 40px;
                text-align: center;
                }
                .nav ul li a{
                display: block;
                 160px;
                height: 40px;
                color: white;
                font-size: 20px;
                text-decoration: none;
                font-family: 'Hanzipen SC';
                }
                /*a标签除外,不继承父元素的color*/


                .nav ul li a:hover{
                background-color: red;
                font-size: 22px;
                }

    10.background
        a. background-color属性表示背景颜色
        b. background-img:表示设置次元素的背景图片
        c. background-repeat:表示设置钙元素平铺的方式
                    值            描述
                repeat        默认。背景图像将在垂直方向和水平方向重复。
                repeat-x    背景图像将在水平方向重复。
                repeat-y    背景图像将在垂直方向重复。
                no-repeat    背景图像将仅显示一次。
                inherit        规定应该从父元素继承 background-repeat 属性的设置。        
        d. background-position: 属性设置背景图像的起始位置。
                    这个属性设置背景原图像(由 background-image 定义)的位置
                
                属性值:
                    
                    值    
                        top left
                        top center
                        top right
                        center left
                        center center
                        center right
                        bottom left
                        bottom center
                        bottom right
                    描述
                        如果您仅规定了一个关键词,那么第二个值将是"center"。
                        默认值:0 0;    这两个值必须挨在一起。
        e.精灵图技术
            css精灵图(雪碧图)原理:
                只有一张大的合并图,需要显示小图标时,就需要截取大图的一小部分显示.
            css精灵图的好处:
                1.利用css sprites能减少网页的http请求,从而大大提高页面的属性
                2.css sprites能减少图片的字节
                3.解决了网页设计师在图片命名上的困扰,提高网页的制作效率.
                4.更换风光方便,只需改变一张,维护方便.
            css精灵图不足:
                1.css精灵图最大问题是内存使用
                2.拼图维护比较麻烦
                3.使css的编写变得困难
                4.css精灵图调用的图片不能被打印


            可以使用background综合属性制作通天banner,什么是通天banner呢,就是一般我们电脑的屏幕都是1439.但是设计师给我们的banner图都会比这个大,那么我们可以此属性来制作通天banner。

            background:  red  url('./images/banner.jpg')  no-repeat   center top;
            background-attach
            设置fixed之后,该属性固定背景图片不随浏览器的滚动而滚动

    10.定位:1.相对定位 2.绝对定位 3.固定定位
        1.相对定位:相当于自己原来的位置定位(参考点是原来的位置)
            现象和使用:
                1.如果当前元素仅仅设置了相对定位,那么与标准流的盒子没什么区别
                2.设置相对定位之后,才可以使用四个方向的属性:top,bottom,left,right
            特性: 1.不脱靶 2.形影分离 3.老家占坑(移动的过程也被占用)
            用途: 1.微调元素位置 2.做绝对定位的参考(父相子绝)
                
            position:relative(相对定位)
                a.三大特性:1.不脱靶 2.形影不离 3.老家流坑
                b.用途: 1.微调元素 2.做绝对定位的参考 3.作为"父相子绝"的参考
                c.参考点:以自己原本的本身位置做可参考点
        2.绝对定位:

            position:absolute(绝对定位)
                a.特性: 1.脱标 2.做遮盖效果,提成了层级
                b.用途: 1.父相子绝,用途很多(绝对重点)
                c.参考点:单个绝对定位,top属性描述,是以页面左上角定位
                        如果是父相子绝的,那么是以父辈元素左上角基准点

        3.position:static(固定定位)
        
            c.参考点:https://www.cnblogs.com/majj/p/9040408.html
        4.position:fixed

        
        注:
            父相子绝:父辈元素设置相对定位,子元素设置绝对定位

        5.定位优先级
            z-index压盖现象的四条规则: (四大特性,记住就能找到盒子了)
            1.z-index值表示谁压着谁,数值大的压着数值小的
            2.只有定位了的元素,才能有z-index,也就是说,不管相对定位,绝对定位,固定定位,都可以使        用z-index,而浮动元素不能使用z-index.
            3.z-index值没有单位,就是一个正整数,默认的z-index值为0,如果大家没有z-index值,谁在    上面压着别人,定位了元素,永远压住没有定位的元素.
            4.从父现象:父亲怂了,儿子再牛逼也没用
原文地址:https://www.cnblogs.com/pupilheart/p/9250354.html