码迷,mamicode.com
首页 > Web开发 > 详细

Web前端从入门到精通-12 css简介

时间:2015-09-13 13:10:59      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:

好的,在之前的11节课中

我们从对编程语言一无所知的状态循序渐进的了解了很多知识

包括html页面结构,css引入的几种方式,浮动,清除浮动,盒模型等等

现在是发挥这些知识用武之地的时候了

我们在上网浏览网页的时候不知道大家有没有注意过

在网页的最上面会有一个导航,比如

技术分享

鼠标移入之后还会高亮显示

那么我们今天就利用我们之前学的东西做这样一个导航

首先,大家可以想象一下这个导航的大概结构是什么样子的呢?

可以不可以在外面有个大div作为父级

然后里面放上4个小div,一个div里面就是一项

当然没有问题

不过我们需要注意的是

我们写的html除了把效果做出来之外还要注意它的语义化

意思就是说div标签是用来确定页面具体结构的

那就尽量不要用div来表示页面当中的一个段落

因为p标签就是专门为了展现文章中的段落的

我们这个地方也是同理

一看到长的模样差不多的,有好几项排在一起的

第一反应应该是用列表

这里也不例外,我们要用ul和li来实现这个结构

具体代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>xxx</title>
    <style type="text/css">
    *{margin:0; padding:0;}
    </style>
</head>
<body>
    <ul class="navWrap">
        <li>课程</li>
        <li>计划</li>
        <li>分享</li>
        <li>社区</li>
    </ul>
</body>
</html>

这个时候预览,想必结果与预期差十万八千里

技术分享

所有内容都挤在了左上角那个旮旯里面

而且人家导航是横着排的,咱们的是竖着排的

那么首先解决第一个问题

怎么让我们的导航与浏览器的边界稍微有点距离,方便我们看

此时,应该能想到我们的盒模型

我们给最外层的ul加上一个margin:100px;

这样看就方便多了

技术分享

好的,这时容我多说一句废话,我们加上margin:0 auto;让它居中可以吗?

答案是No

因为我们并没有给ul加宽度

而浏览器不会自动去计算ul有多宽

所以浏览器没办法知道我们的ul有多宽

所以即使知道了目前浏览器有多宽

也得不到ul到两边的距离

好的,此外加了margin之后还有一个东西很讨厌

就是每一项文字的前面有个小黑点

记得之前不知道在哪节课当中提到过

这个东西是li自带的一个叫做list-style的样式

看着不顺眼的话可以直接给它干掉——list-style:none;

这个东西我们一般都是不需要的,所以可以在所有样式的最上面加上li{list-style:none;}

*{margin:0; padding:0;}
li{list-style: none;}
.navWrap{ margin:100px;}

技术分享

接下来解决第二个问题,那就是想办法让它们横起来

这个之前我们也有介绍过,就是用float:left;

加上之后效果就是

技术分享

当然这个时候问题也很明显了

都挤到一块儿了,这哪能行

当然这个问题很好办,给li加上padding就OK

但是比这个问题更严重的是子元素加了浮动之后就会飘起来,父元素的高度就会变成0

也就是说ul的高度现在是0

不知道大家注意到这点了没有

但是一定会有哥们儿来反驳

哪有啊,这页面上看着不是好好的吗

对,是好好的,现在我们给ul加一个border再看看

技术分享

为什么在文字的上面出现了一条粗的黑线呢?

原因很简单,就是因为ul的高度成了0,所以上下border挤在一起了

至于ul高度成了0造成的后果自己去翻前面的课程,就不再废话了

这里我们也知道该怎么做了

那就是清除浮动

清除浮动的方法就是给父级加上.clear:after类

这些知识之前都有介绍,我们都不再多说

    <style type="text/css">
    *{margin:0; padding:0;}
    li{list-style: none;}
    .clear:after{content:""; display: block; clear:both;}
    .navWrap{ margin:100px; border:1px solid black;}
    .navWrap li{ float:left; padding:30px;}
    </style>

 

技术分享

模样大概出来了,最后就是一些修饰性的工作

我们给li加个背景,关于背景的颜色,多扯一句

我们之前基本上都是用red、yellow、black这些来表示颜色

但是大家稍微想想这些单词才能表示多少种颜色呢?

所以颜色还有另外一种表示方法,那就是十六进制表示法

这种表示方法用一个#号,后面跟3位或6位十六进制数

注意是十六进制数,所以#后面的数字有可能是0 1 2 3 4 5 6 7 8 9 a b c d e f

当#号后面是三位十六进制数时,从左到右数每一位分别代表红色光强,绿色光强,蓝色光强

当#号后面是六位十六进制数时,从左到右数每两位一组分别代表红色光强,绿色光强,蓝色光强

光强即光的强度,这个在物理当中大家都应该接触过

例如:#FF0000或者#F00就代表红色

#00FF00或者#0F0就代表绿色

#00CC00或者#0C0就代表比#00FF00稍微深一些的绿色,因为光强减弱

如果将三位或者六位十六进制数都写成0,即#000000或者#000,就代表光强为0

也就是没有光照射,那自然就是黑色

如果将三位或者六位十六进制数都写成F,即#FFFFFF或者#FFF

就代表红、绿、蓝三种颜色的色光都以最强的光强照射

那么就是白色

所以越接近#FFF,颜色就越白

而越接近#000,颜色就越黑

在这里我们给li加上一个background为#333的颜色

这时就一定要把文字的颜色改成白色了,否则一片漆黑

所以同时还要加上color:#FFF;

技术分享

好的,目前感觉越来越像了

但是鼠标移上去,该是什么颜色还是什么颜色

所以我们最后再加一句.navWrap li:hover{background:#777;}

技术分享

最终的代码我给大家贴出来

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>xxx</title>
    <style type="text/css">
    *{margin:0; padding:0;}
    li{list-style: none;}
    .clear:after{content:""; display: block; clear:both;}
    .navWrap{ margin:100px; border:1px solid black;}
    .navWrap li{ float:left; padding:30px; background: #333; color:#FFF;}
    .navWrap li:hover{ background: #777;}
    </style>
</head>
<body>
    <ul class="clear navWrap">
        <li>课程</li>
        <li>计划</li>
        <li>分享</li>
        <li>社区</li>
    </ul>
</body>
</html>

好的,看到这里,先别急着高兴

我们的这个导航的细节问题还有很多

例如:一般我们看到的导航鼠标移上去都会变成一个小手

但是我们的没有

其次,如果我们把最后一个li里面改成“社区讨论”四个字

那么相应的这个li会自动变宽

技术分享

当然,你可能认为这样挺好的,还可以自适应

但是同时也带来了不太美观的问题

因为我们有时还是希望每一项的宽都是一样的,这样看起来更整齐一点

但是我们现有的程序目前也很难实现这个效果

因此关于这个导航,我们还有很多话要给大家扯

我们下节课再见

Web前端从入门到精通-12 css简介

标签:

原文地址:http://www.cnblogs.com/zhaohuiziwo901/p/4804590.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!