在PC端静态网页开发中,我们使用reset.css来将标签的默认样式取消掉。
在移动端中,CSS初始化推荐使用normalize.css
/* CSS3 盒子模型 */
box-sizing: border-box;
-webkit-box-sizing: border-box;
/* 点击高亮我们需要清除 设置为transparent完全透明 */
* {
-webkit-tap-highlight-color: transparent;
}
/* 在移动端浏览器默认的外观在IOS上加上这个属性才能给按钮和输入框自定义样式 */
input {
-webkit-appearance: none;
}
/* 禁用长按页面时的弹出菜单 */
img,a {
-webkit-touch-callout: none;
}
/* 给 body 进行样式初始化 */
body {
min-width: 320px;
max-width: 540px;
margin: 0 auto;
background-color: #fff;
font-size: 14px;
line-height: 1.5em;
font-family: -apply-system,Helvetica,sans-serif;
}
通过将盒子的宽度设置成百分比,从而根据屏幕的宽度来进行伸缩,不受固定像素的限制,内容向两侧填充。
流式布局方式是移动web开发使用的比较常见的布局方式。
注意事项
百分比只适用于水平方向的设置
制作过程中,需要定义页面的最大和最小支持宽度
max-width最大宽度(max-height)
min-width 最小宽度(min-height)
body {
min-width: 320px;
max-width: 980px;
}
.father {
position: relative;
width: 100%;
height: 44px;
}
.left {
position: absolute:
left: 0;
top: 0;
width: 40px;
height: 100%;
}
.center {
height: 30px;
margin: 7px 50px;
}
.right {
position: absolute:
right: 0;
top: 0;
width: 40px;
height: 100%;
}
传统布局 | flex布局 |
---|---|
兼容性好 | 操作方便,布局极为简单,移动端应用广泛 |
布局繁琐 | PC端浏览器支持情况较差 |
局限性,不能在移动端很好的布局 | IE 11或更低版本,不支持或仅部分支持 |
建议
通过给父盒子设置flex属性,来对子盒子实现排列和布局
用来为盒状模型提供最大的灵活性,任何一个容器都可以指定为flex布局
父盒子一旦设置了flex布局后,子元素的float、clear和vertical-align属性将失效
伸缩布局=弹性布局=伸缩盒布局=弹性盒布局=flex布局
属性值 | 解释说明 |
---|---|
row | 默认值从左到右 |
row-reverse | 从右到左 |
column | 从上到下 |
column-reverse | 从下到上 |
属性值 | 解释说明 |
---|---|
flex-start | 从头部开始 |
flex-end | 从尾部开始 |
center | 在主轴居中对齐(如果主轴是x轴则水平居中) |
space-around | 平分剩余空间 |
space-between | 先两边贴边,再平分剩余空间(重要) |
属性值 | 解释说明 |
---|---|
nowrap | 默认值,不换行 |
wrap | 换行 |
属性值 | 解释说明 |
---|---|
flex-start | 默认值,从上到下 |
flex-end | 从下到上 |
center | 挤在一起居中(垂直居中) |
stretch | 拉伸(将子元素拉伸,直至与父盒子等高/等宽) |
属性值 | 解释说明 |
---|---|
flex-start | 从侧轴的头部开始排列 |
flex-end | 从侧轴的尾部开始排列 |
center | 在侧轴的中间显示 |
space-around | 子项在侧轴平分剩余空间 |
space-between | 子项在侧轴先分布在两头,再平分剩余空间 |
stretch | 子元素高度为父盒子高度 |
flex-flow: row nowrap;
@media mediatype and|not|only (media feature) {
CSS-code;
}
/* 具体例子 */
/* 盒子宽度小于640px时,背景颜色为粉色 */
@media screen and (max-width: 640px) {
div {
background-color: pink;
}
}
值 | 解释说明 |
---|---|
all | 所有设备 |
打印机和打印预览 | |
screen | 电脑屏幕、平板电脑、智能手机等 |
关键字将媒体类型或多媒体特性连接到一起作为媒体查询的条件
每种媒体类型有各自不同的特性,根据不同媒体类型的媒体特性设置不同的展示风格
先了解三个
值 | 解释说明 |
---|---|
width | 页面可见区的宽度 |
max-width | 页面最大可见区的宽度 |
min-width | 页面最小可见区的宽度 |
不同设备宽度,实现页面元素大小动态改变
变量命名规范
变量使用规范
/* 直接使用 */
body {
background-color: @color;
}
a:hover {
color: @color;
}
/* 我们常用的选择器 */
.header .logo {
width: 300px;
}
a:hover {
color: #eee;
}
/* less嵌套写法 */
.header {
.logo {
width: 300px;
}
}
/* 如果遇见(交集|伪类|伪元素选择器)*/
/* 内层选择器的前面没有 & 符号,则它被解析为父选择器的后代 */
/* 如果有 & 符号,它就被解析为父元素自身或父元素的伪类 */
a {
&:hover {
color: #eee;
}
}
目的
步骤
按照设计稿与设备宽度的比例,动态计算并设置 html 跟标签的 font-size 大小;(媒体查询)
CSS 中,设计稿元素的宽、高、相对位置等取值,按照同等比例换算为 rem 为单位的值;
rem + 媒体查询 + less 技术
动态设置 html 标签 font-size大小
假设设计稿是750px,将屏幕划分成15等分
每一份 html 字体大小,这里就是50px
那么在320px设备的时候,字体大小为320/15即21.33px
页面元素大小 / 不同的html字体大小,比例还是相同的
元素大小取值方法:页面元素的rem值 = 页面元素px值 / html font-size 字体大小
flexible.js + rem
就是使用媒体查询针对不同宽度的设备进行布局和样式的设置,从而适配不同设备的目的。
响应式需要一个父级作为布局容器,来配合子级元素来实现变化效果
原理就是在不同屏幕下,通过媒体查询来改变这个布局容器的大小,再改变里面子元素的排列方式和大小,从而实现不同屏幕下,看到不同的页面布局和样式改变
平时我们的响应式尺寸划分
Bootstrap 需要为页面内容和栅格系统包裹一个 .container 容器,它提供了两个作此用处的类
将页面布局划分为等份的列,然后通过列数的定义来模块化页面布局。
Bootstrap 提供了一套响应式、移动设备优先的流式栅格系统,随着屏幕或视口 (viewport) 尺寸的增加,系统会自动分为最多12咧。
栅格系统用于通过一系列的 row 与 column 的组合来创建页面布局
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XWLVBZZw-1612012052062)(C:\Users\黎活宝\AppData\Roaming\Typora\typora-user-images\image-20210127114236874.png)]
.container
(固定宽度)或 .container-fluid
(100% 宽度)中,以便为其赋予合适的排列(aligment)和内补(padding)。使用 .col-md-offset-* 类可以将列向右侧偏移。这些类实际是通过使用 * 选择器为当前元素增加了左侧的边距 margin。
1
2
通过使用 .col-md-push-* 往右推和 .col-md-pull-* 往左拉 这两个类就可以很容易的改变列排序
左侧
右侧
为加快移动设备友好的页面开发工作,利用媒体查询功能,并使用这些工具类可以方便的针对不同设备显示或隐藏页面内容
类名 | 超小屏 | 小屏 | 中屏 | 大屏 |
---|---|---|---|---|
.hidden-xs | 隐藏 | |||
.hidden-sm | 隐藏 | |||
.hidden-md | 隐藏 | |||
.hidden-lg | 隐藏 |
与之相反,visible-xs、visible-sm、visible-md、visible-lg 对应的设备可见
文章来源:拉勾教育大前端就业急训营