一、视口
视口在默认情况下也没你可以放大或者缩小。因为体验不好,且容易产生布局错误,所有页面要禁止用户缩放
1、视口属性:viewport
content:视口内容
width=device-width 页面宽度默认等于设备宽度
initial-scale=1.0 初始化缩放比例为1.0
maximum-scale=1.0 最大缩放比例为1.0
minimum-scale=1.0 最小缩放比例为1.0
user-scalable=no/yes 是否禁止用户的缩放功能
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0,user-scalable=no">
拓展:禁止缩放以后最大和最小的缩放比写不写视情况而定
写代码的时候可以不写。但是标准写一个完整的meta的时候必须写
二、
background-size 宽(x)高(y)
两个都是数字的时候参考父盒子的宽高
只有一个数值的时候等比例缩放(一个值代表宽度)
两个都是百分比的时候参考父盒子的宽高
只有一个百分比数值的时候等比例缩放(一个百分比的时候代表宽度)
background-size:cover 覆盖,等比例放大填满整个盒子,不会存在空白
1、当盒子比图片大的时候,图片会填满盒子
2、当盒子比图片小的时候,图片不一定全部显示出来,左上角部分开始显示
background-size:contain 等比例放大直至一遍达到父盒子的边框,存在空白的部分
简写:background:url() no-repeat color position /size(/必须填写)
三、布局(混合布局:流式+less+rem+flex)
流式布局(百分比布局)自行了解圣杯布局
1、盒子的宽度不给具体的像素值,然后盒子用%来代替
弹性布局(flex布局)
1、标准流盒子一行显示 display:inline-block
问题:出现间隙(左侧是换行出现的,下侧是基线对齐出现的:用vertical-align:middle 解决)
2、浮动流盒子一行显示 float:left
问题:父盒子失去高度,要清除浮动
3、定位流盒子一行显示 position:absolute
问题:子盒子会层叠在一起
4、弹性布局盒子一行显示 display:flex(父盒子设置)
默认情况下,盒子沿着主方向排布(主轴默认方向从左向右 )
优点:1.没间隙 2.不会失去高度 3.不会层叠
父盒子常见属性:
主轴方向:
flex-direction:row从左向右,类似左浮动
flex-direction:row-reverse从右向左,类似右浮动
flex-direction:colum垂直从上向下
flex-direction:colum-reverse垂直从下向上
主轴对齐方式:
justify-content:flex-start 从左开始向右结束类似左对齐
justify-content:flex-end 从右开始向左结束类似右对齐
justify-content:center 居中对齐,类似text-align:center
justify-content:space-betwent 各个元素之间距离相同,父元素剩余空间均分
justify-content:space-around 子元素周围的距离相同
侧轴对齐方式:
align-items:stretch 默认将子元素的高度拉伸填满盒子(前提子元素无高度)
align-items:flex-start 再开始位置,靠上
align-items:flex-end再结束位置,靠下
align-items:center 居中
flex-wrap:wrap 多行换行
垂直水平居中:
align-items:center
justify-content:center
多行对齐:
align-content:stretch 拉伸,高度拉伸填满父盒子
align-content:flex-start 多行靠上
align-content:flex-end 多行靠下
align-content:center 多行居中
align-content:space-betwent 将父元素的空间均分
align-content:space-around 行的上下距离相同
flex-flow 符合属性 (了解)
flex 比例划分:
父元素: display:flex
子元素:flex:1(每个子盒子都能获得的一部分)
子元素其他属性:
align-self 单独控制某一个盒子的侧轴对齐方式,这个属性优先级高于align-items
order:数值;修改弹性子元素的排序,数值越小位置越靠前(默认是从0 开始的)
background:radial-gradient(方向,色值,色值),方向不写的情况下显示从上向下
四、less
less优点1、兼容所有的css语法
2、less文件保存会生成对应的css文件
3、html导入的时候只能选择css文件,less文件不识别
声明变量:@变量名:变量值
变量运算:变量 运算符 数值
混合用法:多个重复属性封装成一方法
.方法名 (){ 公用属性;}
&表示外层元素
五、rem(rem布局 rem+less+媒体查询)
html和body的默认字体大小是16px
rem(root em )
em是相对于父元素的字体大小来设置的
rem是相对于html元素的字体大小(和父元素无关)
优点:可以通过修改html中的字体大小来改变页面中的大小,可以整体控制
六、媒体查询(Media Query)
@media media type(媒体类型:all 所有设备|screen 平板手机|print 打印机打印预览) and(and 并且 | not 非 |only 来指定某个某个特定的)media feature(媒体特性:width | max-width | min-width){满足条件的css样式}
@media screen and (){} ---------小括号里面不带有分号,各个部分用空格分开
例子:@media screen and (max-width:200px){}
rem / 75 *测量数据 = 测量数据 / 75 * rem
七、响应式布局
页面会根据屏幕的宽度显示不同的不同的布局效果
利用媒体查询设置设置响应式布局
@media screen and (min-width:992px) and (max-width:1199px) { }
@media screen and (min-width:768px) and (max-width:991px) { }
@media screen and (max-width:767px) { }
八、Bootstrap框架
跟布局有关的常用框架有:Bootstrap,Amaze UI,Framework7
起步:下载使用的为源码
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! --> <title>Bootstrap 101 Template</title> <!-- 将以下的导入路径修改成本地路径 --> <!-- 1.引入本地bootstrap.css --> <link href="./lib/css/bootstrap.css" rel="stylesheet"> </head> <body> <h1>你好,世界!</h1> <!-- 以下两个js文件也要改成本地路径 --> <!-- 2.引入本地jq文件 --> <script src="./lib/js/jquery-1.12.4.min.js"></script> <!-- 3.引入本地的bootstrap.js文件 --> <script src="./lib/js/bootstrap.js"></script> </body> </html>
全局css样式:
form表单:
修改以后使用的:
<div class="main"> <form> <div class="form-group"> <label for="exampleInputEmail1">邮箱</label> <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Email"> </div> <div class="form-group"> <label for="exampleInputPassword1">密码</label> <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password"> </div> <div class="form-group"> <label for="exampleInputFile">上传文件</label> <input type="file" id="exampleInputFile"> <p class="help-block">提示:上传身份证反正面!</p> </div> <div class="checkbox"> <label> <input type="checkbox"> 登录 </label> </div> <button type="submit" class="btn btn-default">提交</button> </form>
按钮:修改使用的
<a class="btn btn-default btn-primary" href="#" role="button">链接</a> <button class="btn btn-default btn-danger" type="submit">按钮</button> <input class="btn btn-default btn-warning" type="button" value="输入框"> <input class="btn btn-default btn-success" type="submit" value="提交">
调用类名:
btn-default 默认样式 btn-primary 首选项(背景色深蓝色) btn-success 成功(背景色绿色) btn-info 一般信息(背景色淡蓝色) btn-warning 警告(背景色橘黄) btn btn-danger 危险(背景色红色) btn-link 链接 btn-lg 大按钮 btn-sm 小按钮 btn-xs 超小按钮
栅格系统:
栅格布局是将页面内容显示区域平均分为12列
container:响应式版心根据屏幕的宽度调整版心的宽度
container-fulid百分比宽度
col-lg-* lg大屏幕(大于等于1200px)col代表列 *代表占据几列
col-md-*md中屏幕(大于等于992px)
col-sm-*sm小屏幕(大于等于768px)
col-xs-*xs移动端屏幕(小于768px)
响应式工具:
超小屏幕手机 (<768px) | 小屏幕平板 (≥768px) | 中等屏幕桌面 (≥992px) | 大屏幕桌面 (≥1200px) | |
---|---|---|---|---|
.visible-xs-* | 可见 | 隐藏 | 隐藏 | 隐藏 |
.visible-sm-* | 隐藏 | 可见 | 隐藏 | 隐藏 |
.visible-md-* | 隐藏 | 隐藏 | 可见 | 隐藏 |
.visible--* | 隐藏 | 隐藏 | 隐藏 | 可见 |
.hdden-xs | 隐藏 | 可见 | 可见 | 可见 |
.hdden-sm | 可见 | 隐藏 | 可见 | 可见 |
.hdden-md | 可见 | 可见 | 隐藏 | 可见 |
.hdden-lg | 可见 | 可见 | 可见 | 隐藏 |
导航条
源码
<nav class="navbar navbar-default"> <div class="container-fluid"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">Brand</a> </div> <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav"> <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li> <li><a href="#">Link</a></li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated link</a></li> <li role="separator" class="divider"></li> <li><a href="#">One more separated link</a></li> </ul> </li> </ul> <form class="navbar-form navbar-left" role="search"> <div class="form-group"> <input type="text" class="form-control" placeholder="Search"> </div> <button type="submit" class="btn btn-default">Submit</button> </form> <ul class="nav navbar-nav navbar-right"> <li><a href="#">Link</a></li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated link</a></li> </ul> </li> </ul> </div><!-- /.navbar-collapse --> </div><!-- /.container-fluid --> </nav>
修改后是用的:
<nav class="navbar navbar-default"> <!-- container-fluid页面100%宽度 --> <!-- containe响应式版心 --> <div class="container"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">Bootstrap中文网</a> </div> <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav"> <li><a href="#">Bootstrap2中文文档</a></li> <li><a href="#">Bootstrap3中文文档</a></li> <li><a href="#">Bootstrap4中文文档</a></li> <li><a href="#">Less教程</a></li> <li><a href="#"> Query API</a></li> <li><a href="#">网站实例</a></li> </ul> </ul> <ul class="nav navbar-nav navbar-right"> <li><a href="#">关于</a></li> </ul> </div><!-- /.navbar-collapse --> </div><!-- /.container-fluid --> </nav>
模态框:
源码
<!-- Button trigger modal --> <button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal"> Launch demo modal </button> <!-- Modal --> <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> <h4 class="modal-title" id="myModalLabel">Modal title</h4> </div> <div class="modal-body"> ... </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> <button type="button" class="btn btn-primary">Save changes</button> </div> </div> </div> </div>
修改使用:
修改后是用的:
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal"> 点击 </button> <!-- Modal --> <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> <h4 class="modal-title" id="myModalLabel">Modal title</h4> </div> <div class="modal-body"> <form> <div class="form-group"> <label for="exampleInputEmail1">邮箱</label> <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Email"> </div> <div class="form-group"> <label for="exampleInputPassword1">密码</label> <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password"> </div> <div class="form-group"> <label for="exampleInputFile">上传文件</label> <input type="file" id="exampleInputFile"> <p class="help-block">提示:上传身份证反正面!</p> </div> <div class="checkbox"> <label> <input type="checkbox"> 登录 </label> </div> <button type="submit" class="btn btn-default">提交</button> </form> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> <button type="button" class="btn btn-primary">Save changes</button> </div> </div> </div> </div>
转换大小写:
<!-- 转换成小写 -->
<p class="text-lowercase">JIFANGYAN</p>
<!-- 转换成大写 -->
<p class="text-uppercase">jifangyan</p>
<!-- 单词首字母大写 -->
<p class="text-capitalize">ji fang yan</p>
H5C3动画
过渡属性:transition
变换属性:transform
平移效果:translate
缩放效果:scale
旋转效果:rotate
修改旋转点坐标:transform-origin
视距(一般600-1000):perspective
声明动画关键字:@keyframes
调用动画属性:animation
无线循环播放:infinite
反向播放:alternate
动画结束位置:animation-fill-mode:forwards
鼠标悬停的时候动画停止: animation-play-state: paused
复习单位:
px写多少就是多少
写百分比的时候参考的是父元素的宽高(设置margin值为百分比的时候参考的是父盒子的宽度)
em参考当前盒子的字体大小
rem参考的是html的字体大小
拓展:view:视口
vw、wh将浏览器的宽高分成100分
width:10vw浏览器宽度的10/100
height:10vh浏览器高度的10/100