响应式布局

在这里插入图片描述
一套代码可以适配不同大小的屏幕和设备

一、媒体查询

1、媒体查询

目标:能够根据设备宽度的变化,设置差异化样式
之前的媒体查询,通过检测视口宽度设置根字号
在这里插入图片描述
在响应式布局中,媒体查询是一个范围。

  • 媒体特性常用写法
    max-width
    min-width

它能实现比如说宽度小于670px时,网页背景色为蓝色

<style>
    @media(max-width:670px){
      body{
        background-color: aqua;
      }
    }
  </style>

2、书写顺序

需求
默认网页背景色是灰色
屏幕宽度在768-992之间, 网页背景色是粉色
屏幕宽度在992-1200之间, 网页背景色是skyblue
屏幕宽度大于1200, 网页背景色是绿色

<style>
    @media(min-width:768px){          ①
      body{
        background-color: pink;
      }
    }
    @media (min-width:992px) {              ②
      body{
        background-color: skyblue;
      }
    }
    @media (min-width:1200px) {           ③
      body{
        background-color: green;
      }
    }
  </style>

如果这三个媒体查询书写顺序变了,就不会有这样的效果,因为css有层叠性,如果先写③,再写①②,③会被②覆盖,导致大于992px都是蓝色。
在这里插入图片描述

所以
min-width(从小到大)
max-width(从大到小)

3、(了解)完整写法

在这里插入图片描述

  • 关键字:and、only、not

  • 媒体类型:媒体是用来区分设备类型的,如屏幕设备、打印设备等,其中手机、电脑、平板都属于屏幕设备
    在这里插入图片描述

  • 媒体特性:主要用来描述媒体类型的具体特征,如当前屏幕的宽高、分辨率、横屏或竖屏等
    在这里插入图片描述

4、外链式CSS引入

上面的媒体查询写法都是在style中直接写的,可以使用外链式引入
在这里插入图片描述
如大于等于992粉色,大于等于1200绿色

<!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>Document</title>
  
  <link rel="stylesheet" href="./a.css" media="(min-width:992px)">
  <link rel="stylesheet" href="./b.css" media="(min-width:1200px)">
  
  <style>
  </style>
</head>
<body>
</body>
</html>

在这里插入图片描述
在这里插入图片描述

5、隐藏

一般电商网站,如果宽度变小,有的小banner图就会隐藏

如下图,想要实现随着窗口变小,左边蓝色的框框隐藏的效果

在这里插入图片描述

<style>
    *{
      padding: 0;
      margin: 0;
    }
    .box{
      display: flex;
      width: 100%;
    }
    .left{
      width: 300px;
      min-height: 500px;
      background-color: aqua;
    }
    .right{
      flex: 1;
      min-height: 500px;
      background-color: blueviolet;
    }
    @media(max-width:500px){     //小于一定宽度,隐藏
      .left{
        display: none;
      }
    }
  </style>
<body>
  <div class="box">
    <div class="left"></div>
    <div class="right">dknsnfknfcjdfkvnjfvbfjvbofjropir3pf43pojf3ofjiogjtrkghtrjghiughtuihgtuigtruihreiofroir4-frjirogvjiojvbgibhfgioeir0i03</div>
  </div>
</body>

二、BootStrap

1、UI框架概念

将常见效果进行统一封装后形成的一套代码, 例如:BootStrap。
作用:基于框架开发,效率高,稳定性高。

2、BootStrap简介

Bootstrap 是由 Twitter 公司开发维护的前端 UI 框架,它提供了大量编写好的 CSS 样式,允许开发者结合一定HTML 结构及JavaScript,快速编写功能完善的网页及常见交互效果。
中文官网: https://www.bootcss.com/

  • 下载
    在这里插入图片描述
  • 使用步骤
  1. 引入: BootStrap提供的CSS代码
 <link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css">

调用只能bootstrap.css或者bootstrap.min.css,bootstrap.min.css是压缩过的bootstrap.css,体积小,方便用户下载

  1. 调用类:使用BootStrap提供的样式
    container:响应式布局版心类
<!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>Document</title>
    <link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css">
    <style>
        div{
            background-color: pink;
            height: 50px;
        }
    </style>
</head>

<body>
    <div class="container">1</div>
</body>
</html>

在这里插入图片描述
在这里插入图片描述

3、BootStrap栅格系统

目标:使用BootStrap栅格系统布局响应式网页

栅格化是指将整个网页的宽度分成若干等份
BootStrap3默认将网页分成12等份

在这里插入图片描述

<!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>Document</title>
    <link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css">
    <style>
        .container div{   
            background-color: pink;
            height: 50px;
        }
    </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>

当视口宽度大于1200时:
在这里插入图片描述
当视口宽度位于992-1200px时:
在这里插入图片描述
当视口宽度小于992时:
在这里插入图片描述

3、其他类名

  • .container是 Bootstrap 中专门提供的类名,所有应用该类名的盒子,默认已被指定宽度且居中。
  • .container-fluid也是 Bootstrap 中专门提供的类名,所有应用该类名的盒子,宽度均为 100%。
  • 分别使用.row类名和 .col类名定义栅格布局的行和列。
    在这里插入图片描述
<!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>Document</title>
    <link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css">
    <style>
        div{
            background-color: pink;
            height: 50px;
            margin-bottom: 50px;
        }
    </style>
</head>

<body>
     <!-- container有内边距15px -->
    <div class="container">1</div>

    <!-- 使用.row将有-15的外边距,可以抵消container的内边距 -->
    <div class="container">
        <div class="row">2</div>
    </div>
    
    <!-- container-fluid宽度100%,左右各15px内边距 -->
    <div class="container-fluid">3</div>
</body>
</html>

在这里插入图片描述

4、全局样式

目标:掌握BootStrap手册用法,使用全局CSS样式美化标签

手册用法:
BootStrap预定义了大量类用来美化页面,掌握手册的查找方法是学习全局样式的重点。
网站首页 → BootStrap3中文文档 → 全局CSS样式 → 按分类导航查找目标类

使用方法
引入BootStrap样式
引入对应的效果名称作为类名

  • 表格
    table : 基本类名, 初始化表格默认样式
    table-bordered : 边框线
    table-striped : 隔行变色
    table-hover : 鼠标悬停效果
    table-responsive : 表格宽溢出滚动

如新建一个表格,隔行变色

<!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>Document</title>
    <link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css"><style> 
    </style>
</head>

<body>
    <table class="table table-striped">    //here  ②
        <tr>
            <th>数字1</th>
            <th>数字2</th>
            <th>数字3</th>   
        </tr>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
        </tr>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
        </tr>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
        </tr>
    </table>
</body>
</html>

在这里插入图片描述

  • 按钮
    btn : 基准样式
    btn-info; btn-success : 设置按钮背景色
    btn-block : 设置按钮为块元素
    btn-lg; btn-sm; btn-xs : 设置按钮大小
    在这里插入图片描述
    还有很多全局CSS样式,都可以通过手册查看并引用
    在这里插入图片描述

5、组件

目标:使用BootStrap组件快速布局网页,包括字体图标、下拉菜单、导航、警告框、弹出框等更多功能

  • 组件
    BootStrap提供的常见功能,包含了HTML结构和CSS样式。
  • 使用方法
    引入BootStrap样式
    复制结构,修改内容

(1)字体图标使用

  • Glyphicons字体图标的使用步骤
    • HTML页面引入BootStrap样式文件(注意路径css/bootstrap.min.css)
    • 空标签调用对应类名
      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>Document</title>
  <link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css"></head>
<body>
  <i class="glyphicon glyphicon-plus"></i></body>
</html>

在这里插入图片描述

(2)下拉菜单

  • 使用方法
    引入BootStrap样式
    复制结构,修改内容

6、插件

实现常见的交互效果,如下拉菜单下拉后弹出子菜单
BootStrap提供的常见效果, 包含了HTML结构,CSS样式与JavaScript

  • 插件的使用步骤
    ①引入BootStrap样式
    ②引入js文件:jQuery.js + BootStrap.min.js(顺序不能颠倒)
    在这里插入图片描述
    ③复制HTML结构, 并适当调整结构或内容

(1)利用插件实现下拉菜单

<!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>Document</title>
  <link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css"></head>
<body>
  <div class="dropdown">
    <button id="dLabel" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
      Dropdown trigger
      <span class="caret"></span>
    </button>
    <ul class="dropdown-menu" aria-labelledby="dLabel"><li>1</li>
      <li>2</li>
      <li>3</li>
    </ul>
  </div>

  <script src="./移动端/js/jquery.js"></script><script src="./移动端/04-框架素材/bootstrap-3.4.1-dist/js/bootstrap.min.js"></script>

</body>
</html>

在这里插入图片描述

(2)利用插件实现轮播图

<!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>Document</title>
  <link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css"></head>
<body>
  <div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
    <!-- Indicators -->
    <ol class="carousel-indicators">
      <li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
      <li data-target="#carousel-example-generic" data-slide-to="1"></li>
      <li data-target="#carousel-example-generic" data-slide-to="2"></li>
    </ol>
  
    <!-- Wrapper for slides -->
    <div class="carousel-inner" role="listbox">    
      <div class="item active">
        <img src="./product.jpeg" alt="..."><div class="carousel-caption">
          ...
        </div>
        
      </div>
      <div class="item">
        <img src="./bg.png" alt="...">
        <div class="carousel-caption">
          ...
        </div>
        
      </div>
      <div class="item">
        <img src="./taobao.png" alt="...">
        <div class="carousel-caption">
          ...
        </div>
      </div>
    </div>
  
    <!-- Controls -->
    <a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
      <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
      <span class="sr-only">Previous</span>
    </a>
    <a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
      <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
      <span class="sr-only">Next</span>
    </a>
  </div>

  <script src="./移动端/js/jquery.js"></script><script src="./移动端/04-框架素材/bootstrap-3.4.1-dist/js/bootstrap.min.js"></script>

</body>
</html>

7、实战演练 AlloyTeam

(1)轮播图(JS插件)

  • ①去bootcss拷贝轮播图的代码
  • ②发现需求和已有模板不同,需求:

// 视口<768 高250
// 视口<992 高400
// 视口>992 高500

所以在css中写媒体查询
一般改变高度都是改面的大盒子,然后让里面的内容,如图片100%充满

@media(max-width:992px){
        .item{
            height:400px;
        }  
    }
    @media(max-width:768px){
        .item{
            height: 250px;
        }  
    }
    @media(min-width:992px){
        .item{
            height: 500px;
        }  
    }  
  • ③发现图没有撑满,找到其标签让它100%
img{
        height: 100%!important;  //!important可以提高等级,防止等级不够
    }
  • ④还有其他一些小的格式的不同,如框架代码下面是圆点滑动,这里只需根据检查需求样式,找到选择器再添加宽高。
    在这里插入图片描述

(2)导航(组件)

  • ① 在组件里面找到导航,修修改改,找到多余的类名删掉,少的找类似的复制添加
  • ②导航条固定在顶端,找框架复制黏贴改格式,修改颜色从最大的盒子往里面找
  • ③此项目在视口小于992px时,导航条会折叠,boot框架默认在768折叠,定制解决,修改这个值。

在这里插入图片描述 在这里插入图片描述
然后重新下载,解压,重新引入(link)

(3)栅栏式,使用BootStrap快速布局网页

在这里插入图片描述

视口宽度>992时,一行排四个
视口宽度>768时,一行排两个
视口宽度<768时,一行排一个

<div class="container">
        <div class="col-xs-12 col-sm-6 col-md-3"><a href="#">1</a></div>
        <div class="col-xs-12 col-sm-6 col-md-3"><a href="#">2</a></div>
        <div class="col-xs-12 col-sm-6 col-md-3"><a href="#">3</a></div>
        <div class="col-xs-12 col-sm-6 col-md-3"><a href="#">4</a></div>
      </div>

加个背景,效果如下图
在这里插入图片描述
发现自带间隙,是因为col类有自带空白,并且这个空白不能通过给div加margin实现,因为col实现一行四个是通过width:25%,没有地方加margin,是里面的内容的padding形成有空白的视觉效果。
不过这个col类自带padding:-15,不用另外加了。

(4)适合做成响应式的网站:

①企业站
②内容少
电商站内容太多,不合适,一般是PC端一个网站,移动端一个网站。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值