footer定位,底部居中

footer定位底部
起初我的打算是用绝对定位,脱离文本流,参照浏览器左上角定位,设置TRBL作为原点
此时我的代码如下

foo_container{

position: absolute;
bottom: 100px;
text-align: center;

}
这个时候的footer的定位情况

2017-03-08 19-07-52屏幕截图.png

可以发现,文本确实是固定于底部了,于是我此时认为,footer的div应该是已经在底部了,只不过是文本没有居中罢了,然而我调整了文本的text-align或者margin等属性,发现依然没有任何动静,后来经过了测试发现,原来是父级的foo_container出现了问题,解决此问题只需要在其中加入width:100%即可,原来,我之前总体的auto不起作用的原因竟是因为没有规定好width
考虑到不同尺寸显示器的兼容问题,可以调用js动态的设置width值


<script>
var w=window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;
var h=window.innerHeight
|| document.documentElement.clientHeight
|| document.body.clientHeight;
document.getElementById("foo_container").style.width=w + "px";
</script>

然而此时仍然出现问题:缩小水平方向的窗口,那么以上设置等于0,窗口改变之后,不会随窗口变化而变化,也就是不再是当前显示的有效窗口居中,也就是出现了滚动条
垂直方向上移的问题可以通过设置top值来解决。但是设置top后bottom就无用了(逻辑上这个肯定冲突,设置了top已经定位了,又设置了bottom,那么浏览器听谁的?同理left和right也存在悖论),具体的可以试一下,那怎么办呢?
问题的根源在于使用绝对定位和设置bottom时,footer是跟随浏览器窗口变化而变化的,那我们要做的就是打破这种格局。
解决思路1、当界面上下伸缩时,动态调整css样式即可:具体为当达到某一位置时,使用buttom定位,当超过这个位置时,使用top定位,这样就可以保证,缩小到某一个值时距离顶部距离不变,放大到超过这个值时,距离底部不变。具体实现如下代码:

<script>
function myFunc() {
//获取窗口高度
if (window.innerHeight)
winHeight=window.innerHeight;
else if ((document.body) && (document.body.clientHeight))
winHeight=document.body.clientHeight;
//通过深入Document内部对body进行检测,获取窗口大小
if (document.documentElement && document.documentElement.clientHeight &&
document.documentElement.clientWidth)
{
winHeight=document.documentElement.clientHeight;
}
if (parseInt(winHeight)<750){
document.getElementById("footer").setAttribute("class", "dAdjustTop");
/document.getElementById("inputtext").value=winHeight+" "+document.getElementById("footer").getAttribute("class");/
} else {
document.getElementById("footer").setAttribute("class", "dAdjustButtom");
/document.getElementById("inputtext").value=winHeight+" "+document.getElementById("footer").getAttribute("class");/
}
}
</script>
.dAdjustButtom{
position: absolute;
bottom: 100px;
}
.dAdjustTop{
position: absolute;
top: 530px; /* 750-120-100 JS中tag-footer的height-mid的padding-bottom*/
}

总结:1、水平居中可以使用width: 100%和text-align: center;来搞定;

2、垂直居中并实现动态变化可以使用onresize事件+js动态设置布局(position: absolute; 以及top/bottom)来实现;
3、 图片在div中居中设置:使用margin: 0px auto;

4、怎么保证左右拉伸时图片和输入框的绝对居中效果不变,设置最小宽度min-width的值一致即可!其他使用了display: inline-block的元素同理;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放...
    孤魂草阅读 4,444评论 0 0
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,690评论 1 92
  • 1、垂直对齐 如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,...
    kiddings阅读 8,404评论 0 11
  • 直接上代码了 LeBaseTabView.h里面 ```#import@interface LeBaseTabVi...
    writeSpace阅读 4,276评论 2 3
  • 曾经有人说,成大事者必经以下三种境界:“昨夜西风凋碧树,独上高楼,望尽天涯路”,此第一境界也;“衣带渐宽终不悔,为...
    循爸循妈阅读 1,414评论 0 1

友情链接更多精彩内容