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

好的,在之前的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会自动变宽

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

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

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

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

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

我们下节课再见

时间: 2024-12-19 06:48:41

Web前端从入门到精通-12 css简介的相关文章

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

欢迎大家回来,前段时间给大家介绍了浮动以及清除浮动的相关内容 上节课到最后我们留了一个小问题 如果所有的子元素都没有加浮动,父级不设置高度时,父级的高度会不会随子级的高度自动撑开 我们可以通过下面的代码来测试 .ul1{ width:102px; border:2px solid red;} .ul1 li{ width:100px; height:100px; border:1px solid black;} <ul class="ul1"> <li><

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

欢迎回来,上节课没有给大家留什么问题,但是介绍了一个很重要的问题,那就是css的层叠优先级顺序: 行间样式>id选择器>类选择器>元素选择器 好的,复习到此结束,接下来我们继续学我们的css 这节课要讲一个很重要也是理解起来略有困难的东西——浮动 之前的课程中我们举了好几个列表的例子,但无一例外的是所有的列表都是竖着成一排的 那么怎么让它们横起来呢?——就是用我们的浮动(float) 在正式介绍浮动这个东西之前,我们先来说个知识点——块元素和内嵌元素 什么意思呢?不知道大家是否发现了一个

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

欢迎回来,上节课的话我们做了一个导航 总体来说还能看,但是也有一些小问题 首先,当我们把鼠标移上去的时候不变成小手 这个看起来最不舒服了 所以先从这里开刀 说到这里了,想和大家沟通一个问题 我们平时上网的时候鼠标放到什么地方才变成小手呢? 是不是可以点的地方呢? 可以点的话意味着什么? 意味着是一个链接对不对 链接的话在我们的html里面毫无疑问就是a标签了 好的,说到这里脾气着急的马上就会说,那就用a标签包裹文字不就完事儿了? 话一说完,代码就会被改成这样 <!DOCTYPE html> &

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

上节课呢,我们介绍了一个很重要的概念——盒模型 主要介绍了盒模型的一些基础知识:margin padding的概念 以及margin:0 auto;和margin的塌陷 如果对上述知识点还有不清楚的地方大家一定要弄懂 要不然再往下看的话比较费劲 这节课的话我们接着上节课的话题继续扯 实际上关于margin的话题还远远不止我们上节课说的那些问题 我们再看下面一个布局: <!DOCTYPE html> <html lang="en"> <head> &l

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

上节课我们主要介绍了三种css的选择器 结束的时候留了一个小问题,不知道大家还有没有记得 当多种选择器同时对一个元素操作时,会有什么情况呢? 不知道大家试了没有 先说句题外话,可能有的朋友说 你闲的蛋疼用多种选择器操作一个元素 我让一种选择器操纵一个元素不就可以了吗 我们学一个东西往往是为了用的,而不是为了装13的 所以我提出的这个问题自然有它的价值所在 接下来我会给大家分析 还拿我们的列表做例子,这次给大家举一个百度首页的例子 百度的推荐导航列表这里是不是我们的鼠标移上去的那一个块儿 外面会出

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

欢迎大家回来,上节课我们又说了margin的一个bug 那就是子元素的margin-top会传递给父元素 解决方案也已经给出来了,在此不再废话 此外还说了默认样式的清零,这个的话我个人感觉无所谓了 平时自己写代码测试的时候就直接上*{margin:0; padding:0;} 之前我们讲解盒模型的时候一直都是拿div举例子 那么我们知道,div天生就是个块元素 所以我们之前见到的那一堆margin.padding的规则都是针对块元素的 那不知道大家有没有自己测试过内嵌元素的盒模型 我们接下来就和

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

上节课我们说到了标签以及标签的属性 比如一个div标签,它的属性有width height background对吧? 也就是 <div width="100px" height="100px" background="red"></div> 如果你的回答是对 那么恭喜你,你已经学晕了 上面这段代码是错误的 div下辈子也不会有width height background这些属性的 上节课,关于div,我们只说了它的一个

Web前端从入门到精通-4 html简介

本节课我继续带着大家学习html 上节课的话我们已经有了一个页面,大概长成这个样子: <!DOCTYPE html> <html lang="en"> </html> 双击这个文件打开预览,什么都没有 好的,从现在开始我们给它加一些内容 根据html语法规定,html标签里的直系子标签有head body等 所以你的脑海中应该想着我们的页面变成了这样 <!DOCTYPE html> <html lang="en"

Web前端从入门到精通-2 关于html和开发工具

上节课呢,我们说到了html源文件在浏览器中打开就是一个网页了,那么html源文件是怎么来的呢? 很多教程为了让大家很快入门,就直接告诉大家说先创建一个记事本文件,然后把它的扩展名改成html,双击就会发现在浏览器中打开了 之后就对记事本里面怎么写html开始大讲特讲 但是个人认为,这样说忽略了初学者的感受 第一次接触html的朋友如果看到上面这样的讲解的话很容易会提出疑问 你为什么新建了一个txt改成了html就可以了?我新建一个别的文件比如word文件(扩展名为doc)改成html可不可以呢