移动web
pc web品优购
制作favicon图标
png
图片转换为 ico
图标
http://www.bitbug.net/
tdk
...
品优购商城-综合网购首选-正品低价、品质保障、配送及时、轻松购物!
...
盒子连写属性
border-style: solid;
/* 连写和我们内外边距连写顺序是一样的 写2个
第1个代表上下边框的粗细,第2个代表左右边框的粗细 */
border-width: 50px 80px;
border-color: red green yellow blue;
移动端私有前缀
内核 | 前缀 | 主要浏览器 |
---|---|---|
Trident | -ms- | Internet Explorer |
Gecko | -moz- | Firefox |
Webkit | -webkit- |
Chrome、Opera、Safari、Android |
Presto | -o- | 早期Opera |
视口:手机网页的大小
`
- name:要设置的属性,viewport表示视口
- content:要设置的内容
- width=device-width:设置视口宽度与设备宽度一致
- initial-scale=1.0:设置视口初始化缩放为1(不缩放)
- user-scalable=no:设置视口不允许用户缩放(绝大多数手机网页都是不能缩放的)
- 其他属性介绍
- maximum-scale=5.0:设置视口最大缩放比例为5,如果禁止缩放该属性设置无效
- m-scale=0.5:设置视口最小缩放比例为0.5
- 小技巧: 在vscode中设置视口快捷键
meta:vp + tab键
移动端布局注意点
1.水平方向不能出现滚动条
a. 禁止用户缩放
b. 元素宽度不能超过视口宽度
2.只适配宽度(使用百分比单位),高度使用固定px
\* 百分比布局(流式布局):水平方向使用百分比单位,高度使用固定px
3.盒子宽度不能受到padding和margin影响(避免出现滚动条)
\* 解决方案:设置内减盒子 box-sizing: border-box;
流式布局 圣杯布局
a.父盒子father,宽度为100%,铺满屏幕,且box-sizing为box-border
b.设置父盒子的左右padding为60px
c.中间center子盒子宽度为100%
d.左右两边盒子通过绝对定位来实现
移动端初始化
- a.移动端需要设置所有的元素为内减模型(避免padding和border导致出现滚动条)
- b.移动端字体大小一般为12px
- pc端默认是16px
- c.移动端默认a标签点击背景有蓝色高亮,需要取消
-webkit-tap-highlight-color: transparent;
单标签不能添加伪元素
连写里面不写的值,取默认值
背景
背景渐变
/* 方位名词 背景渐变属于背景图片的一种特殊情况*/
/* background-image: linear-gradient(to right, red, green, blue); */
/* 角度的写法 */
/* background-image: linear-gradient(45deg, red, green); */
/* background-image: linear-gradient(135deg, red, green); */
五彩条的做法
.line {
width: 1000px;
height: 5px;
/* border: 1px solid #000; */
background: linear-gradient(to right, red 20%, green 20%, green 40%, blue 40%, blue 60%, yellow 60%, yellow 80%, pink 80% );
}
三种方法使用一个div写出三个色块
边框
.box1 {
width: 100px;
height: 100px;
background-color: blue;
border-left: 100px solid red;
border-right: 100px solid green;
}
浮动加伪元素
.box2 {
width: 300px;
height: 100px;
background-color: blue;
margin-top: 100px;
}
.box2::before {
content:'';
float: left;
width: 100px;
height: 100px;
background-color: red;
}
.box2::after {
content:'';
float: right;
width:100px;
height: 100px;
background-color: green;
}
渐变
.box3 {
width: 300px;
height: 100px;
background-image: linear-gradient(to right, red 33.3333%, blue 33.3333%, blue 66.6666%, green 66.6666%);
margin-top: 100px;
}
渐变进度条
.father {
overflow: hidden;
width: 1000px;
height: 20px;
background-color: #eee;
margin: 100px auto;
border-radius: 6px;
box-shadow: inset 0 2px 2px 0 rgba(200,200, 200, .7);
}
.son {
width: 50%;
height: 20px;
background-color: green;
background-size: 40px 20px;
background-image: linear-gradient(45deg, transparent 33%,rgba(255, 255, 255, .2) 33%, rgba(255, 255, 255, .2)66%,transparent 66%);
}
控制背景图片大小
background-size: 50% 20%;
/* 控制背景图片大小
cover 背景图片等比例缩放,铺满盒子,图片有可能显示不完整
contain 背景图片等比例缩放,图片显示完整,有可能铺不满盒子
只写一个数值,代表是宽,高等比例缩放,高默认值是auto
写2个值,第1个代表宽,第2个代表高
写百分比参考是盒子的宽高
只写一个百分比的值,参考是盒子的宽(不是图片的宽)
写2个值,第1个是宽,第2个是高,参考的是盒子的宽高
*/
弹性盒子
display:flex;
主轴
控制主轴的方向
flex-direction: column;
row 默认值 水平方向 自左而右
row-reverse 水平反向 自右向左
column 主轴垂直方向 自上而下
column-reverse 主轴垂直反向 自下而上
控制子元素在主轴上的对齐方式 主轴默认水平方向(自左向右)
justify-content: space-around;
flex-start 默认值 主轴开始的位置对齐 左对齐
flex-end 主轴结束的位置对齐 右对齐
center 主轴居中对齐 水平居中对齐
space-between 两端对齐 中间等距
space-around 中间等距,两边是中间的一半
控制主轴换行
flex-wrap: wrap;
子元素的宽度相加超过了父元素的宽度,默认不会换行,在一行上显示,不会溢出,按比例分配子元素的宽度
nowrap 不换行
wrap 换行
次轴 侧轴
控制子元素单行(个)侧轴(垂直)对齐
align-items: center;
弹性盒子可以更好的控制父元素里边的子元素 主轴默认水平方向 侧轴默认垂直方向
stretch 默认值 拉伸 子元素不设置高度或者设置为auto,子元素拉伸成父元素高度一样
flex-start 侧轴开始的位置对齐,顶对齐
flex-end 侧轴结束的位置对齐 底对齐
center 侧轴居中对齐 垂直居中
多行侧轴(垂直)对齐
stretch 拉伸 子元素不设置高度,或者高度为auto的时候,拉伸成父元素几分之一
flex-start 侧轴开始的位置对齐 顶对齐
flex-end 侧轴结束的位置对齐 底对齐
center 侧轴居中对齐 垂直居中
space-between 两端对齐,中间等距
space-around 中间等距,两边是中间的一半
子元素属性
子元素有固定宽度 1flex宽度=(父元素宽度-固定宽度)/子元素总flex
align-self 控制单个子元素垂直对齐
auto 会跟着align-items的值
stretch 拉伸
flex-start 侧轴开始的位置对齐
flex-end 侧轴结束的位置对齐
center 侧轴居中
order值越小,排序越靠前
默认值:order: 2;
flex-flow
是flex-direction和flex-wrap属性的复合属性 用于设置或检索弹性盒模型对象的子元素排列方式
注意
1.弹性盒子控制子元素布局,只对亲儿子有效
2.弹性盒子的子元素照样可以作为弹性盒子使用
3.弹性盒子不脱标,如果父元素不设置高度,里边的子元素会把高度撑开
4.父元素弹性盒子,里边的子元素不用考虑显示模式,都可以以设置宽高
opacity控制透明度 取值范围0-1
媒体查询
值 描述
all 用于所有多媒体类型设备
print 用于打印机
screen 用于电脑屏幕,平板,智能手机等。
条件
@media(min-width: 769px) and (max-width: 992px) {
body {
background-color: blue;
}
}
从小往大写
body {
background-color: red;
}
@media(min-width: 768px) {
body {
background-color: blue;
}
}
@media(min-width: 992px) {
body {
background-color: green;
}
}
从大往小写
body {
background-color: red;
}
@media(max-width: 1200px) {
body {
background-color: green;
}
}
@media(max-width: 992px) {
body {
background-color: blue;
}
}
媒体查询引入资源
针对不同的屏幕尺寸 调用不同的css文件
less基础
定义变量
@变量名: 值;
嵌套
1.less嵌套 子元素的样式直接写到父元素里面就好了
2.如果有伪类 交集选择器 伪元素选择器 我们内层要加&
a {
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
添加运算符
添加运算符的左右两侧必须敲一个空格隔开
两个数参与运算 如果只有一个数有单位 则最后的结果以这个单位为准
两个数参与运算 如果两个数都有单位 而且不一样的单位 则以第一个单位为准
rem
em相对于自身的字体大小来说的如果本身没有参考父元素的
rem相对于html元素 字体大小来说的
rem的优点就是可以通过修改html里面的文字大小来改变页面中的元素的大小 可以整体控制
rem适配方案
- 1.让一些不能等比自适应的元素,达到当设备尺寸发生改变的时候,等比例适配当前设备
- 2.使用媒体查询根据不同设备按比例设置html的字体大小 然后页面元素使用rem做尺寸单位,当html字体大小变化元素尺寸也会发生变化 从而达到等比缩放的适配
- 1.最后的公式:页面元素的rem值=页面元素值(px)/(屏幕宽度/划分的份数)
2.屏幕宽度/划分的份数 就是html font-size的大小
3.或者; 页面元素的rem值=页面元素值(px)/html font-size字体大小
rem适配方案2
flexible.js加rem
把设备分为10份
响应式布局
一套布局适配多个屏幕
bootstrap
-
boostrap的核心技术(实现响应式布局的核心技术)
- 将屏幕以表格的形式划分为不同的区域(行row+列column),在不同的屏幕下显示不同的区域
记住bootstrap中几个经典的尺寸类名后缀
lg
: 大尺寸,对应大屏pc ,在栅格系统响应式布局中对应的屏幕是 >= 1200pxmd
:中尺寸,对应大屏平板ipadPro和小屏pc,在栅格系统响应式布局中对应的屏幕是 [992,1200)sm
:小尺寸,对应平板ipad,在栅格系统响应式布局中对应的屏幕是 [768,992)xs
:超小尺寸,对应手机移动端,在栅格系统响应式布局中对应的屏幕是<= 768
bootstrap中有两种版心容器可供使用者选择
- container:
响应式版心容器
- 默认样式:
- 没有高度、边框、颜色
- 左右15px的padding
- 宽度是响应式
- 屏幕宽度 < 768 宽度100%
- 768 <= 屏幕宽度 < 992 宽度750
- 992 <= 屏幕宽度 < 1200 宽度970
- 1200 <= 屏幕宽度 < 1200 宽度1170
- 默认样式:
- container-fluid:
流式版心容器
- 默认样式:
- 没有高度、边框、颜色
- 左右15px的padding
- 宽度100%
- 默认样式:
default
:默认 纯白色
link
:链接 a标签默认颜色
success
: 淡绿色(成功/确定)
info
:天蓝色(信息)
warning
:橘橙色(提示/警告
danger
:酒红色(失败/错误)
primary`:青色(重要)
栅格的组成部分:
- a.
版心容器container
(相当于html页面的container版心,相当于table表格)- b.
row
(相当于html页面的父盒子模型,相当于table中的tr)- c.
col
(相当于html页面的子盒子模型,相当于table中的tr)
- c.
- b.
在某个查询区间,将栅格隐藏,可以用隐藏的样式,这个样式包括四个:
1、.hidden-xs 在屏幕小于768时将栅格隐藏
2、.hidden-sm 在屏幕大于等于768小于992时将栅格隐藏
3、.hidden-md 在屏幕大于等于992小于1200时将栅格隐藏
4、.hidden-lg 在屏幕大于等于1200时将栅格隐藏
移动端布局总结
主流方案
1.单独制作移动端页面
京东商场手机版
淘宝触屏版
苏宁易购手机版
2.响应式页面兼容移动端(其次)
三星手机官网
移动端技术选型
- 流式布局(百分比布局)
- flex弹性布局(推荐)
- rem适配布局(推荐)
- 响应式布局
- 选择一种主要技术选型 其他技术作为辅助 这种混合技术开发
2D转换
transform
转换 变形
移动 translate
/* x是x轴移动位置 y是y轴移动位置中间用逗号分隔 */
transform: translate(x,y);
transform: translateX(100px);
代表X轴移动100px
transform: translateY(100px);
代表Y轴移动100px
不会影响到其他元素的位置
translate中的百分比单位是相对于自身元素的translate(50%,50%)
对行内标签没有效果
旋转 rotate
- transform: rotate(度数);
单位是deg
角度为正时,顺时针 负时 逆时针
默认旋转的中心点是元素的中心点 - transform-origin: x y;
/* 注意后面的参数哦x,y用空格隔开
x y 默认转换的中心点是元素的中心点(50%,50%)
还可以给x y设置像素或者方位名词(top bottom left center) */ - 加个过渡实现转圈效果 transition
过渡写到本身上 谁做过渡给谁加
缩放 scale
transform: scale(x,y);
/* 注意其中的x和y用逗号分隔
transform: scale(1,1);宽和高都放大一倍,相对于没有放大
transform: scale(2,2); 宽和高都放大了2倍
transform: scale(2); 只有一个参数,第二个参数哦和第一个参数一样,相当于scale(2,2)
transform: scale(0.5,0.5);缩小
scale缩放最大的优势 可以设置转换中心点缩放 默认以中心点缩放的 而且不影响其他盒子
*/
综合写法
注意:
同时使用多个转换,其格式为:transform:translate() rotate() scale();等
其顺序会影响转换的效果(先旋转会改变坐标轴的方向)
当我们同时有位移和其他属性的时候 记得要将位移放到最前
可以实现边位移边旋转
3D转换
- 近大远小
-
- x轴 水平向右 注意: x右边是正值,左边是负值
y轴:垂直向下 注意:y下面是正值 上面是负值
z 轴: 垂直屏幕 注意: 往外面是正值 往里面是负值
- x轴 水平向右 注意: x右边是正值,左边是负值
- transform:translate3d(200px,200px,200px);
连写属性x轴 y轴 z轴 - 3d位移 translate3d(x,y,z)
-
- x y不能省略 如果没有就写0
一般用px为单位 - translatez(120deg); 越大我们看到的物体越大
- x y不能省略 如果没有就写0
- 3d旋转: rotate3d(x,y,z)
-
- xy适用左手法则 拇指指向轴的正方向
z轴正值顺时针 - transform:rotatez(45deg) 沿着z轴正方向旋转45deg
- xy适用左手法则 拇指指向轴的正方向
- 透视:perspective
-
- perspective:800px;
视距 是屏幕距眼睛的距离 一般情况下 600-1000px 加在父元素上
- perspective:800px;
- 3d呈现 transfrom-style
-
- 控制子元素是否开启三维立体环境
flat 子元素不开启3d立体空间 默认的
preserve-3d 子元素开启立体空间
代码写给父级,但是影响的是子盒子
- 控制子元素是否开启三维立体环境
动画
动画是css3中具有颠覆性的特性之一 可通过设置多个节点来精确控制一个或一组动画 常用来实现复杂的动画效果
相比较过渡 动画可以实现更多的变化 更多的控制 连续自动播放等效果
使用: 先定义动画 再使用(调用)动画
动画序列
- 0%是动画的开始100%是动画的完成 这样的规则就是动画的序列
- 在@keyframes中规定某项css样式 就能创建由当前样式逐渐改为新样式的动画效果
- 动画是使元素从一种样式 逐渐变化为另一种样式的效果 您可以改变任意多的样式任意多的次数
- 请用百分比来规定变化的发生的时间 或用关键词from和to 等同于0%和100%
定义动画
@keyframes 动画名称 {
0% {
width: 100px;
}
100% {
width: 200px;
}
}
可以做多个状态的变化keyframe关键帧
里面的百分比要是整数
里面的百分比就是总的时间的划分
调用动画:
animation-name:动画名称
持续时间:
animation-duration:持续时间
animation-timing-function:速度曲线 默认ease 匀速linear
animation-delay:动画开始时间 默认0
animation-iteration-count 播放次数 默认1还有循环播放infinite
animation-direction 规定动画是否在下一周期逆向播放 默认normal alternate逆播放
animation-play-state 规定动画是否正在运行或暂停 默认是running运行 还有paused停止
简写属性里不包含animation-play-state 经常和鼠标经过等配合使用
animation-fill-mode 规定结束后的状态 保持forwards 回到起始状态backwards
animation-timing-function:规定动画的速度曲线
默认是ease 动画以低速开始 然后加快 在结束前变慢
ease-in 以低速开始
ease-out 以低速结束
ease-in-out 以低速开始和结束
steps() 指定了时间函数中的间隔数量(步长)
动画属性连写 动画名称和时间为必写项 其他的不写取默认时间
动画名称 持续时间 运动时间 何时开始 播放次数 是否反方向 动画启始或者结束的方法
animation: name duration timing-function delay iteration-count direction fill-mode;
我们元素可以添加多个动画,用逗号隔开
例如 animation:bear 1s steps(8) infinite,move 1s forward;
过渡
- 那些属性需要过渡:
transition-property:background; - 过渡时间:
transition-duration:1s; - 匀速
transition-timing-function:linear; - 过渡延迟:
transition-delay:1s; - 过渡属性连写的时候 过渡时间为必写属性 其他不写的属性取默认值
- transition:border-radius 1s, margin-left 1s;
制作头部和底部悬浮
第一种方法弹性盒子
.con {
display: flex;
flex-direction: column;
justify-content: space-between;
height: 100%;
.header {
height: 46rem / 37.5;
width: 100%;
}
.center {
flex: 1;
overflow-y: auto;
}
.footer {
height: 50rem / 37.5;
width: 100%;
}
}
第二种方法固定定位
.con {
.header {
position: fixed;
width: 100%;
height: 46rem / 37.5;
top: 0;
max-width: 750px;
// left: 0;
background-color: #fff;
}
.center {
padding: 46rem / 37.5 0 50rem / 37.5;
height: 100%;
}
.footer {
position: fixed;
bottom: 0;
// left: 0;
max-width: 750px;
height: 50rem / 37.5;
width: 100%;
background-color: #fff;
}
}