响应式布局

news/2024/4/24 6:06:14/文章来源:https://blog.csdn.net/qq_14876133/article/details/130324847

文章目录

  • 响应式布局
    • 概述
    • viewport 视口
    • CSS 常用单位
    • CSS 媒体查询
      • 语法
      • 直接使用
      • 使用style标签
      • 使用link引入
    • 自适应布局
    • 栅格系统
    • 响应式布局案例
    • rem+媒体查询

响应式布局

概述

响应式布局是指网站或应用程序可以自适应不同的屏幕尺寸和设备类型,简而言之就是一个网站兼容多种终端。

viewport 视口

  • viewport:视口,控制页面的尺寸和缩放。
  • width:设置视口的宽度,可以指定一个具体的值,如600,可以是由关键字组成的特殊值,如 device-width 就表示设备的宽度。
  • initial-scale:初始缩放比例,也就是页面第一次加载时的缩放比例。
  • minimum-scale:表示允许用户缩放的最大比例,范围0~10.0。
  • maximum-scale:表示允许用户缩放的最小比例,范围0~10.0。
  • user-scalable:表示用户是否可以手动缩放,yes表示允许,no表示禁止。
<meta name="viewport"content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />

CSS 常用单位

单位说明
px像素。在大多数情况下,1像素等于1个显示器上的物理像素。例如,如果您将一个元素的宽度设置为100px,则它将在屏幕上占据100个像素的宽度。
%百分比。百分比是相对于父元素的单位。例如,如果您将一个元素的宽度设置为50%,则它将占据其父元素宽度的50%。
emem是相对于元素的字体大小的单位。例如,如果您将一个元素的字体大小设置为16px,则1em等于16px。如果您将一个元素的宽度设置为2em,则它将占据其父元素字体大小的2倍的宽度。
remrem是相对于根元素(即HTML元素)的字体大小的单位。例如,如果您将根元素的字体大小设置为16px,则1rem等于16px。如果您将一个元素的宽度设置为2rem,则它将占据根元素字体大小的2倍的宽度。
vw和vhvw和vh是相对于视口宽度和高度的单位。例如,如果您将一个元素的宽度设置为50vw,则它将占据视口宽度的50%。

CSS 媒体查询

CSS 媒体查询可以根据指定的条件,针对不同的媒体类型(screen print)定义不同的 CSS 样式。

语法

媒体类型说明
all默认值,宿友设备
screen屏幕设备
print打印设备
speech屏幕阅读器,一般供残障人士使用
媒体逻辑说明
and
,
not

直接使用

场景:当屏幕大于等于400px时,一行显示3个;当屏幕大于等于300px并且小于等于399px时,一行显示2个;当屏幕小于等于299px时,一行显示1个。

在这里插入图片描述

<!doctype html>
<html><head><meta charset="utf-8"><meta name="viewport"content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /><title>响应式布局</title><style>#div0 {width: 100%;height: 500px;}#div0 div {float: left;height: 100px;}#div0 div:first-child {background-color: red;}#div0 div:nth-child(2) {background-color: green;}#div0 div:last-child {background-color: blue;}/* >=400px */@media screen and (min-width:400px) {#div0 div {width: 33.3%;}}/* >=300px 并且 <=399px */@media screen and (min-width:300px) and (max-width:399px) {#div0 div {width: 50%;}}/* <=299px */@media screen and (max-width:299px) {#div0 div {width: 100%;}}</style></head><body><div id="div0"><div></div><div></div><div></div></div></body>
</html>

使用style标签

<head><meta charset="utf-8"><meta name="viewport"content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /><title>响应式布局</title><style>#div0 {width: 100%;height: 500px;}#div0 div {float: left;height: 100px;}#div0 div:first-child {background-color: red;}#div0 div:nth-child(2) {background-color: green;}#div0 div:last-child {background-color: blue;}</style><!-- >=400px --><style media="screen and (min-width:400px)">#div0 div {width: 33.3%;}</style><!-- >=300px 并且 <=399px --><style media="screen and (min-width:300px) and (max-width:399px)">#div0 div {width: 50%;}</style><!-- <=299px --><style media="screen and (max-width:299px)">#div0 div {width: 100%;}</style>
</head>

使用link引入

<head><meta charset="utf-8"><meta name="viewport"content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /><title>响应式布局</title><style>#div0 {width: 100%;height: 500px;}#div0 div {float: left;height: 100px;}#div0 div:first-child {background-color: red;}#div0 div:nth-child(2) {background-color: green;}#div0 div:last-child {background-color: blue;}</style><!-- 大于等于400px --><link rel="stylesheet" href="css/css1.css" media="screen and (min-width:400px)"><!-- 大于等于300px,并且小于等于399px --><link rel="stylesheet" href="css/css2.css" media="screen and (min-width:300px) and (max-width:399px)"><!-- 小于等于299px --><link rel="stylesheet" href="css/css3.css" media="screen and (max-width:299px)">
</head>

css1.css:

#div0 div {width: 33.3%;
}

css2.css

#div0 div {width: 50%;
}

css3.css

#div0 div {width: 100%;
}

自适应布局

根据判断不同设备平台跳转不同的页面。

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>自适应布局</title><script>var redirect = () => {//获取设备信息let userAgent = navigator.userAgent.toLowerCase();let device = /ipad|iphone|midp|rv: 1.2.3.4|ucweb|android|windows ce|windows mobile/;if (device.test(userAgent)) {window.location.href = "mobile.html";} else {window.location.href = "pc.html";}}redirect();</script></head><body></body>
</html>

栅格系统

栅格系统是一种用于响应式网页设计的布局系统,它将页面分成若干列和行,使得页面可以在不同设备上以不同的屏幕尺寸和分辨率正确显示。

在栅格系统中,页面被分成若干列,每列的宽度可以是固定的像素值,也可以是相对于父元素的百分比值。每行可以包含若干列,每列之间可以设置间距和偏移量。通过使用栅格系统,可以轻松地创建响应式布局,使得页面可以在不同设备上以正确的大小和比例显示。

栅格系统通常使用CSS框架(如Bootstrap)来实现。

Bootstrap中的栅格系统:

在这里插入图片描述

使用:

<!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><style>* {margin: 0;padding: 0;box-sizing: border-box;}</style><linkhref="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css"rel="stylesheet"integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD"crossorigin="anonymous" /><style>.container {margin-top: 50px;background-color: #eee;}div[class*="col"] {padding-top: 10px;padding-bottom: 10px;background-color: rgba(86, 61, 124, 0.15);border: 1px solid rgba(86, 61, 124, 0.2);}</style></head><body><div class="container text-center"><div class="row"><div class="col col-12 col-sm-6 col-md-3 col-lg-2 col-xl-1">1</div><div class="col col-12 col-sm-6 col-md-3 col-lg-2 col-xl-1">2</div><div class="col col-12 col-sm-6 col-md-3 col-lg-2 col-xl-1">3</div><div class="col col-12 col-sm-6 col-md-3 col-lg-2 col-xl-1">4</div><div class="col col-12 col-sm-6 col-md-3 col-lg-2 col-xl-1">5</div><div class="col col-12 col-sm-6 col-md-3 col-lg-2 col-xl-1">6</div><div class="col col-12 col-sm-6 col-md-3 col-lg-2 col-xl-1">7</div><div class="col col-12 col-sm-6 col-md-3 col-lg-2 col-xl-1">8</div><div class="col col-12 col-sm-6 col-md-3 col-lg-2 col-xl-1">9</div><div class="col col-12 col-sm-6 col-md-3 col-lg-2 col-xl-1">10</div><div class="col col-12 col-sm-6 col-md-3 col-lg-2 col-xl-1">11</div><div class="col col-12 col-sm-6 col-md-3 col-lg-2 col-xl-1">12</div></div></div><scriptsrc="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"integrity="sha384-/mhDoLbDldZc3qpsJHpLogda//BVZbgYuw6kof4u2FrCedxOtgRZDTHgHUhOCVim"crossorigin="anonymous"></script></body>
</html>

说明:

  • 特大屏幕(>=1200px):每个单元格占1列。
  • 大屏幕(>=992px):每个单元格占2列。
  • 中等屏幕(>=768):每个单元格占3列。
  • 小屏幕(>=576):每个单元格占6列。
  • 特小屏幕:每个单元格占12列。

在这里插入图片描述

响应式布局案例

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

html:

<!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="./css/reset.css" /><link rel="stylesheet" href="./css/index.css" /><link rel="stylesheet" href="./css/responsive.css" /></head><body><div class="header"><div class="header_wrap"><div href="javascript:;">hello</div><button class="toggle" id="toggle"><span class="toggle_line"></span><span class="toggle_line"></span><span class="toggle_line"></span></button><nav class="nav" id="nav"><ul class="nav_list"><li><a href="javascript:;" class="nav_link">首页</a></li><li><a href="javascript:;" class="nav_link">热门新闻</a></li><li><a href="javascript:;" class="nav_link">职业规划</a></li><li><a href="javascript:;" class="nav_link">专栏/手记/关注</a></li><li><a href="javascript:;" class="nav_link">教程</a></li></ul></nav></div></div><div class="main"><ul class="box_list"><li class="box_item"><img src="./images/2.jpg" /></li><li class="box_item"><img src="./images/2.jpg" /></li><li class="box_item"><img src="./images/2.jpg" /></li><li class="box_item"><img src="./images/2.jpg" /></li><li class="box_item"><img src="./images/2.jpg" /></li><li class="box_item"><img src="./images/2.jpg" /></li><li class="box_item"><img src="./images/2.jpg" /></li></ul></div><script>let toggle = document.getElementById("toggle");let nav = document.getElementById("nav");toggle.onclick = function () {this.classList.toggle("toggle_active");nav.classList.toggle("nav_extended");};</script></body>
</html>

reset.css:

* {box-sizing: border-box;padding: 0;margin: 0;-webkit-tap-highlight-color: transparent;
}ul,
li {list-style: none;
}

index.css:

body {display: flex;flex-direction: column;height: 100vh;
}.header {position: relative;flex-shrink: 0;width: 100%;height: 48px;border-bottom: 1px solid #e8e8e8;background: #fff;
}.header_wrap {display: flex;justify-content: space-between;align-items: center;width: 100%;height: 100%;padding: 0 20px;
}.toggle {padding: 10px;border: none;border-radius: 4px;background-color: #fff;
}.toggle .toggle_line {display: block;width: 24px;height: 4px;background-color: #363636;border-radius: 2px;
}.toggle_active {background-color: #f1f1f1;
}.toggle_active .toggle_line {background-color: #000000;
}.toggle_line+.toggle_line {margin-top: 4px;
}.nav {overflow: hidden;position: absolute;top: 48px;left: 0;width: 100%;height: 0;transition: height 0.5s;background-color: #fff;
}.nav_extended {height: 200px;
}.nav_list .nav_link {display: block;height: 40px;line-height: 40px;padding: 0 20px;color: #363636;font-size: 14px;font-weight: bold;
}.nav_list .nav_link:hover {color: red
}.main {flex-grow: 1;margin: 20px 0;
}.main .box_list {display: flex;flex-wrap: wrap;padding-right: 20px;
}.box_item {width: 50%;padding: 0 0 10px 20px;
}.box_item img {width: 100%;
}

responsive.css:

.box_item {width: 100%;
}@media(min-width:576px) {.box_item {width: 50%;}
}@media(min-width:768px) {.box_item {width: 33.333333%;}.toggle {display: none;}.nav {position: static;height: auto;}.nav .nav_list {display: flex;justify-content: end;}
}@media(min-width:992px) {.box_item {width: 25%;}
}@media(min-width:1200px) {.box_item {width: 16.666667%;}
}

rem+媒体查询

代码下载

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sentinel同时配置fallback和blockHandler的问题

Spring Cloud在使用Sentinel进行服务降级和熔断时&#xff0c;如果同时配置了fallback和blockHandler&#xff0c;则在服务熔断后&#xff0c;抛出的BlockException不会再fallback逻辑中执行&#xff0c;而是在blockHandler逻辑中执行。 首先来看只配置了fallback的情况&#x…

常用的设计模式(单例模式、工厂模式等)

1.单例模式 概述: 在有些系统中&#xff0c;为了节省内存资源、保证数据内容的一致性&#xff0c;对某些类要求只能创建一个实例&#xff0c;这就是所谓的单例模式. 例如&#xff0c;Windows 中只能打开一个任务管理器&#xff0c;这样可以避免因打开多个任务管理器窗口而造…

战争教育策略游戏 MiracleGame,开启新阶段重塑生态和玩法

香港 Web3 区块链周刚刚在一片喧嚣中结束。各路大V、KOL 们的 report 都对 GameFi 的前景非常自信。2021-2023年期间&#xff0c;大量资金涌入 GameFi 赛道&#xff0c;GameFi 一旦爆发将会是现象级的出圈事件。 MiracleGame 是一款基于 BNB Chain 构建的英雄和元神主题的战争教…

HNCTF-re部分复现

目录 [HNCTF 2022 WEEK3]Help_Me! [HNCTF 2022 WEEK3]Whats 1n DLL? [HNCTF 2022 WEEK4]ez_maze 这几天在做HNCTF的week3&#xff0c;week4部分&#xff0c;学到了一些不知道的没接触过的东西&#xff0c;所以记录一下 [HNCTF 2022 WEEK3]Help_Me! 题目下载&#xff1a;下…

[自注意力神经网络]Mask Transfiner网络-论文解读

本文为CVPR2022的论文。国际惯例&#xff0c;先贴出原文和源码&#xff1a; 原论文地址https://arxiv.org/pdf/2111.13673.pdf源码地址https://github.com/SysCV/transfiner 一、概述 传统的Two-Stage网络&#xff0c;如Mask R-CNN虽然在实例分割上取得了较好的效果&#xff…

ARM busybox 的移植实战2

一、busybox 源码分析1 1、源码目录梳理 2、整个程序入口的确认 (1) 分析一个程序&#xff0c;不管多庞大还是小&#xff0c;最好的路线都是 按照程序运行时的逻辑顺序来。所以找到一个程序的入口至关重要。 (2) 学 C 语言的时候都知道&#xff0c;程序的主函数 main 函数就是…

【JUC高并发编程】—— 初见JUC

一、JUC 概述 什么是JUC JUC 是 Java并发编程的缩写&#xff0c;指的是 Java.util.concurrent 即Java工具集下的并发编程库 【说白了就是处理线程的工具包】 JUC提供了一套并发编程工具&#xff0c;这些工具是Java 5以后引入的&#xff0c;使得Java开发者可以更加方便地编写…

【系统集成项目管理工程师】项目干系人管理

&#x1f4a5;十大知识领域&#xff1a;项目干系人管理 项目干系人管理包括以下 4 个过程: 识别干系人规划干系人管理管理干系人参与控制干系人参与 一、识别干系人 输入工具与技术输出项目章程采购文件事业环境因素组织过程资产组织相关会议专家判断干系人分析干系人登记册 …

ansible自动运维——ansible使用临时命令通过模块来执行任务

大家好&#xff0c;这里是天亮之前ict&#xff0c;本人网络工程大三在读小学生&#xff0c;拥有锐捷的ie和红帽的ce认证。每天更新一个linux进阶的小知识&#xff0c;希望能提高自己的技术的同时&#xff0c;也可以帮助到大家 另外其它专栏请关注&#xff1a; 锐捷数通实验&…

为什么使用了索引,查询还是慢?

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;为什么使用了索引&#xff0c;查询还是慢&#xff1f; ✅创作者&#xff1a;林在闪闪发光 ⏰预计时间&#xff1a;30分钟 &#x1f389;个人主页&#xff1a;林在闪闪发光的个人主页 &#x1f341;林在闪闪发光的个人社区&…

linux 安装 oracle 11g

linux 安装 oracle 11g 1、下载oracle 11g (11.2.0.1.0)1.1、Oracle Database 11.2.0.1.01.2、Oracle Database Grid Infrastructure 11.2.0.1.01.3、客户端 2、安装文档3、安装前准备3.1、建立用户和用户组3.2、sysctl3.3、security limits3.4、其他设置3.5、创建安装目录3.6、…

校招又临近了,怎么在面试中应对设计模式相关问题呢?

夏天开始了&#xff0c;那么夏天结束时的毕业季也不远了。毕业是个伤感、期待而又略带残酷的时节&#xff0c;就像蜜桃无论成熟与否都会在这个时间被采摘&#xff0c;如果毫无准备就踏入社会&#xff0c;就会……马上变成低级社畜。所以说还是要早点为了毕业找工作做点准备&…

Jetson nano B01学习笔记 -- 系统环境配置以及ROS安装

文章目录 一、Jetson nano 简介二、 系统环境配置1、系统镜像烧录2、CUDA环境配置 三、 ROS安装和环境配置总结 一、Jetson nano 简介 Jetson Nano是一款体积小巧、功能强大的人工智能嵌入式开发板&#xff0c;于2019年3月由英伟达推出。它预装Ubuntu 18.04LTS系统&#xff0c;…

LeafLet加载自定义Legend的设计与实现

背景 众所周知&#xff0c;在GIS的世界里&#xff0c;图例和地图永远是一对一起出现的对象。在地图上表示地理环境各要素&#xff0c;比如山脉、河流、城市、铁路等所用的符号叫做图例。这些符号所表示的意义&#xff0c;常注明在地图的边角上。图例是表达地图内容的基本形式和…

小六壬学习笔记

小六壬学习笔记 简介前置知识:十二地支和十二时辰适用范围起课&#xff1a;月令日时卦象 疑问&#xff1a;遇到闰月怎么办&#xff1f;禁忌数字起课法手机计算器取余数 简单解卦 简介 马前课&#xff0c;又名&#xff1a;小六壬。 小六壬历史渊源&#xff1a;https://m.sohu.c…

统信UOS 20 安装达梦数据库V8

统信UOS 20 安装达梦数据库V8 1、安装教程2、启动数据库实例服务失败解决方法3、使用dm管理工具连接数据库 1、安装教程 https://blog.csdn.net/OceanWaves1993/article/details/129936878 此教程进行到启动数据库实例步骤时 使用下面命令启动数据库实例服务时&#xff0c;报…

大数据技术之集群数据迁移

在大数据集群数据迁移的项目中涉及到很多技术细节&#xff0c;本博客记录了迁移的大致的操作步骤。 迁移借用Hadoop自带的插件&#xff1a;distcp。 一、Hadoop集群数据迁移 **DistCp&#xff08;分布式拷贝&#xff09;**是用于大规模集群内部和集群之间拷贝的工具。它使用M…

DHCP笔记

目录 DHCP动态主机配置协议——UDP67/68端口 DHCP获取IP地址 客户端首次获取IP地址 客户端再次获取IP地址 租期/续租 DHCP的工作报文 DHCP的配置 案例 DHCP动态主机配置协议——UDP67/68端口 DHCP是应用层协议&#xff0c;采用C/S服务模式&#xff0c;只能在一个广播域…

数据科学与机器学习在软件开发中的应用

数据科学和机器学习是现代软件开发的重要组成部分&#xff0c;可以帮助开发人员更好地理解和分析数据&#xff0c;从而提高软件的质量和性能。在本篇博客中&#xff0c;我将深入探讨数据科学和机器学习在软件开发中的应用&#xff0c;并讨论它们如何帮助我们创建更好的软件。 …

Xshell中的基本命令

whoami 当我们刚登录上Xshell的时候&#xff0c;我们应该做什么呢&#xff1f;&#xff1f; 我们上次说了如何增加使用者&#xff0c;和删除使用者&#xff0c;今天我们说一下其他的基本命令。 我们刚开始登录的时候可以用root登录 那么我们怎么看自己事谁呢&#xff1f; …