学习响应式布局

news/2024/5/3 19:24:33/文章来源:https://blog.csdn.net/m0_56698268/article/details/127983000

针对性内容

  • 页面设计在不同设备的显示情况
  • 布局只会使用float+定位,而不会掌握flex
  • 不能很好的使用rem作为设计单位
  • 掌握响应式布局、弹性等常见布局

学习内容

  • css中媒体查询的作用和使用方法
  • flex弹性盒子的用法
  • rem的作用和使用方法

目录

针对性内容

学习内容

MediaQuery(媒体查询) 

 @media常用参数

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

媒体查询其他引入方式---2

flex弹性布局

flex-direction

flex-wrap

 flex-flow

剩余空间调整为间距 justify-content

 align-items

 align-content

 其他属性

flex-basis

 flex-grow

flex-shrink

 flex

特殊写法

rem的使用



MediaQuery(媒体查询) 

主要是为了不同尺寸的屏幕设定不同的css样式(移动端用的较多)

<!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>#div0{width: 100px;height: 200px;}/* 屏幕尺寸在200px到300px之间的样式 */@media screen and (min-device-width:200px) 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>
</head>
<body><div id="div0"></div>
</body>
</html>

 


 @media常用参数

属性名称作用
width、height 浏览器可视宽度、高度
device-width设备屏幕的宽度
device-height设备屏幕的高度
<style>#div0{width: 200px;height: 300px;}/* 浏览器尺寸在200px到300px之间的样式 */@media screen and (min-width:500px) and (max-width:700px){#div0{background-color: red;} /* 可以写其他的样式 */}@media screen and (min-width:701px){#div0{background-color: blue;}}
</style>

获取浏览器的宽度 min-width max-width

小案例:让三个块随着屏幕变化从一行放3个变成一行2个和一行1个

<!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>#div0{width: 100%;height: 500px;}#div0 div {float: left;height: 200px;}/* 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 (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>
</head>  
<body><div id="div0"><div></div><div></div><div></div></div>
</body>
</html>

 

 

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

写在style标签中,有条件的执行某个内部样式表

<!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>#div0{width: 100%;height: 500px;}#div0 div {float: left;height: 200px;}#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.3%;}</style>
</head>  
<body><div id="div0"><div></div><div></div><div></div></div>
</body>
</html>

媒体查询其他引入方式---2

写在link标签中,有条件的引入外部样式表

<link href="css/test.css" rel="stylesheet"><link href="css/css1.css" rel="stylesheet"media="(min-device-width:300px) and (max-device-width:399px)">

 

flex弹性布局

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

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

更加符合响应式设计的特点

主轴和交叉轴并不是固定的,而是需要看里面元素的排列方式。如上图所示,子元素是水平排列的,所以水平方向就是主轴,竖直方向就是交叉轴。 如果子元素是竖直排列的,则竖直方向就是主轴。

子元素不说 高和宽, 而是说 占主轴的多少,占交叉轴的多少

flex-direction

作用: 子元素在父元素盒子中的排列方式

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

 

<!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>#div0{width: 500px;background-color: yellowgreen;}#div0 div {width: 100px;height: 100px;background-color: red;}</style>
</head>  
<body><div id="div0"><div>1</div><div>2</div><div>3</div><div>4</div></div>
</body>
</html>

 (左): display: flex; flex-direction: column; (右) flex-direction: column-reverse;

 

 (上)flex-direction: row (下)flex-direction: row-reverse;

上述例子是父元素的宽度足够大(500px),如果父元素的宽度不够,只有300p。则会对子元素的宽度进行压缩,使得四个子元素都能放在父元素中(每个子元素的宽度都变为了75px) 

flex-wrap

作用: 子元素在父元素盒子中是否换行(列) 

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

 

<style>#div0{width: 300px;background-color: yellowgreen;display: flex;flex-direction: row;flex-wrap: wrap;}#div0 div {width: 100px;height: 100px;background-color: red;}</style>

在上面的例子中,如果父元素的宽度只有300px,不够4个子元素一行放置,他会压缩子元素的宽。

但如果设置了换行,则子元素的宽还是100px,多余的会进行换行

 wrap                                                     wrap-reverse

 flex-flow

作用: flex-direction和flex-wrap属性的简写形式

语法:
flex-flow: <flex-direction> || <flex-wrap>如
display: flex;
flex-flow: row wrap;
/* flex-direction: row;
flex-wrap: wrap-reverse; */

剩余空间调整为间距 justify-content

作用:用来在存在剩余空间时,设置为间距的方式

属性值作用
flex-start默认值。从左到右,挨着行的开头
flex-end从右到左,挨着行的结尾
center居中显示
space-between平均分布在该行上,两边不留间隔空间
space-around平均分布在该行上,两边留有一半的间隔空间
<style>#div0{width: 350px;background-color: yellowgreen;display: flex;flex-flow: row wrap;/* flex-direction: row;flex-wrap: wrap-reverse; */justify-content: center;/*justify-content: space-between;*/}#div0 div {width: 100px;height: 100px;background-color: red;}</style>

 

 

 align-items

作用:设置每个flex元素在交叉轴上的默认对齐方式

属性值作用
flex-start位于容器的开头
flex-end位于容器的结尾
center居中显示
   <style>#div0{width: 400px;height: 400px;background-color: yellowgreen;display: flex;flex-flow: column wrap;justify-content: space-between;align-items: flex-end;}#div0 div {width: 100px;height: 100px;background-color: red;}</style>

 

 

 <style>#div0{width: 400px;height: 400px;background-color: yellowgreen;display: flex;flex-flow: row wrap;justify-content: space-between;align-items: flex-end;}#div0 div {width: 100px;height: 100px;background-color: red;}</style>

 align-content

作用:设置每个flex元素在交叉轴上的默认对齐方式

与align-items的区别就是 align-items会把每一行都单独处理,而align-content把多行当成一个整体处理

属性值作用
flex-start位于容器的开头
flex-end位于容器的结尾
center位于容器的中心
space-between之间留有空白
space-around两端都留有空白
   <style>#div0{width: 380px;height: 400px;background-color: yellowgreen;display: flex;flex-flow: row wrap;justify-content: space-between;align-items: center;}#div0 div {width: 100px;height: 100px;background-color: red;}</style>

 

 <style>#div0{width: 380px;height: 400px;background-color: yellowgreen;display: flex;flex-flow: row wrap;justify-content: space-between;align-content: center;}#div0 div {width: 100px;height: 100px;background-color: red;}</style>

 其他属性

属性值作用
flex-basis设置弹性盒伸缩基准值
flex-grow设置弹性盒子的扩展比率
flex-shrink设置弹性盒子的缩小比率
flexflex-grow、flex-shrink、flex-basis的缩写

flex-basis

<!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>#div0{display: flex;width: 400px;height: 500px;background-color: violet;}#div0 div {width: 200px;height: 200px;background-color: red;}</style>
</head>  
<body><div id="div0"><div></div><div></div></div>
</body>
</html>

 先搞一个基础的,子盒子宽为200px,父盒子宽为400px,所以图中两个子盒子贴在一起

#div0 div {width: 200px;height: 200px;background-color: red;flex-basis: 50px;/* flex-basis: 30%; */
}

给子盒子加上基准以后,原来的宽度200px就不生效了,变成了两个都是50px的宽。也可以设置百分比,30%就是400px*0.3 = 120px 。 也可以用rem单位 

也可以分别用于不同的元素

  <style>#div0{display: flex;width: 400px;height: 500px;background-color: violet;}#div0 div {width: 200px;height: 200px;background-color: red;flex-basis: 50px;/* flex-basis: 30%; */}#div0 div:nth-child(1){flex-basis: 50px;}#div0 div:nth-child(2){flex-basis: 100px;}</style>

 

 flex-grow

主要是用于子对象不足以填充满父对象的宽度。 就比如上面的例子中,两个子对象都是50px,宽度还剩下300px

    <style>#div0{display: flex;width: 400px;height: 500px;background-color: violet;}#div0 div {width: 200px;height: 200px;background-color: red;flex-basis: 50px;}/* flex-grow的具体算法整体父盒子宽度为400px, 第一个div 50px,第二个div 100px,还剩下250px的空闲区由于两个子div的flex-grow都是1,所以250分成2份,各1份    250/2=125px*/#div0 div:nth-child(1){flex-basis: 50px;flex-grow: 1;}#div0 div:nth-child(2){flex-basis: 100px;flex-grow: 1;}</style>

如果第一个子div flex-grow:1; 第二个子div flex-grow:3; 则一共把250px的剩余分4份,第一个占1份 

flex-shrink

一般用于子元素宽度较高,放不下,这时候考虑缩小比率

  <style>#div0{display: flex;width: 400px;height: 500px;background-color: violet;}#div0 div {width: 200px;height: 200px;background-color: red;flex-basis: 50px;}#div0 div:nth-child(1){flex-basis: 300px;}#div0 div:nth-child(2){flex-basis: 300px;}</style>

 设置两个子盒子都是300px,让他们两个的宽度和 超过400。发现他们自动缩小成200 200了

 

 <style>#div0{display: flex;width: 400px;height: 500px;background-color: violet;}#div0 div {width: 200px;height: 200px;background-color: red;flex-basis: 50px;}#div0 div:nth-child(1){flex-basis: 300px;flex-grow: 1;/* 0代表不允许缩小 */flex-shrink: 0;}#div0 div:nth-child(2){flex-basis: 300px;flex-grow: 1;flex-shrink: 0;}</style>

设置flex-shrink:0 让他们不能缩小,这时候两个子盒子都是300px,且超出了父元素的宽

 <style>#div0{display: flex;width: 400px;height: 500px;background-color: violet;}#div0 div {width: 200px;height: 200px;background-color: red;flex-basis: 50px;}/* flex-shrink算法400 - 600 = -200200 / (1+3) = 50所以第一个div是 300 - 50 = 250   第二个div是 300 - 150 = 150*/#div0 div:nth-child(1){flex-basis: 300px;flex-grow: 1;/* 0代表不允许缩小 */flex-shrink: 1;}#div0 div:nth-child(2){flex-basis: 300px;flex-grow: 1;flex-shrink: 3;}</style>

 

 flex

当写缩写的时候,一定要注意顺序 先 flex-grow扩大比率、再 flex-shrink缩小比率,最后 flex-basis基准值

  <style>#div0{display: flex;width: 400px;height: 500px;background-color: violet;}#div0 div {width: 200px;height: 200px;background-color: red;flex-basis: 50px;}#div0 div:nth-child(1){/* flex-basis: 300px;flex-grow: 1;flex-shrink: 1; */flex: 1 1 300px;}#div0 div:nth-child(2){/* flex-basis: 300px;flex-grow: 4;flex-shrink: 3; */flex: 4 3 300px;}</style>

特殊写法

属性作用
flex:auto;flex: 1 1 auto;
flex: none;flex: 0 0 auto
flex: 0%; flex: 100px;flex: 1 1 0% flex: 1 1 100px
flex: 1;flex: 1 1 0%;

rem的使用

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

    <style>html{/* 根字体的大小,如果要搭配rem使用,通常会设置为10px 这样方便计算 */font-size: 10px;}div{font-size: 1rem;}</style>

这样的话,div的字体大小就是1rem也就是10px; 这样的好处就是如果随着屏幕的变化,需要改变字体大小的话,只需要改根字体即可

与em的区别有哪些?

rem是相对于根字体而言的, 而 em是相对于父一级的对象而言的。所以em可能出现集联等情况,计算会繁琐。

 

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

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

相关文章

[iOS]App Store Connect添加银行卡时的CNAPS代码查询

App Store Connect 协议、税务和银行业务中&#xff0c;给付费APP类型添加银行卡需要填写CNAPS代码CNAPS代码&#xff0c;其实就是联行号。 联行号又称大额行号、银联号、银行行号或CNAPS号。 银行联行号查询

Java+JSP+MySQL基于SSM的会议交接平台的设计与实现-计算机毕业设计

项目介绍 随着社会竞争压力的不断加强&#xff0c;企事业单位内部的会议都在不断的增加&#xff0c;有效的会议可以提高企事业内部的沟通&#xff0c;更好的做出符合战略目标的决策&#xff0c;但是传统的会议交接有一定的问题存在&#xff0c;首先就是必须面对面进行传达&…

matlab图像的增强

1.灰度变换增强 &#xff08;1&#xff09;图像直方图 &#xff08;2&#xff09;图像直方图的均衡化 2.频域滤波增强 &#xff08;1&#xff09;低通滤波器 &#xff08;2&#xff09;高通滤波器 &#xff08;3&#xff09;同态滤波器 3.彩色增强 &#xff08;1&#xff09;真…

.vcxproj.filters 误删后如何重建

背景&#xff1a; 今天碰到这样一种情况&#xff0c;我在删除这个VS文件夹下的.user文件时&#xff0c;不小心把.vcxproj.filters也删除了。当然为什么删.user呢&#xff0c;因为换电脑了。 删除之后&#xff0c;我发现&#xff1a;我的解决方案目录变成这样了&#xff1a; 对…

[附源码]Python计算机毕业设计SSM考试排考系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

深入理解ThreadLocal源码

1. 预备知识&#xff1a;强软弱虚引用 在Java中有四种引用的类型&#xff1a;强引用、软引用、弱引用、虚引用。 设计这四种引用的目的是可以用程序员通过代码的方式来决定对象的生命周期&#xff0c;方便GC。 强引用 强引用是程序代码中最广泛使用的引用&#xff0c;如下&a…

CSDNtop1全栈接口测试教程 jmeter接口测试,接口自动化测试【2】

延时等待&#xff08;全局性&#xff09; api 测试⽤例执⾏速度⾮常快&#xff0c;某些时候因为业务的特性想让它延迟⼏秒执⾏&#xff0c;那么这个时候就使⽤延时等待。 参数化 可以理解为&#xff1a;⼀个测试点需要多次操作&#xff0c;并且每次操作数据都是不⼀样但测试步…

最好的天线基础知识!超实用 随时查询

天线作为无线电的发射和接收设备是影响信号强度和质量的重要设备,其在移动通信领域的重要性非常关键。通过对天线选型,天线安装,天线调整从而保障基站覆盖区域的信号强度与质量。对其的 掌握程度是网规与网优工程师的技能基本要求之一。下文重点说明天线要掌握哪些方面及其原理…

【软件安装】Linux中RabbitMQ的安装

① 本篇是基于Linux操作系统中的安装&#xff0c;故先准备一个干净的Linux操作系统。本文中所有的操作基于CentOS8进行安装演示&#xff1b; ② 接下来的演示文本中&#xff0c;红色字体为操作步骤&#xff0c;黑色字体为解释说明&#xff1b; ③ 确保Linux系统中已经安装好必…

【python】 int、float、double与16进制字符串的互相转换

import structdef intToHex(num): # int转16进制return hex(num)[2:].upper()def hexToInt(hexString): # 16进制转intreturn int(hexString, 16)def floatToHex(floatValue): # float转16进制return struct.pack(>f, floatValue).hex().upper()def hexToFloat(hexString…

Lactoferrin-PEG-MTX/Paclitaxel 乳铁蛋白-聚乙二醇-甲氨蝶呤/紫杉醇

产品名称&#xff1a;乳铁蛋白-聚乙二醇-甲氨蝶呤 英文名称&#xff1a;Lactoferrin-PEG-MTX 纯度&#xff1a;95% 存储条件&#xff1a;-20C&#xff0c;避光&#xff0c;避湿 外观:固体或粘性液体&#xff0c;取决于分子量 PEG分子量可选&#xff1a;350、550、750、1k、2k、…

全球领先飞瞳引擎™云服务全球两千+企业用户,集装箱识别集装箱箱况残损检测,正常箱号识别率99.98%以上,箱信息识别及铅封识别免费

全球领先飞瞳引擎™AI集装箱识别检测云服务全球两千企业用户&#xff0c;集装箱识别集装箱箱况残损检测&#xff0c;正常箱号识别率99.98%以上&#xff0c;箱信息识别及铅封识别免费。CIMCAI中集飞瞳是全球应用落地最广&#xff0c;规模最大&#xff0c;最先进的的港航人工智能…

操作系统学习笔记(Ⅳ):文件

目录 1 文件管理 1.1 初识文件管理 1.文件属性 2.文件数据组织 3.向上功能 1.2 文件逻辑结构 1.无结构文件 2.有结构文件 3.顺序文件 4.索引文件 5.索引顺序文件 1.3 文件目录 1.文件控制块 2.目录结构 3.索引结点 1.4 文件物理结构 1.连续分配 2.链接分配 …

自定义表单、自定义流程、自定义页面、自定义报表应用开发平台

真正的大师,永远都怀着一颗学徒的心&#xff01; 一、项目简介 Java开发框架&#xff0c;自定义表单、自定义页面、自定义流程、自定义报表应用开发平台 二、实现功能 支持系统文件在线管理 支持代码在线编辑 支持URL 路由 支持黑白名单 支持定时任务 支持在线监控 支持…

Charles抓取接口报文并修改各种参数信息调试

1.首先介绍Charles面板 图上顶部工具栏常用介绍&#xff1a; 1是清除按钮&#xff1a;点击后将清空左侧抓取的接口列表&#xff0c;如果接口太多&#xff0c;可以点击该按钮清空列表&#xff0c;重新发起请求&#xff0c;一目了然&#xff1b; 2.是停止按钮&#xff1a;点击该按…

Windows OpenGL ES 图像色调

目录 一.OpenGL ES 图像色调 1.原始图片2.效果演示 二.OpenGL ES 图像色调源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL E…

能迪科技智能控制系统对中央空调进行精准、单独调控医院案例

案例背景​ 梅州市妇女儿童医院新院区&#xff08;以下简称“新院区”&#xff09;是省、市重点项目工程&#xff0c;建设地点位于江南新城客都大道北侧&#xff0c;一期项目总投资4.8亿元&#xff0c;占地面积50亩&#xff0c;总建筑面积87000平方米&#xff0c;按照三级妇幼保…

mybatis实战:二、mybatis xml 方式的基本用法

注释都在代码里&#xff0c;最好复制了再看&#xff01; 1.创建表 CREATE TABLE sys_user( id BIGINT NOT NULL AUTO_INCREMENT COMMENT 用户 ID, user_name VARCHAR(50) COMMENT 用户名, user_password VARCHAR(50) COMMENT 密码, user_email VARCHAR(50) COMMENT 邮箱, user…

06【SpringMVC的Restful支持】

文章目录六、SpringMVC的Restful支持6.1 RESTFUL示例&#xff1a;6.2 基于restful风格的url6.3 基于Rest风格的方法6.4 配置HiddenHttpMethodFilter6.5 Restful相关注解六、SpringMVC的Restful支持 REST&#xff08;英文&#xff1a;Representational State Transfer&#xff…

LabVIEW开发LabVIEW类

LabVIEW开发LabVIEW类 从概念上来说&#xff0c;LabVIEW面向对象编程和其它面向对象编程语言相似。但由于LabVIEW是数据流图形化编程环境&#xff0c;LabVIEW对类数据的操作和交互&#xff0c;以及LabVIEW类代码的调试方法和其它语言有所不同。 LabVIEW中的对象由值来传递&a…