关于居中布局的问题

关于居中布局的问题

有几个问题想要请教一下:

1、div使用 absolute 绝对定位脱离常规流以后,是不是 text-align 的水平居中就会失效呢,如果是,那此时需要怎样才能使得 div 的内容水平居中显示?

    如代码所示:由于在 bottom div 内我使用了无序列表来排列导航项,此时我可以使用 float:left 使得列表项横向排列,但在这种情况下,我 bottom 选择器内使用 text-align 属性无法使得列表居中,相反,当我使用display: inline-block;使得列表项横向排列以后,text-align 属性可以正常使得列表居中显示了

2、为什么有时候在 div 内使用 line-height:(等于 div元素高度)实现不了垂直居中呢?是受到了哪些因素的影响?

    如代码所示,bottom 选择器内设置了高度为60px,为什么设置 line-height 为60px 时却并不能使得列表项垂直居中显示呢?此时只能调整 line-height 为30px或者设置left:0;right:0;margin:auto;以后可以实现垂直居中,但是高度一旦变化以后就需要随之调整(不是高度的50%的比例)才能适应垂直居中。

有什么方法能设置自动适应 div 的高度变化而实现内容自动垂直居中的吗?

    

有了解的童鞋或者老师,烦请解答一下,谢谢!做了几次练习题,都是被这个问题困扰着。

.bottom{
    width: 100%;
    height: 60px;
    background: black;
    position: fixed;
    bottom:0;
    text-align: center;
    /*display: inline-block;*/
    /*line-height: 60px;*/
    /*left:0;
      right:0;
      margin:auto;*/
}
.bottom ul li {
    float: left;
    text-decoration: none;
    list-style: none;
    color: white;
    font-family: "微软雅黑";

    /*text-align: center;*/
    /*margin-right: 30px;*/
    /*display: inline-block;*/
    margin: auto 30px;
}
<div class="bottom">

        <ul>
            <a href="#"><li>网站首页</li></a>
            <a href="#"><li>企业合作</li></a>
            <a href="#"><li>人才招聘</li></a>
            <a href="#"><li>联系我们</li></a>
            <a href="#"><li>常见问题</li></a>
            <a href="#"><li>友情链接</li></a>
        </ul>

</div>


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

第一个问题:

对于设置定位元素的居中方法:

假设该元素宽和高度都为200px,设置水平居中,先定位左50%,然后margin-left:负元素宽度一半,如left:50%,margin-left:-100px;,垂直top:50%,margin-top:-100px;

第二个问题:

  1. 首先将相应元素默认样式去掉。

  2. a标签写在li内

参考如下:

*{margin:0px;padding: 0px;}
.bottom{
    width: 100%;
    height: 60px;
    background: black;
    position: fixed;
    bottom:0;
    text-align: center;    
    line-height: 60px;    
}
.bottom ul li {
    float: left;
    text-decoration: none;
    list-style: none;
    color: white;
    font-family: "微软雅黑";
    margin: auto 30px;    
}

希望解答你的疑惑,加油!

  • 鱼蛋肠粉 提问者 #1
    非常感谢!一直没留意默认样式的问题
    2018-01-16 22:54:04
  • 为啥最后非要加float:left;?
    2018-01-22 17:31:20
  • 添加float:left;,是为了让li左浮动,在一行显示,根据需求来设置样式。
    2018-01-22 17:53:52
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师