css实现响应式详解
一、媒体查询(Media Queries)
基本概念
媒体查询是 CSS3 中用于根据不同的设备特性(如屏幕宽度、高度、设备类型等)应用不同样式规则的技术。它允许你为特定的媒体类型(如屏幕、打印、手持设备等)和条件(如最小宽度、最大宽度等)定义样式。
例如,你可以为屏幕宽度小于 768px 的设备(通常是手机)定义一组样式,为屏幕宽度在 768px 到 1024px 之间的设备(平板电脑)定义另一组样式。
语法结构
媒体查询的基本语法如下:
@media media - type and (media - feature - rule) {/* CSS样式规则 */
}
其中,media - type可以是screen(用于屏幕设备)、print(用于打印设备)、handheld(用于手持设备)等。media - feature - rule是具体的媒体特性规则,如(max - width: 768px)表示最大宽度为 768px 的设备。
例如,以下代码会在屏幕宽度小于或等于 600px 时将背景颜色设置为蓝色:
@media screen and (max - width: 600px) {body {background - color: blue;}
}
常见的媒体特性
屏幕宽度相关
max - width:指定一个最大宽度值,当屏幕宽度小于或等于这个值时,媒体查询中的样式规则生效。例如,(max - width: 480px)适用于屏幕宽度不超过 480px 的设备,常用于为手机等小屏幕设备设计样式。
min - width:指定一个最小宽度值,当屏幕宽度大于或等于这个值时,样式规则生效。比如,(min - width: 768px)可以用于为平板电脑及更大屏幕设备设计样式。
屏幕高度相关(相对较少使用,但在某些场景下很有用)
max - height和min - height的作用与宽度相关特性类似,只是针对屏幕的高度。例如,在设计一个高度受限的弹出窗口或者全屏应用时,可以使用这些特性来确保样式在不同高度的屏幕上都能正常显示。
设备方向
orientation: portrait(纵向)和orientation: landscape(横向)可以根据设备的方向应用不同的样式。例如,在手机从纵向切换到横向时,可以改变布局,使内容更好地适应屏幕。
二、弹性布局(Flexbox)
基本概念
Flexbox 是一种用于在容器中布局子元素的 CSS 布局模型。它提供了一种灵活的方式来分配空间和对齐元素,使得布局能够更好地适应不同的屏幕尺寸。
使用 Flexbox,可以轻松地实现水平和垂直方向的对齐,以及子元素的自动缩放和排列。
关键属性
容器属性
display: flex:将一个元素设置为 Flex 容器。一旦设置为 Flex 容器,其内部的子元素(称为 Flex 项目)就可以使用 Flexbox 的布局规则进行排列。
flex - direction:用于指定 Flex 项目的排列方向。可以是row(水平方向,从左到右)、row - reverse(水平方向,从右到左)、column(垂直方向,从上到下)或column - reverse(垂直方向,从下到上)。
justify - content:用于在主轴(由flex - direction确定)上对齐 Flex 项目。常见的值有flex - start(默认值,项目向主轴起点对齐)、flex - end(项目向主轴终点对齐)、center(项目在主轴上居中对齐)、space - between(项目在主轴上均匀分布,两端对齐)和space - around(项目在主轴上均匀分布,每个项目两侧的间隔相等)。
align - items:用于在交叉轴(与主轴垂直的轴)上对齐 Flex 项目。值包括stretch(默认值,项目会拉伸以填充交叉轴方向的容器空间)、flex - start、flex - end和center。
项目属性
flex - grow:定义 Flex 项目在容器有剩余空间时的伸展比例。例如,如果有两个 Flex 项目,一个flex - grow为 1,另一个为 2,那么后者将占用剩余空间的三分之二,前者占用三分之一。
flex - shrink:与flex - grow相反,它定义了在容器空间不足时 Flex 项目的收缩比例。
flex - basis:用于指定 Flex 项目在分配多余空间或收缩之前的初始大小。它可以是一个长度值(如100px)或一个百分比。
三、网格布局(Grid Layout)
基本概念
CSS Grid 是一种二维布局系统,它允许你将页面划分为行和列,然后将元素放置在这些网格单元中。网格布局提供了强大的布局控制能力,能够创建复杂的页面布局,并且在响应式设计中也非常有用。
关键属性
容器属性
display: grid:将一个元素设置为网格容器。
grid - template - rows和grid - template - columns:用于定义网格的行和列的大小。例如,grid - template - rows: 100px 200px;表示网格有两行,第一行高度为 100px,第二行高度为 200px。grid - template - columns的用法类似。
grid - gap:用于设置网格单元之间的间隙大小。可以分别设置行间隙和列间隙,如grid - row - gap和grid - column - gap,也可以使用grid - gap同时设置行和列的间隙(grid - gap: 10px 20px;表示行间隙为 10px,列间隙为 20px)。
项目属性
grid - row - start、grid - row - end、grid - column - start和grid - column - end:这些属性用于指定项目在网格中的位置,即项目从哪一行 / 列开始,到哪一行 / 列结束。例如,grid - row - start: 2; grid - row - end: 4;表示项目跨越从第二行到第四行(不包括第四行)的网格单元。
grid - area:这是一个简写属性,可以同时指定项目的行和列位置。例如,grid - area: 2/1/4/3;表示项目从第二行第一列开始,到第四行第三列结束。
四、相对单位(如 vw、vh、% 等)
## vw 和 vh(视口单位)
vw(viewport width)表示视口宽度的 1%,vh(viewport height)表示视口高度的 1%。例如,如果一个元素的宽度设置为50vw,那么它的宽度将是视口宽度的 50%。
这些单位在创建全屏幕或基于视口比例的布局时非常有用。比如,你可以使用vh来设置一个元素的高度,使其始终占据屏幕高度的一定比例,这样在不同高度的屏幕上也能保持一致的视觉效果。
百分比(%)单位
百分比单位是相对于父元素的尺寸来计算的。例如,在一个容器中,如果一个子元素的宽度设置为50%,那么它的宽度将是父元素宽度的一半。
在响应式设计中,百分比单位可以用于创建灵活的布局。比如,在一个多列布局中,各列的宽度可以使用百分比来定义,这样当父容器的宽度发生变化时(如在不同屏幕尺寸下),列宽也会相应地调整。
em 和 rem:
em 是相对于元素的字体大小,rem 是相对于根元素(通常是 )的字体大小。使用它们可以创建基于字体大小的相对尺寸。
例如,font-size: 1.2em; 会使元素的字体大小为父元素字体大小的 1.2 倍;font-size: 1.2rem; 会使元素的字体大小为根元素字体大小的 1.2 倍。
相关文章:

css实现响应式详解
一、媒体查询(Media Queries) 基本概念 媒体查询是 CSS3 中用于根据不同的设备特性(如屏幕宽度、高度、设备类型等)应用不同样式规则的技术。它允许你为特定的媒体类型(如屏幕、打印、手持设备等)和条件&a…...

python-应用自动化操作方法集合
python-PC应用自动化操作 pywinauto:适合Windows系统的软件(GUI),通过遍历窗口(对话框)和窗口里的UI控件进行定位操作,也可以控制鼠标和键盘输入等 https://geekdaxue.co/read/pywinauto-doc-zh…...

mac地址是用来做什么的
MAC 地址(Media Access Control Address)是一个唯一的硬件地址,用于在网络中标识设备。每个网络接口卡(NIC)都有一个唯一的 MAC 地址。MAC 地址是数据链路层(OSI模型的第二层)使用的地址&#x…...

【Compose multiplatform教程】05 IOS环境编译
了解如何使现有的 Android 应用程序跨平台,以便它在 Android 和 iOS 上都能运行。您将能够在一个位置编写代码并针对 Android 和 iOS 进行测试一次。 本教程使用一个示例 Android 应用程序,其中包含用于输入用户名和密码的单个屏幕。凭证经过验证并保存…...

3D滤波器处理遥感tif图像
import cv2 import numpy as np from osgeo import gdal# 定义 Gabor 滤波器的参数 kSize 31 # 滤波器核的大小 g_sigma 3.0 # 高斯包络的标准差 g_theta np.pi / 4 # Gabor 函数的方向 g_lambda 10.0 # 正弦波的波长 g_gamma 0.5 # 空间纵横比 g_psi np.pi / 2 # …...

fisco bcosV3 Table智能合约开发
环境 : fisco bcos 3.11.0 webase-front : 3.1.1 console 3.8.0 table合约【3.2.0版本后的】 前言 最近在做毕设,数据的存储方式考虑使用fisco-bcos的table表存储,经过这几天的研究,发现对于fisco2和 fisco3版本的table表合约功能…...

leetcode刷题记录(四十八)——128. 最长连续序列
(一)问题描述 128. 最长连续序列 - 力扣(LeetCode)128. 最长连续序列 - 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复…...

HTML中如何保留字符串的空白符和换行符号的效果
有个字符串 储值门店{{thing3.DATA}}\n储值卡号{{character_string1.DATA}}\n储值金额{{amount4.DATA}}\n当前余额{{amount5.DATA}}\n储值时间{{time2.DATA}} , HTML中想要保留 \n的换行效果的有下面3种方法: 1、style 中 设置 white-space: pre-lin…...

Linux入门——环境基础开发(上)
Linux 软件包管理器 yum 什么是软件包 在Linux操作系统中,安装软件的方式通常较为复杂,其基本流程涉及下载程序源代码并通过编译得到可执行程序。然而,这种方法需要开发者具备一定的编程知识和环境配置能力,对于许多用户而言&am…...

c++类和对象---下
文章目录 一、类的静态成员 1.1.静态成员变量:所有对象共享的成员变量。 1.2.静态成员函数:可以访问静态成员变量,但不能访问非静态成员变量。 二、类的继承 2.1.继承:子类继承父类的成员变量和成员函数。 2.2.多态:基…...

组件中的Props
在项目开发中,在开发某些界面时,我们可以将一些代码封装成组件来简化代码。但是,如果某些情况下组件中的某些属性不是一成不变的(比如一个头像+姓名的组件,每次使用时都需要改变其图像src和姓名字符串),我们就可以使用Props。 我们要使用Props,我们需要先在组件中声明…...

并行服务、远程SSH无法下载conda,报错404
原下载代码无效,报错404 wget -c https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh 使用下面代码下载 wget --user-agent"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12…...

迅为RK3568开发板篇OpenHarmony配置HDF驱动控制LED-新增 topeet子系统-编写 bundle.json文件
bundle.json 文件内容如下所示: 下面是对各个字段的解释: 1. name: "ohos/demos" - 这是组件或项目的名称,这里表示它属于 OHOS(OpenHarmony OS)生态系统下的一个名为"demos"的组件。 2. descri…...

深度剖析RabbitMQ:从基础组件到管理页面详解
文章目录 一、简介二、Overview2.1 Overview->Totals2.2 Overview->Nodesbroker的属性2.3 Overview->Churn statistics2.4 Overview->Ports and contexts2.5 Overview->Export definitions2.6 Overview->Import definitions 三、Connections连接的属性 四、C…...

usb通过hdc连接鸿蒙next的常用指令
参考官方 注册报名https://www.hiascend.com/developer/activities/details/44de441ef599450596131c8cb52f7f8c/signup?channelCodeS1&recommended496144 hdc-调试命令-调测调优-系统 - 华为HarmonyOS开发者https://developer.huawei.com/consumer/cn/doc/harmonyos-guid…...

【落羽的落羽 C语言篇】文件操作
文章目录 一、文件的概念和分类1. 概念和分类2. 文件名3. 数据文件 三、文件操作1. 文件的打开和关闭1.1 流1.2 文件指针1.3 文件的打开和关闭 2. 文件的顺序读写3. 文件的随机读写4. 文件读取的判定5. 文件缓冲区 一、文件的概念和分类 1. 概念和分类 文件是用来保存数据的。…...

RNN之:LSTM 长短期记忆模型-结构-理论详解-及实战(Matlab向)
0.前言 递归!循环神经网络Recurrent Neural Network 循环神经网络(又称递归神经网络,Recurrent Neural Network,RNN)。是一种用于处理序列数据的神经网络结构,具有记忆功能,能够捕捉序列中的时…...

战略与规划方法——深入解析波士顿矩阵(BCG Matrix):分析产品组合的关键工具
深入解析波士顿矩阵(BCG Matrix):分析产品组合的关键工具 在现代商业管理中,合理地分析和管理产品组合对于企业的成功至关重要。波士顿矩阵(BCG Matrix),又称为成长份额矩阵,是一种由波士顿咨询集团(Boston Consulting Group)在20世纪70年代提出的战略工具,用于帮助…...

【记录52】el-table-column 添加fixed属性 滚动条无法滑动
问题: el-table-column 添加fixed属性 滚动条无法滑动 使用element UI组件,用到el-table的el-table-column的fixed属性时,当滚动条长度小于固定列时,滚动条无法通过鼠标去点击滑动操作 原因 fixed是用来固定列的属性,其…...

晨辉面试抽签和评分管理系统之十:如何搭建自己的数据库服务器,使用本软件的网络版
晨辉面试抽签和评分管理系统(下载地址:www.chenhuisoft.cn)是公务员招录面试、教师资格考试面试、企业招录面试等各类面试通用的考生编排、考生入场抽签、候考室倒计时管理、面试考官抽签、面试评分记录和成绩核算的面试全流程信息化管理软件。提供了考生…...

主链和Layer2之间资产转移
主链和Layer2之间资产转移 主链和Layer2之间资产转移是实现Layer2技术的关键环节,以下是资产转移的流程、流行解决方案及原理: 资产从主链转移到Layer2 用户在主链上发起一笔交易,将资产发送到一个特定的智能合约地址,这个合约是主链与Layer2之间的桥梁。智能合约会锁定用…...

麒麟操作系统服务架构保姆级教程(十)rewrite跳转
如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情 我们访问一个网页的时候会遇到一些奇形怪状的url地址,想优化一下,看着顺眼一点,或者打开一个短视频软件想摸鱼刷一会视频,在打开界面的时候无意间按到…...

MySQL表的创建实验
创建并使用数据库mydb6_product 。 mysql> create database mydb6_product; Query OK, 1 row affected (0.01 sec)mysql> use mydb6_product; Database changed 新建employees表。 对于gender,有默认值意味着不为空,在建表时可以选择不写not nul…...

【高可用自动化体系】自动化体系
架构设计的愿景就是高可用、高性能、高扩展、高效率。为了实现架构设计四高愿景,需要实现自动化系统目标: 标准化。 流程自助化。 可视化:可观测系统各项指标、包括全链路跟踪。 自动化:ci/cd 自动化部署。 精细化:…...

总结SpringBoot项目中读取resource目录下的文件多种方法
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…...

Java-KMP字符串匹配算法
给两个字符串s和t,如何很快的知道s是否包含t(即t是否是s的子串)。暴力的方法,我们依次以s每个位置为头,去匹配t。 public int find(String s, String t) {char[] ss s.toCharArray();char[] tt t.toCharArray();int …...

Vue3使用vue-count-to数字滚动模块报错解决方案
小伙伴们是不是遇到了vue3项目使用vue-count-to出现报错的问题 报错如下: TypeError: Cannot read properties of undefined (reading _c) 这个错误信息具体是说没读取到_c的属性 具体不清楚是什么原因,排查还得去看源码,所以我们来解决&a…...

【高阶数据结构】线段树加乘(维护序列)详细解释乘与加懒标记
文章目录 1.题目[AHOI2009] 维护序列 2.懒标记处理先加后乘的形式1. 先加后乘的操作 先乘后加的形式2. 先乘后加的操作**乘法操作****加法操作** 懒标记的下传 3.代码 1.题目 题目来源:https://www.luogu.com.cn/problem/P2023 [AHOI2009] 维护序列 题目背景 老师交给小可可…...

replaceState和vue的router.replace删除query参数的区别
使用history.replaceState /*** 替换当前的 history state和url* param {(searchParams:URLSearchParams)>any} cb*/ export const replaceUrlSearch (cb) > {// 获取当前 URLconst url new URL(window.location.href)// 获取 URL 的查询参数const searchParams new …...

[USACO14JAN] Ski Course Rating G
题目大意 滑雪场用一个 N ∗ M N*M N∗M 的整数矩阵表示海拔高度,每个整数表示一个范围在 1 0 9 10^9 109 的高度。每个格子都可以滑到相邻的格子,爱好者们将会在雪场种尽情享受。有些格子被指定为起点,每个起点都要进行评级以帮助爱好者选…...