移动端 响应式布局

移动端Day07

响应式布局

  • 响应式:不同屏幕尺寸下,页面布局,元素的尺寸都会发生变化。(通常PC端)
  • 移动适配:同一元素,在不同屏幕下,呈现一个不同的尺寸大小(页面布局不变)。
  • 问题:如何检测到当前视口的宽?
  • 答:媒体查询
  • 移动适配媒体查询-----检测视口固定宽度width:375px
  • 响应式媒体查询--------检测视口区间 min-width(最小宽度…)/max-width(最大宽度…)
  • max-width:768px(最大宽度768px 视口宽度<= 小于等于768px)
  • min-width:992px (最小宽度992px 视口宽度>= 大于等于992px)

1. 媒体查询

1.1 语法
<style>
        @media (max-width:宽度px) {
            .box {
               css样式
            }
        }
</style>
1.2 书写顺序
  • min-width(从小到大)

  • max-width(从大到小)

  <style>
        /* 视口宽度小于等于768px  max, 网页背景色是粉色 body */
        @media (max-width: 768px) {
            body {
                background-color: pink;
            }
        }
        /* 视口宽度大于等于1200px min, 网页背景色是skyblue */
        @media (min-width: 1200px) {
            body {
                background-color: skyblue;
            }
        }
    </style>

媒体查询具有层叠性:要按照顺序写

错误案例
<style>
        /*
            视口宽度 >= 768px,网页背景色是 粉色
            视口宽度 >= 992px,网页背景色是 绿色
            视口宽度 >= 1200px,网页背景色是 skyblue
            min
         */

         /* 媒体查询有层叠性 大于1200会被层叠 */
        /* 大于1200 */
        @media (min-width: 1200px) {
            body {
                background-color: skyblue;
            }
        }
 
        /* 768 - 992 */
        @media (min-width: 768px) {
            body {
                background-color: pink;
            }
        }

        /* 大于992px会一直绿色,层叠掉了skyblue */
        @media (min-width: 992px) {
            body {
                background-color: green;
            }
        }
    </style>

在这里插入图片描述

总结:写在后面的会把前面的覆盖

1.3 Link外链式引入

link具有层叠性,后来者居上

    <!-- 视口宽度 >= 992px,网页背景色为粉色 one media记得加( px) -->
    <link rel="stylesheet" href="./one.css" media="(min-width: 992px)">
    <!-- 视口宽度 >= 1200px,网页背景色为绿色 two -->
    <link rel="stylesheet" href="./two.css" media="(min-width: 1200px)">
1.4 媒体查询隐藏

display:none;不占位隐藏

<style>
/* 当浏览器窗口 宽度 小于768, left 隐藏 */
        @media (max-width:768px) {
            .left {
                display: none;
            }
        }
</style>
1.5响应式开发
<style> 
/* 0-768一行写一个  768-992一行两个 大于992一行四个 */
    /* min-width书写顺序从小到大 */
    @media (min-width:768px) {
      .item {
        width: 50%;
      }
    }

    @media (min-width:992px) {
      .item {
        width: 25%;
      }
    }

    @media (max-width:768px) {
      .item {
        width: 100%;
      }
    }
</style>
1.6媒体查询补充
 <style>
    @media screen and (max-width:768px) {
      .box {
        background-color: pink;
      }
    }
     @media screen,print and (max-width:768px) {
      .box {
        background-color: pink;
      }
    }
  </style>

2. Bootstrap

2.1 bootstrap简介
2.2 bootstra使用

使用步骤:先引用,在调用。

    1. 引入: BootStrap提供的CSS代码
    1. 调用类:使用BootStrap提供的样式
  • container:响应式布局版心类,且有左右padding:15px

<link rel="stylesheet" href="./bootstrap-3.3.7/css/bootstrap.css">
  <div class="container">1 </div>
2.3 bootstra栅格系统
2.3.1.简介

在这里插入图片描述

2.3.2.代码 link引入bootstrap.css
    <link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css">

    <style>
        .container div {
            height: 50px;
            background-color: pink;
        }
    </style>
</head>
<body>
    <!-- 需求: 大屏: 一行排列4个内容3; 中屏:一行排列2个内容 : 6 -->
    <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>
2.3.3. 相关类名
    1. ​ .container是 Bootstrap 中专门提供的类名,所有应用该类名的盒子,默认已被指定宽度且居中。
    1. ​ .container-fluid也是 Bootstrap 中专门提供的类名,所有应用该类名的盒子,宽度均为 100%。
    1. 分别使用.row类名和 .col类名定义栅格布局的行和列。

注意:

  1. container类自带间距15px;

  2. row类自带间距-15px;

      <!-- 版心样式:自带左右各15px的padding -->
        <div class="container">
             <!-- row(带有左右margin:-15px)必须嵌套再container中才可以抵消边距 -->
            <div class="row">1</div>
        </div>
        <!-- 通栏盒子 宽度100%:自带左右各15px的padding -->
        <div class="container-fluid">2</div>
    
2.4 bootstrap内容 记得引入.css / .js
2.4.1全局css样式-button/input 某一标签

​ 类名网址:https://www.bootcss.com/

2.4.2组件-某一区域-banner
2.4.3javascript插件-js交互
  • ​ 插件使用 目标:使用BootStrap插件实现常见的交互效果

  • ​ 插件的使用步骤:

  • ​ 1.引入BootStrap样式

  • ​ 2.引入js文件:jQuery.js + BootStrap.min.js

  • ​ 3.复制HTML结构, 并适当调整结构或内容

<head> 
<link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css">
</head>
<body>
    <div>
    <!-- 占代码-->
    </div>
     <!-- 注意顺序 上:jquery 下:bootstrap.min.js -->
    <script src="./js/jquery.js"></script>
    <script src="./bootstrap-3.4.1-dist/js/bootstrap.min.js"></script>
</body>
2.4.4定制
  • 下载
  • 重新导入bootstrap

3.案例:腾讯全端 响应式布局

1.-banner响应布局

/* : 实际开发中不需要检查元素看尺寸, 在设计稿里面测量尺寸
大屏: 500
中屏: 500, 大于992, min-width
小屏: 400, 大于768, min-width
超小屏: 250, 小于768, max-width
// 不同的视口, 图的尺寸不一致, 媒体查询
*/
// 轮播图
.carousel {
    @media (max-width: 768px) {
        // 图加尺寸
        .item {
            height: 250px;
        }
    }

    @media (min-width: 768px) {
        .item {
            height: 400px;
        }
    }

    @media (min-width: 992px) {
        .item {
            height: 500px;
        }
    }

    // 默认图片的高度是auto, 高度跟随宽度变化, 我们想要的是高度随着父级尺寸变化
    img {
        height: 100%!important;
    }
}

2.-div响应式布局

  <!-- 需求: 大屏: 一行排列4个内容3; 中屏:一行排列2个内容 : 6 -->
    <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>
<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>

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3 提供了强大的响应式系统,这对于移动端的布局非常重要。在移动端开发中,响应式布局确保了页面在不同屏幕尺寸和设备上都能自适应地调整布局。Vue 3 的响应式主要依赖于以下核心机制: 1. **Vue实例的响应式属性**:Vue实例的data属性会自动转换为响应式的,这意味着当你修改这些属性时,视图会自动更新。这是通过劫持JavaScript的数据变更通知机制(Object.defineProperty)实现的。 2. **计算属性**:你可以定义计算属性,它们基于其他响应式的属性计算得出,也具备响应性。这使得复杂的计算变得简洁,不需要手动维护状态。 3. **Watch API**:虽然不是直接用于布局,但watch方法允许你在数据变化时执行回调,这对于动态调整样式或执行布局相关的逻辑非常有用。 4. **响应式指令**:Vue提供了一些响应式指令如v-bind, v-model等,用于绑定元素的属性,这些在移动端布局中也有广泛应用,比如v-bind:style可以动态设置元素的样式。 5. **Vue Router** 和 **Vuex** 的配合:当用户导航或组件状态改变时,响应式系统能保证视图的更新和路由的重渲染,这对于动态路由和复杂数据流的管理至关重要。 6. **Vue CLI** 提供的预构建工具和脚手架:可以帮助开发者快速创建适合移动端响应式布局,并支持各种屏幕尺寸的适配策略,如媒体查询和百分比布局。 对于移动端响应式布局的具体实现,你可能需要用到以下技术: - **CSS Flexbox** 或 **CSS Grid**:Vue3不直接处理布局,但你可以使用这两种现代CSS布局模式来创建灵活的网格和响应式容器。 - **CSS变量和主题**:使用CSS变量可以轻松地切换不同主题或屏幕尺寸的样式。 - **响应式设计库**:如Vuetify、Element UI等提供了预设的响应式组件和解决方案。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值