前端技术之_CSS详解第二天

前端技术之_CSS详解第二天

1、css基础选择器

html负责结构,css负责样式,js负责行为。

css写在head标签里面,容器style标签。

先写选择器,然后写大括号,大括号里面是样式。

    <style type="text/css">
        body{
            background-color: pink;
        }
    </style>

常见属性:

    h1{
            color:blue;
            font-size: 60px;
            font-weight: normal;
            text-decoration: underline;
            font-style: italic;
        }    

1.1 标签选择器

就是用标签名来当做选择器。

1) 所有标签都能够当做选择器,比如body、h1、dl、ul、span等等

2) 不管这个标签藏的多深,都能够被选择上。

3) 选择的是所有的,而不是某一个。所以是共性,而不是特性。

比如网易,希望页面上所有的超级链接都没有下划线:

        a{
            /*去掉下划线:*/
            text-decoration: none;
        }

1.2 id选择器

#表示选择id

1  #lj1{
2  font-size: 60px;
3  font-weight: bold;
4  color:black;
5  }

1)任何的标签都可以有id,id的命名要以字母开头,可以有数字、下划线。大小写严格区别,也就是说mm和MM是两个不同的id。

2)同一个页面内id不能重复,即使不一样的标签,也不能是相同的id。也就是说,如果有一个p的id叫做haha,这个页面内,其他所有的元素的id都不能叫做haha。

1.3 类选择器

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Document</title>
    <style type="text/css">
        .teshu{
            color: red;
        }
        .zhongyao{
            text-decoration: underline;
        }
    </style>
</head>
<body>
    <h3 class="zhongyao">我是一个h3啊</h3>
    <h3 class="teshu zhongyao">我是一个h3啊</h3>
    <h3>我是一个h3啊</h3>
    <p>我是一个段落啊</p>
    <p class="teshu">我是一个段落啊</p>
    <p class="teshu">我是一个段落啊</p>
</body>
</html>

.就是类的符号。类的英语叫做class。

所谓的类,就是class属性,class属性和id非常相似,任何的标签都可以携带class属性

class属性可以重复,比如,页面上可能有很多标签都有teshu这个类

1  <h3>我是一个h3啊</h3>
2  <h3 class="teshu">我是一个h3啊</h3>
3  <h3>我是一个h3啊</h3>
4  <p>我是一个段落啊</p>
5  <p class="teshu">我是一个段落啊</p>
6  <p class="teshu">我是一个段落啊</p>

css里面用.来表示类:

1  .teshu{
2  color: red;
3  }

同一个标签,可能同时属于多个类,用空格隔开

1 <h3 class="teshu zhongyao">我是一个h3啊</h3>

这样,这个h3就同时属于teshu类,也同时属于zhongyao类

初学者常见的错误,就是写成了两个class:

1 <h3 class="teshu" class="zhongyao">我是一个h3啊</h3>

所以要总结两条:

1) class可以重复,也就是说,同一个页面上可能有多个标签同时属于某一个类;

2) 同一个标签可以同时携带多个类。

类的使用,能够决定一个人的css水平。

1) 不要去试图用一个类名,把某个标签的所有样式写完。这个标签要多携带几个类,共同造成这个标签的样式。

2) 每一个类要尽可能小,有“公共”的概念,能够让更多的标签使用。

正确使用公共类:案例

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Document</title>
    <style type="text/css">
        .lv{
            color:green;
        }
        .da{
            font-size: 60px;
        }
        .xian{
            text-decoration: underline;
        }
    </style>
</head>
<body>
    <p class="lv da">段落1</p>
    <p class="lv xian">段落2</p>
    <p class="da xian">段落3</p>
</body>
</html>

1.4到底用id还是用class?

答案:尽可能的用class,除非极特殊的情况可以用id。

原因:id是js用的。也就是说,js要通过id属性得到标签,所以我们css层面尽量不用id,要不然js就很别扭。另一层面,我们会认为一个有id的元素,有动态效果。

就是一个标签,可以同时被多种选择器选择,标签选择器、id选择器、类选择器。这些选择器都可以选择上同一个标签,从而影响样式,这就是css的cascading“层叠式”的第一层含义。

2、css高级选择器

2.1 后代选择器

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Document</title>
    <style type="text/css">
         .div1 .li2 p{
             color:red;
         }
    </style>
</head>
<body>
    <div class="div1">
        <ul>
            <li>
                <p>段落</p>
                <p>段落</p>
                <p>段落</p>
            </li>
            <li class="li2">
                <p>段落</p>
                <p>段落</p>
                <p>段落</p>
            </li>
            <li>
                <p>段落</p>
                <p>段落</p>
                <p>段落</p>
            </li>
        </ul>
    </div>

    <div>
        <p>段落</p>
        <p>段落</p>
        <p>段落</p>
    </div>
</body>
</html>

1  <style type="text/css">
2  .div1 p{
3  color:red;
4  }
5  </style>

空格就表示后代,.div1 p 就是.div1的后代所有的p。

强调一下,选择的是后代,不一定是儿子。

例如:

1    <div class="div1">
2        <ul>
3            <li>
4                <p>段落</p>
5                <p>段落</p>
6                <p>段落</p>
7            </li>
8        </ul>
    </div>

后代选择器,就是一种平衡:共性、特性的平衡。当要把某一个部分的所有的什么,进行样式改变,就要想到后代选择器。

后代选择器,描述的是祖先结构。

能够被下面的选择器选择上:

1  .div1 p{

2  color:red;

}

所以,看见这个选择器要知道是后代,而不是儿子。选择的是所有.div1“中的”p,就是后代p。

2.2 交集选择器

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Document</title>
    <style type="text/css">
        h3.special{
            color:red;
        }
    </style>
</head>
<body>
    <h3>我是标题</h3>
    <h3 class="special">我是标题</h3>
    <h3 class="special">我是标题</h3>
    <p class="special">我是段落</p>
    <p>我是段落</p>
    <p>我是段落</p>
    <a href="" class="xixi">aaa</a>
</body>
</html>

选择的元素是同时满足两个条件:必须是h3标签,然后必须是special标签。

交集选择器没有空格。

交集选择器,我们一般都是以标签名开头,比如div.haha  比如p.special。

2.3 并集选择器(分组选择器)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Document</title>
    <style type="text/css">
        h3,li{
            color:red;
        }
    </style>
</head>
<body>
    <h3>我是一个标题</h3>
    <p>是一个段落</p>
    <ul>
        <li>我是一个列表</li>
    </ul>
</body>
</html>

1 h3,li{
2  color:red;
3 }

用逗号就表示并集。

2.4 通配符*

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Document</title>
    <style type="text/css">
        h3.*{
            color:red;
        }
    </style>
</head>
<body>
    <p>段落</p>
    <h3>标题</h3>
    <ul>
        <li>列表</li>
        <li>列表</li>
        <li>列表</li>
    </ul>
</body>
</html>

*就表示所有元素。

1 *{
2  color:red;
3 }

效率不高,如果页面上的标签越多,效率越低,所以页面上不能出现这个选择器。

3、一些CSS3选择器

3.1 兼容问题介绍

我们现在给大家介绍一下浏览器:

IE: 微软的浏览器,随着操作系统安装的。所以每个windows都有IE浏览器。

  windows xp 操作系统安装的IE6

  windows vista 操作系统安装的IE7

  windows 7 操作系统安装的IE8

  windows 8 操作系统安装的IE9

  windows10 操作系统安装的edge

浏览器兼容问题,要出,就基本上就是出在IE6、7身上,这两个浏览器是非常低级的浏览器。

浏览器的市场占有率:http://tongji.baidu.com/data/

HTML5浏览器打分:

http://html5test.com/results/desktop.html

3.2 儿子选择器>

http://www.ietester.cn/   测试工具

1 div>p{
2  color:red;
3 }

div的儿子p。和div的后代p的截然不同。

3.3 序选择器

IE8开始兼容;IE6、7都不兼容

选择第1个li:

1  <style type="text/css">
2  ul li:first-child{
3  color:red;
4  }
5  </style>

选择最后一个1i:

1  ul li:last-child{
2  color:blue;
3  }

由于浏览器的更新需要过程,所以现在如果公司还要求兼容IE6、7,那么就要自己写类名:

1    <ul>
2        <li class="first">项目</li>
3        <li>项目</li>
4        <li>项目</li>
5        <li>项目</li>
6        <li>项目</li>
7        <li>项目</li>
8        <li>项目</li>
9        <li>项目</li>
10        <li>项目</li>
11        <li class="last">项目</li>
    </ul>

用类选择器来选择第一个或者最后一个:

1        ul li.first{
2            color:red;
3        }
4
5        ul li.last{
6            color:blue;
        }

3.4 下一个兄弟选择器

IE7开始兼容,IE6不兼容。

+表示选择下一个兄弟

1    <style type="text/css">
2        h3+p{
3            color:red;
4        }
    </style>

选择上的是h3元素后面紧挨着的第一个兄弟。

1    <h3>我是一个标题</h3>
2    <p>我是一个段落</p>
3    <p>我是一个段落</p>
4    <p>我是一个段落</p>
5    <h3>我是一个标题</h3>
6    <p>我是一个段落</p>
7    <p>我是一个段落</p>
8    <p>我是一个段落</p>
9    <h3>我是一个标题</h3>
10    <p>我是一个段落</p>
11    <p>我是一个段落</p>
12    <p>我是一个段落</p>
    <h3>我是一个标题</h3>

4、CSS的继承性和层叠性

4.1 继承性

有一些属性,当给自己设置的时候,自己的后代都继承上了,这个就是继承性。

哪些属性能继承?

color、 text-开头的、line-开头的、font-开头的。

这些关于文字样式的,都能够继承; 所有关于盒子的、定位的、布局的属性都不能继承。

所以,如果我们的页面的文字,都是灰色,都是14px。那么就可以利用继承性:

1 body{
2     color:gray;
3     font-size:14px;
4 }

继承性是从自己开始,直到最小的元素。

5.2 层叠性

很多公司如果要笔试,那么一定会考层叠性。

层叠性:就是css处理冲突的能力。 所有的权重计算,没有任何兼容问题!

CSS像艺术家一样优雅,像工程师一样严谨。

当选择器,选择上了某个元素的时候,那么要这么统计权重:

id的数量,类的数量,标签的数量

如果权重一样,那么以后出现的为准:

如果不能直接选中某个元素,通过继承性影响的话,那么权重是0。

如果大家都是0,那么有一个就近原则:谁描述的近,听谁的。

权重问题大总结:

1) 先看有没有选中,如果选中了,那么以(id数,类数,标签数)来计权重。谁大听谁的。如果都一样,听后写的为准。

2) 如果没有选中,那么权重是0。如果大家都是0,就近原则。

 案例1:

案例2:

案例3:

案例4:

总结:

继承性:好的事儿。继承从上到下,哪些能?哪些不能?

层叠性:冲突,多个选择器描述了同一个属性,听谁的?

原文地址:https://www.cnblogs.com/wanghui1234/p/8978003.html

时间: 2024-12-10 16:40:59

前端技术之_CSS详解第二天的相关文章

前端技术之_CSS详解第一天

前端技术之_CSS详解第一天 一html部分 略.... 二.列表 列表有3种 2.1 无序列表 无序列表,用来表示一个列表的语义,并且每个项目和每个项目之间,是不分先后的. ul就是英语unordered list,“无序列表”的意思. li 就是英语list item , “列表项”的意思. 你会发现,这是我们学习的第一个“组标签”,就是要么不写,要么就要写一组. <ul><li>北京</li><li>上海</li><li>广州&

web前端技术基础课程详解之JavaScript面向对象

JavaScript中的面向对象是个老生常谈的话题,但是依然有很多小伙伴处于懵逼状态.面试时候最担心的就是被问到面向对象相关的内容,自己看过无数的资料,依然对面向对象百思不得其解.到底什么是原型?什么是构造函数?什么是继承...一提到这些概念那真是欲哭无泪.悲愤交加,甚至恨的直咬牙!所以有必要谈一次面向对象. 对象在生活中指的是女朋友或者男朋友,而在JavaScript里说的通俗一点就是一个放了很多属性与方法的集合,有很多的属性与方法是一个对象最显著的特点(可以粗暴的认为,但凡有属性与方法的就是

16位汇编第六讲汇编指令详解第二讲

16位汇编第六讲汇编指令详解第二讲 1.比较指令 CMP指令 1.CMP指令是将目的操作数减去源操作数,按照定义相应的设置状态标志 2.CMP指令执行的功能与SUB指令(相减指令)一样,但是不同的是CMP指令之根据结果设置标志位 而不修改值 可以操作的指令格式 CMP reg,imm/reg/mem CMP mem,imm/reg 上面是CMP指令的语法,具体的也可以查询帮助文档,inter手册 inter手册查的办法 第一个框代表了CMP指令的所有语法 比如 reg,reg 表示可以比较寄存器

JAVA: httpclient 详解——第二章;

相对于httpurlconnection ,httpclient更加丰富,也更加强大,其中apache有两个项目都是httpclient,一个是commonts包下的,这个是通用的,更专业的是org.apache.http.包下的,所以我一般用后者: httpclient可以处理长连接,保存会话,重连接,以及请求过滤器,连接重用等等... 下面是测试代码(全部总结来自官方文档,以及翻译) 须要下载核心包:httpclient-4.3.4.jar ,也可在官网下载:http://hc.apache

华为设备二层交换技术——MSTP协议详解

前面提到的STP协议以及Cisco的私有协议PVST+都属于单生成树(SST)协议,也就是对于支持多VLAN的设备只能运行单一的生成树.可以参考博文:Cisco设备二层交换技术--STP协议详解 MSTP是IEEE 802.1s中提出的一种STP和VLAN结合使用的新协议,它既继承了RSTP端口快速迁移的优点,又解决了RSTP中不同VLAN必须运行在同一棵生成树上的问题.接下来我们详细了解一下MSTP协议. MSTP协议是一个公有的生成树协议,在实际生产环境中得到了广泛的应用. 一.MSTP概述

Cisco路由技术基础知识详解

第一部分 请写出568A的线序(接触网络第一天就应该会的,只要你掐过,想都能想出来) .网卡MAC地址长度是(??)个二进制位(16进制与2进制的换算关系,只是换种方式问,不用你拿笔去算) A.12??? B.6??? C.24??? D.48 .ICMP?在沟通之中,主要是透过不同的类别(Type)与代码(Code)让机器来识别不同的连线状态,请问?type?8?名称是(??),代表的意思___回送消息____________.(同上,整天ping.你是否思考了ping?的细节过程) A.Ec

Git应用详解第二讲:Git删除、修改、撤销操作

前言 前情提要:Git应用详解第一讲:Git分区,配置与日志 在第一讲中我们对Git进行了简单的入门介绍,相信聪明的你已经了解Git的基本使用了. 这一讲我们来进一步深入学习Git应用,着重介绍Git的一些常见操作,包括:删除文件.比较文件.撤销修改.修改注释与查看帮助文档. 一.删除文件 1.git rm <file> 该命令用于删除版本库中的文件:删除工作区和暂存区中的文件都会报错: 若用该指令删除工作区中的文件,会报找不到文件的错误: 若用该指令删除暂存区中的文件,报如下错误: 所谓版本

软考之系统集成项目管理工程师(包含2009-2018历年真题详解+第二版考试辅导教程+官方指定最新版教程)

软考之系统集成项目管理工程师(包含2009-2018历年真题以及答案详解.系统集成项目管理工程师教程第2版-清华大学出版社-高清PDF,官方指定用书),持续更新后续年份的资料.请点赞!!请点赞!!!绝对全部货真价实的资料!!! 全网最全,独此一家,货真价实,部分真题和教程网上没免费的,是我掏钱买的,费心整理,希望各位同学顺利通过考试!!! 下载地址:百度网盘,https://pan.baidu.com/s/15Twr0i9eVbMC9_VbwzWKRQ 原文地址:https://www.cnbl

C#关键字详解第二节

base:基类 在有些书中base的解释为表示父类,没错,base可以表示父类,但我更想理解成基类,因为更原始更具象,既 然是类,那么他就符合面向对象的设计规则和特点,我们知道面向对象的三个特点是封装,继承和多态!而 base就是对于多态最合理的定义,因为基类衍生出了其他类,而这里的衍生就是多态的体现,一般来说base在 派生类(子类)中访问重写的基类成员,当然基类访问只能在构造函数,实例方法或实例属性访问器中进行. 下面看例子 namespace base关键字 { class Program