导航栏的布局

做导航栏的步骤及方法:

目标:

1.布局,画图

2.编写Html文档及代码

  • 布局:一个div盒子里面放置一个无序列表
  • 具体代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>导航栏</title>
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
<div id="menu">
    <ul>
        <li><a id="current" href="#">首页</a></li>
        <li><a href="#">网页版式</a>
            <ul>
                <li><a href="#">自适应宽度</a></li>
                <li><a href="#">固定宽度</a></li>
            </ul>
        </li>
        <li><a href="#">web教程</a>
            <ul>
                <li><a href="#">新手入门</a></li>
                <li><a href="#">视频教程</a></li>
                <li><a href="#">常见问题</a></li>
            </ul>
        </li>
        <li><a href="#">web实例</a></li>
        <li><a href="#">常用代码</a></li>
    </ul>
</div>
</body>
</html>

效果如下:

3.我们去对写的html利用css进行布局,修饰。

首先分析html代码,从body进行布局,然后从最大的div开始,首先是div的高度和宽度开始,

  • css代码修饰:
body {
    font-family: Verdana;
    font-size: 12px;
    line-height: 1.5;
}
#menu {
    width: 435px;
    height: 28px;
    margin: 0 auto;
    border-bottom: 3px solid #E10001;
     background-color: #61BFFF;
}

解释:对该div上面的id选择器进行布局:这里给个背景就是为了方便观看,最后只需要去掉背景色就可以了,利用 margin: 0 auto;对该div进行水平居中,并且在div的下部给个边框 border-bottom: 3px solid #E10001;效果如下图:

4.接下来对该无序列表进行横行排列

并且去掉该无序列表前面的圆点:

css代码:

#menu ul {
    list-style: none;
    margin: 0;
    padding: 0;
}
#menu ul li {
    float: left;
}

解释:利用后代选择器进行修饰: list-style: none;去除圆点,float: left;使得无序列表横向。效果如下图:

5.利用后代选择器对a标签进行修饰:

css代码:

a {
    color: #000;
    text-decoration: none;
}
a:hover {
    color: #F00;
}

#menu ul li a {
    display: block;
    width: 87px;
    height: 28px;
    line-height: 28px;
    text-align: center;
     font-size: 14px;
    background: url("../images/bg.png") 0 -30px no-repeat;
   
}
#menu ul li a:hover {
    background: url("../images/bg.png") 0 -56px no-repeat;
}

解释:

  • 首先单纯的对a标签进行修饰: color: #000;给a标签的字体给个颜色, text-decoration: none;去掉a标签下面的下划线。
  • 然后我们通过伪类选择器进行修饰,a:hover {color: #F00;}效果是使得鼠标点击的时候,字体的颜色为 #F00。
  • 其次是通过后代选择器#menu ul li a对a标签进行布局, display: block;就是将元素显示为块级元素。这样使得a标签变成块元素。
  • 然后给a标签设置大小:width: 87px;height: 28px;。对a标签里面的文字进行垂直和水平居中:text-align: center;line-height: 28px;。
  • 设置字号:font-size: 14px;这个就是设置字号,,。。。。
  • 通过复合属性background: url("…/images/bg.png") 0 -30px no-repeat;设置背景,通过0 -30px 对一张图片进行移动。(*注意不要习惯的去用background-image: ;**url("…/images/bg.png") 0 -30px no-repeat;*里面有多个属性值,必须的要去用符合属性,所以你不能一个人去拥有多个妻子,这是不正确的,不合法的)

6.最后一步:利用伪类选择器对鼠标悬停上面的样式做修饰。

#menu ul li a:hover {
    background: url("../images/bg.png") 0 -56px no-repeat;
}
#menu ul li a#current {
    background: url("../images/bg.png") 0 0 no-repeat;
    font-weight: bold;
    color: #fff;
}

解释:

  • #menu ul li a:hover {
    background: url("…/images/bg.png") 0 -56px no-repeat;}还是和前面的原理一样,通过移动,进行背景的设置。
  • font-weight: bold;和color: #fff;对字体进行加粗,并且设置字体的颜色。

效果如下:

6.最后,去除背景色,完成了。。。。。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>导航栏</title>
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
<div id="menu">
    <ul>
        <li><a id="current" href="#">首页</a></li>
        <li><a href="#">网页版式</a>
            <ul>
                <li><a href="#">自适应宽度</a></li>
                <li><a href="#">固定宽度</a></li>
            </ul>
        </li>
        <li><a href="#">web教程</a>
            <ul>
                <li><a href="#">新手入门</a></li>
                <li><a href="#">视频教程</a></li>
                <li><a href="#">常见问题</a></li>
            </ul>
        </li>
        <li><a href="#">web实例</a></li>
        <li><a href="#">常用代码</a></li>
    </ul>
</div>
</body>
</html>

CSS

body {
    font-family: Verdana;
    font-size: 12px;
    line-height: 1.5;
}
#menu {
    width: 435px;
    height: 28px;
    margin: 0 auto;
    border-bottom: 3px solid #E10001;
    background-color: #61BFFF;
}
#menu ul {
    list-style: none;
    margin: 0;
    padding: 0;
}
#menu ul li {
    float: left;
}
#menu ul li a {
    display: block;
    width: 87px;
    height: 28px;
    line-height: 28px;
    text-align: center;
    background: url("../images/bg.png") 0 -30px no-repeat;
    font-size: 14px;

}
a {
    color: #000;
    text-decoration: none;
}
a:hover {
    color: #F00;
}
#menu ul li a:hover {
    background: url("../images/bg.png") 0 -56px no-repeat;
}
#menu ul li a#current {
    background: url("../images/bg.png") 0 0 no-repeat;
    font-weight: bold;
    color: #fff;
}

附加:

导航栏中的下拉菜单:

在上面的基础上继续添加:

1.首先编写html代码:

<ul>
        <li><a id="current" href="#">首页</a></li>
        <li><a href="#">网页版式</a>
            <ul>
                <li><a href="#">自适应宽度</a></li>
                <li><a href="#">固定宽度</a></li>
            </ul>
        </li>
        <li><a href="#">web教程</a>
            <ul>
                <li><a href="#">新手入门</a></li>
                <li><a href="#">视频教程</a></li>
                <li><a href="#">常见问题</a></li>
            </ul>
        </li>
        <li><a href="#">web实例</a></li>
        <li><a href="#">常用代码</a></li>
    </ul>

注:在以前的无序列表ul中,继续进行嵌套。在没有css代码进行修饰的时候,布局就会打乱,我们后面进行布局就好了,先不要着急。。。。出现的效果如下:

2.用css将上面的html文档进行修饰

#menu ul li ul {
    border: 1px solid #ccc;
    display: none;
    position: absolute;
}
#menu ul li ul li {
    float: none;
    width: 87px;
    background: #eee;
    margin: 0;
}

注: 对该列表进行一个固定定位 position: absolute;我们前面就已经有一个相对定位作为父容器了。并对该列表进行浮动,设置背景。效果如下:

3.对列表进行隐藏,伪类修饰

#menu ul li ul li a {
    background: none;
}
#menu ul li ul li a:hover {
    background: #333;
    color: #fff;
}
#menu ul li:hover ul {
    display: block;
}
#menu ul li.sfhover ul {
    display: block;
}

注:利用伪类选择器:在鼠标点击时,使得下拉列表显示出来,并设置一个点击时,字体的颜色。

完整代码:

html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>导航栏</title>
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
<div id="menu">
    <ul>
        <li><a id="current" href="#">首页</a></li>
        <li><a href="#">网页版式</a>
            <ul>
                <li><a href="#">自适应宽度</a></li>
                <li><a href="#">固定宽度</a></li>
            </ul>
        </li>
        <li><a href="#">web教程</a>
            <ul>
                <li><a href="#">新手入门</a></li>
                <li><a href="#">视频教程</a></li>
                <li><a href="#">常见问题</a></li>
            </ul>
        </li>
        <li><a href="#">web实例</a></li>
        <li><a href="#">常用代码</a></li>
    </ul>
</div>
</body>
</html>

css:


body {
    font-family: Verdana;
    font-size: 12px;
    line-height: 1.5;
}

a {
    color: #000;
    text-decoration: none;
}

a:hover {
    color: white;
}

#menu {
    width: 445px;
    height: 28px;
    margin: 0 auto;
    border-bottom: 3px solid #E10001;
}

#menu ul {
    list-style: none;
    margin: 0px;
    padding: 0px;
}

#menu ul li {
    float: left;
    margin-left: 2px;
}

#menu ul li a {
    display: block;
    width: 87px;
    height: 28px;
    line-height: 28px;
    text-align: center;
    background: url(../images/bg.png) 0 -30px no-repeat;
    font-size: 14px;
}

#menu ul li a:hover {
    background: url(../images/bg.png) 0 0 no-repeat;
}

#menu ul li a#current {
    background: url(../images/bg.png) 0 0 no-repeat;
    font-weight: bold;
    color: #fff;
}

#menu ul li ul li {
    float: none;
}

#menu ul li ul li a {
    background: none;
}

#menu ul li ul {
    border: 1px solid #ccc;
}

#menu ul li ul li {
    float: none;
    width: 85px;
    background: #eee;
    margin: 0;
}
#menu ul li ul li a {
    background: none;
}
#menu ul li ul li a:hover {
    background: #333;
    color: #fff;
}
#menu ul li ul {
    display: none;
    border: 1px solid #ccc;
}
#menu ul li:hover ul {
    display: block;
}
#menu ul li.sfhover ul {
    display: block;
}


虽然简单,但是是为了记录整个过程,希望这个过程能够帮助你,代码不是固定的,但是分析过程是个人的一个建议,因为这个样式在好多导航栏都适用,只要学会,导航栏对你很简单,这也是个人自己的理解,希望能够帮到屏幕前你。。。。。。。。

效果如下:使劲戳我:[nav.xiaoyinwh.cn](http://nav.xiaoyinwh.cn)

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 导航栏通常有两种布局方式:底部导航栏和顶部导航栏。下面是两种布局方式的实现方法: 1. 底部导航栏布局: 使用 `BottomNavigationView` 控件可以很方便地实现底部导航栏布局。在 XML 布局文件中添加 `BottomNavigationView` 控件并设置菜单项,如下所示: ```xml <com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/bottom_navigation" android:layout_width="match_parent" android:layout_height="wrap_content" app:menu="@menu/bottom_navigation_menu" /> ``` 在代码中为 `BottomNavigationView` 设置菜单项的点击事件: ```java BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation); bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.action_home: // 处理点击首页菜单项的事件 break; case R.id.action_discover: // 处理点击发现菜单项的事件 break; case R.id.action_me: // 处理点击我的菜单项的事件 break; } return true; } }); ``` 2. 顶部导航栏布局: 使用 `Toolbar` 控件可以很方便地实现顶部导航栏布局。在 XML 布局文件中添加 `Toolbar` 控件并设置标题和菜单项,如下所示: ```xml <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:elevation="4dp" android:theme="@style/ThemeOverlay.AppCompat.ActionBar" app:title="My App"> <Menu android:id="@+id/menu" app:showAsAction="never" app:menu="@menu/toolbar_menu" /> </androidx.appcompat.widget.Toolbar> ``` 在代码中为 `Toolbar` 设置菜单项的点击事件: ```java Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.action_search: // 处理点击搜索菜单项的事件 break; case R.id.action_settings: // 处理点击设置菜单项的事件 break; } return true; } }); ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值