Web前端HTML5+CSS3知识点(11)css入门--弹性盒

1. flex(弹性盒、伸缩盒)


简介
弹性盒是css中的又一种布局手段,它主要用来代替浮动来完成页面的布局。
flex可以使元素具有弹性,可以让元素根据页面大小的改变而改变。
弹性容器(想象为弹簧,可伸可谈) 使用了flex可以不用float 解决了很多问题。
要设置弹性盒,必须先将一个元素设置为弹性容器。
我们通过 display来设置弹性容器
display:flex:设置为块级的弹性容器
display:inline-flex:设置为行内的弹性容器(用的少)
弹性元素
弹性容器的子元素是弹性元素(弹性项)
一个元素可以同时是弹性容器和弹性元素。

注意:直接子元素。如ul下面的li


fleax的属性
fleax-direction:指定弹性容器中元素的排列方式。 可选值有:row(默认值、表示弹性元素在容器中从左向右水平排列,相当于float left)、row-reverse(表示弹性元素在容器中从右向左水平排列)、column(弹性元素纵向排列,自上向下)、column-reverse(自下向上纵向排列)。
fleax-grow:  指定弹性元素的伸展系数, 即指定当父元素容器右多余的空间时,子元素如何伸展。父元素的剩余空间,会按照比例进行分配。作用在弹性项,相对于权重。如:

li:nth-child(1){
    flex-grow:1,
}
li:nth-child(2){
    flex-grow:2,
}
li:nth-child(3){
    flex-grow:3,
}


fleax-shrink:指定弹性元素的收缩系数。当父元素中的空间不足以容纳所有的子元素时,如何对子元素进行收缩。同上。
主轴和侧轴
主轴:弹性元素的排列方向
侧轴:与主轴垂直的方向称为侧轴

2. 弹性容器上的样式


flex-wrap
设置当弹性容器空间不足时,弹性元素在容器中是否会自动换行
可选值:nowrap(默认值,元素不会自动换行)、wrap(元素沿着侧轴自动换行)、wrap-reverse(沿着侧轴反方向换行)
flex-flow
这是flex-wrap和flex-direction的简写属性,可以同时设置两个值
        例:flex-flow: row wrap;
justify-content(justify主轴)
如何分配主轴上的空白空间(主轴上的弹性元素如何排列的属性)
可选值:flex-strat(默认值、从主轴起始边开始排列)、flex-end(从主轴终边开始排列)、center(从中间向两侧排列,用的多)、space-around(将空白分配到元素两侧)、space-evenly (空白分布到元素的单侧)、space-between(将空白均匀分配到元素的中间)
align-items(align侧轴)
元素在侧轴上如何对齐,设置的是元素间的关系
可选值:stretch(默认值、将相同一行的所有元素的值设置成相同的值)、flex-start(元素不会拉伸、会沿着侧轴起边对齐)、flex-end(沿着侧轴的终边对齐)、center(居中对齐)、baseline(基线对齐)
align-content(align侧轴)
如何分配侧轴上的空白空间(侧轴上的弹性元素如何排列的属性)
可选值:stretch(拉伸元素、flex-strat(从侧轴起始边开始排列)、flex-end(从侧轴终边开始排列)、center(从中间向两侧排列)、space-around(将空白分配到元素两侧)、space-evenly (空白分布到元素的单侧)、space-between(将空白均匀分配到元素的中间)
align-self
用来覆盖当前弹性元素上的align-items

3. 弹性元素上的样式


flex-shrink
弹性元素的缩减系数
弹性元素的缩减系数计算方式比较复杂,缩减多少是根据缩减系数和元素大小来计算的。
flex-basis
指定的是元素在主轴上的基础长度,如果主轴是横向的,则该值指定的是元素的宽度,如果主轴是纵向的,则该值指定的是元素的高度。默认值是auto,表示参考元素自身的宽高。如果传递了一个具体的数值,则以该值为准,覆盖宽高。
flex-grow
弹性元素的伸展系数
flex
flex可以设置所有弹性元素的样式,顺序是 flex-grow flex-shrink flex-basis。
flex的可选值: initial(默认值、表示flex:0、1、auto)、auto(表示flex:1、1、auto)、none(表示0、0、auto,此时表示元素没有弹性)。
order
决定弹性元素的排列顺序 (asc排序)

4  像素


像素的概念
屏幕是由一个一个发光的小点构成,这一个个的小点就是像素
分辨率:1920 X 1080 说的就是屏幕中小点的数量
在前端开发中像素要分成两种情况讨论:css像素和 物理像素
物理像素:上述所说的小点点,也就是屏幕的分辨率,就是物理像素
CSS像素:编写网页时,我们所用的像素都是CSS像素
浏览器在显示网页时,需要将CSS像素转换为物理像素然后再呈现
一个CSS像素最终由几个物理像素显示,由浏览器决定:默认情况下,在PC端,一个CSS像素 = 一个物理像素

视口(viewport)
视口就是屏幕中用来显示网页的区域
可以通过查看视口的大小,来观察CSS像素和物理像素的比值
默认情况下:
视口的宽度为 1920px(css像素) 和 1920px(物理像素)

此时,CSS像素和物理像素的比例是 1:1
放大两倍的情况下:
视口宽度为 960px(CSS像素) 1920px(物理像素)

此时,css像素和物理像素的比例是1:2(此时1个CSS像素占据了四个物理像素的大小)
我们可以通过改变视口大小,来改变CSS像素和物理像素的比值。

注意:截图工具都是物理像素。

移动端


在不同的屏幕,单位像素的大小是不同的,像素越小屏幕会越清晰,智能手机的像素点,远远小于计算机的像素点。
默认情况下,移动端的网页都会将视口设置为980px(css像素)以确保pc端网页可以在移动端正常访问,但是如果网页的宽度超过了980px,移动端的浏览器将会自动对网页缩放以完整显示网页。
所以,基本大部分的PC端网站都可以在移动端中正常浏览,但是往往都不会有一个好的体验(因为此时的CSS像素会远大于物理像素)
为了解决这个问题,大部分网站都会专门为移动端设计网页。

完美视口
移动端默认的视口大小是980px(css像素)、默认情况下,移动端的像素比就是980/移动端宽度(750) 如果我们直接在网页中编写移动端代码,这样在980像素的视口下,像素比就不太合理,会导致网页中的内容非常非常的小。
编写移动端页面时,必须要确保一个比较合理的像素比,而每一款移动设备设计的时候,都会提供一个最佳的像素比,一般,我们只要将像素比设置为该值即可得到一个最佳效果。
将像素比设置为最佳像素比的视口大小,我们称其为完美视口,可以通过meta标签来设置我们的完美视口。
可以通过来设置我们移动端的完美视口。

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

vw单位
不同的设备下,完美视口的大小是不一样的
由于不同设备视口和像素比不同,所以同样的375个css像素在不同的设备下意义是不一样的。比如在iphone6中 375像素就是全屏,而到了视口大于375像素的设备中,就会缺一块空间。
所以在移动端开发时,我们一般不用px来进行布局了 。
vw 表示的是视口的宽度(viewport width) 100vw =1个视口的宽度 1w=1%个视口的宽度
vw这个单位永远相对于视口宽度进行计算。
-我们的设计图一般的宽度为375px的倍数,比如750px 1125px。
-如果要在手机端创建一个48px ✖ 35px 小大的元素 ,可以先计算该设计图的宽度下 1px对应的vw 。 比如 一个750px宽度的设计图,1px=0.133333vw 。

vw进行适配
网页中的字体大小最小是12px,不能设置一个比12像素还小的字体。如果我们设置了一个小于12px的字体,则字体自动设置为12。

 5. 响应式布局


概念
网页可以根据不同的设备或者窗口大小呈现出不同的布局。
通过使用响应式布局,可以使一个网页适用于所有设备。
响应布局的关键,就是媒体查询。通过媒体查询,我们可以为不同的设备或设备的不同状态来分别设置样式。
媒体查询
语法:@media 媒体的类型{} ,可以使用逗号连接多个媒体类型,此时它们之间是’或’的关系。
媒体的类型:all(表示所有设备)、print(打印设备)、screen(带屏幕的设备)、speech(屏幕阅读器)
可以在媒体类型前加only,来表示只有。only的使用,主要是为了兼容一些老版本的浏览器。
媒体特性
        max-width (视口的最大宽度,当视口小于或等于指定宽度时就会生效, min-width(视口的最小宽度,当视口大于指定宽度时就会生效)
        样式切换的分界点,我们称其为断点,也就是网页会在这个断点时发生变化。
        一般常用的断点有: 小于768 超小屏幕 max-width:768px
大于768 小屏幕 min-width:768px
大于992 中型屏幕 min-width:992px
大于1200 大型屏幕 min-width:1200px
        如果想设置一个范围,可以用and连接,此时表示’且‘的关系
例:
@media only screen and (min-width: 500px) and (max-width:700px){
body{
background-color: #bfa;
}

相关推荐

Lambda表达式

codest的专栏 224

inux下C编程(10)---字符及字符串处理

字符编码ASCII: 7位 128个元素。大小写相差20hunicode: 2个 4个或更多的存储空间。utf-8: 每个字符2个字节字符处理库通过转换函数,可以实现和其他类型的转换。字符串转换函数字符串处理函数字符串比较函数字符串查找函数字符串内存函数字符串其他函数...

codest的专栏 233

linux下C编程(09)---函数

函数的一般形式:类型说明可以是任何数据类型,包括vOid.返回语句。return两个作用:结束当前函数,调用者获取程序的控制权。将计算结果传递给调用者。程序结束两种情况:代码结束return作用域规则范围划分局部变量作用函数体内。全局变量。作用域是整个源程序文件,文件中的所有函数和程序块都可以引用。生命周期划分动态存储变量。默认或者AUTO。静态存储变量sttic修饰符函数退出后,变量被保留在内存,再次执行同一函数会得到与上次退出时候相同的数值。函数的.

codest的专栏 231

linux下C编程(08)---数组和指针

一维数组一般形式数据类型 + 名称 +【长度】初始化 3种形式根据下标声明时候加入等号声明时候不指定长度,根据初始化的个数来确定。字符串使用的一维数组字符串数据和一般的字符数据区别是,前者还包含了字符串结束符:“\0”.C没有专门的字符串类型,但是允许使用字符串常量和字符串数组,并提供字符串操作函数。二维数组格式声明:数据类型 + 名称 +【长度1】【长度2】数组长度是 长度1* 长度2二维字符串数组可以看做多个一维字符串数组,第一组是字符串的个数多维数组

codest的专栏 287

linux下C编程(07)---程序控制结构

数据的输入和输出scanf 输入没有专门的语句,通过标准的库函数的调用实现,stdio.hscanf: 键盘上获取,按照指定的输入格式赋给相应的输入项目输入格式格式字符说明d输入一个十进制o输入一个八进制x输入一个16进制f输入一个小数点形式的浮点数e输入一个指数形式的浮点数c输入一个字符s输入一个字符串屏蔽某个数据时候,可以使用修饰符*空格或道和可以表示多个数之间的间隔。printf()输出修饰符是可

codest的专栏 211

linux下C编程(06)---C语言的数据类型

六、C语言的数据类型基本数据类型基本类型字长char 字符型1个字节int 整型2字节 AMD64 下 是4字节float整型4字节double整型8字节void 整型0字节聚合类型数组指针结构体共同体修饰符signedunsignedlongshort修改字符和整数两种基本类型。long还可以用于double.有符号将1位用于存储符号。常量#define定义的常量字符、字符串、数值常量。常量变量枚

codest的专栏 227

2021-09-12

什么是插槽? 插槽(Slot)是Vue提出来的一个概念,正如名字一样,插槽用于决定将所携带的内容,插入到指定的某个位置,从而使模板分块,具有模块化的特质和更大的重用性。插槽显不显示、怎样显示是由父组件来控制的,而插槽在哪里显示就由子组件来进行控制 slot官方介绍 Props: name - string,用于命名插槽。 U...

codest的专栏 216

Vue 快速上手

1、前端核心分析2、前端发展史3、第一个Vue程序4、Vue基本语法5、Vue绑定事件6、Vue双向绑定7、Vue组件讲解8、Axios异步通信9、计算属性10、插槽slot11、自定义事件内容分发12、第一个vue-cli程序13、webpack学习使用14、vue-router路由15、vue+elementUl16、路由嵌套17、参数传递及重定向18、404和路由钩子...

codest的专栏 256

若依Vue(若依前后端分离版)--01

介绍RuoYi-Vue 是一个 Java EE 企业级快速开发平台,基于经典技术组合(Spring Boot、Spring Security、MyBatis、Jwt、Vue),内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、代码生成等。在线定时任务配置;支持集群,支持多数据源,支持分布式事务。快速了解环境部署部署Java部署Vue项目介绍bbbub{},“aaa”====》debug讲解模拟登陆若依 获取验证码,得到UUID ..

codest的专栏 3996

int与Integer区别及应用场景

一、int与Integer区别:1、int属于基本数据类型,Integer属于int对应的包装类。2、既然是类,就需要实例化才可以使用,而基本数据变量不需要。3、Integer的默认值是null,而int的默认值是0二、int与Integer的应用场景1、为什么java会保留基本数据类型?对于java来说,常说“一切皆对象”,那为啥java还有基本数据类型,对此需要明白,基本数据类型和对象类型的区别1、基本数据类型基本数据类型存在的是:值,基本数据类型在内存中存放的位置是栈。(声明在方法中的

codest的专栏 1548

Java中的List、Set和Map的各自特征及使用场景

Java中的集合分为单列集合Collection和双列集合Map。 先通过这张图看看Collection和Map的各自体系。 首先看单列集合Collection中的List及Set的各自特征。 List(有序,可重复)             ArrayList   &nb...

codest的专栏 551

IDEA 中 Project 和 Module 详解与实战

IDEA 相关文章 标题文章连接大厂通用最全IDEA使用手册https://blog.youkuaiyun.com/chenlixiao007/article/details/106952976阿里巴巴Java开发编码规约与IDEA集成https://blog.youkuaiyun.com/chenlix...

codest的专栏 4777

阿里巴巴Java开发编码规约与IDEA集成

文章目录 IDEA 相关文章Ⅰ 阿里巴巴代码规约插件安装Ⅱ 插件使用Ⅲ 开发规范手册下载 IDEA 相关文章 标题文章连接大厂通用最全IDEA使用手册https://blog.youkuaiyun.com/chenlixiao007/article/details/1069529...

codest的专栏 254

大厂通用最全IDEA使用手册

IDEA 相关文章 标题文章连接阿里巴巴Java开发编码规约与IDEA集成https://blog.youkuaiyun.com/chenlixiao007/article/details/108287646IDEA 创建不同类型 Project 和 Module 详解https://blog.youkuaiyun.com/chenlixiao007/ar...

codest的专栏 543

idea工程和模块的区别

1、工程是独立的,具有自己的内部资源(jar包等)。 模块不是独立的,属于某一个工程,并可以使用该工程的所有资源。2、同一个工程中的模块对于该工程是继承关系,子模块之间初始状态下没有关系。 父工程和子模块之间不用单独手动建立关系,子模块之间需要手动建立关系,各模块之间的关系称为依赖。...

codest的专栏 901

五、SpringBoot(5)-SpringBoot与整合其他技术

SpringBoot整合Mybatis1.1 添加Mybatis的起步依赖<!--mybatis起步依赖--><dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version>&

codest的专栏 220

四、SpringBoot(4)-SpringBoot的配置文件

SpringBoot配置文件类型1 SpringBoot配置文件类型和作用SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者application.yml(application.yaml)进行配置。SpringBoot默认会从Resources目录下加载application.properties或application.yml(application.yaml)文件其中,applic

codest的专栏 229

三、SpringBoot(3)-原理分析

起步依赖原理分析1. 分析spring-boot-starter-parent按住Ctrl点击pom.xml中的spring-boot-starter-parent,跳转到了spring-boot-starter-parent的pom.xml,xml配置如下(只摘抄了部分重点配置):<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-de

codest的专栏 219

二、SpringBoot(2)--快速入门

代码实现 创建Maven工程 使用idea工具创建一个maven工程,该工程为普通的java工程即可。 添加SpringBoot的起步依赖 编写SpringBoot引导类 编写Controller 测试 快速入门解析 SpringBoot代码解析 SpringBoot工程热部署 使用idea快速创建SpringBoot项目 ...

codest的专栏 222

一、SpringBoot(1)-简介

1.原有Spring优缺点分析1.1 Spring的优点分析Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能。1.2 Spring的缺点分析虽然Spring的组件代码是轻量级的...

codest的专栏 232

Vue的组件为什么要export default

Vue 的模块机制  Vue 是通过 webpack 实现的模块化,因此可以使用 import 来引入模块,例如:  此外,你还可以在 bulid/webpack.base.conf.js 文件中修改相关配置:

codest的专栏 478

vue初学习笔记--01

(该文章仅用于学习记录,如有侵权,请联系删除)

codest的专栏 429

viewport、布局视口、视觉视口、理想视口 深入理解

在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了viewport的概念以及弄清楚了跟viewport有关的meta标签的使用,才能更好地让我们的网页适配或响应各种不同分辨率的移动设备。通俗的讲,移动设备上的viewport就是设备的屏幕上能用来显示我们的网页的那一块区域,在具体一点,就是浏览器上(也可能是一个app中的webview)用来显示网页的那部分区域,但viewport又不局限于浏览器可视区域的大小,它可能比浏览器的可视区域要大,也可能比浏览器的可视

codest的专栏 769

tp( thinkphp)数据更新和查询

一、数据更新1、使用find方法获取数据,然后通过save方法保存修改,返回布尔值$user = UserModel::find(11); $user->username = '李黑'; $user->save()2、通过where方法解和find方法的查询条件获取的数据进行修改$user=Students::where('id',1)->find();$user->uname ='admin';$user->email ='66461682@qq.

codest的专栏 1092

javascript基础(12)--定时器

333

codest的专栏 116

javascript基础(11)--BOM介绍

BOM:浏览器对象模型,BOM可以使我们通过JS来操作浏览器,在BOM中为我们提供了一组对象,用来完成对浏览器的操作.BOM对象:Window代表的是整个浏览器的窗口,同时window也是网页中的全局对象Navigator代表的当前浏览器的信息,通过该对象可以来识别不同的浏览器代表的当前浏览器的信息,通过该对象可以来识别不同的浏览器由于历史原因,Navigator对象中的大部分属性都已经不能帮助我们识别浏览器了一般我们只会使用userAgent来判断浏览器的信息,u.

codest的专栏 116

javascript基础(11)--事件对象

事件对象当事件的响应函数被触发时,浏览器每次都会将一个事件对象作为实参传递进响应函数,在事件对象中封装了当前事件相关的一切信息,比如:鼠标的坐标键盘哪个按键被按下鼠标滚轮滚动的方向。window.onload = function(){ /* * 当鼠标在areaDiv中移动时,在showMsg中来显示鼠标的坐标 */ //获取两个div var areaDiv = document.getElementById("areaDiv"); var showMsg ...

codest的专栏 221

javascript基础(10)--DOM和事件

DOM:文档对象模型文档:文档表示的就是整个的HTML网页文档 对象:对象表示将网页中的每一个部分都转换为了一个对象,将页面每个元素转换为对象 模型:倒树,体现节点对象之间的关系。 通过js操作html中的元素,如:h1, head等。节点:节点:Node——构成HTML文档最基本的单元 ,常用节点分为四类。文档节点:整个HTML文档 元素节点:HTML文档中的HTML标签 属性节点:元素的属性 文本节点:HTML标签中的文本内容浏览器已经为我们提供文档节点对象..

codest的专栏 302

javascript基础(11)--json

JSON: JavaScriptObjectNotationJS对象表示法JS中的对象只有JS自己认识,其他的语言都不认识,JSON就是一个特殊格式的字符串,这个字符串可以被任意的语言所识别,并且可以转换为任意语言中的对象,JSON在开发中主要用来数据的交互.Json基本语法:JSON和JS对象的格式一样,只不过JSON字符串中的属性名必须加双引号,其他的和JS语法一致。对象中的属性名,(注意:单引号、双引号、不加都是可以的)JSON分类:1.对象{} --jso...

codest的专栏 217

javascript基础(9)--正则表达式

正则表达式用于定义一些字符串的规则,计算机可以根据正则表达式,来检查一个字符串是否符合规则,获取将字符串中符合规则的内容提取出来.使用步骤:创建正则表达式的对象 varreg=newRegExp("a"); //对象方式使用字面量:语法:var变量=/正则表达式/匹配模式 这个正则表达式可以来检查一个字符串中是否含有a,在构造函数中可以传递一个匹配模式作为第二个参数,i忽略大小写,g全局匹配模式. 使用TEST() 方法. 使用这个方法可以用来检查一个字符串是...

codest的专栏 150
上一篇: Web前端HTML5+CSS3知识点(11)css入门---less
下一篇: Web前端HTML5+CSS3知识点(13)css入门-过渡及动画
codest
codest 企业官方账号 企业官方账号
博客等级 码龄17年 7粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值