css实现响应式布局

2023-11-19

一.什么是响应式布局

响应式布局指的是同一页面在不同屏幕尺寸下有不同的布局。传统的开发方式是PC端开发一套,手机端再开发一套,而使用响应式布局只要开发一套就够了。响应式设计与自适应设计的区别:响应式开发一套界面,通过检测视口分辨率,针对不同客户端在客户端做代码处理,来展现不同的布局和内容;自适应需要开发多套界面,通过检测视口分辨率,来判断当前访问的设备是pc端、平板、手机,从而请求服务层,返回不同的页面。cSS3媒体查询可以让我们针对不同的媒体类型定义不同的样式,当重置浏览器窗口大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面。

在这里插入图片描述

二.响应式实现方式

  • 媒体查询(下面具体讲解)
  • 流体布局(float)
  • 弹性布局(flex)
  • 通过 JavaScript、JQuery 进行判断来显示不同的布局页面
  • Bootstrap 等第三方框架
2.1 媒体查询
  • 媒体查询(Media Query)是CSS3新语法。
  • 使用 @media 查询,可以针对不同的媒体类型定义不同的样式
  • @media 可以针对不同的屏幕尺寸设置不同的样式
  • 使用@media才能够实现页面响应式布局

语法:

@media[not|only] type [and][expr] (media feature){
 rules
}
  • type媒体类型:all(所有设备)、screen(用于电脑屏幕,平板电脑,智能手机等。)

  • media feature
    1)width(浏览器的窗口尺寸,可加min/max)
    2)device-width(设备的参数尺寸,可加min/max)

  • min-width:最小宽度,在媒体查询中,宽度大于或者等于最小宽度时,就触发其CSS样式

  • max-width:最大宽度,在媒体查询中,宽度小于或者等于最大宽度时,就触发其CSS样式
    注:
    1.一般都是先实现PC端页面,然后再去做其他设备的兼容(把媒体查询写在默认样式之后)
    2.设置宽度时,最好不要写死(px),而是用%单位参照父元素的大小

2.2 使用媒体查询的方式

1.直接在 CSS 文件中使用

<style type="text/css">
  // 没有经过媒体查询限制的 CSS
    @media 类型 and (条件 1) and (条件 2){
    // 媒体查询生效才会执行的 CSS 
      }
</style>

2.使用import导入

 // 当所有设备的宽度小于 980px 时,才会使用 import 导入 CSS 文件
@import url("css/media.css") all and (max-width:980px);

3.使用 link 链接,media 作为属性用于设置查询方式

// 当所有设备的宽度小于 980px 时,才会使用 link 链接 CSS 文件
 <link rel="stylesheet" href="css/media.css" media="all and (max-width:980px)" /> 

注:媒体查询的优先级与普通 CSS 完全相同,因此当使用媒体查询时,一定要将媒
体查询的样式放在默认样式之后,否则媒体查询会被默认样式覆盖,也就无法针对不同设备
进行变化

2.3案例
   * {
           margin: 0px;
           padding: 0px;
           box-sizing: border-box;
       }
       body {
           background-color: rgb(242, 242, 242);
       }
       nav {
           width: 100%;
           height: 40px;
           text-align: center;
           padding-top: 10px;
       }
       nav p {
           margin-top: 10px;
       }
       .content {
           width: 100%;
           margin-top: 40px;
       }
       .content>div {
           width: 50%;
           float: left;
       }
       .left img {
           width: 90%;
           height: 600px;
       }
       .right {
           /* background-color: aqua; */
           height: 850px;
           margin-left: -40px;
       }
       table {
           width: 100%;
           /* width: 300px;
           margin-bottom: 10px; */
       }
       table tr {
           width: 100%;
           /* margin-top: 20px;
            */
           height: 30px;
       }
       table tr td {
           font-size: 20px;
       }
       table tr td input:not([type=button]),
       table tr td select {
           width: 80%;
           height: 40px;
       }
       table tr td textarea {
           width: 80%;
       }
       table tr td input[type=button] {
           width: 100px;
           height: 40px;
           background-color: green;
       }
       @media screen and (max-width:600px) {
           .content>div {
               float: none;
               width: 100%;
               text-align: center;
           }
       }
 <nav>
       <h1>联系我们</h1>
       <p>请填写信息:</p>
   </nav>
   <div class="content">
       <div class="left">
           <img src="../image/map.png" alt="">
       </div>
       <div class="right">
           <table>
               <tr>
                   <td>联系人</td>
               </tr>
               <tr>
                   <td><input type="text" placeholder="请输入姓名.."></td>
               </tr>
               <tr>
                   <td>联系电话</td>
               </tr>
               <tr>
                   <td><input type="text" placeholder="请输入邮箱.."></td>
               </tr>
               <tr>
                   <td>测试</td>
               </tr>
               <tr>
                   <td><select name="city" id="city">
                           <option>北京</option>
                           <option selected="selected">上海</option>
                           <option>厦门</option>
                       </select></td>
               </tr>
               <tr>
                   <td>留言</td>
               </tr>
               <tr>
                   <td><textarea id="contents" cols="30" rows="10" placeholder="反馈信息"></textarea></td>
               </tr>
               <tr>
                   <td><input type="button" name="" id="" value="提交"></td>
               </tr>
           </table>
       </div>
   </div>

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

三.补充:单位

  • px:像素(pixel)相对长度单位,,是相对于屏幕显示器分辨率而言的;
  • em:如果自身有font-size,em相对于自己的font-size,如果自身没有font-size,em相对于父元素的font-size(任何浏览器默认字体大小都是16px,所有未经调整的浏览器都符合1em=16px)
  • %:相对于父元素的宽度大小
  • rem:相对于根元素(html)的字体大小
html {
 	font-size: 12px;
}

div {
   font-size: 2rem; /* 24px */
   width: 5rem;  /* 60px */
   background-color: skyblue;
}
  • vw:视口的最大宽度,1vw=视口宽度的百分之一;
  • vh:视口得最大高度,1vh=视口高度的百分之一;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

css实现响应式布局 的相关文章

  • Vue手动控制点击事件Click触发

    方法一 变量的值 触发函数 方法二 利用变量控制css样式设置其pointer event none
  • 机器视觉基础

    机器视觉基础 什么是机器视觉 机器视觉常见的应用 机器视觉常用的概念 硬件选型 控制器 相机 镜头 附件选型 什么是机器视觉 机器视觉常见的应用 机器视觉常用的概念 快门时间越短 图片越暗淡 光圈小了 照片会暗淡 硬件选型的时候考虑物距 W
  • 一篇文章吃透 CSS3 属性: transition过渡 与 transform动画

    最近有人私信我 CSS 中的 transition 过渡 和 transform 动画 属性 这两个属性的参数确实比较复杂 它们可以做出 CSS 的一些基础动画效果 平移 旋转 倾角 等等 这些也是我早期学习 CSS 的难记易忘之处 今天给
  • CSS中的弹性布局:flex

    1 flex布局 Flexible Box 1 1 任何一个容器都可以指定为flex布局 可以应用于 块级 元素 也可以用于行内元素 1 2 当父设置flex布局后 子元素的float clear vertical align属性将失效 2
  • HTML、CSS制作小米商城网页首页源码解析

    简介 这是我学习前端以来仿写的第一个项目 沿着尚硅谷李立超老师的教学视频学习 在仿写这个项目的过程中即巩固了这两周以来的知识 也增加了一些小经验 主要是老师传授 同时也让自己更加有信心学习下去 相信自己一定会实现自己的小梦想 加油 小米官网
  • 简单HTML+css太极图

  • css_流光按钮(转载)

    CSS部分 初始化 取消页面的内外边距 padding 0 margin 0 body 弹性布局 让页面元素垂直 水平居中 display flex justify content center align items center 让页面
  • Flex布局实战详解

    Flex布局详解 1 父项属性 flex direction 设置主轴的方向 justify content 设置主轴上的子元素排列方式 flex wrap 设置子元素是否换行 align content 设置侧轴上的子元素排列方式 多行
  • 【CSS】background相关属性深入学习

    最近一次需求中对于background相关的一些属性使用较多 总结下 希望提高下次的开发效率 background属性 background color background image background position backgr
  • CSS3背景渐变

    我们经常可以看到有些背景色并不是纯色 而是好看的渐变色 css3知我懂我 给我们提供了制作渐变背景色的属性 渐变主要包括线性渐变和径向渐变 接下来逐一介绍用法 1 线性渐变 线性渐变 linear gradients 表示颜色沿着一条直线过
  • 前端例程20220728:点击涟漪效果按钮

    演示 原理 监听按钮点击事件 点击事件中获取点击位置 在点击位置生成一个元素作为水波 水波生成后通过扩散同时变透明 水波根据动画时间变透明后销毁 代码
  • 网页按钮点击动画

    要求 一个按钮 每点击一次在大小可随时变化的按钮表面生成一个实心圆形 对每个圆形配置的时间 T T T 单位 毫秒 内有如下过程 第 i i i次点击生成一个圆形
  • css如何设置背景颜色透明?css设置背景颜色透明度的两种方法介绍

    在网页布局中有时为了网页的整体美观 可能需要将网页中的某些部分设置为背景颜色透明 那么如何设置背景颜色透明呢 本篇文章就来给大家介绍一下css设置背景颜色透明的方法 在css中设置背景颜色透明的方法有两种 一种是通过rgba方式设置 另一种
  • align-content 设置多行下的子元素排列方式 代码和图片展示

    align content 适用于 换行 多行 的情况下 单行无效 可以设置上对齐 居中拉伸和平均分配剩余空间等属性值 属性值 flex start 默认值 在侧轴头部开始排列 flex end 在侧轴尾部开始排列 center 在侧轴中间
  • CSS 实现不规则元素的阴影

    大伙在工作中 尤其写页面样式 相信很多地方用到 box shadow 阴影属性 但是这个属性只能用到规则的元素上 亦或者说只能用到一个元素上 那当我们遇到不规则的元素时 想加阴影就比较棘手了 但是 CSS 提供了此问题的解决方案 今天 我们
  • 移动端界面布局适配方案

    自适应和响应式 1 自适应 根据不同的设备大小来自动调整尺寸 大小 2 响应式 会随着屏幕的实时变动而自动调整 是一种自适应 移动端视口 能看到的区域就是视口 viewport fixed就是相对于视口来进行定位的 在PC端视口就只有一个
  • 第8章 多媒体嵌入

    学习目标 了解视频 音频嵌入技术 能够总结HTML5视频 音频嵌入技术的优点 了解常用的视频文件格式和音频文件格式 能够归纳HTML5支持的视频和音频格式 掌握HTML5中视频的嵌入方法 能够在HTML5页面中添加视频文件 掌握HTML5中
  • 面试官:元素水平垂直居中的方法有哪些?如果元素不定宽高呢?

    面试官 元素水平垂直居中的方法有哪些 如果元素不定宽高呢 一 背景 在开发中经常遇到这个问题 即让某个元素的内容在水平和垂直方向上都居中 内容不仅限于文字 可能是图片或其他元素 居中是一个非常基础但又是非常重要的应用场景 实现居中的方法存在
  • css学习之路:sass学习基础篇

    SCSS 一 动态的样式语言 让CSS有变量的概念 css有很多的缺点 语法不够强大 没有变量和合理的样式复用机制 导致难以维护 我们就可以使用动态样式语言 赋予CSS新的特性 常见的动态样式语言 scss sass scss兼容sass
  • vue实现 marquee(走马灯)

    样式 代码 div class marquee prompt div class list prompt span class prompt item span div div data return listPrompt xxx xxxx

随机推荐

  • 根据子网掩码算出 IP 地址 的网络号和主机号

    我们如何根据子网掩码算出 IP 地址 的网络号和主机号呢 举个例子 比如 10 100 122 0 24 后面的 24表示就是 255 255 255 0 子网掩码 255 255 255 0 二进制是 11111111 11111111
  • Ant design Pro V5 +Typescript + Hooks + Umi + Dev + SpringBoot + mysql + redis + scrity 实现动态菜单权限管理

    Ant design Pro V5 Typescript Hooks Umi Dev SpringBoot mysql redis scrity 实现动态菜单权限管理 企业中台架构 1 app tsx页面配置 该页面集成了登陆权限控制 动态
  • Android实战系列(三)---级联菜单

    需求A 一级菜单 多级菜单联动 1 在activity上弹出多个pop窗口 达到父菜单与子菜单级联的效果 2 多个Activity页面相互的嵌套实现多级菜单 考虑 传值 数据结构的定义 之前在用前端写Android构造级联菜单出现过标题栏不
  • 算法系列15天速成——第八天 线性表【下】

    一 线性表的简单回顾 上一篇跟大家聊过 线性表 顺序存储 通过实验 大家也知道 如果我每次向 顺序表的头部插入元素 都会引起痉挛 效率比较低下 第二点我们用顺序存储时 容 易受到长度的限制 反之就会造成空间资源的浪费 二 链表 对于顺序表存
  • Finetuner+:为企业实现大模型微调和私有化部署

    如 ChatGPT GPT4 这样的大型语言模型就像是你为公司请的一个牛人顾问 他在 OpenAI Google 等大公司被预训练了不少的行业内专业知识 所以加入你的公司后 你只需要输入 Prompt 给他 介绍一些业务上的背景知识 他就能
  • 2021-01-08

    问题 F 有序数组中插入元素 时间限制 1 Sec 内存限制 128 MB 提交 2116 解决 967 提交 状态 讨论版 题目描述 输入n n lt 20 输入n个有序整数 降序或升序 插入元素e 使新序列仍按原来的排序规则为有序序列
  • 【Java】Java中的String类

    文章目录 一 认识 String 类 二 String 类的常用方法 2 1 构造方法 2 2 String 类对象之间的比较 2 3 字符串查找 2 4 字符串的转换 2 5 字符串替换 2 6 字符串拆分 2 7 字符串截取 2 8 字
  • Java语言 ASCII to Hex 互转(IOT-示例)

    概述 最近想起之前做的IOT项目 使用JAVA写了一个
  • libcurl交叉编译支持https

    简介 libcurl是一个跨平台的网络协议库 支持dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
  • Android Ble 连接设备失败 onConnectionStateChange status 返回133

    Android Ble 连接设备失败时回调函数 onConnectionStateChange status 返回133 开始找问题 各种mac地址 权限 线程 找了个遍 结果就是返回纹丝不动 又因为 mBluetoothGatt mBlu
  • BUUCTF [极客大挑战 2019]Knife

    打开一看结合题目 就是连接一下菜刀蚁剑 菜刀没用过只有蚁剑 下面用蚁剑实现 设置好URL和链接密码 找到flag文件 打开后找到flag 文件上传漏洞 一句话木马 php Asp Aspx 前端判断文件后缀名可以Burp Suite配置好P
  • pygame小游戏之飞机拼音大作战( 送给娃学拼音的礼物,星际旅行)

    二娃再过一年就该上一年级了 但现阶段的拼音咋都学不进去 买了拼音挂图贴在墙上 拉都拉不到旁边 突发奇想 何不用python的pygame做个小游戏 在玩中也能学习 让学变得有趣 这对搞编程的来说小菜一碟 于是说干就干 两个晚上就成型啦 这里
  • 如何使用条件格式在Excel中突出显示行

    Conditional formatting lets you format cells in an Excel spreadsheet based on the cells content For example you could ha
  • 程序员在囧途之垃圾创业团队

    以前 空虚和寂寞 时写的一篇通过真实案例进行 小说化改编 文 原型中的 我 并不完全代表作者本人 特此拿出和大家分享 也与自己共勉 正文 这年头互联网创业有两个人就算一个团队了 如果是精英组成的团队往往两个人能抵得上十个人 但如果是一帮平庸
  • 接口测试postman和python代码实现

    postman是一个做接口测试的工具 它是谷歌公司的 可谓是根正苗红的大家族 在接口测试领域和它拼的一个手指头也能数得出来 POSTMAN本只是Chrome的一个插件工具 后来谷歌老爹看着小家伙越来越受测试工程师的喜爱 名气越来越大 便做了
  • 【Detectron2】入门03 Faster RCNN + VOC

    在detectron2 data datasets builtin py中可以看到在DatasetCatelog上各个数据集的注册 其中 root即为数据集的基地址 代码指明 root要么是DETECTRON2 DATASETS 要么是da
  • Beyond Compare使用和安装教程

    一 背景 Beyond Compare是一款文件和文件夹比较工具 它能够比较和同步文件夹和文件 并显示它们之间的差异 方便用户决定如何更新和管理它们 Beyond Compare的主要用途包括 文件和文件夹比较 用户可以将两个文件或文件夹进
  • 九种常见排序的比较和实现

    首先排序算法大的可以分为 关键字比较 非关键字比较 关键字比较 关键字比较就是通过关键字之间的比较和移动 从而使整个序列有序 而关键字比较的算法 又可以像下面这样划分 对于排序算法之间的比较 无异于时间复杂度和空间复杂度 看下面这张表格 由
  • OpenCV读取视频并获得相关属性信息

    使用VideoCapture读取视频 video cv2 VideoCapture r prototype mp4 通过下代码确定视频是否读取成功 is open video isOpened 读取成功后 通过VideoCapture ge
  • css实现响应式布局

    一 什么是响应式布局 响应式布局指的是同一页面在不同屏幕尺寸下有不同的布局 传统的开发方式是PC端开发一套 手机端再开发一套 而使用响应式布局只要开发一套就够了 响应式设计与自适应设计的区别 响应式开发一套界面 通过检测视口分辨率 针对不同