CSS 学习笔记


    一、css基础选择器Cascading style sheet
        html负责结构、css负责样式、js负责行为
        css写在head标签里面,容器style标签
        1、标签选择器
            1)、所有的标签都能够当做选择器,比如body、h1、dl、ul、span
            2)、不管这个标签藏得多深,都能被选上
            3)、选择的是所有的,而不是某一个
        2、id选择器
            1)、任何标签都可以有id,id的命名以字母开头,可以有数字下划线,大小写严格区别
            2)、同一个页面id不能重复
        3、类选择器
            1).就是类的符号
            2)、任何标签都可以携带class属性,class属性可以重复,可以有多个
            3)、类的使用决定一个人的css水平
        问题:到底用id还是class属性?
            除非极特殊情况用id,
            原因:id是js用的,也就是说js要通过id属性得到标签
            类上样式,id上行为
    二、css高级选择器
        1、后代选择器
            例:<style type="text/css">
                    .div1 p{
                        color:red;
                    }
                </style>
                1)空格就是表示后代,.div1 p就是.div1的后代所有的p
                2)强调下一代,不一定是儿子
                例:<style type="text/css">
                        .div1 p{
                            color:red;
                        }
                    </style>
                    <div class="div1">
                        <ul>
                            <li>
                                <p></p>
                                <p></p>
                                <p></p>
                            </li>
                        </ul>
                    </div>
        2、交集选择器
            h3.special{
                color:red;
            }
            必须是h3标签,必须是special属性
        3、并集选择器
            h3,li{
                color:red;
            }
            用逗号就表示并集
        4、通配符*
            *就表示所有元素
            *{
                color:red;
            }
    三、css3选择器
        1、儿子选择器(IE7开始兼容,IE6不兼容)
            div>p{
                color:red;
            }
        2、序选择器(IE8开始兼容,IE6、IE7都不兼容)
            <style type="text/css">
                ul li:first-child{
                    color:red;
                }
            </style>
        3、下一个兄弟选择器(IE7开始兼容,IE6不兼容)
            +表示选择下一个兄弟
            <style type="text/css">
                h3+P{
                    color:red;
                }
            <style>
            选择上的是h3元素紧挨着的第一个兄弟
    四、CSS的继承性和层叠性
        1、继承性
            有一些属性,当给自己设置的时候,自己的后代都继承上了,这个就是继承性。
        哪些属性能继承?
            color、text-开头的、line-开头的、font-开头的
            这些关于文字样式的,都能够继承;所有关于盒子的、定位的、布局的属性都不能继承
            所以,如果我们的页面的文字,都是灰色,都是14px。那么就可以利用继承性,继承性是从自己开始,知道最小的元素
        2、层叠性
            层叠性:就是css处理冲突的能力。所有权重计算,没有任何兼容问题!
            根据什么统计权重呢?
                id的数量,类的数量,标签的数量
                如果权重一样,以后出现的为准
        3、权重问题深入
            1、同一个标签,携带了了多个类名,有冲突?
                <p class="spec1 spec2">我是什么颜色?</p>
                <p class="spec2 spec1">我是什么颜色?</p>
                和在标签中的挂类名的书序无关,只和css的顺序有关;
                <style type="text/css" media="screen">
                    .spec2{
                        color:red;
                    }
                    .spec1{
                        color:green;
                    }
                </style>
                绿色的因为css的green写在后面
            2、!important标记
                来给一个属性提高权重,这个属性的权重就是无穷大
                注意写法
                    正确的
                    font-size:6px !important;
                    错误的
                    font-size:6px;!important; 不能写在外面
                    font-size:6px important; 不能忘记感叹号
                三点注意事项
                1)、!important提升的是一个属性,而不是一个选择器
                2)、!important无法提升继承的权重、该0还是0
                    <div>
                        <p>哈哈哈哈</p>
                    </div>

                    div{
                        color:red !important;
                    }
                    p{
                        color:blue;
                    }
                3)、!important不影响就近原则
                    问题?如果大家都是继承来的,按理说应该按照就近原则,那么!important能否影响就近原则呢?
                        答案:不影响,不能给远的写一个!important,干掉近的
                        <style type="text/css" media="screen">
                            div{
                                color:red !important;
                            }
                            ul{
                                color:blue;
                            }
                        </style>
                        <div>
                            <ul>
                                <li>我是什么颜色?</li>
                            </ul>
                        </div>
        权重问题的总结?


    五、盒模型
        1、盒子中的区域
            width

            height

            padding
                善于使用父亲的padding,而不是儿子的margin

                错误写法:padding-left:30px;
                         padding:20px;
                         发生覆盖:后面的padding大属性层叠掉了他们
                小练习
                        1、问题:求实际占有宽度?
                            div{
                                width:200px;
                                height:200px;
                                padding:10px 20px 30px;
                                padding-right:40px
                                border:1px solid red;
                            }
                          
                        2、说出下面盒子真实占有宽高?
                            div{
                                width: 200px;
                                height: 200px;
                                padding-left: 10px;
                                padding-right: 20px;
                                padding: 40px 50px 60px;
                                padding-bottom: 30px;
                                border: 1px solid red;
                            }
                background-color将填充所有border以内的区域

            border:
                border-style: dotted(圆点虚线) dashed(方形虚线) solid(实线) double(双实线) groove ridge inset outset
                组成:border-width | border-style | border-color
                往下拆分:border-top-width border-top-style border-top-color
                实际中到底怎么用?什么简单用什么 

            margin:盒子居中:margin:0 auto

                <style type="text/css">
                    width:200px;
                    height:200px;
                    border:1px solid red;
                    padding:50px;
                </style>
                这个盒子width:200px;height:200px;但是真实占有高度是302px*302px,这是因为还要加上padding、border

    六、标准文档流            
        1、什么是标准文档流
            就是一个默认的状态,元素在排列过程中,自动从左至右,从上到下的排列,最终窗体形成从上到下一行行元素,并且每行从左到右排列;。
        2、标准文档流的微观现象?
            (1)、空白折叠现象 <img>中间没缝 挨着
            (2)、高矮不齐底边对齐
            (3)、自动换行
        3、标准文档流等级
            (1)块级元素
                1.霸占一行
                2.能接受宽高
                3.如果不能接受宽高,那么宽度将设置为父亲的100%
            (2)行级元素
                1.排列在一行
                2.不能设置宽高
        4、小提示: 
            (1).容器级的标签,里面可以放置任何东西;文本级的标签里面,只能放置文字、图片、表单元素。 
            (2).p标签是一个文本级标签。p里面只能放文字、图片、表单元素。其他的一律不能放。 
            (3).定义列表是一个组标签,不过比较复杂,出现了三个标签: 
        5、元素分类
            HTML分类
                容器级
                    div h li dt dd
                文本级
                    p a em span b u i
            CSS分类
                块级元素
                    div h li dt dd p
                行内元素
                    a em span b u i
            块级元素转行内元素 display:inline; 
                div{
                    display:inline;
                    background-color:pink;
                    width:500px;
                    height:500px;
                }
                inline就是行内、一旦,给一个标签设置,那么这个标签立即变为行内元素,此时他和一个span无异
                此时div不能设置宽度、高度;这个div可以和别人并排了
            行级元素转块级元素 display:block;
                span能够设置宽度、高度
                span必须霸占一行,别人无法和他并排
                如果不设置宽度,将撑满父亲
        6、css中一共有三种手段,使一个元素脱离标准文档流
            1、浮动
            2、固定定位
            3、绝对定位
    七、浮动 
        1、浮动的性质
            1、浮动元素脱标
            2、浮动元素互相贴靠
            3、浮动的元素有“自围”效果

            性质:脱标、贴边、自围、收缩

            收缩:一个浮动的元素,如果没有设置width,那么将自动收缩为文字的宽度(这点非常像行内元素)
                <style type="text/css" media="screen">
                    div{
                        float: left;
                        background-color: gold;
                    }
                </style>

                <div>我是文字</div>

            原则:永远不是一个东西单独浮动,浮动都是一起浮动,要浮动大家都浮动

        2、浮动的清除
            <style type="text/css" media="screen">
                /* div{
                    height: 100px;
                } */
                    li{
                        float: left;
                        margin-left: 30px;
                        background-color: gold;
                    }
            </style>

            <div>
                <ul>
                    <li>HTML</li>
                    <li>CSS</li>
                    <li>JS</li>
                </ul>
            </div>

            <div>
                <ul>
                    <li>学习方法</li>
                    <li>英语水平</li>
                    <li>面试技巧</li>
                </ul>
            </div>

            方法1:给浮动的元素的祖先元素增加高度
                如果一个元素要浮动,那么它的祖先元素一定要有高度,有高度的盒子,才能关注浮动
                只要浮动在一个有高度的盒子中,那么这个浮动就不会影响后面的浮动元素,所以就是清除浮动带来的影响了
            方法2:clear:both(致命缺陷margin失效)
                网页制作中,高度height很少写,为什么?因为能被内容撑高!


            方法3:隔墙法 
                .box1{
                    height: 15px;
                }

                <div>
                    <ul>
                        <li>HTML</li>
                        <li>CSS</li>
                        <li>JS</li>
                    </ul>
                </div>
                <div class="box1"></div>
                <div>
                    <ul>
                        <li>学习方法</li>
                        <li>英语水平</li>
                        <li>面试技巧</li>
                    </ul>
                </div>

                或衍生出了内墙法

                <div>
                    <ul>
                        <li>HTML</li>
                        <li>CSS</li>
                        <li>JS</li>
                    </ul>
                    <div class="box1"></div>
                </div>
                <div>
                    <ul>
                        <li>学习方法</li>
                        <li>英语水平</li>
                        <li>面试技巧</li>
                    </ul>
                </div>
            方法4:overflow:hidden;
                一个父亲不能被自己浮动的儿子,撑出高度。但是,只要给父亲加上overflow:hidden;那么,父亲就能被儿子撑出高度了,这是一个偏方。
                <style type="text/css" media="screen">
                    .box{
                        overflow: hidden;
                    }
                    li{
                        float: left;
                        margin-left: 30px;
                        background-color: gold;
                    }
                </style>

                <div class="box">
                    <ul>
                        <li>HTML</li>
                        <li>CSS</li>
                        <li>JS</li>
                    </ul>
                </div>
                <div>
                    <ul>
                        <li>学习方法</li>
                        <li>英语水平</li>
                        <li>面试技巧</li>
                    </ul>
                </div>
        3、浮动清除总结
            1)、加高法
                浮动的元素,只能被有高度的盒子关住。也就是说,如果盒子内部有浮动,这个盒子又高,那么妥妥的浮动不会相互影响,但是工作中,我们绝不会给所有的盒子加高度,这是因为麻烦,并且不能适应页面的快速变化
            2)、clear:both
                最简单的清除浮动的方法,就是给盒子增加clear:both;表示自己内部的元素,不受其他盒子的影响,
                浮动确实被清除了。但是有一个问题,就是margin失效。两个div之间,没有任何的间隙
            3)、隔墙法
                在两部分之间,建立一个墙。隔开两部分浮动,让后面的浮动元素,不再去追前面的浮动元素。
            4)、overflow:hidden;
                这个属性的本意,就是将所有溢出盒子的内容,隐藏掉。但是,我们发现这个东西能够用于浮动的清除。

                
    八、margin
        1、塌陷现象
            (1)、标准文档流中,竖直方向的margin不叠加,以较大的为准
            (2)、如果不在标准文档流,比如盒子都浮动,那么两个盒子之间是没有塌陷现象的
        2、盒子居中
            margin:0 auto;
            注意:
                1)、使用margin:0 auto;的盒子,必须有width,有明确的的width
                2) 、只有标准流的盒子,才能使用margin:0 auto;居中。

                    也就是说,当一个盒子浮动了、绝对定位、固定定位,都不能使用margin:0 auto;
                3)、margin:0 auto;是在居中盒子,不是居中文本。
                文本居中要使用text-align:center;
        3、善于使用父亲的padding,而不是儿子的margin
            如果父亲没有border,那么儿子的margin实际踹的是“流”,踹的是这“行”。所以父亲整体也掉下来
            margin这个属性,本质上描述的是兄弟兄弟之间的距离;最好不要用这个margin表达父子之间的距离
            所以,我们一定要善于使用父亲的padding,而不是儿子的margin

    九、行高和字号

        1、行高
            CSS中,所有的行,都有行高。盒模型的padding,绝对不是直接作用在文字上的,而是作用在行上的
                line-height:40px;
            文字,是在自己的行里面居中的。比如,现在文字字号14px,行高是24px。那么 line-height:24px; font-size:14px;

            为了保证字在行里面居中,工程师有一个约定:行高、字号,一般都是偶数。这样,他们的差就是偶数,就能够被2整除。
        2、单行文本垂直居中

            P{
                height:60px;
                line-height:60px;
            }
            行高等于盒子高,所以这行文本就在盒子里面垂直居中

            注意:只适用于单行文本垂直居中!!不适用于多行。
                如果想让多行文本垂直居中,需要设置盒子的padding 
                公式:padding-top:(盒子高-行高*行数)/2

        3、font属性
            1、使用font属性,能够将字号、行高、字体,能够一起设置

            font: 14px/24px "宋体";
            等价于三行语句
                font-size:14px; line-height:24px;font-family(字体):"宋体";
                注意:
                    1、网页中不是所有的字体都能用,要看用户的电脑里装没装。
                        页面中,中文只使用:微软雅黑、宋体、黑体。如果页面中需要其他的字体,那么需要切图。
                        英语:Arial、Times New Roman

                    2、为了防止用户电脑里面,没有微软雅黑这个字体,就要用逗号隔开备选字体。font-family:"微软雅黑","宋体"
                    
                    3、我们要将英语字体,放在最前面,这样的中文,就不能匹配英语字体,就自动变为后面的中文字体。
                        font-family: "Times New Roman","微软雅黑","宋体"
                    4、所有的中文字体,都有英语别名,我们也要知道
                    5、行高可以用百分比,表示字号的百分之多少
                        font:12px/200% "宋体"

    十、超级链接的美化
         1、伪类
             1)、定义:同一个标签,根据用户的某种状态不同,有不同的样式,这就叫做伪类。
             2)、a标签有4中伪类,要求背诵:
                 a:link{
                     表示用户没有点击过这个链接的样式,是英语“链接”的意思
                 }
                 a:visited{
                     表示用户访问过这个链接的样式,是英语访问过的意思    
                 }
                 a:hover{
                     表示用户鼠标悬停链接的样式,是英语“悬停”的意思
                 }
                 a:active{
                     表示用户鼠标点击这个链接,但是不松手,此刻的样式是英语激活的意思
                 }
             注意:记住这四种状态,在css中,必须按照固定的顺序写:a:link、a:visited、a:hover、a:active如果不按顺序将失效
         2、超级链接的美化
             a标签在使用的时候,非常的难。因为不仅仅要控制a这个盒子,也要控制它的伪类

             简化写法
                 a{
                    display: block;
                    width: 120px;
                    height: 50px;
                    text-decoration: none;
                    background-color: purple;
                    color: white;
                }
                a:hover{
                    background-color: orange;
                }

    十一、background系列属性
            background-color属性
                用英语单词来表示
                    background-color: red; 
                用rgb方法来表示
                    绿色:
                    background-color: rgb(0,255,0);  
                    蓝色:
                    background-color: rgb(0,0,255);

                    黑色:
                    background-color: rgb(0,0,0);
                    光学显示器,每个元件都不发光,黑色的。
                    白色:
                    background-color: rgb(255,255,255);

                十六进制表示法
                    红色:
                        background-color: #ff0000;

                        f:15 
                        ff

                        15*16

    十二、相对定位和绝对定位

            相对定位
                position:relative;
                相对定位脱离标准文档流
                形影分离
            相对定位用途
                微调元素:例如一个文本框和一个按钮,文本框fontsize; 微调按钮位置
                绝对定位、固定定位、浮动脱标

        绝对定位
            
            1)、绝对定位脱标
                绝对定位的盒子是脱离标准文档流的,绝对定位以后,标签就不区分所谓的行内元素、块级元素了,不需要设置display:block就可以设置宽高了
            2)、参考点
                1)、如果用top描述,那么定位参考点就是页面的左上角,而不是屏幕的左上角
                2)、如果用bottom描述,那么就是浏览器首屏窗口尺寸对应的页面的左下角
                3)、经典面试题(爱立信面试题)
            3)、以盒子为参考点
                1)、一个绝对定位的元素,如果父辈元素中也出现了定位了的元素,那么将以父辈这个元素为参考点
                2)、要听最近的已经定位的祖先元素的,不一定是父亲,可能是爷爷
                3)、不一定是相对定位,任何定位都可以作为参考点
                4)、子绝父绝、子绝父相、子绝父固都可以给儿子定位
                    子绝父绝没有意义,都脱离标准文档流,页面不稳定
                    子绝父相有意义,都没有脱离标准文档流,儿子脱标在父亲的范里移动
                !5)、绝对定位的儿子,无视参考的那个盒子的padding
                !6)、绝对定位的盒子居中
                    绝对定位以后、所有标准文档流规则失效,margin: 0 auto 失效
                    怎么办呢?盒子居中?left:50%;margin-left:-盒子宽度的一半
        固定定位
            固定定位,就是相对浏览器窗口定位,页面如何滚动,这个盒子显示的位置不变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值