移动端div自适应居中,定位元素怎么让它居中

网页元素正中攻略记_(5)未知宽高元素绝对居中 - Web前端当前位置:& &&&网页元素正中攻略记_(5)未知宽高元素绝对居中网页元素正中攻略记_(5)未知宽高元素绝对居中&&网友分享于:&&浏览:0次网页元素居中攻略记_(5)未知宽高元素绝对居中题外话
以前,我们要自适应全局居中,需要借助JS或者JQ来实现,现在有了CSS3就可以省去好多功夫了,为什么这么说!!
传统的绝对居中
#container{
position:abosolute;
margin-left:-包含块宽度的一半(如 -300px );
margin-top: -包含块高度的一半;
这种是实现了包含块的绝对居中,但是有一个问题,就是宽高度无法自适应(需固定宽高)…比如动态增加数据的时候,用这个就不大合适了….这时候折中的办法就是借助JS或者JQ来解决
新型的绝对居中
(需要较新浏览器,用了一个CSS3的属性)
属性的名字:transform:translate(支持IE9+,其他浏览器基本都支持了);
#container{
position: absolute;
left: 50%;
transform: translate(-50%, -50%);
下面我们来分析这句话transform: translate(-50%, -50%);;
意思就是说,拉回调用该属性的元素的一半宽高;
transform:translate有三种写法,我写的那种包含X,Y的,第一个参数是针对X轴左右拉动,第二个是针对Y轴上下拉动
另外两种参数写法:
transform:translateX(-50%),只针对X轴;
transform:translateX(-50%),只针对Y轴;
使用了该属性后,就可以实现未知宽高自适应绝对居中了!!!是不是很赞!!!
版权声明:本文为博主原创文章,未经博主允许不得转载。
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 1234567891011 Copyright & &&版权所有2012年 总版技术专家分年内排行榜第一2007年 总版技术专家分年内排行榜第二2006年 总版技术专家分年内排行榜第二2004年 总版技术专家分年内排行榜第二
2005年 总版技术专家分年内排行榜第三2003年 总版技术专家分年内排行榜第三2002年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第一2007年 总版技术专家分年内排行榜第二2006年 总版技术专家分年内排行榜第二2004年 总版技术专家分年内排行榜第二
2005年 总版技术专家分年内排行榜第三2003年 总版技术专家分年内排行榜第三2002年 总版技术专家分年内排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。手机端页面自适应解决方案—rem布局
相信很多刚开始写移动端页面的同学都要面对页面自适应的问题,当然解决方案很多,比如:百分比布局,弹性布局flex(),也都能获得不错的效果,这里主要介绍的是本人在实践中用的最顺手最简单的布局方案——rem()布局
rem布局非常简单,首页你只需在页面引入这段原生js代码就可以了
(function (doc, win) {
var docEl = doc.documentElement,
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function () {
var clientWidth = docEl.clientW
if (!clientWidth) return;
if(clientWidth&=640){
docEl.style.fontSize = '100px';
docEl.style.fontSize = 100 * (clientWidth / 640) + 'px';
if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);
如何使用?
这是rem布局的核心代码,这段代码的大意是:
如果页面的宽度超过了640px,那么页面中html的font-size恒为100px,否则,页面中html的font-size的大小为:
100 * (当前页面宽度 / 640)
于是,问题来了,为什么要这样?别急,我先来一一回答
为什么是640px?
对于手机屏幕来说,640px的页面宽度是一个安全的最大宽度,保证了移动端页面两边不会留白。注意这里的px是css逻辑像素,与设备的物理像素是有区别的。如iPhone
5使用的是Retina视网膜屏幕,使用2px x 2px的 device pixel 代表 1px x 1px 的 css
pixel,所以设备像素数为640 x 1136px,而它的CSS逻辑像素数为320 x 568px。
如果要切移动端页面,你可以先把效果图宽度等比例缩放到640px,很好用。
为什么要设置html的font-size?
rem就是根元素(即:html)的字体大小。html中的所有标签样式凡是涉及到尺寸的(如:
height,width,padding,margin,font-size。甚至,left,top等)你都可以放心大胆的用rem作单位。
如果你把html的font-size设为20px,前面说过,rem就是html的字体大小,那么1rem = 20px。
此时,此时宽60px,高40px的元素样式就这样设置如下 ↓
那要是宽55px,高37px呢?然后经过换算,,设置如下 ↓
width: 2.75
height: 1.85
是不是发现这换算起来有点麻烦啊,,,(当然,你要是心算帝请无视)
如果我们一开始把html的font-size设为100px呢?此时1rem = 100px,那么上面的宽,高就可以这么设置 ↓
width: 0.55
height: 0.37
是不是换算起来简单多了?!
(当然可能有同学问,为什么不一开始把html的font-size设为1px呢,这样换算起来也简单,答:浏览器一般都有最小字体限制,比如谷歌浏览器,最小中文字体就是12px,所以实际上没有办法让1rem=1px。)
根据上面的js代码,如果页面宽度低于640px,那么页面中html的font-size也会按照(当前页面宽度/640)的比例变化。这样,页面中凡是应用了rem的作尺寸单位的元素都会随着页面变化而等比例缩放了!
都哪些情况可以用rem布局?
大部分情况下都可以用rem布局这个方法,当然具体还要看情况而定。拿我们公司项目举例,只有底部的导航不用rem,而是用的flex布局。因为导航点击最多,所以给它一个固定的大小(其实就是高度固定,宽度自适应的方案)。大家可以看看淘宝的这个手机页面
,基本就是这种感觉,底部导航和顶部搜索框用的高固定,宽自适应的方案,其余的部分基本都是随着浏览器宽度变化在等比例缩放。
在rem布局中,有一些自己积累的小技巧给大家分享下。
页面中模块间距离一般为0.2rem。字体的大小一般分为四个档次 0.2rem 0.24rem 0.28rem
拿我们项目举例,我们移动端页面效果图的宽度都定在了640px。于是我在项目中,最外层的div样式就设置成了
width: 100%;
max-width: 640
min-width: 320
所有的元素都可以写在这个div中了,于是就可以开始写样式了
rem布局中,如果有个元素需要水平居中固定到页面底部,你会怎么设置它的样式呢。
我是这样做的,前提是这个元素还是在前面说的最外层水平居中的大div中,样式如下
bottom: 0;
z-index: 100;
width: 100%;
max-width: 640
min-width: 320
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。让html元素随浏览器的大小自适应垂直居中的实现方法
投稿:jingxian
字体:[ ] 类型:转载 时间:
下面小编就为大家带来一篇让html元素随浏览器的大小自适应垂直居中的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
表格可以实现td中的元素垂直居中显示,但是前提条件必须定义td的高才可行。
但是很多时候会用到元素跟随浏览器的大小垂直居中,如在制作展示官网、活动展示网等等的时候。
实现div垂直居中并在缩放浏览器尺寸的时候仍然居中。
解决方案:
1、浏览器可视区域的高度-元素的高度/2 = 元素距离浏览器可视区域顶部的距离。
(bodyHeight – divHeight)/2
2、浏览器可视区域如果小于元素的高度,即元素距离浏览器可视区域顶部的距离为零。
3、onresize()当浏览器的尺寸改变的时候触发事件。使用onresize()每次改变的时候,重新计算一下元素到顶部的距离。
实现代码:
function divMiddle(){
var dairyBox = document.getElementById('dairyBox');
var divHeight = dairyBox.offsetH
var bodyHeight = document.body.offsetH
if(bodyHeight & divHeight){
var endHeight = parseInt(bodyHeight - divHeight)/2;
dairyBox.style.marginTop = endHeight + "px";
dairyBox.style.marginTop = 0;
dairyBox.style.top = 0;
if(document.all){
window.attachEvent('onload',divMiddle);
window.addEventListener('load',divMiddle,false);
var resizeTimer =
window.onresize = function(){
resizeTimer = resizeTimer?null:setTimeout(divMiddle,0);
注意事项:
根据浏览器的不同onresize被触发的次数都不相同,因此处理的时候要格外小心。
以上就是小编为大家带来的让html元素随浏览器的大小自适应垂直居中的实现方法全部内容了,希望大家多多支持脚本之家~
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具}

我要回帖

更多关于 定位元素居中 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信