重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先你要在html页面头部加上下面的代码,其次你要把页面中的宽度修改为百分比,不能不用固定尺寸,一些小的模块可以用固定尺寸。再就是css中要应用到媒体查询,也就是@media,不懂可以百度。
银川网站建设公司创新互联,银川网站设计制作,有大型网站制作公司丰富经验。已为银川近1000家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的银川做网站的公司定做!
meta name="viewport" content="width=device-width, initial-scale=1"/
有两种
1.通过设置viewport参数
2.使用css3中的缩放
两种方法都需要获取当前屏幕大小然后根据网页宽度来计算缩放比例,然后进行缩放。但是因为目前手机种类繁多,浏览器种类也很多,所以每种方法各自都有不少的问题。
/spanmeta name=“viewport” content=“width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes” /
在网页的中增加以上这句话,可以让网页的宽度自动适应手机屏幕的宽度。
其中:
width=device-width :表示宽度是设备屏幕的宽度
initial-scale=1.0:表示初始的缩放比例
minimum-scale=0.5:表示最小的缩放比例
maximum-scale=2.0:表示最大的缩放比例
user-scalable=yes:表示用户是否可以调整缩放比例
曾几何时,项目中有碰到视频比例拉伸的需求,但是发现这个看似再普通不过的一个需求,找遍全网至今都没有找到解决方法。因为强制给video标签设置width和height的话只会将video的显示区域拉伸,但是里面的视频还是保持原始比例,怎么调都没用:
因为当我横向拉伸时:
当我纵向拉伸时:
2016-09-21 11:15:40 更新:
感谢 @RileyRen 提醒,原来还有object-fit这一属性,把它设置为fill就满足需求了,泪奔~,这篇文章就当看个笑话吧,哎,不过可以看看我家喵星人的处女秀。
stylevideo {
object-fit:fill;
width:800px;
height:320px;}/styleh1测试视频比例拉伸:/h1video src="" controls autoplay loop/video
但是,这一属性兼容性不太好,IE全军覆没,安卓要4.4.3以上才支持:
所以我这个方法还是有一点点价值的,哈哈。
解决方法一
有人会说,既然网页上拉伸不了比例,那么直接把视频用转码工具拉伸比例然后重新转码不就是了?
没错,这就是我说的第一种解决方法,但是这对于少量视频没啥问题,如果有很多个视频,全部转码又重新上传也不太现实。刚开始我也确实是这么做的,但是后来发现还有其它方法。
解决方法二
就是标题说的,借用transform来实现视频比例拉伸。分2种情况,宽高比变大和宽高比变小。
3.1. 完整DEMO演示
先来看个完整的DEMO,视频主角是我家的喵星人,阿喵说:哎呀,要露脸了,好害羞~~~
3.2. 宽高比变大
保持宽度不变,调整rotateX即可实现高度变小,也就是宽高比变大了。看下图:
举个例子,假如原始视频分辨率是640*320(16:9),我想把它调成16:7,也就是640*280,那么:
cos θ = 新高度 / 旧高度 = 280 / 360
用js计算角度(单位是deg):
var rotate = (Math.acos(280/360)*180/Math.PI).toFixed(2); // 新高度 / 旧高度
3.3. 宽高比变小
宽高比减小时,以高度为基准,调整rotateY即可实现宽度变小,也就是宽高比变小了。
举个例子,假如原始视频分辨率是640*320(16:9),我想把它调成4:3,也就是480*320,那么:
cos θ = 新宽度 / 旧宽度 = 480 / 640
用js计算角度(单位是deg):
var rotate = (Math.acos(480/640)*180/Math.PI).toFixed(2); // 新宽度 / 旧宽度
总结
综上,有了这2个方法就可以实现任意比例的视频拉伸了,不过变形过程中需要注意位置可能发现的变化。
附
附上前面演示选择的DEMO:
!DOCTYPE htmlhtml lang="zh"head
meta charset="utf-8"
meta name="viewport" content="width=device-width, initial-scale=1.0"
title旋转比例模拟/title
style type="text/css".content {
position: absolute;
width: 400px;
height: 300px;
-webkit-perspective: 400px;
perspective: 400px;
left: 100px;
top: 100px;}.wrapper {
position: absolute;
width: 320px;
height: 240px;
transform: rotateY(-30deg) rotateX(0deg);
border: solid 2px #000;}.wrapper.rotate{
transform: rotateY(-30deg) rotateX(50deg);}.wrapper:after {
content: '';
display: block;
position: absolute;
使用百分比,比如
img
src='../a.ipg'
style='width:50%'
/
这样就会保持屏幕的50%的宽度。
如果有上级标签,比如:
div
img
src='../a.ipg'
style='width:50%'
/
/div
那图片大小就是div宽度的50%,div没有设置宽度就会默认是屏幕宽度,如果设置了宽度,就要注意
分析设计图
假设设计图大小为1080px。这也就意味着,在开发时,需要兼容的最大分辨率为1080px,最小的为320px。
2. 调整视口
代码实例:
!DOCTYPE html
head
meta charset="UTF-8" /
title布局之路-移动端开发实例/title
meta name="viewport" content="width=device-width,user-scalable = no" /
link rel="stylesheet" type="text/css" href="css/reset.css" /
/head
body
div class="wrap"/div
/body
/html
代码解析:由于使用不同设备打开网页时,宽度均有所不同,所以不能讲视口设置为固定值,应当为width=device-width,即将视口设置为当前设备的宽度。
3. 确定设计图的最小字体
浏览器(部分)能够显示的最小字体未12px,当移动端页面宽度为320px时,要保证最小字体为12px,那么在1080px的设计图中,最小字体应当为42px。
代码实例:
style type="text/css"
html {
font-size: 42px;
}
/style
4. 按照设计图的像素进行开发
按照正常网页开发流程,进行网页开发即可。
5. 使用百分比和rem替换px
代码效果对比:
/*使用固定像素*/
.box {
float: left;
width: 658px;
font-size: 72px;
text-align: center;
line-height: 195px;
}
/*使用百分比和rem*/
.box {
float: left;
width: 60.93%;
font-size: 1.71rem;
text-align: center;
line-height: 4.64rem;
}
代码解析:
水平方向的值,将具体像素调整为百分比。百分比的计算是根据父级的内容区宽度进行计算的。
例如,父级宽度为1080px, 子级元素为197px,那么子元素转换为百分比为:197/1080*100%=18.24%。需要注意的是百分比根据父级计算,当标签结构级别不同时,计算公式中的“分母”也有所不同,在开发时这个地方很容易出现问题,请务必注意。
垂直方向的值,将具体像素调整为rem,与水平方向相比,垂直方向的计算就比较简单。例如,行高为195px,HTML标签当前的字体大小为42px,将行高转换为rem单位,即195/42= 4. 64rem。
感应式设计,简单来说,就是当用不同设备访问时,能够根据设备的宽度和高度对设备进行动态的适配;例如,用iPhone4、iPhone5、iPhone6、PC、iPad访问同一个网址,正好能打开一个适合该设备的一个HTML5的页面,不留白边,不变形。这就算是感应式设计了,也就是本文说的“屏幕自适应”。由于设备分辨率不同,长宽比不同,如果设计一次,就要适应所有的屏幕(包括PC),这个几乎是不可能的。主要有以下三种情况:
1. 如果等比例缩放,内部位置关系会发生变化,会严重影响用户体验;同时,设备屏幕之间不存在等比例的关系,所以同样会有部分屏幕内容无法显示或留白边;
2. 如果把小屏幕适配好,放在更高的大屏幕里面,那两边就会有白边;或者把图扯大,这样就会变形;
3. 如果把大屏幕适配好,放在小屏幕中,就有些部分会丢失。
除非借助未来的AI(人工智能)的发展,否则很难自动解决这个问题。以前的网站设计,其实也是分开几种版面进行设计的,例如,根据宽度为多少时候采用一种设计板式。
所以,我就纳闷了,现在HTML5工具到底是如何实现感应式的呢?
经研究发现,一共有两种方式:
第一种,伪“感应式”设计:(HTML5模板类方案)
上图是HTML5模板类测试结果,依次是iPhone4、iPhone5、iPhone6
可以看出iPhone4时,变形最严重,iPhone5效果最好,iPhone6是等比例缩放后,两侧边缘,有些像素显示不了。
因此,这种“感应式”,称之为伪“感应式”HTML5工具,在设计时不会留白边,但是要求尽量把内容都往中间放,需要设计一张名为“背景”的底图,用于拉伸时用。
存在的问题:
1. 内容都要居中放置,别放上下个边;例如,把按钮放到最下面,iPhone打开后,就会看不到按钮;
2. 不可能适应PC、Pad等设备。
结论:
简单、应急时使用。
第二种,多版面感应式设计:(VXPLO互动大师方案)
用于互动大师,通过添加 Device控件的方式,实际上还是需要设计几个版面(设计上多数可以Ctrl-C +Ctrl-V,所以设计上并不算麻烦),因此本质上是真正的“感应式”设计,只要稍微勤快点儿,是可以一个URL地址,完美适应多个屏幕的,包括PC和Pad。用于互动大师,通过添加 Device控件的方式,实际上还是需要设计几个版面(设计上多数可以Ctrl-C +Ctrl-V,所以设计上并不算麻烦),因此本质上是真正的“感应式”设计,只要稍微勤快点儿,是可以一个URL地址,完美适应多个屏幕的,包括PC和Pad。
结论:要做真正的“感应式”设计,自动适应多个屏幕,又不想写代码,就只能用互动大师去做。设计中不会出现任何变形或丢失情况,不过需要多设计几个版面,一般如果是手机端的轻应用设计iPhone 4 5 6的分辨率就可以了。