8.1 自适应的水平菜单


第7章中,介绍了5个竖直方向菜单的制作方法,相信读者可以体会到CSS的功能非常强大。在本章中,我们将制作6个水平排列的菜单。它们也同样各具特色,而且应用了一些CSS设计中非常重要的技术,例如“滑动门”技术。它不仅仅应用在这里,奉书后面的很多案例中,都会看到“滑动门”技术的应用。

这一节要实现一个简单的水平菜单。这个菜单可以随着浏览器窗口宽度的变化而改变排列方式。当测览器窗口宽度不足以容纳所有的菜单项的时候,会自动折行,如图8.1图所示。

该实例文件位于网页学习网CSS教程资源的“第8章\01\horizonral-navi.htm”。


图1 自适应的水甲菜单效果

它的HTML代码依然是第7章多次使用过的最基本的HTML结构,如下所示。

折叠展开XML/HTML 代码复制内容到剪贴板

  1. <body>
  2. <div id="menu">
  3. <a href="#"> Home</a>
  4. <a href="#"> Contact Us</a>
  5. <a href="#"> Web Dev</a>
  6. <a href="#"> Web Design</a>
  7. <a href="#"> Map</a>
  8. </div>
  9. </body>

接下来设置#menu容器。这里只需要设置文字的样式就可以了。由于宽度会自动水平适应,因此不需要做额外的设置。代码如下:lodidance.com

折叠展开CSS 代码复制内容到剪贴板

  1. #menu {
  2. font-family:Arial;
  3. font-size:14px;
  4. }

下面对菜单项进行设置。代码如下:

折叠展开CSS 代码复制内容到剪贴板

  1. #menu a, #menu a:visited {
  2. display:block;
  3. float:left;
  4. color:#000;
  5. text-decoration:none;
  6. padding:4px;
  7. margin:4px;
  8. border-top:8px solid #9ab;
  9. border-bottom:8px solid #9ab;
  10. whitewhite-space:nowrap;
  11. }

在这段代码中,进行了如下设置。

(1) 把a元素设置为块级元素,并设置为向左浮动,这是使菜单项水平排列,并能够自动适应浏览器窗口的关键。

(2) 设置了文字的颜色和样式。

(3) 设置了内外边距。

(4) 设置了上下边框的样式,图中看到的灰色横线就是这里设置的效果。

最后,设置菜单项的鼠标经过效果,将文字的颜色从黑色变为红色,同时将上下两条粗边框变为黑色,以示和其他菜单项的区别,代码如下。

折叠展开CSS 代码复制内容到剪贴板

  1. #menu a:hover{
  2. color:#f00;
  3. border-top:8px solid #000;
  4. border-bottom:8px solid #000;
  5. }

此时在浏览器中的效果已经正确地显示了鼠标经过效果。

分析:仔细观察图1中的间隔部分,可以看出,菜单项的水平间隔与竖直间隔相同,这个间距是由相邻的菜单项的margin构成的,根据代码可以知道,莱单项的margin是4像素。在前面的例子中曾经描述过,水平的相邻margin会相加在一起形成间隔,因此这里的水平间隔应该是8个像素;而竖直方向相邻的margin会取二者中较大者为间隔距离,这个现象称为“塌陷’。但是从这里可以看到,当盒子设为“浮动”后,即使在竖直方向上的margin相邻。也不会发生“塌陷”,否则这里的竖直间距应该是水平间距的一半,而不是现在看到的效果。这个结论请读者务必记清。

最后,请读者慢慢地把窗口由宽变窄,在某一个位置将会出现图1中所示的效果,也就是在菜单项内部发生了折行,这并不是期望的效果。解决办法是在“#menu a, #menu a:visited”的样式中增加如下CSS规则:

折叠展开CSS 代码复制内容到剪贴板

  1. white-space:nowrap;

这条规则的含义是确保在单词之间的空白处不换行。这时效果如图1所示,图中这两个窗口宽度相同,没有增加这条规则时在菜单项内部折行的效果,图1增加该规则以后的效果。

点击下载第8~17章CSS教程资源 返回《CSS教程布局之道》教程列表

编辑:网页学习网
本文地址:http://www.lodidance.com/css/jc/722.html

8.1 自适应的水平菜单,布布扣,bubuko.com

时间: 2024-10-12 07:34:46

8.1 自适应的水平菜单的相关文章

8.2 自适应的斜角水平菜单

本案例中,制作一个带有斜角的水平菜单.依然和上例一样,它也是可以适应窗口宽度的,效果如图1所示. 该实例文件位于网页学习网CSS教程资源中的“第8章\01\cut-naiv.htm”. 图1 自适应的斜角水平菜单效果 一.基本思路 本案例的关键在于,如何制作出菜单项左上角这个斜角.如果有了上一章中制作“带箭头的菜单”的经验,掌握了使用“钩子“的方法,本案例的实现就很容易了.lodidance.com 对于每一个菜单项的a元素,放置一个span元素,设为corner类别,并作为CSS“钩子”,用于

利用jQuery实现垂直菜单和水平菜单效果

1 利用jQuery实现垂直菜单 1.1 创建VerticalMenu.html文件,内容如下: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <link href="vertical.css" rel="stylesheet"> <script src="jquery-1

jQuery垂直菜单和水平菜单实现

1 创建VerticalAndhorizontalMenu.html文件 <!DOCTYPE html> <html> <head lang="en">     <meta charset="UTF-8">     <link href="VerticalAndhorizontalMenu.css" rel="stylesheet">     <script s

基于jQuery自适应窗口大小导航菜单

基于jQuery自适应窗口大小导航菜单.这是一款响应式导航菜单特效,支持手机导航菜单代码.效果图如下: 在线预览   源码下载 实现的代码. html代码: <h1>jQuery / Zepto响应式菜单 PgwMenu 演示</h1> <p class="dowebok-explain">请缩小/放大浏览器窗口宽度查看效果</p> <h2>深色样式(默认)</h2> <ul class="pgwM

高度自适应的水平垂直居中布局

高度自适应实现水平垂直居中 方法一 CSS3中有transform属性,此属性下有一个translate移动函数,此函数接受两个参数.如果两个参数都为百分比值,此时会基于自身宽度和高定进行移动.此函数移动的机制同position:relative相似. <div class="container">Hello World!</div> .container { position: absolute; top: 50%; left: 50%; transform:

css+html实现自适应宽度的菜单学习

本文是利用css和html实现自适应于文本长度菜单. 实现后的效果图,如下: 实现代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>menu4.html</title> <meta http-equiv="keywords" content="keyword1,

微信 小程序布局 水平菜单

<!-- 菜单列表部分 --> <view class="wear-menu"> <view class='menu-box' wx:key="menu" wx:for="{{menuList}}" wx:for-index="index"> <view class="menu-img" bindtap="selectMenu" data-ind

web水平菜单导航

效果: HTML代码: <!doctype html><html><head><meta charset="utf-8"><title>菜单导航垂直菜单</title><link rel="stylesheet" type="text/css" href="style.css"></head> <body><ul&

jQuery 菜单 水平菜单的实现

html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>jquery</title> <script type="text/javascript" src="js/jquery-3.0.0.min.js"></script> <script type="tex