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

上节课我们主要介绍了三种css的选择器

结束的时候留了一个小问题,不知道大家还有没有记得

当多种选择器同时对一个元素操作时,会有什么情况呢?

不知道大家试了没有

先说句题外话,可能有的朋友说

你闲的蛋疼用多种选择器操作一个元素

我让一种选择器操纵一个元素不就可以了吗

我们学一个东西往往是为了用的,而不是为了装13的

所以我提出的这个问题自然有它的价值所在

接下来我会给大家分析

还拿我们的列表做例子,这次给大家举一个百度首页的例子

百度的推荐导航列表这里是不是我们的鼠标移上去的那一个块儿 外面会出现一个蓝色的框

好的,我们接下来就做一个这个效果的模拟缩水版

大概长这个样

当然,我们这里假设第二个被移入了

如果希望做成真正的移入之后边框变蓝,还需要在不久的将来学的一个东西——hover伪类

好了,现在先不要管它是什么

经过分析我们可以发现其实这就是一个列表,那基本上可以锁定用列表来做了

为什么用列表呢?其实,网页上尺寸大小一致、但是颜色或者样式略有不同的排列很整齐的这些东西就是用列表来做的

列表通常就用ul li来做

说句题外话,之前我们说过ul是无序列表,有无序列表必然就有有序列表,无序是unordered list(ul),那么有序就是ordered list(ol)

不管是有序还是无序标签,里面的每一项都是li

还有一种列表dl,里面是dt和dd,大家有兴趣可以百度一下

一不小心又多扯了一些东西,现在继续

我们先不管那个带蓝色框的块儿,先把所有的块儿做成黑色边框

html的话很简单了,直接上代码

    <ul class="video-list">
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>

css的话由于要给所有的li加上蓝色边框,所以自然就有

.video-list li{ width:200px; height:100px; border:5px solid black;}

接下来,我们一定会对第二个li做一些处理,因为它的颜色和别的不一样

所以有了下面的代码

    <ul class="video-list">
        <li></li>
        <li class="active"></li>
        <li></li>
        <li></li>
    </ul>

接下来,我们再在css里面加上一句

.video-list .active{ border:5px solid blue;}

再次预览,我们的效果就达到了

好的,到此我们可以展开分析了,.video-list li和.video-list .active这两个选择器选中的元素是不是有重叠部分?

第二个li这两个选择器都选中了吧?

那这个li的边框颜色为什么按照.video-list .active走呢?

如果你认为是因为.video-list .active写在了.video-list li的后面,后者将前者覆盖了,那你不妨将它们两个对调看看结果

会令你很失望的

其实根本原因就在于像.active这种类选择器的优先级要高于li这种元素选择器

那么知道了这一点之后,大家现在一定又想起id选择器

id选择器和这两种选择器比比高低的话情况会是怎么样呢?

大家自己可以试试,我在这里直接写结论

id选择器>类选择器>元素选择器

当然,这个结论成立的前提必须是.active和li前面的部分一致

例如,在我们这个例子中前面的部分是.video-list

至于为什么一致,我不想多说,开始学一样东西说的太多难免会晕

接下来我们再解释另外一个问题,那就是为什么用两种选择器同时控制一个元素

在我们的这个例子中,大家想想,如果保持被选择器控制的元素不冲动

要怎么做呢?

我们就需要定义两个不同的类选择器

所以css就要写成这样

.video-list .org{ width:200px; height:100px; border:5px solid black;}
.video-list .active{ width:200px; height:100px; border:5px solid blue;}

单是定义两个类倒是没什么,但是我们需要对html大动干戈

    <ul class="video-list">
        <li class="org"></li>
        <li class="active"></li>
        <li class="org"></li>
        <li class="org"></li>
    </ul>

我们需要给每个li都加上一个class类名,这样做是不是很繁琐??

而且等大家学了js之后就会发现这样写更让人蛋疼的地方,现在不再多说

当然这节课说到优先级的问题了,我们就说的彻底一点

大家思考一下

截止到目前为止,我们的css代码可以写在页面的那些地方呢?

style标签里面,这是最近我们一直在这里面写的

但不要忘了,我们的css最开始是怎么写的

是通过style属性写在html标签里面的行内样式,像这样:

<div style="width:100px; height:100px; background:red;"></div>

大家一定要明确这是两种引入css的方式

那么除了这两种之外还有没有其他的呢?

肯定有

当我们的style标签里面的css代码很多的时候,管理起来就会不太方便

所以有时我们会把css代码单独放到一个文件里面,这个文件的格式就是.css的格式

然后在html页面里面通过link标签引入

而且可以有多个html页面引用同一个css

这样在制作多个风格相似的网页中可以都引用同一个css文件,如果风格需要改变时只需要改变这个css文件里面的内容即可

例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>外部引入css</title>
    <link rel="stylesheet" href="outerStyle.css">
</head>
<body>
    <div class="org"></div>
</body>
</html>

这里面的link标签就是将outerStyle.css里面的css代码引入到了这个页面中

outerStyle里面的css语法和style标签里面css的语法没有任何区别

值得注意的是引入css的时候link标签一定要加上rel这个属性

还要将outerStyle.css这个文件和当前编辑的html页面放在同一个路径下(说的通俗一点就是放在同一个文件夹下面)

可以告诉link标签引入的是样式表文件,也就是css文件

不要认为link标签有多么神秘,你完全可以将它当做一对儿style标签,里面就是css文件里的内容

为什么说这些呢?

因为我们在实际的开发中,会有很多个link标签

其实完全可以将它们替换成对应的style标签

然后style里面的内容再进行刚才我们说的id选择器>类选择器>元素选择器比拼

好的,到这里,不知道大家有没有思考过这样一个问题:如果我在行间给某个元素设置了样式,就像下面这样

<div class="div1" style="width:100px; height:100px; background:red;"></div>

然后我又在style标签里面给它加了一些样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>css层叠规则</title>
    <style type="text/css">
    #div1{ width:100px; height:100px; background:blue;}
    </style>
</head>
<body>
    <div id="div1" style="width:100px; height:100px; background:red;"></div>
</body>
</html>

此时,大家思考一下,页面中的div块儿应该显示成什么颜色呢?

大家自己把代码跑一遍就会发现是红色,那么证明一个问题,我们的行间样式比我们的id选择器优先级还要高

你可以这样理解,近水楼台先得月,谁让行间的样式距离标签那么近呢

所以我们的结论变得更加完善

行间样式>id选择器>类选择器>元素选择器

我们最后再测试一下外部引入文件的情况,消除大家度link最后的疑虑:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>css层叠规则</title>
    <link rel="stylesheet" href="outerStyle.css"><!-- 外部文件:.div1{width:100px; height:100px; background:green;} -->
    <style type="text/css">
    .div1{ width:100px; height:100px; background:blue;}
    </style>
</head>
<body>
    <div class="div1"></div>
</body>
</html>

div块儿是蓝色还是绿色呢?

预览之后发现是蓝色

如果将style里面的样式和link标签对调一下,即

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>css层叠规则</title>
    <style type="text/css">
    .div1{ width:100px; height:100px; background:blue;}
    </style>
    <link rel="stylesheet" href="outerStyle.css"><!-- 外部文件:.div1{width:100px; height:100px; background:green;} -->
</head>
<body>
    <div class="div1"></div>
</body>
</html>

预览之后就会发现是绿色

刚才我们说过了,link标签完全可以用style标签来替换掉,里面的内容就相当于外部文件里面写的内容

仅此而已

好的,这节课我们主要讲的是css中的层叠这一特性

当然层叠细说起来要远比这个复杂很多,而且需要在实战中不断反思才能理解的更深入

时间: 2024-12-28 21:56:31

Web前端从入门到精通-6 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前端从入门到精通-11 css简介

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

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

好的,在之前的11节课中 我们从对编程语言一无所知的状态循序渐进的了解了很多知识 包括html页面结构,css引入的几种方式,浮动,清除浮动,盒模型等等 现在是发挥这些知识用武之地的时候了 我们在上网浏览网页的时候不知道大家有没有注意过 在网页的最上面会有一个导航,比如 鼠标移入之后还会高亮显示 那么我们今天就利用我们之前学的东西做这样一个导航 首先,大家可以想象一下这个导航的大概结构是什么样子的呢? 可以不可以在外面有个大div作为父级 然后里面放上4个小div,一个div里面就是一项 当然没

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可不可以呢