CSS:一种基于包装元素的标题栏及导航栏内容居中显示方案

概要

本文旨以常规HTML元素及CSS样式为基础,通过添加包装元素,以实现网页标题栏及导航栏内容的居中显示。效果如下:
在这里插入图片描述

实现代码

实现该效果的源代码如下:
JSX代码:

import React, { Component } from 'react';
import './style.css';

class App extends Component {
    constructor(props) {
        super(props);

    }

    render() {
        return (
            <div>
                <header className="masthread">
                    <div className="wrapper">
                        <h1>My Page content</h1>
                    </div>
                </header>
                <nav role="navigation" className="navbar">
                    <div className="wrapper">
                        <ul className="navlist">
                            <li><a href="/">Home</a></li>
                            <li><a href="/">World</a></li>
                            <li><a href="/">Local</a></li>
                            <li><a href="/">Sport</a></li>
                        </ul>
                    </div>
                </nav>
            </div>
        );
    }
}
export default App

样式代码:

.wrapper {
    width: 95%;
    max-width: 76em;
    margin: 0 auto;
}

.masthread {
    background-color: deepskyblue;
    /* 为使标题栏不至于自动收缩至与内容等高,通过设置padding为其增加高度 */
    padding: 20px;
}

.masthread h1 {
    margin: 0;
}

.navbar {
    overflow: hidden;
    background-color: rgb(216, 172, 29);
    padding: 10px;
}

.navlist {
    height: 20px;
    /* ul元素自带padding和margin默认值,需通过手动设置消除 */
    padding: 0px;
    margin: 0;
}

.navlist li {
    float: left;
    width: 90px;
    list-style: none;
}

实现原理

网页结构
该网页的核心HTML包含两个,包括基于header元素创建的标题栏和基于nav元素创建的导航栏。在nav元素下添加一个无序列表ul,以实现导航栏内容的添加,每个导航按钮对应一个独立列表元素li,在其下加入元素a以实现超链接功能。此外,为实现水平居中效果,在标题栏和导航栏的下分别增加一个包装元素(样式为wrapper)

显示方案
标题栏和导航栏内容居中显示的方案完全一致,方案包括如下两个方面——水平居中和垂直居中。

(一)水平居中显示方案
内容的水平居中通过包装元素wrapper实现,即将要显示的标题(或导航栏)内容包装于wrapper之内,通过wrapper的样式为内容(标题名或导航栏名称)的显示进行限制和约束。
wrapper样式代码为:

.wrapper {
    width: 95%;
    max-width: 76em;
    margin: 0 auto;
}

其约束包含两个方面:
(1)宽度width。通过设置width,使得子内容(标题名h1)的宽度仅占父元素(masthread)宽度的95%,从而达到水平上的收缩;
(2)边距margin。将其设置为margin:0 auto,去掉了内容的上下外边距,同时将父元素的水平剩余空间分别向左右侧平均分配(左右侧边距各占父元素的2.5%),从而使内容达到居中效果

(二)垂直居中显示方案
内容的父元素mashread和navbar,以及包装元素wrapper均未设置高度height,因此其高度会自动向作为内容的子元素h1和navlist收缩,这样便会导致内容与父元素等高,很不美观。为增加父元素高度,同时令内容垂直居中,这里通过设置padding达到目的。(如果使用height,则仅能增加高度,而作为内容的子元素会紧贴上侧,无法达到垂直居中效果)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值