响应式设计的实现方式

news2025/2/25 0:20:02

一. 什么是响应式

响应式网站设计是一种网络页面设计布局。页面的设计与开发应当根据用户行为以及设备环境(系统平台,屏幕尺寸,屏幕定向等)进行相应的响应和调整。

响应式网站常见特点:

1. 同时适配PC+平板+手机。

2. 标签导航在接近手持终端设备时改变为经典的抽屉式导航。

3. 网站的布局会根据视口来调整模块的大小和位置。

响应式设计的基本原理是通过媒体查询检测不同的设备屏幕尺寸做处理。为了处理移动端,页面头部必须有meta声明viewport。

<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"

width=device-width: 是自适应手机屏幕的尺寸宽度

maximum-scale: 是缩放比例的最大值

inital-scale: 是缩放的初始化

user-scalable: 是用户的可以缩放的操作

二. 实现响应式布局的方式

1. 媒体查询

2. 百分比

3. vw/vh

4. rem

1. 媒体查询

CSS3中增加了更多的媒体查询,就像if条件表达式一样,我们可以设置不同类型的媒体查询,并根据对应的条件,给相应符合条件的媒体调用相对应的样式表

使用@media查询,为不同尺寸的屏幕设定不同的CSS样式

@media screen and (max-width:1920px){...}

<style>
#div0{
    width: 150px;
    height: 200px;
}
// 视口的宽度改变
@media screen and (min-device-width:100px) and (max-device-width:300px){
    #div0{
        background-color: red;
    }
}

@media screen and (min-device-width:301px) and (max-device-width:500px){
    #div0{
        background-color: blue;
    }
}
</style>

@media常用参数

属性名称作用
width,height浏览器可视宽度,高度
device-width设备屏幕的宽度
device-height设备屏幕的宽度
<style>
div{
    width: 200px;
    height:200px;
}
// 浏览器的宽度改变
@media screen and (min-width:500px) and (max-width:700px){
    div{
        background-color: red;
    }
}

@media screen and (min-width:701px){
    div{
        background-color: blue;
    }
}
</style>

例子 

<style>
  #div0 {
    width: 100%;
    height: 500px;
  }
  #div0 div {
    float: left;
    height: 100px;
  }
  /* 1行三个div */
  @media screen and (min-device-width:400px){
    #div0 div {
      width: 33.3%;
    }
    #div0 div:nth-child(1) {
      background-color: red;
    }
    #div0 div:nth-child(2) {
      background-color: blue;
    }
    #div0 div:nth-child(3) {
      background-color: green;
    }
  }
  /* 2行三个div */
  @media screen and (min-device-width:300px) and (max-device-width:399px) {
    #div0 div {
      width: 50%;
    }
    #div0 div:nth-child(1) {
      background-color: red;
    }
    #div0 div:nth-child(2) {
      background-color: blue;
    }
    #div0 div:nth-child(3) {
      background-color: green;
    }
  }
  /* 3行三个div */
  @media screen and (min-device-width:200px) and (max-device-width:299px) {
    #div0 div {
      width: 100%;
    }
    #div0 div:nth-child(1) {
      background-color: red;
    }
    #div0 div:nth-child(2) {
      background-color: blue;
    }
    #div0 div:nth-child(3) {
      background-color: green;
    }
  }
</style>
<body>
  <div id="div0">
    <div></div>
    <div></div>
    <div></div>
  </div>
</body>

媒体查询——其他引入方式1 

<style>
  #div0 {
    width: 100%;
    height: 500px;
  }
  #div0 div {
    float: left;
    height: 100px;
  }
  #div0 div:nth-child(1) {
    background-color: red;
  }
  #div0 div:nth-child(2) {
    background-color: blue;
  }
  #div0 div:nth-child(3) {
    background-color: green;
  }
</style>
<style media="(min-device-width:300px) and (max-device-width:399px)">
  #div0 div {
    width: 50%;
  }
</style>
<style media="(min-device-width:400px) and (max-device-width:499px)">
  #div0 div {
    width: 33.33%;
  }
</style>

媒体查询其他引入方式——2(link引入) 

// 写在Link标签中,有条件的引入外部样式表
<link href="css/test.css" rel="stylesheet">
<link href="css/css-1.css" rel="stylesheet" media="(min-device-width:100px) and (max-device-width:300px)">

2. 百分比

通过百分比单位%来实现响应式的效果。

比如当浏览器的宽度或者高度发送变化时,通过百分比单位,可以使得浏览器中的组件的宽和高随着浏览器的变化而变化,从而实现响应式的效果。

height,width属性的百分比依托于父标签的宽高,但是其他盒子属性则不完全依赖父元素。

3. vw/vh

vw表示相对于视图窗口的宽度,vh表示相对于视图窗口的高度。

任意层级元素,在使用vw单位的情况下,1vw都等于视图宽度的百分之一。

4. rem

rem是指相对于根元素的字体大小的单位。

默认情况下浏览器字体大小为16px。此时1rem = 16px

可以针对不同的设备分辨率改变font-size的值。

@media screen and (max-width: 414px) {
    html{
        font-size: 18px
    }
}

@media screen and (max-width: 375px) {
    html{
        font-size: 16px
    }
}

@media screen and (max-width: 320px) {
    html{
        font-size: 12px
    }
}
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script>
      let c = () => {
        let w = document.documentElement.clientWidth // 获取设备的宽度
        let n = (20 * (w / 320) > 40 ? 40 + "px" : 20 * (w / 320) + "px") // 根字体大小
        document.documentElement.style.fontSize = n
      }
      window.addEventListener("load", c)
      window.addEventListener("resize", c)
    </script>
    <style>
      html {
        font-size: 16px; // 页面一加载这里就会被重置替代
      }

      div {
        font-size: 1rem;
      }
    </style>
  </head>
  <body>
    <div>123</div>
  </body>
</html>

5. flex

FlexiableBox即是弹性盒子,用来进行弹性布局,可以配合rem处理尺寸的适配问题。

flex用来为盒状模型提供最大的灵活性,任何一个容器都可以指定为Flex布局。 

flex-direction:子元素在父元素盒子中的排列方式

属性值作用
row默认值。按从左到右的顺序显示
row-reverse与row相同,但是以相反的顺序
column灵活的将项目垂直显示,按从上到下的顺序
column-reverse与column相同,但是以相反的顺序

flex-wrap:子元素在父元素盒子中的是否换行

属性值作用
nowrap默认值,不换行或不换列
wrap换行或换列
wrap-reverse换行或换列,但以相反的顺序

flex-flow:flex-direction和flex-wrap属性的简写形式。语法:flex:<flex-direction>||<flex-wrap>

justify-content,用来在存在剩余空间时,设置为间距的方式

属性值作用
flex-start默认值,从左到右,挨着行的开头
flex-end从右到左,挨着行的结尾
center居中显示
space-between平均分布在该行上,两边不留间隔空间
space-around平均分布在该行上,两边留有一半的间隔空间

align-items,设置每个flex元素在交叉轴上的默认对齐方式(单行看待)

属性值作用
flex-start位于容器的开头
flex-end位于容器的结尾
center居中显示

align-content,设置每个flex元素在交叉轴上的默认对齐方式(整体看待)

属性值作用
flex-start位于容器的开头
flex-end位于容器的结尾
center位于容器的中心
space-between之间留有空白
space-around

两端都留有空白

其他属性 

属性值作用
flex-basis设置弹性盒伸缩基准值(设置后,宽度将不再生效)
flex-grow设置弹性盒子的扩展比率
flex-shrink设置弹性盒子的缩小比率
flexflex-grow,flex-shrink,flex-basis的缩写

特殊写法 

属性作用
flex:autoflex: 1 1 auto
flex: noneflex: 0 0 auto

flex: 0%

flex:100px

flex: 1 1 0%

flex: 1 1 100px

flex:1flex: 1 1 0%

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1054186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

排序篇(五)----非比较排序

排序篇(五)----非比较排序 基本思想&#xff1a; ​ 计数排序又称为鸽巢原理&#xff0c;是对哈希直接定址法的变形应用。 ​ 统计每个元素出现的次数&#xff0c;然后根据元素的大小顺序将它们放入正确的位置。 ​ 计数排序是一种小众的排序,它适合于数据密集的场景,按最大…

flink选择slot

flink选择slot 在这个类里修改 package org.apache.flink.runtime.resourcemanager.slotmanager.SlotManagerImpl; findMatchingSlot(resourceProfile)&#xff1a;找到满足要求的slot&#xff08;负责从哪个taskmanager中获取slot&#xff09;对应上图第8&#xff0c;9&…

百元开放式耳机推荐哪款、性价比最好的开放式耳机推荐

随着蓝牙耳机产业的高速发展&#xff0c;目前最热门的蓝牙耳机莫过于开放式的&#xff0c;跟传统的蓝牙耳机相比&#xff0c;开放式的耳机拥有久戴不累、安全舒适等优势&#xff0c;所谓的“开放式耳机”&#xff0c;就是指不用塞入耳朵内&#xff0c;也能听音乐的耳机&#xf…

noip2011铺地毯

[NOIP2011 提高组] 铺地毯 题目描述 为了准备一个独特的颁奖典礼&#xff0c;组织者在会场的一片矩形区域&#xff08;可看做是平面直角坐标系的第一象限&#xff09;铺上一些矩形地毯。一共有 n n n 张地毯&#xff0c;编号从 1 1 1 到 n n n。现在将这些地毯按照编号从小…

Codeforces Round 894 (Div. 3) D(数学题好难不会)

题目链接&#xff1a;Codeforces Round 894 (Div. 3) D 题目&#xff1a; 特马决定提高自己制作冰淇淋的技能。他已经学会了如何用两个球把冰淇淋做成圆锥形。 在痴迷冰淇淋之前&#xff0c;特马对数学很感兴趣。因此&#xff0c;他很想知道要制作完全n个不同类型的冰淇淋&am…

数学建模之Matlab基础操作

作者由于后续课程也要学习Matlab&#xff0c;并且之前也进行了一些数学建模的练习&#xff08;虽然是论文手&#xff09;&#xff0c;所以花了几天零碎时间学习Matlab的基础操作&#xff0c;特此整理。 基本运算 a55 %加法&#xff0c;同理减法 b2^3 %立方 c5*2 %乘法 x 1; …

Docker 日志管理 - ELK

Author&#xff1a;rab 目录 前言一、Docker 日志驱动二、ELK 套件部署三、Docker 容器日志采集3.1 部署 Filebeat3.2 配置 Filebeat3.3 验证采集数据3.4 Kibana 数据展示3.4.1 创建索引模式3.4.2 Kibana 查看日志 总结 前言 如何查看/管理 Docker 运行容器的日志&#xff1f;…

Gorsonpy的计算器

Gorsonpy的计算器 0.页面及功能展示1. PSP表格2.解题思路描述3.设计实现过程4.程序性能改进5.异常处理6.单元测试展示7.心路历程和收获 这个作业属于哪个课程https://bbs.csdn.net/forums/ssynkqtd-05这个作业要求在哪里https://bbs.csdn.net/topics/617294583这个作业的目标完…

【CVPR 2023】DSVT: Dynamic Sparse Voxel Transformer with Rotated Sets

文章目录 开场白效果意图 重点VoxelNet: End-to-End Learning for Point Cloud Based 3D Object DetectionX-Axis DSVT LayerY-Axis DSVT Layer Dynamic Sparse Window AttentionDynamic set partitionRotated set attention for intra-window feature propagation.Hybrid wind…

Seata详解

前言 ​ 随着互联网技术的不断发展&#xff0c;系统越来越复杂&#xff0c;几乎所有 IT 公司的系统都已经完成从单体架构到分布式架构的转变&#xff0c;分布式系统几乎无处不在&#xff0c;分布式事务由此产生。 事务 ​ 事务是应用程序中一系列严密的操作&#xff0c;所有…

283. 多边形,《算法竞赛进阶指南》,

283. 多边形 - AcWing题库 “多边形游戏”是一款单人益智游戏。 游戏开始时&#xff0c;给定玩家一个具有 N 个顶点 N 条边&#xff08;编号 1∼N&#xff09;的多边形&#xff0c;如图 1 所示&#xff0c;其中 N4 每个顶点上写有一个整数&#xff0c;每个边上标有一个运算符…

2023年中国金刚石工具产量、需求量、市场规模及行业细分产品规模[图]

金刚石工具就是以金刚石为增强体&#xff0c;以金属或聚合物为基体的一类功能复合材料。金刚石工具已经成为当今公认的、唯一有效的硬脆非金属材料加工工具&#xff0c;比如&#xff0c;只有用金刚石刀具能加工超硬的陶瓷&#xff0c;尚无其他代用品。金刚石工具根据其用途的不…

NeurIPS 2023 放榜!3200多篇上榜,录用率26.1%

上周机器学习顶会NeurIPS 2023的接收论文列表公布了&#xff0c;有同学的论文中了嘛&#xff0c;可以评论区分享分享。 这次NeurIPS 2023共录用论文3221篇左右&#xff0c;录用率26.1%&#xff0c;与2022年的25.6%相比还是有所增加的。有想法的同学冲冲冲。 NeurIPS属于CCF A…

C++ 并发编程实战 第八章 设计并发代码 二

目录 8.3 设计数据结构以提升多线程程序的性能 8.3.1 针对复杂操作的数据划分 8.3.2 其他数据结构的访问模式 8.4 设计并发代码时要额外考虑的因素 8.4.1 并行算法代码中的异常安全 8.4.2 可扩展性和Amdahl定律 8.4.3 利用多线程隐藏等待行为 8.4.4 借并发特性改进响应…

ELK整合springboot(第二课)

一、创建一个springboot的项目 pom文件如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLo…

Uniapp小程序 时间段选择限制(开始时间 结束时间相互限制)

实现效果&#xff1a; 这里我使用的是uview2.0的DatetimePicker 选择器&#xff0c;实现开始时间与结束时间相互限制的效果&#xff0c;接下来简单看下实现的代码吧&#xff0c;首先看下选择器组件以及相关参数值的初始化 <!-- 时间选择-开始 --> <u-datetime-picker …

【前段基础入门之】=>你不知道的 CSS 选择器的进阶使用!

导语&#xff1a; 在上一章节中&#xff0c;我们了解了 CSS 的一些基本语法概念&#xff0c;那么在这一章节中我们就带来 CSS 选择器知识的分享&#xff0c;选择器这一章的知识点有一点多&#xff0c;不过我们只要认真去理解&#xff0c;学习它也是没什么问题的&#xff0c;还有…

PowerShell 命令窗口执行 pnpm 命令报错 无法加载文件 pnpm.ps1,因为在此系统上禁止运行脚本

目录 问题解决验证附&#xff1a;开源项目微服务商城项目前后端分离项目 问题 在 PowerShell 命令行窗口使用 pnpm run dev 启动 vue3-element-admin 报错&#xff1a; pnpm : 无法加载文件 C:\Users\youlai\AppData\Roaming\npm\pnpm.ps1&#xff0c;因为在此系统上禁止运行脚…

【kubernetes】kubernetes中的Ingress使用

文章目录 1 Service和Endpoint1.1 服务的转发1.2 headless service及其使用场景1.3 服务的类型 2 Ingress3 ingress controller4 IngressClass5 nginx-ingress-controller 1 Service和Endpoint k8s中运行的最小单位是Pod&#xff0c;如果单独运行Pod&#xff0c;没有用控制器进…

假期get新技能?低代码模型应用工具HuggingFists

HuggingFists是什么&#xff1f; HuggingFists是一款研究和使用HuggingFace模型和数据集的AI应用工具。 众所周知&#xff0c;Hugging Face是一家人工智能&#xff08;AI&#xff09;技术公司&#xff0c;致力于开发和推广自然语言处理&#xff08;NLP&#xff09;技术&#xf…