zoukankan      html  css  js  c++  java
  • css一文全部复习

    css这么玄学的东西,背后一定有其原理可以学习。w3c就是最好的网站,知识点要反复记忆,经典案例反复练习,才能达到标准的css水平。

    css就是 选择器+ 属性。选择器有很多种,属性会更多。但是归根到底就是选择器+属性。属性里面分基础和中等,基础属性只需要记忆就好,但是高级属性则需要重点加强记忆。

    css里面最重要的概念就是元素类型。+ 显示,浮动,定位。盒子模型就是基础盒子,浮动和定位就是用来摆放盒子。

    一 基础模块:

    基础模块主要有8个常用知识点,其中前6个都比较简单,边框和内外边距有需要注意的点,还会引入盒子模型的概念。此外还有5 个html标签特殊使用方法: 图标,链接,列表 ,表单,表格。

    1.css代码语法: 选择器+ {属性值:值};选择器就是选择的对象。{}就是声明的意思。和对象不同,使用;分开。

     a.css内联样式:标签+style属性来定义。

    <p style="color:red" ></p>
    

    b. 嵌入式样式

    c.外部引用样式:rel="stylesheet" type="text/css"是固定不可以修改的。

    <link href="base.css" rel="stylesheet" type="text/css" />
    

      

    2.选择器: 

     a.标签选择器:html里面的标签。

     b.class选择器:class类定义,. + class调用。<span class="stress bigsize">,定义多个class名。

     c.id选择器:id类定义,# + id调用。<span id="stressid bigsizeid">不能定义多个id名

     d.通用选择器:*选择所有的选择器。

    除了以上3个选择器以外,还有一下的关系选择器。

    a.子类选择器: (>)。只有第一代后代。(div>p 父元素使div的所有p)

    b.后代选择器:空格。 空格作用域元素所有后代。(div p div元素内的所有p)

    c.分组选择器:(,)都好。可以给多个标签元素设置同意样式。

    d.相邻兄弟选择器(+):兄弟的同级必须拥有相同的父元素。(div>p 紧随着div之后的元素)

    e.通用兄弟选择器(~)

    权重:

    1权值相同的时候,选择后面的。

    2权值不相同的时候,先选择等级高等级,如果同等级,选择数值高的。

    3 !important则是无限高。 background-color: yellow !important;  yellow 和分号之间先加入!important;

    权值等级划分, 一般来说是划分4个等级:

        第一等级:代表 内联样式,如 style="",权值为 1,0,0,0;

        第二等级:代表 ID选择器,如 #id="", 权值为 0,1,0,0;

        第三等级:代表 class  |  伪类  |   属性 选择器,如 .class | :hover,:link,:target | [type], 权值 0,0,1,0;

        第四等级:代表 标签 |   伪元素 选择器,如 p | ::after, ::before, ::fist-inline, ::selection, 权值 0,0,0,1;

        此外,通用选择器(*),子选择器(>), 相邻同胞选择器(+)等选择器不在4等级之内,所以它们的权值都为 0,0,0,0;

    3.常见样式:

    a.文字排版: font 

    1.字体:font-family:'宋体‘,
    2.大小font-size:12px;
    3.颜色color:666;
    4.斜体:font-style:italic; 5.下划线:text-decoration:underline; 删除线:line-through;
    font字体属性简写:font-size,font-family必须写;

    b.背景:background

    1.指定元素的背景色 background-color: color;
    
    2.背景照片 background-image:url(" ")/ 'image/1.png')
    
    3.背景重复 background-repeat:repeat-x,repeat-y; 只在水平或者垂直方向重复。no-repeat不重复。
    
    4.background-attachmen:fix固定(永远固定在一个地方),scroll滚动。
    
    5.background-position:right,top;
    
    简写background:颜色,imgae位置,重复,位置。

    c.轮廓: outline:轮廓是在元素边框之外绘制的,可能会和其他内容重复。并不是尺寸元素的一部分。

    1.轮廓形状outline-style: dotted 点状轮廓
    2.轮廓宽度 outline-2px;
    3.轮廓颜色:outline-color:red;
    4.轮廓偏移:outline-offset:25px;在指定边框外。
    轮廓简写:outline: 5px solid yello;

    d.文本排版: text

    水平对齐:text-align:center。center:把文本排列到中间。justify:实现两端对齐文本效果。inherit:规定应该从父元素继承text-align属性的值
    垂直对齐:vertical-align:middle.bottom。 vertical:top; 
    文本装饰:text-decoration:none。line-through。
    文本转化:text-transform:uppercase; lowercase; capitalize(首字母大写)
    文本阴影:text-shadow:2px(水平阴影),2px(垂直阴影);

    e.段落排版:

    1缩进:缩进2个文字的空白:line-indent:2em
    
    2行间距:行高:line-height:1.5em
    
    3中文文字间隔:letter-spacing:50px。英文文字间隔:word-spacing:50px;

    f.不透明度:

    opacity:0完全透明,1完全不透明。
    img:hover {opacity: 0.1; }和hover配合在一起使用。

    g.边框,内边距,外边距(盒子模型):

    0 宽度和高度:height,width。max-width,max-height。
    
    1 边框。border简写:border-width border-style border border-color. border-radius 
    top,right,bottom,left; top,right+left,bottom;
    top+bottom,right+left;
    2 外边距 :margin: margin的值:auto(浏览器来计算外边距),px,%,inherit。 margin属性设置为auto,元素在容器水平居中,元素指定宽度,剩余空间在左右边界(父元素容器)平均分配,必须给宽度。 margin外边距合并:可以让段落之间上下边距合并在一起。
    a.当两个垂直的外边距相遇,形成更大的外边距。合并的高度=max[margina,marginb] b.如果是嵌套的盒子,内部的div和外部的div是处于同一个行,所有会发生内外边距重合,如果需要上边距,给父元素内填充padding-top;
    c.只有普通文档流的垂直外边距才会合并。浮动和绝对定位外边距不会合并。

    3 内边距 :padding:
    padding的值:px,%,inherit;

    w3c标准盒子模型box-sizing:content-box;width=content;

    怪异盒子模型box-sizing:border-box;width=content+padding+border;

    补充指定样式:

    1.伪类选择器:定义元素的特殊状态(: )冒号。因为可以给html不存在的标签设置样式,hover:鼠标滑过时候。1悬停状态。2 已经访问和未经访问的样式。3 设置元素获得焦点样式。:hover,:active(点击的时候),:visited,:link,:disabled(被禁用的input),:cheked(被选择的input)。nth-child(2)。

    2.伪元素:指定元素部分的样式。元素的首字母样式,插入内容元素内容之前或者之后

    ::after。::before。每一个p元素之前插入内容。

    ::first-letter first-line。选择每一个p元素的首字母,首行。

    ::selection。选择用户选择的元素部分。

    4.样式的继承和覆盖性

      继承 ,层叠。

    二 中级模块:

    1.元素类型:

    css的核心就是,把装好样式的标签,进行布局。以上都是单纯css的知识,但是下面的会和html标签结合起来。 每一个HTML元素都有默认的display值,取决于元素类型。

    a.行内元素特性:inline

    2个:1a(超链接标签),2span(为了设置单独样式的标签) br ,i,em,strong ,label 
    
    1.和其他元素都在一行上。(在一行)
    2.元素 高度宽度,行高, 顶部和底部边距 不可以设置。(不设宽高)
    3.元素的宽度就是包含文字和图片的宽度,不能改变。(宽度等于文字宽度)

    b.块级元素:block。

    6个:1 div, 2 p(段落),3h(标题),4 ol,ul li(无序,有序列表),5table(表格),6form()。
    1.一个块级别从新的一行开始,独占一行。
    2.高度,宽度,行高都已经顶和底部都可以设置。设置宽高。
    3.宽度不设置,宽度等于父容器。

    c.行内块元素:inline-block。

    2个:1图片img,2 input(表单)
    1.和其他元素在一行。有行内元素的1。
    2.可以设置宽高。有块元素的2。

    给他们分别加上不同的background,给他们设定一定的width和height你就可以清晰的知道他们属于什么。

    标签本身有默认的display,但三者之间可以使用display:属性。自由的切换。

    2 布局。主要涉及元素布局,有4个非常重要的属性:显示display,position定位,浮动float,溢出overflow。display确定元素的分类,position确定了定位,溢出,浮动。此外,这个单元会有重点的案例需要学习。还需要理解BFC,IFC的概念。

    0 BFC,IFC

    a.流动模型:默认情况下都会这样布局。

    特点:1 块级元素,自上而下垂直分布,因为默认情况下块级宽度100%,以行的形式占据,主要是块级元素宽度继承父级。2内联元素从左到右显示。

    display值。

    line:水平菜单:li{display:inline};

    block:垂直链接:a{display:block}

    inline-block: 可以填充padding的垂直距离。li{display:inline-block;padding:20px;}一行。且有高度。

    none: h1.hidden{display:none};会影响布局。 visibility:hidden不会影响布局。

    b. 浮动模型:

    1什么是浮动?

    答:float创建浮动框,将其移动到左边右边,直到左边缘右边缘 触及包含块,或者另一个浮动框的边缘。

    2 浮动的特性?

    答:

    1 所有元素都可以浮动。

    2 浮动元素会脱离标准流:(1) 浮起来,移动到指定位置(2)浮动的盒子不在保留原先的位置。(3)一个盒子一个元素浮动了,理论上其他兄弟元素也要浮动,防止重叠。浮动只会影响后面的标准流,不会影响前面的标准流。

    3 浮动元素具有行内块元素的特点:(1) 浮动元素会一行内显示,(如果浏览器变小了,会换行),并且元素顶部对齐。(2)span也具有宽高,行内元素有浮动,不需要转化就有宽度和高度。块级盒子默认宽度和父亲一样宽,但是添加浮动后,它的大小根据内容决定。浮动宽度如何设定。

    (3)块级元素的宽度本来等于父元素的宽度,设置浮动一定要设置块元素的宽度(图片和表单本身就有宽度),且浮动几个元素加起来小于容器元素的宽度。行内块如img的宽度为本身。

    3 浮动使用场景?

    答: a.开始使用:文字混排效果,段落之间插入照片等。 img浮动,后面是p标签那么会漂浮效果,如果是div盒子那么则插入到下面。

    b. 网页布局:标准流父元素上下排版,之后内部子元素采取浮动排列左右位置,复合网页布局第一准则。浮动元素和标准父级搭配使用。.box li {} li标签1 .box 10 。 .box .class{} 20.li

    4 浮动会有什么影响?

    1 浮动框不属于文档流中的普通流,当元素浮动之后,不会影响块级元素的布局,只会影响内联元素布局。浮动的元素,会影响后面标准流,所有需要清楚浮动。

            .upper {
                height: 30px;
                float: left;
                height: 30px;
                 30px;
                border: 3px solid #73AD21;
            }
            .outer {
                border: 1px solid pink;
            }
        </style>
    </head>
    <body>
        <div class="upper">
    
        </div>
        <div class="outer">
    
        </div>
    

     清楚浮动的办法:

    1额外标签法:如果是内部:在内部的末尾加上一个div,clear。<div style="clear:both"></div>.

    或者在被浮动影响的盒子加上clear  :   left  /  right 。 

    闭合浮动。孩子会漂浮,很皮。在孩子后面添加一个门,进行闭合。

    2隐藏溢出:如果一个元素比包含它的元素高。 父级元素添加overflow。hidden、 auto 或 scroll 。

    溢出隐藏。外边距合并。

    3 父级after伪元素:清除方法::after 方式是额外标签法的升级版。 

    额外标签法的升级: 给父元素添加一个.clearfix属性,+:after.。

    4  父级双伪元素:清除浮动:给父元素添加添加一个.clearfix属性。 前面添加一个,后面添加一个。

    父元素高度不设定(也就是0),如果父元素包含正常块元素的话那么会撑开父元素。但是如果父元素没有包含块元素,包含的是浮动的,脱离了文档流,父元素高度就会为0。

    用 after伪元素清除浮动。其实关于清除浮动的代码主要就是围绕clear:both和如何隐藏content。

        <style>
            .one {
                background-color: violet;
            }
            .inner {
                float: left;
                height: 300px;
                 100px;
                background-color: wheat;       
            }
        .clearBoth {
            clear: both;
        }
        </style>
      <div class="one"> 
                <div class="inner clearfix">
                </div>
        </div>
    

     

    c. 层模型:

     就像PS里面每一层图片编辑功能,每一层都能精准定位操作。

    top、bottom、left 和 right 属性设置之前,必须设置position属性。

     a.绝对定位(相对于最近的定位祖先元素):最近的具有定位属性的父元素进行定位,如果不存在,则相对于body,也就是浏览器窗口。(父元素定位属性除了static,一般都是relative,子绝,父相)

    b.相对定位:reletive相对于正常位置。relative。

    c.固定定位 fixed。相对于视口定位。sticky粘贴元素。

    d.static静态默认的。

     定位的层叠顺序:z-index。z就是z轴。

    1 只有加了定位属性才有层顶顺序。

    2z-index:数值可以是正,负数,0。默认是auto。不能加单位。

    3 如果属性相同,那么后来者居上。

    4例子:个盒子都是绝对定位,叠加在一起,

    1 绝对定位居中:

    +了absolute的盒子不能通过margin:0 auto水平居中。

    水平垂直居中。

    绝对定位:left50%。-定位盒子宽度的一半。

    left:50%.让盒子左侧移动到父级元素的水平中那个心位置。

    在盒子向左移动自身宽度的一半。

    margin-left:-100px;margin的负值就是让自己向左边走。

    margin-top:-100px margin-top:-100px;

    2

    行内元素添加绝对或者固定定位,可以直接设定宽高。

    块级元素加绝对或者固定定位,如果不给宽度或者高度,默认大小是内容的大小。不在是100%的宽度。

    3浮动元素是不同的,只会压住它下面标准流的盒子,但是不会压住下面标准流盒子里面的文字和图片。浮动产生目的就是文字环绕效果。

    如果是absolute,会压住标准流的所有内容。

     d.flex布局。

    e.布局案例:

    导航栏:

    下拉菜单:

    对齐:

    1line-height对单行文本进行垂直居中。

    text-align: center;文本居中!

    2 padding垂直居中。

    3伪元素before实现cs垂直居中。

    4 绝对定位居中:

    +了absolute的盒子不能通过margin:0 auto水平居中。

    水平垂直居中。

    绝对定位:left50%。-定位盒子宽度的一半。

    left:50%.让盒子左侧移动到父级元素的水平中那个心位置。

    在盒子向左移动自身宽度的一半。

    margin-left:-100px;margin的负值就是让自己向左边走。

    margin-top:-100px margin-top:-100px; 也可以写transform。

     绝对定位居中:也可以写transform。

    5 flex布局。

    6 display:table-cell 和 vertical-align 4 verticle-align

    7隐藏节点实现css垂直居中

    http://www.dagoogle.cn/n/704.html
    

      

    https://www.jianshu.com/p/7bbc4860a45c
    

      

    三 css3:

    border, 阴影,2D转换,3D转化,过渡,动画,此外还有分页,多列用户界面等多个案例。需要会背会默写。

    2D:

    3D:

    过渡:

    动画:

    案例:

      1分页:

      2多列:

    flexbox。

  • 相关阅读:
    【转】Oracle 查询每天执行慢的SQL
    【转】StringBuilder与String的区别
    【转】C#单例模式实现
    【转】设计模式
    【转】十大排序算法
    ASP.NET jQuery 随笔 从DropDownList获取选择的text和value值
    ASP.NET jQuery 随笔 显示CheckBoxList成员选中的内容
    ASP.NET jQuery 随笔 在TextBox里面阻止复制、剪切和粘贴事件
    ASP.NET JQuery 随笔-搜索框默认提示
    JS 某一区域内所有CheckBox全选和取消全选(.net)
  • 原文地址:https://www.cnblogs.com/hacker-caomei/p/15018670.html
Copyright © 2011-2022 走看看