CSS——未知宽度 ul 在 nav 里居中

引入

在前端学习中,如果想让一个小 div 在大的 div 里居中,并且是自适应的话,一般采用

小 div 绝对定位,大 div 相对定位,定位到大 div 的宽高一半的位置,再上下各 margin 负的小 div 宽高的一半

代码如下:
html:

	<div class="father">
	    <div class="son"></div>
	</div>

css:

	*{
        margin:0;
        padding:0;
    }
    html,body{
        width: 100%;
        height: 100%;
    }
	.father{
	    width: 30%;
	    height: 30%;
	    margin: 0 auto;
	    position:relative;
	}
	.son{
	    position:absolute;
	    width: 50%;
	    height: 50%;
	    left:50%;
	    top:50%;
	    margin-left:-25%;
	    margin-top:-12.5%;
	}       

效果如图所示:
小div在大div里自适应居中
需要注意的是
.son 里的 margin-top 的百分比是基于父元素而不是子元素本身,所以是 -12.5%,而不是 25%


下面回到我们要解决的问题来→

问题描述

上面的方法尽管都是用百分比来写,但也是大小 div 都已知宽高的情况

如果遇到了小 div 宽度未知的情况该如何让其在父元素里居中呢?

这个问题最常见的例子就是 ul 菜单列表在导航栏 nav 里居中,在我自己临摹静态页面的时候经常会遇到这个问题,但是还是萌新的我一直得不到解决方法,后来经过前辈指点才有了如下的解决方案

解决方法

给父元素设置 text-align:center;
给子元素设置 display:inline;

这样就可以解决这个问题,例子如下:
html:

	<nav>
        <ul>
            <li>菜单1</li>
            <li>菜单2</li>
            <li>菜单3</li>
            <li>菜单4</li>
            <li>菜单5</li>
        </ul>
    </nav>

css:

	*{
        margin:0;
        padding:0;
    }
    html,body{
        width: 100%;
        height: 100%;
    }
    nav{
        width: 100%;
        height: 80px;
        text-align: center;
        border:2px #F66 solid;
    }
    ul{
        list-style: none;
        line-height: 80px;
        display: inline-block;
        border: 2px #66CCFF solid;
    }
    li{
        float:left;
        margin-left:40px;
        font-size:30px;
    }
    li:nth-of-type(1){
        margin-left:0;
    }

效果如图所示:
未知宽度 ul 在 nav 里居中
需要说明的是:

1、为了让文字垂直居中,设置子元素的 line-height 属性值 = 父元素的高度
2、 为了让菜单之间有间隔,设置 li 的 margin-left 属性值,并把第一个 li 的 margin-left 属性值设为 0

学习心得

这次遇到的问题是我在画页面的时候经常会遇到的问题,在这里要感谢前辈的指导啦QUQ

以上

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下方法将导航栏居中: 1. 使用 text-align 属性将导航栏文字居中,例如: ```css nav { text-align: center; } ``` 2. 使用 margin 属性将导航栏容器居中,例如: ```css nav { margin: 0 auto; } ``` 3. 将导航栏容器设置为 flex 容器,并使用 justify-content 和 align-items 属性将导航栏居中,例如: ```css nav { display: flex; justify-content: center; align-items: center; } ``` ### 回答2: 要让导航栏居中,可以使用CSS的一些属性和技巧来实现。 首先,我们可以通过设置导航栏容器的宽度为100%,并使用CSS的属性`text-align: center`将导航栏内的内容水平居中对齐。 如果导航栏是一个ul列表,我们可以给ul设置`display: inline-block`属性,使其变成一个行内块元素,然后再使用`text-align: center`将其内部的li元素水平居中对齐。 另外,还可以使用CSS的`flexbox`来实现导航栏的居中。可以给导航栏容器添加`display: flex`属性,并使用`justify-content: center`将导航项水平居中对齐。 如果导航栏的宽度固定,可以通过使用`margin: 0 auto`来实现水平居中。将左右外边距设置为`auto`,并将上下外边距设置为0,这样导航栏将在容器中水平居中。 最后,可以使用CSS的`position`属性来实现导航栏的居中。可以将导航栏容器设置为绝对定位`position: absolute`,然后使用`left: 50%`将其左侧定位到父容器的中间位置,再结合使用`transform: translateX(-50%)`来水平居中。 总而言之,有多种方法可以让导航栏居中,可以根据具体情况选择使用哪一种方法来实现。 ### 回答3: 要让导航栏居中,可以使用以下CSS样式: 1. 首先,给导航栏的父元素设置一个固定宽度,并且将其设置为居中对齐。可以使用`margin: 0 auto;`来实现。例如: ```css .nav-container { width: 900px; margin: 0 auto; } ``` 2. 然后,将导航栏的子元素(导航项)设置为`display: inline-block;`,这样它们会在同一行显示,并且会根据父元素的居中对齐方式自动居中。例如: ```css .nav-item { display: inline-block; } ``` 3. 最后,可以为导航栏的父元素设置`text-align: center;`,以确保导航项在水平方向居中对齐。例如: ```css .nav-container { text-align: center; } ``` 通过以上步骤,就可以让导航栏在页面中居中显示了。记得将以上样式应用于您的HTML代码中相应的元素上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值