• css


    一.  CSS3概述

    1).什么是CSS

    Cascading style sheets 层叠样式表、级联样式表.简称样式表

    2).CSS的作用

    设置HTML网页中元素的样式

    3).HTML与CSS的关系

      HTML:负责网页的搭建,内容展示-----一个页面骨架

      CSS:负责网页的修饰,样式的构建-----给网页化妆

    4).HTML属性与CSS的使用原则

      W3C建议我们尽量使用css的方式来取代HTML属性

      CSS样式:

       a).样式代码高度重用

       b).方便后期的维护,提高了可维护性

    二.CSS的语法规范

    1.使用css的方式

    1).行内样式/内联样式

    将css样式定义在html标签中

    <any style="样式声明" ></any>

    <h1 :style="{color:'red','font-size':'30px'}">123</h1>
        </div>

    样式声明:  样式属性:值; 样式属性:值   color:red;

    内联样式开发中基本不用,只在学习和测试的使用

    内联样式无法重用,内联样式优先级最高

    2).常用的样式:

    设置文本颜色

    color:合法的颜色值(颜色的单词)

    设置字体的大小

    font-size:以px为单位的数字

    背景颜色

    background:合法的颜色值

    3).内部样式

    在网页head标签中创建style标签,在style标签内部定义样式

    <style>

      样式规则1;

      样式规则2;

    </style>

    样式规则:由选择器和样式声明组成

    div{color:purple;}

    元素选择器,由元素名称作为选择器

    页面上匹配这个元素的名称元素,都可以使用该样式

    特点:

    只能在本页面重用,其它页面无法重用,重用效果有限

    开发中少用,学习和测试中使用较多

    4).外部样式

    独立于任何网页,声明一个样式文件(*.css)

    在.css中保存样式规则

    使用步骤

    a).创建样式表文件.css

    b).在css文件中编写样式规则

    c).在网页的头部引入css文件

     <link href="css的url"  rel="stylesheet">

    2.CSS特性

    1).继承性

    大部分的css效果是可以直接被继承的。

    必须父子结构(有层级嵌套),子继承父

    2).层叠性

    可以为一个元素定义多个样式规则

    规则中属性不冲突(不重复)时,多个样式可以同时应用到当前元素上

    3).优先级

    如果多个样式声明冲突,按照样式规则的优先级应用样式。

    最高:内联样式

    内部样式和外部样式,就近原则

    最低:浏览器默认样式

    4).调整样式优先级

    !important规则

    放在属性值之后,与值之间用空格隔开

    作用:调整优先级,使用之后优先级提升

     


    三.基础选择器(重点*********)

    1.选择器的作用

    规范了页面中哪些元素能够使用定义好的样式的条件

    为了匹配元素

    2.选择器详解

    1).通用选择器

    匹配页面上所有的元素

    *{样式声明}

    效率极低,项目中少用,

    唯一使用的方式

    *{margin:0;padding:0}所有元素内外边距清0

    2).元素选择器,标签选择器

    设置页面中某种元素的默认样式

    div{}

    p{font-size:12px;}

    3).id选择器

    设置指定id元素的样式(专属的定制)

    #d1{color:red;}

    <div id="d1"></div>

    4).类选择器

    定义页面上某个或者某类元素的样式(公共样式,谁想用都可以)

    .类名{样式声明}

    <any class="类名"></any>

    注意:类名

         a).点不能省略

         b).不能以数字开头

         c).不能包含特殊字符(除了- _)

    5).多类选择器

    让一个元素引用多个类选择器,多个类名之间使用空格隔开

    <p class="my_font my_color my_bg">

    分类选择器

    将元素选择器和类选择结合的一种使用方式

    元素选择器.类选择器{样式声明}

    <h4 class="my_font">

    h4.my_font{background:pink;}

    特点:

      a).指向更精准

      b).优先级更高

    03_ex.html 添加div和p,内容随意

    用类选择器为所有元素设置字体颜色为红色.fontcolor

    用分类选择器为p标签设置背景颜色为yellow

    6).群组选择器

    将多个选择器放到一起定义公共的样式

    选择器1,选择器2,选择器3,.....{样式声明}

    div,p,#s1,p.my_font{

      color:#006699;

      background:#990066;}

    7).后代选择器

    通过元素的后代关系匹配元素

    后代:一级或者多于一级的嵌套关系

    语法:选择器1 选择器2 选择器3....{样式的声明}

    8).子代选择器

    通过元素的子代(一级嵌套(紧挨着的子元素))关系匹配元素

    选择器1>选择器2>选择器3....{样式声明}

     

    <div id="d1">

      <span>111</span>

      <div>

         <span>222</span>

      </div>

      <div>

         <div>

            <span>333</span>

         </div>

      </div>

    </div>

    1.所有span (div   span{color:red;})

    2.只修改第一个span (d1>span{color:red;})

    3.只修改第二个span  (#d1>div>span{color:red; })

    4.只修改第三个span(#d1>div>div>span{color:red; })

    5.修改后两个span 

    (#d1>div span{color:red;})

    9).伪类选择器

    匹配元素的不同状态的选择器

    选择器:伪类选择器{} 在这个标签的某一个状态下,才应用此样式

    9.1链接伪类

    a):link{color:red;}没有被访问过的状态

    b):visited{color:pink;}被访问之后的状态

    9.2动态伪类

    a):active{font-style:italic;}元素被激活状态(鼠标点住不放属于激活状态)

    input:focus{background:black;color:white;}匹配元素获取焦点时 

    img:hover{100px;}匹配元素被鼠标悬停时

     

    在03_ex中,添加一个a标签,内容随意。

     未访问时,字体为黑色,去掉下滑线(text-decoration:none)

     鼠标悬停时,文本变成红色,字体变成40px

     被激活后, 文字变成绿色,字体大小80px

     访问后,颜色变为橙色

    创建一个文本框输入框,默认字体为灰色gray,斜体

      被激活是,字体为非斜体 font-style:normal

      获取焦点时,字体变为红色

    10).选择器的权值

    权值,表示当前选择器的重要程度,权值越大优先级越高

    !important    >1000

    内联样式      1000

    id选择器      100    如:#id

    类和伪类       10    如:class

    元素选择器     1    如:div、span等

    *通用选择器    0

    继承的样式     无

    a).当一个选择器含有多个选择器时,需要将所有的选择器的权值进行相加

    然后再比较,权值高的优先级高

    b).分组选择器权值不相加,单独计算

    c).权值的计算不会超过其最大数量(100个1加在一起,不会大于一个10)

    d).样式后面添加!important,该样式直接获得最高优先级

     内联样式不能添加!important

    e).权值相同,按照就近原则

    (后代选择器里累加权值,群组选择器里不累加)

    四.尺寸和边框

    1.尺寸属性

    width

    最大宽度max-width

    最小宽度min-width

    height

    max-height

    min-height

    取值:

    a).以px为单位的数字

    b).%,相对单位,占据父元素尺寸的百分比

    总结:页面中允许设置尺寸的元素

    a).所有的块级元素都可以设置

    b).行内块都可以设置

      input(单选框和复选框不能设置)

    c).本身具有width和height属性的元素,可以设置

      table,img(行内元素)

    大部分的行内元素都不允许设置尺寸

    附加知识点 单位

    a).px 像素

    b).in 英寸 1in=2.54cm

    c).pt 磅值,一般修饰字体大小 1pt=1/72in

    d).cm

    e).mm

    f).em 相对于父级设置的尺寸乘以的倍数(1.5em)

    g).rem相对于根元素设置的尺寸乘以的倍数(1.5rem)

    h).%

    附加知识点 合法颜色值

    a).颜色的英文单词 red blue yellow gray ......

    b).#rrggbb 取值 16进制 r:0~ff  g:0~ff  b:0~ff

    c).#aabbcc 简写成#abc 

    d).rgb(0~255,0~255,0~255);(十进制的方式)

    e).rgb(r%,g%,b%);

    f).rgba(r,g,b,a)

      a:alpha 透明度(0-1) 1:不透明   0:透明

     

    2.溢出处理

    当内容多,元素区域小的时候,就会产生溢出效果

    默认都是纵向溢出的

    属性 overflow/overflow-x/overflow-y

    取值:a).  visible 默认值,溢出可见

          b).  hidden 溢出部分隐藏

          c).  scroll 显示滚动条,不管是否溢出都显示滚动条

                  只有在溢出时,滚动条可用

          d).  auto 自动,溢出方向有滚动条,没溢出的方向没有滚动条

    如果想显示成横向溢出

    需要在内容和容器之前再套一层容器

    内部容器宽度要比外部容器宽

     

    3.边框

    1).border:width style color;

    边框的宽度

    style:边框的样式

         取值:solid 实线

               dotted 虚线(圆点)

               dashed虚线(线)

               double 双实线

    color:边框颜色,合法的颜色值,支持透明色(transparent)

    border直接设置上右下左4个方向的边框

    取消边框 border:none/0;

    2).单边定义

    只设置某一条边的3个属性

    border-top/right/bottom/left:width style color;

    3).单属性定义

    border-color:#00f;

    border-style:dashed;

    border-10px;

    4).单边单属性定义(12个)

    border-top/right/bottom/left-width/style/color:

    5).边框的倒角

    把直角变成圆角

    border-radius:

    取值:a).以px为单位的数字

          b).%   50%设置圆形

    单角设置

    border-top-left-radius:10%;  左上

    border-bottom-right-radius:10%;右下

    border-top-right-radius:10%;右上

    border-bottom-left-radius:10%;左下

    画出一个柠檬

    6).边框的阴影

    box-shadow

    取值:

    h-shadow v-shadow blur spread color inset;

    h-shadow:水平方向阴影的偏移,正:往右,负:往左

    v-shadow:垂直方向阴影的偏移,正:往下,负:往上

    后面4个值(blur spread color inset),可以不写

    blur:阴影模糊距离,值越大,越模糊,负值就消失

    spread:阴影尺寸,指阴影在基础上扩出来的具体

    color:阴影的颜色

    inset:将默认的外部阴影变为内部阴影

    7).轮廓

    轮廓是指边框的边框,绘制于边框外边的线条

    outline:width style color;

    给input去掉轮廓 outline:none/0;

    尝试设置一个乒乓球拍的效果(宇智波的族徽)

    球拍的把手,margin-left:10px

    俩种写法

     

     

    五.框模型,盒子模型(重点)

    1.什么叫框模型

    1).页面元素皆为框(盒子)

    框模型,盒子模型 box model

    定义了元素框处理元素内容,内边距,外边距以及边框的计算方式

    默认的计算方式

    元素的实际占地宽度=左外边距+左边框+左内边距+内容区域的宽度+右内边距+右边框+右外边距

    元素的实际占地高度=上外边距+上边框+上内边距+内容区域的高度+下内边距+下边框+下外边距

    2.外边距,围绕在元素边框外的空白间距(元素与元素之间的距离)

    语法:margin 定义4个方向的外边距

    单边定义 margin-top/right/bottom/left

    取值:

    a).以px为单位的数字

    b).%,占父级宽度的百分比

    c).取值为正数,margin-left 元素往右移动  margin-top 元素往下移动  取值为负,就是相反方向

    d).auto 自动计算块级元素的外边距,对于上下外边距无效

      块级元素水平居中,要设置作用外边距auto

    简写方式

    margin:value  定义4个方向的外边距

    margin:v1 v2;  v1:设置上下,v2设置左右

                   margin:0 auto;设置块级元素水平居中

    margin:v1 v2 v3;    v1:上,v2:左右,v3:下

    margin:v1 v2 v3 v4; 上  右  下  左

     

    04_ex.html 两个div,尺寸300*300

    设置背景颜色,随意

    设置两个div之间的距离为50px,

    设置第二个div水平居中

     但是这样写外边距会重叠,以较大的

    3.自带外边距的元素

    h1~h6 p body ol ul dl pre

    一般在开发时候,通过样式重写的方式,来重置具有外边距的元素

    *{margin:0;padding:0;}

    body,button,......th,ul{margin:0;padding:0}

    4.外边距的特殊效果

    1).外边距合并

    当两个垂直外边距相遇时,他们将合并成一个,最终的距离取决于两个外边距中较大的值

     

    在04_ex中再创建两个span,内容随意,然后为两个span,都设置4个方向的外边距

    创建两个input text, 给其中一个设置4个方向的外边距

    2).行内元素对外边距表现

    行内元素垂直外边距无效(img除外)

    3).行内块对外边距的表现

    同一行中,一个行内块设置了垂直外边距,同行其它行内会跟着发生变化

     

    5.外边距溢出

    在特殊条件下,为子元素设置上外边距,会作用到父元素

    条件:

    1).父元素没有上边框

    2).为第一个子元素设置上外边距

    解决方案:

    1).为父元素添加上边框 弊端:影响了父元素的实际高度

    2).为父元素添加上内边距  弊端:影响了父元素的实际高度

    3).在父元素第一个子元素的位置,添加一个空的table标签

     

    6.内边距

    不会影响其他元素,但是会改变自己的占地尺寸,视觉上大小会发生变化

    语法:

    padding:value;  设置4个方向的内边距

    padding:v1 v2;  v1:上下,v2:左右   没有auto

    padding:v1 v2 v3; v1:上  v2:左右  v3:下

    padding:v1 v2 v3 v4; 上右下左

    单方向设置

    padding-top/right/bottom/left

     

    7.box-sizing属性

    指定框模型的计算方式

    box-sizing:content-box; 默认值

    默认的计算方式

    元素的实际占地宽度=左外边距+左边框+左内边距+内容区域的宽度+右内边距+右边框+右外边距

    元素的实际占地高度=上外边距+上边框+上内边距+内容区域的高度+下内边距+下边框+下外边距

    box-sizing:border-box;

    元素的实际占地宽度为=左外边距+width+右外边距

    元素的实际占地高度为=上外边距+height+下外边距

     

    六.背景

    1.背景颜色

    background-color:

    取值:合法的颜色值和transparent

    背景颜色和背景图片,填充都是从边框开始

    2.背景图片

    background-image:url(图片路径);

     

    3.背景图平铺

    background-repeat:

    取值

    repeat 默认值,平铺

    no-repeat 不平铺

    repeat-x  在水平方向平铺

    repeat-y  在垂直方式平铺

     

    4.背景图定位

    background-position:

    取值:

    1).x y 以px为单位的数字

     +:右  下    -:左 上

    2).x% y%

    3).关键字  x:left/center/right   y:top/center/bottom

     

    5.背景图片的尺寸

    background-size

    取值

    1).x y 以px为单位的数字

    2).x% y%

    3). cover 容器被图片100%填充覆盖,哪怕图片显示不全,也要把整个容器覆盖住。

    4).contain 容器要把图片100%包含起来,哪怕图片缩小的看不到,也要把整张图片都包含住

     

    6.背景图固定

    将背景图固定在网页的某个位置,一直处于可视区域中,不会随着网页滚动条滚动发生变化,但是只会显示在原容器中。

    background-attachment:

    scroll 默认值

    fixed 固定

     

    7.背景的简写方式

    在一个属性中,指定背景的多个属性值

    background

    取值

    color url repeat attachment position

    background:#faa;

    background:url(...);

     

     

    8.写样式的思路

    1).确认布局

    2).确认每个元素的大体位置和宽高

    3).背景,边框,轮廓....

    4).字体相关所有内容

    5).微调

    从外往里,从上往下,从左往右

     

    七.渐变gradient

    1.什么是渐变

    多种颜色平缓变化的一种显示效果

     

    2.渐变的主要因素

    色标:一种颜色,以及这种出现的位置

    一个渐变至少有两个色标

     

    3.渐变的分类

    1).线性渐变

    以直线的方式来填充渐变色

    2).径向渐变

    以圆形的方式来填充渐变色

    3).重复渐变

    将线性渐变和径向渐变  重复几次实现渐变

     

    4.线性渐变

    background-image

    取值:linear-gradient(angle,color-point1,color-point2,....)

    angle:表示渐变的方向或者角度

    取值:

      1).关键字

        to top      从下到上

        to bottom  从上到下

        to left      从右到左

        to right     从左到右

     2).角度 deg

       0deg  to top

       90deg to right

       180deg to bottom

       270deg to left

    color-point:色标

    取值   颜色 0%,颜色 50px

     

    5.径向渐变

    background-image:

    取值

    radial-gradient(半径 at 圆心,color-point1,color-point2,......);
    半径size:以px为单位的数字

    圆心position:1).x y 以px为单位的数字

                 2).x% y%

                 3).关键字  x:left/center/right

                           y:top/center/bottom

     

    6.重复渐变

    线性的重复

    background-image:repeating-linear-gradient(to bottom,#f00 0%,#00f 25%,#ff0 50%);

        

    径向的重复

    background-image:repeating-radial-gradient(30px at center center,#d8bbe7 50%,#0b090a 100%);

     

     

    7浏览器兼容性

    所有浏览器新版本都支持渐变属性

    对于不支持的版本,可以通过添加浏览器前缀的方式,让浏览器支持

    chrome  -webkit-

    firefox  -moz-

    IE      -ms-

    opera  -o-

    如果使用兼容性的写法,线性渐变中angle不能写方向,写起始点

    background: -webkit-linear-gradient(top, #27b0f6 0%, #0aa1ed100%);

     

    八.文本格式化

    1.字体的属性

    1).自定字体的类型

    font-family:黑体,华文彩云,宋体;
    用逗号隔开多个字体类型

    2).字体大小

    font-size

    取值:1.以px为单位的数字

          2.以pt为单位的数字

          3.em/rem

    3).字体加粗

    font-weigth

    取值 1.bold 加粗

         2.lighter 细一些

         3.normal

         4.value 为单位数字,100的整倍数 100~1000

    4).字体样式

      font-style

      italic/normal

    5).小型大写字母

    font-variant:

     small-caps;

     normal

    6).字体属性的简写方式

    font:style variant weight size family;

    至少要有size和family

     

    2.文本格式化

    1).文本颜色

    color:合法的颜色值

    2).文本排列(水平)

    text-align

    取值 left/center/right/justify(两端对齐)

    3).行高

    定义一行文字的高度

    如果行高大于字体本身的大小,该行文本将在指定的行高内,呈垂直居中效果显示

    line-height

    取值  a).以px为单位的数字

          b).无单位的数字,字体大小的倍数    line-height:2;

    多行文字,使用行高可能会出现不想要的结果

    4).线条的修饰

    text-decoration: 

    上划线 overline;

    下划线 underline

    删除线 line-through

    无线条 none

    5).首行缩进

    text-indent:以px为单位的数字

    6).文本阴影

    text-shadow:0px 0px 10px #006699;

    h-shadow 横向的偏移量

    v-shadow 纵向的偏移量

    blur 模糊距离

    color 颜色

     

    九、表格

    1.表格的常用属性

    1).边距属性 padding(td的margin无效)

    2).边框属性 border

    3).尺寸属性 width height

    4).文本格式  font-*  text-* line-height

    5).背景属性 颜色,图片 渐变

    6).指定单元格数据的垂直对齐方式

     vertical-align:top/middle/bottom

    01_ex 创建一个4*4的表格,内容自拟

    .设置每个单元格尺寸为100*100

    .设置表格和单元格的边框为1px 实线,黑色

    .尝试给每个td设置上外边距20px

    . 尝试给每个td设置左内边距10px

    .给表格添加标题,学生信息表

     

     td设置上外边距设置无效

     

    7).边框的合并

    border-collapse:

    separate; 默认值 分离

    collapse; 合并

    8).边框的边距(td的margin无效)

    border-spacing:

    必须保证边框是分离状态

    取值:1个值。水平和垂直距离相同

          2个值,第一个值设置水平,第二个值设置垂直

    9).标题位置

    caption-side:

    top 默认值

    bottom;

    10).显示规则

    告诉浏览器如何渲染一张表格

    table-layout:

    auto 默认值 自动布局表格,列的尺寸实际有内容决定

    fixed 固定表格布局,列的尺寸有设定的为准

     

    2. 表格的特有属性

    自动布局VS固定布局

    自动布局

    固定布局

    单元格大小会适应内容

    单元格取决于设定的尺寸

    表格复制时,加载速度较慢(缺点)

    任何情况下会加速加载表格(优点)

    自动布局会比较灵活(优点)

    固定布局不够灵活(缺点)

    适用于不确定每列大小并且表格不复杂的时候

    适用于确定每列尺寸的表格使用


    十.定位(重点********************************)

     

    1.什么是定位

    改变元素在页面中的位置

     

    2.分类

    1).普通流定位

    2).浮动定位

    3).相对定位

    4).绝对定位

    5).固定定位

     

    3.普通流定位

    页面中元素们的默认定位方式,默认文档流

    从上往下,从左往右排列

    1).每个元素都在页面有自己的空间

    2).每个元素都是从父元素的左上角开始显示(渲染)

    3).块级元素都是按照从上到下的方式逐个排列,每个元素独占一行

    4).行内元素是多个元素在一行中显示,从左往右逐个排列

     

    4.浮动定位(重点)

    1)当元素设置浮动之后,该元素脱离默认文档流,后面的非浮动元素会上前补位。当前元素会在当前行,向左或者向右排列

    float:left、right、none

    特点:

    a).元素一旦浮动,就脱离文档流了,不占据页面空间了,后面会上前补位

    b).浮动元素会停靠在父元素的左边/右边,或者其他已经浮动元素的边缘

    c).浮动就是解决多个块级元素在一行显示的问题

    2).浮动引发的特殊情况

    a).当父元素显示不下所有已浮动元素的时候,显示不下的几个将换行显示

      换行显示的规则:优先上浮,之后往左/右对齐

      浮动元素占位,浮动元素会根据浮动方向,占据方向上的位置,

      不让其他后面浮动元素占用

    b).元素一旦浮动,如果没有定义宽度,宽度会以内容为准

    c).元素一旦浮动起来,就变成了块级元素

      可以设置宽高,可以设置上下外边距

    d).文本,行内元素,行内块是不会被浮动元素压在下方。

      而是巧妙的避开了所有浮动元素,环绕着浮动元素显示。

    3).清除浮动

    元素一旦浮动起来,会对后续元素带来一定的影响(后续元素会上前补位)

    如果后续元素不想上前补位,那么给后续元素设置clear

    清除前面浮动元素对我的影响

    clear:left/right/both

    高度坍塌

    块级元素的高度如果不设置,高度以内部元素内容为准

    但是如果内部元素都是浮动元素,浮动元素不占据页面空间

    父元素的高,没有了。

    解决方案

    a).直接为父元素设置高度

      弊端:不知道父元素高度怎么办?!

    b).父元素也浮动

      弊端:浮动会影响后续元素

    c). overflow:hidden/auto;(加在父元素)

      弊端:当元素真的需要显示溢出内容的时候,就显示不出来了

    d).在父元素中追加一个空的块级元素,并且设置clear:both;

    5.定位的属性

    position:

    取值

    static:默认值,静态---->默认文档流

    relative 相对定位

    absolute 绝对定位

    fixed 固定定位

    元素的position设置为relative/absolute/fixed中任意一个值

    该元素被称为已定位元素

    6.偏移属性

    top/bottom/right/left

    left:100px 往右移100px

    top:-100px 往上移动100px

    7.相对定位

    元素相对于他原来的位置偏移某个距离

    没有脱离默认文档流

    页面上的不被其他 元素补位

    语法:position:relative;必须配合偏移属性使用(只写定位没有用)

    使用场合:

    1).位置微调

    2.)经常作为absolute的最近的已定位的祖先元素

    01_ex 用列表显示5张图片,做出照片墙效果

    当鼠标悬停在图片上时,团票相对于自己的位置往左上方移动8px

    8.绝对定位

    绝对定位的元素会脱离默认文档流

    绝对定位的元素会相对于离他的"最近的""已定位的""祖先元素"去实现定位

    如果所有祖先元素不是已定位元素,相对于body去实现定位

    属性:position:absolute;配合偏移属性使用

    使用场合:有层叠的元素效果时,使用

    绝对定位会让元素变为块级

    9.固定定位

    将元素固定在页面的某个位置

    元素不会随滚动条发生位置变化,一直固定在可视区域内

    语法:

    position:fixed;配合偏移属性使用

    注意

    1.固定定位脱离文档流,不占页面空间

    2.固定定位元素变为块级元素

    3.相对于body实现位置的偏移初始化

    10.堆叠顺序

    元素变为已定位元素,有可能出现堆叠

    默认堆叠顺序,后出现的已定位,堆叠顺序高

    想修改堆叠顺序

    z-index

    无单位的数字,数字越大,元素越靠上显示

    父子元素间,z-index无效,永远都是子元素压在父元素上面

    只有已定位元素才能使用z-index

     

     

     十一.显示

    1.显示方式

    元素在页面中的表现形式(块级,行内,行内块)

    display

    取值

    1).none 隐藏,不显示元素(不占据页面空间)

    2).block 让元素的表现形式和块级元素一样

            特点:独占一行,可以设置宽高,垂直外边距

    3).inline让元素的表现形式和行内元素一样

            特点:多个元素共用一行,不能设置宽高和垂直外边距

    4).inline-block让元素的表现形式和行内块元素一样

            特点:多个元素在一行中显示,但是可以设置宽高,垂直外边距

    5).table让元素的表现形式和table一样

            特点:尺寸以内容为准,每个元素独占一行,允许修改尺寸

    总结:一般情况下,会把行内元素显示方式修改成块级或者行内块

          元素在不显示的时候,使用none

     

    2.显示效果

    visibility

    取值 1.visible 默认 可见

         2.hidden 隐藏

    Q:display:none 和  visibility:hidden 的区别

        display:none 隐藏,是脱离默认文档流,不占据页面空间

        visibility:hidden 隐藏,不脱离文档流,会占据页面空间

     

    3.透明度

    opacity

    取值 0~1   越小越透明

     opacity:会连带着影响子元素

    Q:opacity和rgba

        opacity作用于元素,只要跟元素相关的颜色都会跟着透明,可以作用到子元素

       rgba只修改当前颜色的透明度,不影响其他内容

     

    4.垂直对齐方式

    vertical-align

    使用场合

    1).table标签中,控制文字的垂直对齐

      取值:top/middle/bottom

    2).img标签,控制图片与前后文字的垂直对齐方式

      取值:top/middle/bottom/baseline

    编写网页的时候,通常会将所有图片垂直对齐方式更改为除了基线以外的方式

     

     

    5.光标的样式

    cursor:

    取值

    1).default  箭头

    2). pointer 小手

    3).text     I

    4).crosshair   +

    5).wait     等待

    6).help     帮助

     

    十二.列表

    1.列表标识项

    list-style-type

    none  去掉标识项

    disc  默认 实心圆

    circle 空心圆

    square 矩形

     

    2.列表项图片

    list-style-image

    url(资源路径)

     

    3.列表项的位置

    list-style-position

    inside 将默认的列表项位置放到li里面

    outside 默认,列表项在li外面

     

     

    4.简写方式

    list-style:

    取值:type url position

    常用写法list-style:none;

     

     

    十三.css3 core 核心

     

    1.复杂选择器

    1).兄弟选择器

    具备相同父级元素的平级元素之间称为兄弟元素

    注意:兄弟选择器,只能往后,不能往前找

       a).相邻兄弟选择器,获取紧紧挨着某元素后面的兄弟元素

         选择器1+选择器2{}

       2).通用兄弟选择器,获取某元素后面所有满足条件的兄弟元素

         选择器1~选择器{}

     

    2.属性选择器 id class name type value style title....

          允许通过元素所附带的属性及其值来匹配页面元素

        基本语法

        [attr]{} attr表示任意属性

       

     

    可以匹配页面中所有附带attr属性的元素

        elem[attr]{}   elem[attr1][attr2]....{}

        匹配页面中所有附带attr属性的elem元素

        [attr=value]

        匹配attr属性为value的 元素

        elem[attr=value]

        匹配attr属性为value的elem元素 

        [attr^=value] 匹配属性值以value开头的元素

        [attr$=value] 匹配属性值以value结尾的元素

        [attr*=value] 匹配属性值中含有value的元素

        [attr~=value] 匹配属性值中含有指定的单词的元素

     

    3.伪类选择器

    :link :visited :hove :active :focus

    1).目标伪类(锚点)

    突出显示活动的HTML锚点元素,匹配被激活的锚点元素

      elem:target{}

      

    2).结构伪类

       a). :first-child

         匹配的是该元素的父元素的第一个孩子----子元素的大哥

       b).:last-child

         匹配的是该元素的父元素的最后一个孩子----子元素的小弟

       c).:nth-child(n)

        匹配的是该元素的父元素的第n个孩子 n从1开始

     

    09_ex 创建4行4列的表格,内容随意

    通过结构伪类设置样式

    第一行背景颜色为蓝色

    最后一行背景颜色为黄色

    第三行的第二列背景颜色为红色,字体大小为28px;

       3).:empty 匹配没有子元素的元素

         回车,空格,文本都不能写,才算没有子元素

       4).:only-child 匹配的元素是父元素中唯一的子元素

       5).:not 否定伪类,将满足指定选择器的元素,排除在外

         :not(selector){}

     

    4.伪元素选择器

    :first-letter{}或者::first-letter{ }

    匹配修改第一个字符的样式

    :first-line或者::first-line{ }

    匹配修改第一行字符的样式

    ::selection{}

    匹配修改选中文本的样式---只支持字体颜色和背景颜色

     

    10_ex

    添加一个div#d1 内容随意,

    首字符设置为加粗,红色,20px

    右外边距10px,首行文本橙色并倾斜

    用户选中的文本,字体颜色黄色,背景红色

    内容生成

    使用css动态的向某元素中插入一段"内容"

     

    十四.复杂选择器

    1.伪类选择器

    1).内容生成

    内容,既可以是文本,也可以是元素

    1.1):before或者::before

      匹配元素内容区域之前

    1.2):after或者::after

      匹配元素内容区域之后

    1.3).内容属性

      向匹配的位置处添加内容

      取值:1.字符串

            2.图片  url(路径)

    1.4).高度坍塌

            #parent:after{

                      content:"";display:block;clear:both;

             }

     

    1.5).外边距溢出

            #d3:before{

                      content:"";display:table;

             }

      

     

    十五.弹性布局

    1.什么是弹性布局

    弹性布局是一种布局方式

    主要解决一个元素中的子元素的布局方式,为布局提供最大的灵活性

     

    2.弹性布局的相关概念

    1).弹性布局的容器

      要把子元素布局成弹性布局的父元素称为容器

    2).弹性布局的项目

      要布局的子元素称之为项目

    3).主轴

      项目们排列的方向,称之为主轴

      项目们是横向排列,主轴就是x轴

      项目们是纵向排列,主轴就是y轴

    4).交叉轴

     与主轴垂直相交的方向,称之为交叉轴

     

    3.语法

    将元素变为弹性容器之后,那么他的所有子元素将变为弹性项目

    所有项目都允许按照弹性布局的方式排列

    display:

    取值:flex,将块级元素变为容器

          inline-flex,将行内元素变为容器

    注意:

    1).元素设置为flex容器之后

      子元素,项目的float/clear/vertical-align属性失效

    2).元素设置flex容器之后,子元素项目允许修改尺寸

    3).容器的对齐方式text-align失效

     

    4.容器的属性

    1).flex-direction 方向  

    设置主轴的方向

    取值:1.row  默认值,主轴是x轴,主轴起点是左端

          2.row-reverse主轴是x轴,主轴起点是右端

          3.column主轴是y轴,主轴起点是顶端

          4.column-reverse主轴是y轴,主轴起点是底端

    2).flex-wrap 不压缩,换行

    当一个主轴排列不下所有的项目时,可以设置换行显示

    取值:1.nowrap 默认值,空间不够时也不换行,项目会自动缩小

          2.wrap 换行

          3.wrap-reverse 换行并反转

    3).flex-flow

    是flex-direction和flex-wrap的缩写

    取值1.row nowrap 默认值

         2.column wrap 等组合

    4).justify-content

    定义项目在主轴上的对齐方式

    取值

       a).flex-start在主轴的起点对齐

       b).flex-end 在主轴的终点对齐

       c).center   在主轴居中对齐

       d).space-between 两端对齐

    5).space-around 每个间距相同

    6).align-items

    项目在交叉轴上对齐的方式

    取值:a).flex-start 默认值,在交叉轴起点对齐

          b).flex-end  在交叉轴终点对齐

          c).center    在交叉轴居中对齐

          d).baseline  在交叉轴基线对齐

          e).stretch    如果项目为设置尺寸,在交叉轴上占满所有空间

     

    5.项目的属性

    这组属性只能设置在某一个项目上

    不影响其他项目的效果

    1).order

     定义项目排列的顺序,值越小越靠近主轴起点,默认值为0

    取值:取值,无单位整数

    2).flex-grow

    定义项目的放大比例

    如果容器有足够大的空间,项目将按照比例放大

    取值:无单位整数,默认值为0,不放大

    取值越大,占据的剩余空间越多

    3).flex-shrink

    定义项目的缩小比例,当容器空间不足时,项目该如何缩小

    取值,无单位整数,默认值为1

    取值为0,不缩小

    取值越大,缩小越快

    4).align-self

    定义当前项目在交叉轴上的对齐方式

    取值:a).flex-start 默认值,在交叉轴起点对齐

          b).flex-end  在交叉轴终点对齐

          c).center    在交叉轴居中对齐

          d).baseline  在交叉轴基线对齐

          e).stretch    如果项目为设置尺寸,在交叉轴上占满所有空间

          f).auto 继承父元素的align-items效果

     

    十六.CSS hack

    IE firefox chrome

    不同浏览器对css的解析不一样,导致一份代码生成的效果不同

    我们需要针对不同的浏览器,写不同的css样式

    这个针对不同浏览器编写不同css cord的过程

    就叫做CSS hack

    淘宝不支持ie8

    boot4也不支持ie8

    拓展视频在tmooc上

    十七.转换

    改变元素在页面中位置,大小,角度以及形状的一种方式

    2D转换:只在x轴和y轴上发生转换效果

    3D转换:增加了z轴的转换效果

    网页中不存在真正的3d,模拟出来的

     

    1.转换属性

    transform

    取值:

    1).none 默认值,无任何转换效果

    2).transform-function

      一个或多个转换函数,多个的话,中间用空格隔开

     

    2.转换原点

    transform-origin

    取值:px为单位的数字

          %

          关键字  left/center/right  top/center/bottom

    取值个数:2个值,表示原点在x轴和y轴上的位置

              3个值  表示原点在x轴,y轴,z轴上的位置

     

     

    3.2D转换

    1).位移

    改变元素在页面中的位置

    2).属性transform

      取值

          2.1) translate(x) 指定元素在x轴上的位移距离

              + 往右移   - 往左移

          2.2) translate(x.y) 指定元素在x轴和y轴上的位移距离

              x同上

              y: +往下,-往上

          2.3) translateX(x) 只设置x轴上的位移

          2.4) translateY(y) 只设置y轴上的位移

    3).缩放

    改变元素在页面中的尺寸

    transform

    取值 a).scale(value)

          value 横向和纵向的缩放比例,默认为1

          >1 放大

          0<value<1 缩小

          -1<value<0 翻转缩小

          value<-1   翻转放大

         b).scale(value1,value2)

          value1,x轴的缩放比例

          value2,y轴的缩放比例

        c).scaleX(x)

        d).scaleY(y)

     

    4).旋转

    改变元素在页面中的角度

    transform:rotate(ndeg)

    n为+ 顺时针

    n为-  逆时针

     

     

    04_ex

    两个div d1和d2  100*100

    .将元素的d1 先旋转45deg,再位移50px

    . 将元素的d2 先位移50px,旋转45deg

     

     

    注意

    1).旋转是连同坐标一起旋转的,会影响旋转之后的位移效果

    2).旋转原点会影响最后旋转效果

    5).倾斜

    改变元素在页面中的形状

    transform:skew(x)

    skew(x)同skewX(x)

    让元素向着x轴发生倾斜效果,实际上是改变y轴的角度

    x:+ y轴逆时针倾斜

    x:- y轴顺时针倾斜

    skewY(y)

    让元素向着y轴发生倾斜效果,实际上是改变x轴的角度

    y:+  x轴顺时针倾斜

    y:-  x轴逆时针倾斜

    skew(x,y)

     

    05_ex

    200*200的div,背景颜色随意

    鼠标悬停时,该元素向右位移200px;

    向下位移200px,旋转135deg,向着x轴倾斜45deg,放大1.5倍

    v

     

    4.3d转换

    1).透视距离

    模拟人的眼睛到3d转换元素之间的距离

    perspective

    此属性,要加在转换元素的父元素上

     

    2).3D旋转

    transform:

    取值

    a).rotateX(xdeg)

    以x轴为中心轴,旋转元素的角度(老式爆米花机)

    b).rotateY(ydeg)

    以y轴为中心轴,旋转元素的角度(自动门)

    c).rotateZ(zdeg)

    以z轴为中心轴,旋转元素的角度(摩天轮)

    d). rotate3D(x,y,z,ndeg)

    x,y,z取值大于0,表示参与旋转

    取值为0表示部参与

    rotate3D(1,1,1,35deg)

     

    十八.过渡

    CSS属性的值,在一段时间内平缓的变化

    1).设置过渡属性

    transition-property:

    取值:a).all 能使用过渡的属性,一律用过渡体现

          b).具体的属性名称

    能够使用过渡的属性

    a).颜色属性

    b).取值为数字的属性

    c).转换

    d).阴影

    e).渐变

    f).visibility 

     

     

    1.过渡

    1).属性

    a).transition-property

    b).transition-duration

    2).指定过渡时间曲线函数

     transition-timing-function:

     取值 a).ease 默认值,慢速开始,速度加快,慢速结束

          b).linear 匀速

          c).ease-in 慢--快

          d).ease-out 快--慢

          e).ease-in-out 慢速开始,慢速结束,中间先加速后减速

    3).指定过渡元素的延迟时间

    transition-delay

    取值,以s/ms为单位的数字

    4).过渡属性编写的位置

    a).将过渡放在元素声明的样式中,有去有回

    b).将过渡放在触发的操作中(hover),只管去,不管回

    5).过渡的简写方式

    transition:property duration timing-function delay;

    一个过渡最简洁方式是transition:duration;

     

    起点:一个黄色div,200*200       福 10px

    终点:先旋转2160deg,位移500px,红色背景,圆形div,福 font-size?

     

    十九.动画(重点************)

    1.什么是动画

    使元素从一种样式逐渐变为另一种样式

    就是将多个过渡效果结合到一起

    2.动画是通过"关键帧",来控制动画的每一步

    关键帧

    1).动画执行的时间点

    2).在该时间点上的样式

     

    3.动画的使用步骤

    1).声明动画(定义很多关键帧)

    @keyframes 动画名称{

       0%{动画开始时的样式}

       25%{动画执行到1/4时的样式}

       50%{动画执行到1/2时的样式}

       100%{动画结束的时候的样式}

    }

    4.调用动画

     

    4.1).指定动画名称

    animation-name:change;

    4.2).指定动画播放的一个周期

    animation-duration:3s;

    4.3).指定动画播放的速度时间曲线函数

    animation-timing-function

    ease/linear/ease-in/ease-out/ease-in-out

    4.4).指定动画的延迟

    animation-delay

    4.5)动画的播放次数

    animation-iteration-count:infinite;

        取值

             a).具体次数,数字

             b).infinite无限次

    4.6).动画的执行方向

    animation-direction:alternate;

         取值 normal,默认值,正常播放 0-100

              reverse 逆向播放  100-0

              alternate 轮流播放   奇数次正向,偶数次逆向

    4.7).简写方式

    animation:name duration timing-function delay iteration-count direction

    最简洁方式animation:change 3s;

    4.8) animation-fill-mode:

    规定动画在播放前或者播放后的显示状态

         none 默认值,不显示

         forwards 动画播放完成后,保存最后一帧的状态

         backwards 动画播放之前,在延时的过程中,动画显示第一帧

         both 是同时设置forwards和backwards

    4.9) animation-play-state:

    设置动画是处于播放还是暂定的状态上

         paused

         running 

     

     

    5.动画的兼容性

    如果要低版本浏览器兼容,需要在动画声明之前加前缀

    @keyframes 动画名称{关键帧}

    @-webkit-keyframes 动画名称{关键帧}

    @-ms-keyframes 动画名称{关键帧}

    @-moz-keyframes 动画名称{关键帧}

    @-o-keyframes 动画名称{关键帧}

    钟表的应用

     

    二十.CSS的优化

    减少服务器压力

    提升用户体验

     

    1.css优化原则

    尽量减少HTTP请求的个数

    页面顶部引入css文件

    将css和js写在独立的文件中

     

    2.CSS代码优化

    合并样式

    缩小样式文件

    减少样式重写

    避免出现空的src和href

    选择更优的样式属性值

    代码压缩

     

    二十一.Bootstrap

    www.bootcss.com

    1.响应式布局(重点)

    Responsive web page 响应式布局/自适应网页

    可以根据浏览器设备不同(pc,pad,phone) 

    而自动的更改布局,图片,文字效果,不会影响用户体验

     

    1).响应式布局必须做到

    a).布局:不能使用固定宽度,必须是流式布局(浮动)

    b).文字和图片大小随着容器大小而改变

    c).媒体查询技术

     

    2).如何测试响应式网页

    a).使用真实设备测试

       好处:真实可靠

       坏处:测试任务量巨大

    b).使用第三方模拟器

       好处:无需添置太多真实设备,测试方便

       坏处:测试效果有限,需要进一步验证

    c).使用chrome等浏览器自带的模拟器

       好处:简单方便

       坏处: 测试效果有限,需要进一步验证

     

    3).编写响应式布局---重点**********************************

    a).在meta中声明viewport元标签

    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">

    使用meta设置视口

    viewport 视口

    width=device-width,视口宽度设置为设备宽度

    initial-scale=1.0 视口宽度是否能缩放  1/1.0 不缩放

    maximum-scale=1.0 允许缩放的最大倍率

    user-scalable=0 是否允许用户手动缩放 yes/no/1/0

    一般设置

    <meta name="viewport" content="width=device-width, initial-scale=1">

    b).所有内容/文字/图片使用相对尺寸,不要使用绝对值

    c).流式布局+弹性布局,搭配媒体查询技术

    d).使用css3 Media Query技术--响应式布局的必备条件

      Media:媒体,指的是浏览网页的设备

              screen(pc/pad/phone)

              tv(电视)

              print(打印机)......

     Media Query:媒体查询,可以根据当前浏览器设备不同,或者尺寸/方向/解析度等不同。有选择性的执行一部分CSS样式,忽略其他部分的css样式

     

    e).根据媒体查询的结果执行同一个css文件中不同的代码块

    @media screen and (min-768px) and (max-991px){

       选择器{样式}

       选择器{样式}

    }

     

    2.使用bootstrap

    1).简洁、直观、强悍的前端开发框架,让web开发更迅速、简单。

    中文镜像网站:http://www.bootcss.com

    英文官网 http://getbootstrap.com

    用于开发响应式布局、移动设备优先的 WEB 项目。

     

    2).使用boot

    下载boot4

    a).创建boot02文件夹,在boot02中创建css和js文件,把4个文件复制进去,使用ws  open  boot02

    b).在ws中new 新项目 boot02,在boot02中创建css和js,把4个文件复制进去

     

    3).全局css样式,1rem=16px

    a).按钮相关class

    基本类  btn

    btn-danger 危险红色
    btn-success 成功绿色
    btn-warning 警告黄色
    btn-info     信息蓝色

    btn-primary 主要
    btn-secondary 次要
    btn-dark"    深色

    btn-light     浅色

    不同边框按钮

    btn-outline-danger  红色边框
    btn-outline-success  绿色边框
    btn-outline-info      蓝色边框
    ...其他颜色都适用

    不同按钮大小
    btn-lg   大按钮
    btn-sm  小按钮
    btn-block 块级按钮

    btn-link 链接按钮

    b).图片相关class
    rounded  圆角
    rounded-circle  圆角50%
    img-thumbnail 缩略图

    img-fluid 响应式图片,图片会缩放,但是不会超过原始大小

    c).文字相关class

    字体颜色

    text-danger/success/info/primary/warning....

    字体的粗细

    font-weight-bold/light/normal

    文字对齐方式

    text-left/right/center/justify

    大小写/首字母大写

    text-uppercase/lowercase/capitalize

    字体大小  .h1~.h6

    d).列表相关class

    list-unstyled 去除标识符

    基本类(必须添加)    ul.list-group 列表组

            li.list-group-item 列表项

    acitve 列表项激活状态

    disabled 禁用状态

    列表项颜色

    list-group-item-success/danger/warning.....

    e).table相关的样式

    table类名,让后面的td有上边框

    table-bordered 带边框的表格

    table-striped 隔行变色

    table-hover 带悬停效果的表格

    table-primary/danger/warning。。。。 表格颜色

    响应式表格,用于table父元素上

    table-responsive-sm/lg/md/xl

     

    4).辅助类(公用样式)

    a).边框

    border 基本类,或者border-top/right/bottom/left

    颜色 border-danger/warning/info...

    清除边框 border-0  border-top-0。。。。。

    倒角  rounded 

    清除倒角  rounded-0

    b).显示

    visible 显示

    invisible 隐藏

    c).背景颜色

    bg-danger/warning/success

    d).浮动

    float-left/float-*-left

    float-right/float-*-right

    *代表屏幕分辨率:xl/lg/md/sm

    解决高度坍塌,父元素中添加clearfix

    e).尺寸

    w-*/h-*

    *:25/50/75/100

    25%,50%,75%,100%

    f).内外边距

    m-*/mt-*/mr-*/mb-*/ml-*

    p-*/pt-*/pr-*/pb-*/pl-*

    *:0   /    1  /      2    /    3    /    4     /    5

      0     0.25rem  0.5rem    1rem     1.5rem     3rem

     

    3.栅格布局(重点***********************************)

    1).web文本页面布局方法(三种)

     

    table

    div+css

    Boot中栅格

    优点

    简单,易控制

    语义正确,渲染效率高

    简单,容易控制,语义正确,渲染效率高,支持响应式

    缺点

    语义错误

    渲染效率低

    代码编写和控制比较麻烦

    如果页面非常复杂,不推荐使用

     

    2).使用栅格布局

    a).最外层需要使用容器

      container 定宽容器 (容器宽度写死了)

      container-fluid 变宽容器 (容器宽度随着父元素改变)

    b).容器中声明行  row (每一行等分12个单元格)

    c).行中声明列  col col-n (n指的是n/12)

    d).针对不同屏幕的需求使用不同的列名

     col-xl-1/2/3/...12

     col-lg-1/2/3/...12

     col-md-/1/2/3/4...12

     col-sm-1/2/3/4..12

    xl:Extra large 超大 >=1200px

    lg:large 大PC屏    >=992px

    md:medium 中屏pad   >=768px

    sm:small   小屏      >=576px

    xs:Extra small   超小屏

    col不添加数字,自动处理布局

    每一行的每个列宽度相等

    一行一列,第一行匹配小屏50%

    第二行,匹配中屏50%

    第三行,匹配大屏50%

     

    3).注意:不同屏幕下的列有适应性问题

    col-xl-* 只在xl下有效

    col-lg-* 在lg/xl下有效

    col-md-* 在md/lg/xl有效

    col-sm-* 在sm/md/lg/xl 有效

    总结:列可以在当前屏幕以及更大的屏幕下有效

    比如:<div class="col-lg-6 col-md-3 col-sm-3"></div>

    省略成<div class="col-lg-6 col-sm-3"></div>

    4).可以使用"列偏移"实现指定列以及其后面的列向右移动

    偏移量通过 offset-*-n来设置

    *:sm/md/lg/xl

    n:1~11

     

    栅格

    1.栅格的嵌套,在列里面去写其他row

     

    4.弹性布局

    使用d-flex/d-inline-flex 创建一个 弹性容器

    设置主轴方向  flex-row/flex-row-reverse/flex-column/flex-column-reverse

    设置主轴的排列方式

           justify-content-n;

           n:end center between around

    响应式flex类

    d-sm/md/lg/xl-flex

    flex-*-row

    flex-*-column 

    5.表单

    空间方向排列

    <form>  form-group 堆叠表单,垂直方向显示

              form-inline  内联表单,水平显示,内部可以写col

    样式

    文本框/密码框基本类  form-control

    多选框  form-check        块级,内边距1.25rem

            form-check-inline  变成一个弹性容器

            form-check-input  往左移动1.25rem

            form-check-label  下外边距清0

            form-text 块级,上外边距0.25rem

    默认的栅格

    水平表单

    div.row

    div.form-inline

    div.col

    div.col

    6.组件

    下拉菜单

    1).外层div要写dropdown

    2).内部有两个元素,button 和 放菜单的div

      2.1).button的类 dropdown-toggle--->添加下三角

      2.2).放菜单的div.dropdown-menu---->display:none

      2.3).在放菜单的div内部添加菜单项

          <a class="dropdown-item"></a>

           dropdown-item--->块级元素,纵向排列

    3).button事件 data-toggle的自定义属性,值="dropdown"

      这样,点击之后就可以自动让dropdown-menu显示

    4).菜单项a标签,可以添加.active,选中菜单项

    5).下拉菜单的三级结构

    <div class="dropdown">

      <button data-toggle="dropdown">触发元素</button>

      <div class="dropdown-menu">隐藏元素

         a.dropdown-item菜单项

      </div>

    </div>

    7.按钮组

    在外部包裹div上添加btn-group类,创建按钮组

    <div class="btn-group">
         <button class="btn btn-danger">Apple</button>
         <button class="btn btn-warning">HuaWei</button>
         <button class="btn btn-primary">SamSung</button>
    </div>

    使用btn-group-lg/sm 控制按钮组大小

    使用btn-group-vertical 来创建垂直按钮组

    8.信息提示框

    <div class="alert alert-danger w-50 alert-dismissible">
        <span class="close" data-dismiss="alert">&times;</span>
        请检查用户信息
    </div>

    提示框使用alert当作基本类

    alert-danger/warning/.....改变提示框颜色

    .alert-dismissible .close{}的组合在控制关闭的小x在右边

    点击小x能够关闭提示框,data-dismiss="alert"

    dismiss驳回的意思

    9.导航

    boot提供了 三种形式的导航

    水平导航,选项卡导航,胶囊导航

    1).水平导航

    a).通过设置ul的nav让内部li变为弹性布局

      所有的弹性样式都可以使用

      justify-content-end/center/between/around

      flex-row/column......

    b).三层结构 ul.nav.nav-justified>li.nav-item>a.nav-link

    c). .nav-justified .nav-item配合,让每个导航项等宽显示

    <ul class="nav">

       <li class="nav-item">

          <a class="nav-link"></a>

       </li>

    </ul>

     

    2).选项卡导航

    使用.nav-tabs类可以将导航转换为选项卡

    选项卡的内容,使用div.tab-content>div.tab-pane(隐藏)

    切换选项卡

    <a data-toggle="tab" href="内容的id" class="active">

    <ul class="nav nav-tabs">
        <li class="nav-item">
          <a class="nav-link active" data-toggle="tab" href="#home">Home</a>
        </li>
    .......
    </ul>
    <!-- 要显示的内容-->
    <div class="tab-content">
        <div id="home" class="tab-pane active">home....</div>
    .....
    </div>

    3).胶囊导航

    .nav-pills 可以将导航设置成胶囊形状

    胶囊动态导航只需要将选项卡中data-toggle="pill" 

    其它同选项卡导航一样

    4).导航栏

    是div>ul>li>a

    div.navbar创建导航栏,navbar-expand-xl/lg/md/sm来创建响应式的导航栏,大屏幕横向展开,小屏幕垂直堆叠

    ul.navbar-nav

    li.nav-item

    a.nav-link

    设置导航栏时,可以在div中使用bg-颜色设置不同的背景颜色

    5).折叠

    控制内容的隐藏与显示

    在<a>或者<button>中添加data-toggle="collapse"

    指向目标内容的id

    <a href="#id"></a><button data-target="#id">

    内容div.collapse 同时添加id

    <button class="btn btn-success"
           
    data-toggle="collapse"
           
    data-target="#demo">折叠按钮</button>
    <!-- 折叠内容-->
    <div id="demo" class="collapse">
        Lorem ipsum dolor sit amet

    6).折叠导航栏

    a).创建折叠导航栏,需要在外层div class="navbar nav-expand-sm bg-* navbar-dark/light"  navbar-dark/navbar-light 控制是内部brand的字体颜色和按钮中三条横线的颜色

    b).外层div内部有不被折叠的a标签 a.navbar-brand

    c).隐藏的按钮button.navbar-toggler 根据外包裹div是navbar-dark/light.选取不同的字体颜色和边框颜色,同时在屏幕sm以上隐藏

    d).被折叠的导航栏div.collapse+.navbar-collapse+#id

    e).给button添加折叠事件和折叠目标 data-toggle="collapse" data-target="#id"

    7).常用组件

    7.1).卡片

    a).外层div通过.card来构建一个卡片

    b).内部有三部分card-header  card-body  card-footer

    c).内容的三部分可以省略

     

    8).手风琴(卡片+折叠)

    解决卡顿问题可以在card-body外再套一个div

     

    10.媒体对象

    Bootstrap提供了很多类来处理媒体对象(图片和视频)和内容的布局

    应用场合,博客的评论,论坛的帖子,商品的列表

     

    总结:

    <div class="media">

       <img>

       <div class="media-body">

    </div>

    最简单的结构

    11.轮播图

    1)
    a).创建轮播  carousel(旋转木马的意思),要想让图动起来,
    需要data-ride.设置动的方式,carousel
    b).所有的轮播图,统一放在carousel-inner中
    c).每一张图片,单独放在一个carousel-item中,carousel-item设置了display:none
    d).需要给某一个carousel-item设置active,图片才能显示
    
    
    2).导航指示器
    
    
    a).ul要添加carousel-indicators 
    b)..carousel-indicators li{横向弹性,去点,给了宽高,背景色,水平居中}
    c). .carousel-indicators .active 选中的背景色变为#fff
    d).点击事件data-slide-to="n" n代表滑动到具体第n个图片(n从0开始)
    e).在div.carousel中设置id#demo
      给指示器设置点击后改变的目标轮播id
      data-target="#demo"
    f).boot提供的样式不符合我们的设计需求,需要自定义样式,重写boot的样式
    /*重写boot的样式,修改指示器宽高和背景*/
    .carousel-indicators li{
        width:10px;height:10px;
        background-color:#fff;
        border-radius: 50%;
    }
    /*指示器被选中状态的重写*/
    .carousel-indicators .active {
        background-color: #0aa1ed;
    }
    3).左右箭头

    a).两个a标签,要添加类carousel-control-prev/next
    b).a标签中添加是span,调用boot提供的箭头图片
       span.carousel-control-prev/next-icon
    c).a标签的点击事件data-slide="prev/next"
    d).事件的目标 a.href="#整个轮播图的id"

     整个轮播

     12.模态框

    modal,模态框是覆盖在父窗体上的子窗体

    模态框可以在不离开父窗体的情况,与用户进行交互

     

    1).打开模态框的按钮

    <button data-toggle="modal" data-target="#模态框ID"></button>

    2).模态框,先写3层div

    <div id="demo" class="modal"> -----负责固定定位

         <div class="modal-dialog">-----响应式布局

              <div class="modal-content">---弹性布局

              </div>

         </div>

    </div>

    3).在div.modal-content中

      div.modal-header

      div.modal-body

      div.modal-footer

    13.其他组件

    1).徽章 

    基本类 badge

    颜色 badge-danger/warning。。。。

    胶囊徽章 badge-pill

    2).巨幕

    在外层包裹添加类 jumbotron

    有比较大的内边距和背景颜色

    3).分页
    <!--pagination
    弹性,横向 -->
    <!--pagination-sm第一个li和最后一个li的倒角-->
    <!--这里的sm/lg 是分页栏大小,不是响应式-->
    <ul class="pagination pagination-lg">
        <li class="page-item disabled">
            <a href="#" class="page-link">上一页</a>
        </li>
        <li class="page-item  active">
            <a href="#" class="page-link">1</a>
        </li>
        <li class="page-item">
            <a href="#" class="page-link">2</a>
        </li>
        <li class="page-item">
            <a href="#" class="page-link">3</a>
        </li>
        <li class="page-item">
            <a href="#" class="page-link">4</a>
        </li>
        <li class="page-item">
            <a href="#" class="page-link">5</a>
        </li>
        <li class="page-item">
            <a href="#" class="page-link">下一页</a>
        </li>
    </ul>

    a).ul设置类 pagination 负责弹性,横向显示

               pagination-sm/lg 负责第一个li和最后一个li的倒角

    b).ul>li.page-item>a.page-link

    c).active选中和disabled禁用写在li中

    4).面包屑导航

    有层近关系的导航 breadcrumb

    a).ul.breadcrumb>li.breadcrumb-item>a.无类名

    b).修改面包屑导航中间的符号

    .breadcrumb-item + .breadcrumb-item::before{
        content:">";
    }
    
    
    5).进度条

    a).进度条的槽

      div.progress 

    b).在槽内部写进度

      div.progress >div.progress-bar

    c).可以给进度添加条纹

      .progress-bar-striped

    d).可以给进度添加动画

      .progress-bar-animated

    学习boot只需要熟练掌握3个内容

    1.媒体查询

    2.栅格布局

    3.SCSS

    二十二.SCSS,动态样式语言

    把scss包.rar中4个文件复制到nodejs文件夹下

    在ws中alt+f12

    node-sass -v

    node-sass       4.9.2   (Wrapper)       [JavaScript]

    libsass         3.5.4   (Sass Compiler) [C/C++]

    1.CSS的缺点

    a).语法不够强大,没有变量和合理的样式复用机制,使得逻辑上相关的属性值必须以字面的形式反复出现,导致难以维护

    b).动态演示语言为css赋予了动态语言的特性,极大的提高了样式语言的可维护性

    1).常见的动态样式语言

    a).SCSS/Sass (scss兼容sass,更接近css的语法)

    b).stylus

    c).less--->生成boot3的动态样式语言

    上述语言,都属于css的预处理器

    用一种专门的编程语言,进行web页面样式设计

    要通过编译器转化为正常的CSS文件,以供项目使用

    2.什么是SCSS

    SCSS是一款强化css的辅助工具

    它在css语法的基础上,增加了变量,嵌套,混合,导入,函数的高级功能

    这些拓展令CSS更加强大与优雅

    3.scss的作用

    有助于更好的管理样式文件,以及更高效的开发项目

    4.SCSS的使用

    1).在服务器端使用

    2).安装scss编译程序

      在线安装 npm install -g node-sass

      本地安装 把4个文件复制进nodejs文件夹

    3).测试安装

      在WebStorm中打开命令行界面 alt+f12

      或者 在nodejs的黑窗口中输入

      node-sass -v 测试当前版本

    注意,在node版本8.11以上才能使用

    5.在命令行编译scss文件,转换成css文件

    单文件的转换

    正确路径>node-sass scss/01.scss    css/01.css

    多文件的转换

    正确路径>node-sass scss -o css (scss文件夹中的scss文件,都转换成css文件中的样式文件)

    单文件监听

    node-sass  -w  scss/01.scss  css/01.css

    多文件监听

    node-sass -w  scss  -o  css

    6.语法

    1).变量 

    使用$开头

    变量名称命名规范遵循css选择器的命名规范

    可以包含-,_。尽量见名知意

    ex

    $jd_red:#f00;           //颜色变量
    $my-width:20px;
    $normal-content:"grean person said";    //数值变量
    $my-border-style:solid;      //样式变量
    $my_border:1$my-width $my-border-style $jd_red;  //变量中引用其他变量

    2)注意:

         a).声明变量时,变量定义在{}规则块外部,整个样式文件都可以该变量,如果定义在{}规则块里面,则只能在当前规则块中使用

         b).声明变量时,变量值可以引用其他变量

         c).声明重复的变量,后声明的变量会覆盖签名的变量

          !default规则

          如果变量已经声明赋值了,就使用这个声明的值

          如果变量没有声明赋值,使用默认值

          $jd_red:#f10215;

          $jd_red:#00f !default;

          如果前面赋值了,$jd_red就为#f10215

          如果前面没赋值,就使用$jd_red:#00f

    3).嵌套规则

    #content{
      div.top{
        h1{color:$jd_red;}
        p{background:$jd_red;}
      }
      div.middle{border:1px solid $jd_red;}
    }

    生成的css如下

    #content div.top h1 {
      color: #f10215; }
    #content div.top p {
      background: #f10215; }
    #content div.middle {
      border: 1px solid #f10215; }

    另外,可以嵌套伪类选择器

    但是需要在嵌套的内容之前添加&,不添加标签和:之间会一个空格,导致浏览器不读取这个伪类

    a{color:#f00;
      &:hover{color:#ff0;}
    }
    群组选择器的嵌套
    nav a, div a, footer a, header a {
      color: #f00; }
    scss的写法
    nav,div,footer,header{
      a{color:#f00;}
    }
    scss除了选择器可以嵌套,样式属性也能嵌套
    div{
      border-1px;
      border-style:solid;
      border-color:#f00;
    }
    scss的写法
    div{
      border:{1px;style:solid;color:#f00;};
    }

    4).导入scss文件

       a).在一个scss使用另外一个scss文件中的变量

       b).可以把多个局部scss文件,生成到一个css中

     在scss中,局部文件名以下划线开头 _color.scss

     在编译的时候,不会编译以下划线开头的文件

     局部scss作为导入使用。

     导入的语法,@import "局部文件名";局部文件名不写下划线,不写后缀

     @import "color".

     局部文件导入之后,局部文件的变量可以在被导入文件中直接使用

     被导入文件编译时,局部文件的内容会体现在被导入文件中一起编译

    5).混合器

      把需要复用的样式封装进一个混合器,

      在需要使用时,直接调用混合器即可,

      实现代码的重用,提升代码可维护性。

      语法:声明混合器

            @mixin 混合器名称{复用的样式;}

            使用混合器

            选择器{

               @include 混合器名称;

            }

    创建混合器,fontStyle

    font-size:16px;字体颜色#ddd;字体水平居中;

    权重700;

    在div/p/span中调用这个混合器

    思考:如果div/p/span中,字体大小不相同,字体颜色不相同??

    思考方向:类似function

    带参数的混合器

    @mixin 混合器名称(参数1,参数2,....){定义样式 color:参数1...}

    使用 @include  混合器名称(值1,值2....);

    6).继承

    一个选择器可以继承另外一个选择器定义的所有样式

    .rounded{
      border:1px solid #f00;
      border-radius: 30%;
    }
    .rounded-shadow{
      @extend .rounded;
      box-shadow: 0 0 10px;
    }

    继承的效果以群组选择器的状态出现

    .rounded, .rounded-shadow {
      border: 1px solid #f00;
      border-radius: 30%; }
    .rounded-shadow {
      box-shadow: 0 0 10px; }

    在选择器.my- border中定义1px 实线 透明边框。

    设置宽度为400,做外边距20px。

    在选择器.my-bottom-border中继承.my- borde

    并设置底边边框为红色,当鼠标悬停的时候底边边框为蓝色

    7.运算

    数字加减乘除模 +  -  *  /   %

    p{

      width: 1in+8pt+1cm;
    }

    结果正确,能够相互换算的数字,在运算中自动转换

    div{ width:5rem+1em;}

    单位不能相互转换时,scss报错

    1).加法

    +在做字符串连接时,+左边有双引号,结果就有双引号

                       +左边没有双引号,结果就没有双引号

    2).减号

    在scss中使用使用减法,最好在减号前后添加空格

    3).除法

    在scss中通常使用/作为分割数字的作用

    在以下情况中,/被视为除法

    1.值或者值的一部分,是变量或者函数返回值width:$width/2;
    2.被圆括号包裹height:($width/2);
    3.如果值是算术表达式的一部分margin-left:5px+8px/2px;

    4).在有引号的字符串中使用#{}插值语句可以动态的添加值

    div::after{
      content:"I ate #{15+23} baozis";
    }

    5).颜色值

    颜色值的运算是分段计算的,也就是分别计算颜色

    #001122+#223344=#224466

    rgb(00,11,22)+rgb(33,44,55)=rgb(33,55,77)
    rgba(00,11,22,0.4)+rgba(33,44,55,0.4);

    rgba相加,必须要求alpha值相同,否则不予运算

    8.函数

    scss定义了多种函数,有些甚至可以直接用css调用

    1).颜色函数

      rgba(red,green,blue,alpha)

      hsl(hue,saturation,lightness)

      hue:色调   0-360  三个色段,每120一个

      saturation:饱和度 0.0%--100.0%

      lightness:亮度 0.0%--100.0%

    2).数字函数

      round($value)  四舍五入

      ceil($value) 向上取整

      floor($value) 向下取整

      min($v1,$v2...)

      max($v1,$v2....)

      random()随机数 

    3).字符串函数

     unquote($str) 删除字符串的引号

     quote($str)给字符串添加引号

     to_upper_case($str) 将字符串小写字母变成大写字母

     to_lower_case($str) 将字符串大写变小写

    4).自定义函数

    @function get_width
    ($n){
      $w1:200px;
      $w2:500px;
      @return ($w2 - $w1)*$n;
    }
    div{
      width:get_width(2);
    }

    使用@function定义函数,使用@return定义返回值

    @function 函数名称(参数){

      @return 返回值;

    }

    定义一个带参数的函数 get_width($n)

    函数体中定义两个变量分别60px和10px

    函数最终返回 $n乘以最大值  加上   $n-1 乘以最小值

    并将结果赋值给div元素的width属性

    5).控制指令

    当@if的表达式返回值不是false或者null

    表达式成立

    表达式可以不加小括号

    $type:moon;
    div{
      @if($type==sun){
        background:#f00;
      }@else if($type==moon){
        background:#0ff;
      }@else if($type==mars){
        background:#ff0;
      }@else {background:#000;}
    }

    声明一个函数,在函数中判断如果参数大于1,返回200px

    如果等于1返回100px,否则返回0

    并测试函数返回结果

    学子首页

    1.头部右侧

    2.底部

     3.整合到index.html中

    4.index.html引用的样式

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <meta name="viewport"
              content="width=device-width,initial-scale=1"/>
        <link rel="stylesheet" href="../css/bootstrap.css">
        <script src="../js/jquery.min.js"></script>
        <script src="../js/popper.min.js"></script>
        <script src="../js/bootstrap.min.js"></script>
        <link rel="stylesheet" href="css/base.css">
    </head>
    <body>
    <!--导入header.html-->
    <header class="mt-4">
        <!--scrolling去滚动条-->
        <iframe class="my_header" src="header.html" frameborder="0" scrolling="0"></iframe>
    </header>
    <div id="main" class="container">
        <!--轮播图-->
        <div id="mycar" class="carousel" data-ride="carousel">
        <!--图片-->
            <div class="carousel-inner">
                <div class="carousel-item active">
                    <a href="#">
                        <img class="w-100" src="../img/banner1.png" alt="">
                    </a>
                </div>
                <div class="carousel-item">
                    <a href="#">
                        <img class="w-100" src="../img/banner2.png" alt="">
                    </a>
                </div>
                <div class="carousel-item">
                    <a href="#">
                        <img class="w-100" src="../img/banner3.png" alt="">
                    </a>
                </div>
                <div class="carousel-item">
                    <a href="#">
                        <img class="w-100" src="../img/banner4.png" alt="">
                    </a>
                </div>
            </div>
        <!--指示器-->
            <ul class="carousel-indicators">
                <li class="active" data-slide-to="0" data-target="#mycar"></li>
                <li  data-slide-to="1" data-target="#mycar"></li>
                <li  data-slide-to="2" data-target="#mycar"></li>
                <li  data-slide-to="3" data-target="#mycar"></li>
            </ul>
        <!--左右箭头-->
            <a href="#mycar" data-slide="prev" class="carousel-control-prev">
                <span class="carousel-control-prev-icon"></span>
            </a>
            <a href="#mycar" data-slide="next"  class="carousel-control-next">
                <span class="carousel-control-next-icon"></span>
            </a>
        </div>
        <!--1楼-->
        <div class="mt-3 mb-5">
            <!--楼层标题-->
            <div class="navbar navbar-light border-bottom">
                <!--font-weight-bold字体加粗 text-secondary字体颜色-->
                <a href="#" class="navbar-brand font-weight-bold text-secondary">
                    <img class="mr-2" src="../img/index/computer_icon.png" alt="">首页推荐 /1F
                </a>
            </div>
            <!--两张大图-->
            <div class="row floor_top_width">
                <div class="p-0 col-lg-7 col-sm-12" >
                    <div class="mr-1 bgcolor1 mysize1">
                        <table></table>
                        <!--第一张图的文字区域-->
                        <div class="my_width1 ">
                            <h5>灵越 燃7000系列</h5>
                            <h6 class="my_small my_gray mb-2">酷睿双核i5处理器|256GB SSD| 8GB内存
                                英特尔HD显卡620含共享显卡内存</h6>
                            <p class="text-primary font-weight-bold">¥4999.00</p>
                            <a class="btn btn-primary" href="">查看详情</a>
                        </div>
                        <div class="float-right myfloat-size">
                            <img src="../img/index/study_computer_img1.png" alt="">
                        </div>
                    </div>
                </div>
                <div class="p-0 col-lg-5 col-sm-12">
                    <!--第二张图的文字区域-->
                    <div class="bgcolor1 mysize1">
                        <table></table>
                        <div class="my_width1 ml-5">
                            <h5>颜值 框不住</h5>
                            <h6 class="my_small my_gray mb-2">酷睿双核i5处理器|256GB SSD| 8GB内存
                                英特尔HD显卡620含共享显卡内存</h6>
                            <p class="text-primary font-weight-bold">¥6888.00</p>
                            <a class="btn btn-primary" href="">查看详情</a>
                        </div>
                        <div class="float-right myfloat-size">
                            <img src="../img/index/study_computer_img2.png" alt="">
                        </div>
                    </div>
                </div>
            </div>
            <!--四张小图-->
            <div class="row mt-1 mr-0 ml-0">
                <!--左图-->
                <div class="col-lg-5 col-sm-12 p-0 myheight">
                    <!--flex-row弹性横向-->
                    <div class="card flex-row bgcolor1 border-0 rounded-0 pb-5">
                        <div class="card-body d-flex flex-column align-items-start">
                            <h5 >联想E480C 轻薄系列</h5>
                            <p class="text-primary">¥5399.00</p>
                            <a href="#" class="btn btn-primary">查看详情</a>
                        </div>
                        <img class="myimg3" src="../img/index/study_computer_img3.png" alt="">
                    </div>
                </div>
                <!--右三张-->
                <div class="col-lg-7 col-sm-12 p-0">
                    <div class="row m-0 pl-1">
                        <div class="col-4 p-0 pr-1">
                            <div class="card bgcolor1 border-0 rounded-0">
                                <img class="myimg3" src="../img/index/study_computer_img3.png" alt="">
                                <div class="card-body p-0 text-center">
                                    <span class="my_small">戴尔微边框笔记本电脑</span>
                                    <p class="text-primary m-0">¥4600.00</p>
                                    <a href="#" class="btn btn-primary  my_btn1">查看详情</a>
                                </div>
                            </div>
                        </div>
                        <div class="col-4 p-0 pr-1">
                            <div class="card bgcolor1 border-0 rounded-0">
                                <img class="myimg3" src="../img/index/study_computer_img4.png" alt="">
                                <div class="card-body p-0 text-center">
                                    <span class="my_small">戴尔微边框笔记本电脑</span>
                                    <p class="text-primary m-0">¥5600.00</p>
                                    <a href="#" class="btn btn-primary  my_btn1">查看详情</a>
                                </div>
                            </div>
                        </div>
                        <div class="col-4 p-0 pr-1">
                            <div class="card bgcolor1 border-0 rounded-0">
                                <img class="myimg3" src="../img/index/study_computer_img5.png" alt="">
                                <div class="card-body p-0 text-center">
                                    <span class="my_small">戴尔微边框笔记本电脑</span>
                                    <p class="text-primary m-0">¥6600.00</p>
                                    <a href="#" class="btn btn-primary  my_btn1">查看详情</a>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
    
    </div>
    <!--导入footer.html-->
    <footer class="mt-5">
        <iframe class="my_footer" src="footer.html" frameborder="0" scrolling="0"></iframe>
    </footer>
    </body>
    </html>
    index
    body{
        background: #f5f5f5;
        margin:0;
        padding:0;
    }
    a,a:hover{text-decoration: none;}
    .my_small{font-size:0.8rem;}
    .my_gray{color:#666;}
    /*iframe的样式*/
    .my_header,.my_footer {
         100%;
    }
    /*大屏*/
    @media screen and (min-992px){
        .my_header{height:12rem;}
        .my_footer{height:28rem;}
        .floor_top_width{
            100%;margin-left:0.1rem;
        }
    }
    /*中屏和小屏*/
    @media screen and(max-991px){
        .my_header{height:12rem;}
        .my_footer{height:40rem;}
        /* 1楼第一张图*/
        .mysize1{height:377px;}
        .floor_top_width{
           100%;
           margin-left:0.1rem;
        }
        .mysize1{
            margin-right:0 !important;
            margin-bottom:0.3rem;
        }
    }
    #main .carousel-indicators li {
        10px;
        height:10px;
        background:#fff;
        border-radius:50%;
    }
    #main .carousel-indicators .active{
        background:#0aa1ed;
    }
    .carousel-control-prev,
    .carousel-control-next {
        3%;
        height:16%;
        top:42%;
        background:rgba(0,0,0,0.4);
        border-radius: 3px;
    }
    .carousel-control-prev{left:0.5rem;}
    .carousel-control-next{right:0.5rem;}
    .mysize1{height:377px; }
    .my_width1{
        35%;
        margin-top:3.5rem;
        margin-left:4rem;
    }
    .bgcolor1{background: #e8e8e8;}
    .myfloat-size{
        margin-top:-12rem;
        margin-right:2rem;
        transition:1s;
    }
    .myfloat-size:hover{
        transform:scale(1.1,1.1);
    }
        /*1楼下面左图*/
    .myimg3{
        transition: 1s;
    }
    .myimg3:hover{transform: scale(1.1,1.1);
    }
    /*1楼左下的高度*/
    .myheight{
        height:100% !important;
    }
    .my_btn1{line-height: 1.1;margin-bottom: 0.3rem;}
    base.css
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <meta name="viewport"
              content="width=device-width,initial-scale=1"/>
        <link rel="stylesheet" href="../css/bootstrap.css">
        <script src="../js/jquery.min.js"></script>
        <script src="../js/popper.min.js"></script>
        <script src="../js/bootstrap.min.js"></script>
        <link rel="stylesheet" href="css/base.css">
    </head>
    <body>
    <div class="container">
        <ul class="list-unstyled d-flex justify-content-around">
            <li>
                <img src="../img/footer/icon1.png" alt="">
                <p class="my_gray my_small text-center">品质保障</p>
            </li>
            <li>
                <img src="../img/footer/icon2.png" alt="">
                <p class="my_gray my_small text-center">私人订制</p>
            </li>
            <li>
                <img src="../img/footer/icon3.png" alt="">
                <p class="my_gray my_small text-center">学院特供</p>
            </li>
            <li>
                <img src="../img/footer/icon4.png" alt="">
                <p class="my_gray my_small text-center">专属特权</p>
            </li>
        </ul>
        <footer class="bg-white pt-5 mt-5">
            <div class="row">
                <!---->
                <div class="col-lg-4 col-sm-12">
                    <div>
                        <img src="../img/footer/logo.png" alt="">
                    </div>
                    <div>
                        <img src="../img/footer/footerFont.png" alt="">
                    </div>
                </div>
                <!---->
                <div class="col-lg-4 col-sm-12">
                    <div class="row">
                        <div class="col-4">
                            <ul class="list-unstyled">
                                <li>
                                    <h6>
                                        <a class="text-dark" href="">买家帮助</a>
                                    </h6>
                                </li>
                                <li>
                                    <a class="my_small my_gray" href="">新手指南</a>
                                </li>
                                <li>
                                    <a class="my_small my_gray" href="">服务保障</a>
                                </li>
                                <li>
                                    <a class="my_small my_gray" href="">常见问题</a>
                                </li>
                            </ul>
                        </div>
                        <div class="col-4">
                            <ul class="list-unstyled">
                                <li>
                                    <h6>
                                        <a class="text-dark" href="">商家帮助</a>
                                    </h6>
                                </li>
                                <li>
                                    <a class="my_small my_gray" href="">商家入驻</a>
                                </li>
                                <li>
                                    <a class="my_small my_gray" href="">商家后台</a>
                                </li>
                            </ul>
                        </div>
                        <div class="col-4">
                            <ul class="list-unstyled">
                                <li>
                                    <h6>
                                        <a class="text-dark" href="">关于我们</a>
                                    </h6>
                                </li>
                                <li>
                                    <a class="my_small my_gray" href="">关于达内</a>
                                </li>
                                <li>
                                <a class="my_small my_gray" href="">联系我们</a>
                                </li>
                                <li>
                                    <a href="" class="ml-3"><img src="../img/footer/wechat.png" alt=""></a>
                                    <a href=""><img src="../img/footer/sinablog.png" alt=""></a>
                                </li>
                            </ul>
                        </div>
                    </div>
                </div>
                <!---->
                <div class="col-lg-4 col-sm-12">
                    <div class="row">
                        <div class="col-6 p-0">
                            <h6>学子商城客户端</h6>
                            <div>
                                <img src="../img/footer/ios.png" alt="">
                            </div>
                            <div class="mt-1">
                                <img src="../img/footer/android.png" alt="">
                            </div>
                        </div>
                        <div class="col-6 p-0">
                            <img src="../img/footer/erweima.png" alt="">
                        </div>
                    </div>
                </div>
            </div>
            <div class="text-center pb-3 mt-4">©2017 达内集团有限公司 版权所有 京ICP证xxxxxxxxxxx</div>
        </footer>
    </div>
    </body>
    </html>
    footer
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <meta name="viewport"
              content="width=device-width,initial-scale=1"/>
        <link rel="stylesheet" href="../../boot/css/bootstrap.css">
        <script src="../js/jquery.min.js"></script>
        <script src="../js/popper.min.js"></script>
        <script src="../../boot/js/bootstrap.min.js"></script>
        <link rel="stylesheet" href="css/base.css"/>
    </head>
    <body>
    
    <div class="container">
        <!--1.顶部,左中右-->
        <div class="row">
         <div class="col-lg-3 col-sm-12">
             <a href="#" class="navbar-brand">
                 <img src="../img/header/logo.png"/>
             </a>
         </div>
         <div class="col-lg-6 col-sm-12 mt-2">
             <div class="input-group">
                 <input type="text" class="form-control p-0 pl-3 my_small rounded-0" placeholder="请输入你您要搜索的内容">
                 <a href="#">
                     <img src="../img/header/search.png" alt="">
                 </a>
             </div>
         </div>
         <div class="col-lg-3 col-sm-12 mt-3">
             <ul class="list-unstyled d-flex">
                 <li style=" 50px;float: left">
                     <a href="#">
                         <img src="../img/header/care1.png" alt="">
                     </a>
                     <b class="my_gray ml-1 mr-1">|</b>
                 </li>
                 <li style=" 50px;float: left">
                     <a href="#">
                         <img src="../img/header/order.png" alt="">
                     </a>
                     <b class="my_gray ml-1 mr-1">|</b>
                 </li>
                 <li style=" 50px;float: left">
                 <a href="#">
                     <img src="../img/header/shop_car.png" alt="">
                 </a>
                 <b class="my_gray ml-1 mr-1">|</b>
                 </li>
                 <li style=" 50px;float: left">
                     <a href="#" class="my_gray my_small">注册</a>
                     <b class="my_gray ml-1 mr-1">|</b>
                 </li>
                 <li style=" 50px;float: left">
                     <a href="#" class="my_gray">登录</a>
                 </li>
             </ul>
         </div>
     </div>
        <!--2.主导航-->
        <ul class="nav">
            <li class="nav-item" style=" 120px;float: left" >
            <a href="#" class="navbar-link my_gray">首页</a>
            </li>
            <li class="nav-item" style=" 120px;float: left">
                <a href="#" class="navbar-link my_gray">学习用品</a>
            </li>
            <li class="nav-item" style=" 120px;float: left">
                <a href="#" class="navbar-link my_gray">私人定制</a>
            </li>
        </ul>
    </div>
    </body>
    </html>
    header
  • 相关阅读:
    Maven学习总结(18)——深入理解Maven仓库
    Maven学习总结(18)——深入理解Maven仓库
    MyBatis学习总结(15)——定制Mybatis自动代码生成的maven插件
    MyBatis学习总结(15)——定制Mybatis自动代码生成的maven插件
    Spring学习总结(7)——applicationContext.xml 配置文详解
    Spring学习总结(7)——applicationContext.xml 配置文详解
    Java基础学习总结(54)——JSON和Map转换的工具类
    Java基础学习总结(54)——JSON和Map转换的工具类
    【华为云技术分享】【DevCloud · 敏捷智库】如何避免重要需求遗漏?
    2019新书《昇腾AI处理器架构与编程》思维导图
  • 原文地址:https://www.cnblogs.com/liuqingqing-bloom/p/12197105.html
Copyright © 2020-2023  润新知