移动Web学习08-响应式布局&bootstrap的使用

2、响应式布局

2.1、什么响应式布局

响应式布局是一种网页设计的方法,能够使网站在不同的设备上(如桌面电脑、平板电脑、手机等)呈现出最佳的用户体验。其核心思想是使网页能够根据用户的设备和屏幕尺寸自动调整布局和内容,以适应不同的屏幕大小和分辨率。

根据获取屏幕的宽度、调整页面布局、其核心就是利用媒体查询、让对应的css生效、来达到响应式的效果

例如 https://alloyteam.com/ 腾讯全端这个网站、他只有一个页面、在不同设备下、进行来回的相应。

市面上如京东、淘宝、他们都是有两个团队、开发了两套页面,其目的是、给与用户更好的体验。但是非常的耗费开发成本。

2.2、媒体查询

我们实现响应式布局的核心就是采用媒体查询动态的监听、我们视口的宽度,来达到响应式的效果

前面讲移动端适配的时候我们学习过了媒体查询,只不过当时我们写的都是固定的值,如下

@media(width:1000px){
  body{
     background-color:pink
  }
}

缺点是,我正好是1000的时候变化,或者800的时候变化、那八百到1000怎么办?

我们能不能写一个范围值

开发当中的常用写法 max-width 最大宽度 / min-width 最小宽度

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
          /* @media (width:1000px) {
            body{
                background-color: pink;
             }
          } */
          /* 视口宽度小于等于768px,网页颜色为绿色 d最大是768px */
          @media(max-width:768px){
            body{
                background-color: pink;
             }
          }
          /* 视口的宽度大于等于1200,网页颜色为红色 */
          @media(min-width:1200px){
            body{
                background-color: red;
            }
          }
    </style>
</head>
<body>
     <!-- 小于等于用max-width  大于等于用min-width -->
</body>
</html>

2.3、媒体查询的顺序问题

同时满足两个、后写的的样式层叠掉写先写的样式、比如、1300满足大于1200、也满足大于900,因为900这个是后写的所以1200设置的这个媒体查询不会生效

写min-width 从小到大、写max-width 从大到小

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 如果我们,我们先设置了最小宽度是red,就是小于等于1200w往下的都是红色,你会发现,red没了,
           假如你宽度为900,他满足大于等于1200,有满足,大于等于992, 原因是样式层叠了*/
        /* 视口宽度>=1200px 背景颜色为红色 */
        @media(min-width:1200px){
            body{
                background-color: red;
            }
        }
        /* 视口宽度<768px  背景颜色为黄色  */
        @media(max-width:768px){
            body{
                background-color: yellow;
            }
        }
        /* 视口宽度>=768px  背景颜色为粉色 */
        @media(min-width:768px){
            body{
                background-color: pink;
            }
        }
        /* 视口宽度>=992px  背景颜色为蓝色 */
        @media(min-width:992px){
            body{
                background-color: blue;
            }
        }
    
    </style>
</head>
<body>
    
</body>
</html>

2.4、媒体查询完整写法

@media mediatype and|not|only (media feature){
  css-code;
}

关键词

and:用于将多个媒体查询规则组合成单条媒体查询

not:用于否定媒体查询,如果不满足这个条件则返回true,否则返回false。

only:仅在整个查询匹配时才用于应用样式。

, (逗号):逗号用于将多个媒体查询合并为一个规则。

<style>
	/*比如下面表示:屏幕宽度大于500,小于700的时候,body背景颜色为红色;*/
    @media (min-width: 500px) and (max-width: 800px) {
      body {
        background-color: orange;
      }
    }
</style> 

媒体类型

媒体是用来区分设备类型的,如屏幕设备、打印设备等,其中手机、电脑、平板都属于屏幕设备。

image-20240420022133730

媒体特征

媒体特性主要用来描述媒体类型的具体特征,如当前屏幕的宽高、分辨率、横屏或竖屏等。

image-20240420022203281

2.5、外链式媒体查询

格式:

<link rel="stylesheet" media="逻辑符 媒体类型 and (媒体特性)" href="xx.css">

例子:

<link rel="stylesheet" href="./one" media="screen and (min-width:992px)">
<link rel="stylesheet" href="./one" media="screen and (min-width:120px)">

媒体查询通常配合rem来使用

2.6、京东盒子隐藏案例

image-20240420122018979

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .box{
            width: 1190px;
            height: 480px;
            background-color: pink;
            margin: 0 auto;
            display: flex;
            justify-content: space-between;
            margin-top: 100px;
        }
        .a1{
            width: 190px;
            height: 480px;
            background-color: yellow;
        }
        .a2{
            width: 590px;
            height: 480px;
            background-color: skyblue;
        }
        .a3{
            width: 190px;
            height: 480px;
            background: purple;
        }
        .a4{
            width: 190px;
            height: 480px;
            background-color: red;
        }
        /* 小于等于1348px时,我们就让a3这个盒子消失 */
        @media (max-width: 1348px) {
            .a3{
                display: none;
            }
            .box{
                width: 990px;
            }
        }
    </style>
</head>
<body>
     <div class="box">
         <div class="a1"></div>
         <div class="a2"></div>
         <div class="a3"></div>
         <div class="a4"></div>
     </div>
</body>
</html>

2.7、bootstrap概述

1、UI框架的基本概念

什么是UI框架

将常见效果进行统一封装后形成的一套代码,例如:BootStrap

UI框架的作用

基于框架开发,效率高、稳定性高

BootStrap的作用

主要是做我们响应式网站的开发

2、Bootstrap简介

Bootstrap是由Twitter公司开发维护的前端UI框架,他提供了大量==编写好的CSS样式,允许开发者结合一定的HTML结构==及JavaScript,快速编写功能完善的网页

及常见的交互效果

中文官网:https://www.bootcss.com/

现在的Bootstrap已经出到第五个版本了,但是我们一般用的话还是用Bootstrap5,原因是他比较稳定

3、Bootstrap下载

image-20240420124543624

生产环境用第一个、因为是压缩过的,上传下载速度回很快、如果你要看源码,就第二个、如果说你有Sass项目要用他,就用第三个

下载下来的目录结构

image-20240420125439971

2.8、bootstrap初体验

运行如下代码你会发现、我们并没有给div设置宽度、但是他不是一个通栏的盒子、这是因为,bootstrap给他设置了,盒子的宽度

.container是 Bootstrap 中专门提供的类名,所有应用该类名的盒子,默认已被指定宽度且居中。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 引入bootstrap文件 -->
    <link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css">
    <style>
        .container{
            height: 40px;
            background-color: pink;
        }
    </style>
</head>
<body>
     <div class="container"></div>
</body>
</html>

2.9、bootstrap栅格系统

Bootstrap 提供了一套响应式、移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列。

简述为栅格化是指将网页的宽度分成若干等份,BootStrap3默认将网页分成了12等份

image-20240420151001288

栅格系统(grid systems),也叫“网格系统,它是通过一系列的行(row)与列(column)的组合创建页面布局。 我们的内容可以直接放入BootStrap栅格系统面。

image-20240420151106714

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 引入bootstrap文件 -->
    <link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css">
    <style>
        .container div{
            height: 50px;
            background-color: pink;
        }
        
    </style>
</head>
<body>
     <div class="container">
        <!-- 在大屏幕下面、一行显示四个 -->
        <!-- 在中等屏幕下面、一行显示两个 -->
        <!-- 在小屏幕下面,一行显示一个 -->
        <div class="col-lg-3 col-md-6 col-sm-12">1</div>
        <div class="col-lg-3 col-md-6 col-sm-12">2</div>
        <div class="col-lg-3 col-md-6 col-sm-12">3</div>
        <div class="col-lg-3 col-md-6 col-sm-12">4</div>
     </div>
</body>
</html>

container-fluid也是 Bootstrap 中专门提供的类名,所有应用该类名的盒子,宽度均为 100%。

image-20240420152418082

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css">
    <style>
        .container{
            height: 50px;
            background-color: pink;
        }
        .container-fluid{
            height: 50px;
            background-color: blue;
        }
    </style>
</head>
<body>
     <!-- 版心盒子 有宽度,且居中 -->
     <div class="container">111</div>
     <!-- 通栏的盒子 注意:左右自带padding值15px  css3的盒子模型:box-sizing:border-box;边框往内收-->
     <div class="container-fluid">222</div>
     
</body>
</html>

分别使用.row类名和 .col类名定义栅格布局的行和列。

image-20240420152935817

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css">
    <style>
        .container{
            height: 50px;
            background-color: pink;
        }
        .container-fluid{
            height: 50px;
            background-color: blue;
        }
        .abc{
            background-color: red;
            height: 50px;
        }
        .abc div{
            height: 50px;
            background-color: yellow;
        }
    </style>
</head>
<body>
     <!-- 版心盒子 有宽度,且居中 -->
     <div class="container">111</div>
     <!-- 通栏的盒子 注意:左右自带padding值15px  css3的盒子模型:box-sizing:border-box;边框往内收-->
     <div class="container-fluid">222</div>
     
     <div class="container abc">
        <!-- row 会把container的padding值去掉 -->
        <div class="row">

        </div>
    </div>
</body>
</html>

2.1、使用全局样式

BootStrap预定义了大量类用来美化页面,掌握手册的查找方法是学习全局样式的重点。

网站首页 → BootStrap3中文文档 → 全局CSS样式 → 按分类导航查找目标类

全局样式分为、布局样式和内容美化样式,

按钮样式

  • btn : 基准样式
  • btn-info; btn-success : 设置按钮背景色
  • btn-block : 设置按钮为块元素
  • btn-lg; btn-sm; btn-xs : 设置按钮大小
<button class="基本样式类,具体样式类">成功</button>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css">
    <style>
        .container{
            margin-top: 100px;
            /* height: 50px;
            background-color: pink; */
        }
    </style>
    </style>
</head>
<body>
    <div class="container">
         <!-- 表示成功或积极的操作 -->
        <button type="button" class="btn btn-success">(成功)Success</button>
    </div>
</body>
</html>

image-20240420155201286

表格

  • table : 基本类名, 初始化表格默认样式
  • table-bordered : 边框线
  • table-striped : 隔行变色
  • table-hover : 鼠标悬停效果
  • table-responsive : 表格宽溢出滚动
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css">
</head>
<body>
    <table class="table table-striped  table-hover">
          <!-- 表头类名 -->
          <tr class="table-success">
            <th>姓名</th>
            <th>年龄</th>
            <th>性别</th>
          </tr>
          <tr>
            <td>张三</td>
            <td>18</td>
            <td></td>
          </tr>
          <tr>
            <td>李四</td>
            <td>20</td>
            <td></td>
          </tr>
          <tr>
            <td>王五</td>
            <td>18</td>
            <td></td>
          </tr>
          <tr>
            <td>赵六</td>
            <td>20</td>
            <td></td>
          </tr>    
    </table>
</body>
</html>

image-20240420155252839

表单

form-control : 设置表单元素input, select, textarea的样式

checkbox 和 radio : 设置复选框和单选框的样式

form-inline : 设置表单元素水平排列

disabled : 设置表单禁用状态样式

input-lg; input-sm, input-sm : 设置表单元素的大小

<form class="form-inline">
  <div class="form-group">
    <label class="sr-only" for="exampleInputEmail3">Email address</label>
    <input type="email" class="form-control" id="exampleInputEmail3" placeholder="Email">
  </div>
  <div class="form-group">
    <label class="sr-only" for="exampleInputPassword3">Password</label>
    <input type="password" class="form-control" id="exampleInputPassword3" placeholder="Password">
  </div>
  <div class="checkbox">
    <label>
      <input type="checkbox"> Remember me
    </label>
  </div>
  <button type="submit" class="btn btn-default">Sign in</button>
</form>

image-20240420155422872

图片美化

  • img-responsive: 图片自适应
  • img-rounded : 图片设置圆角
  • img-circle : 图片设置正圆
  • img-thumbnail : 图片添加边框线

image-20240420155744651

布局辅助类

  • pull-right : 强制元素右浮动
  • pull-left : 强制元素左浮动
  • clearfix : 清除浮动元素的影响
  • text-left文 : 本左对齐
  • text-right : 文本右对齐
  • text-center : 文本居中对齐
  • center-block : 块元素居中

布局响应式工具

  • 不同屏幕尺寸隐藏或显示页面内容

image-20240420160033346

2.2、组件

什么是组件?

所谓组件就是:BootStrap提供的常见功能,包含了HTML结构和CSS样式。

使用方式?

引入BootStrap样式

复制结构,修改内容

image-20240420160242485

其中包含例如、轮播图组件、导航组件、代码过去简单不在粘贴

2.3、字体图标

Glyphicons字体图标的使用步骤

  • HTML页面引入BootStrap样式文件
  • 空标签调用对应类名
    • glyphicon
    • 图标类
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>字体图标</title>
    <link rel="stylesheet" href="./Bootstrap/font/bootstrap-icons.css">
    <style>
      .bi-android2 {
        font-size: 100px;
        color: green;
      }
    </style>
  </head>
  <body>
    <span class="bi-android2"></span>
  </body>
</html>

2.4、插件

BootStrap提供的常见效果, 包含了HTML结构,CSS样式与JavaScript

image-20240420160921362

插件的使用步骤

  • 引入BootStrap样式
  • 引入js文件:jQuery.js + BootStrap.min.js

image-20240420161015243

复制HTML结构, 并适当调整结构或内容

2.5、定制

我们可以能够根据项目需求定制bootstrap框架

导航菜单 → 定制

输入目标变量值

编译并下载,使用定制后的框架

image-20240420161116507

  • 27
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值